From 9cf541a6ba96a35f5f721139010975e919b1d686 Mon Sep 17 00:00:00 2001 From: EgorPanteleev <139491563+EgorPanteleev@users.noreply.github.com> Date: Thu, 13 Jul 2023 20:14:38 +0300 Subject: [PATCH 01/68] Update README.MD (#1) --- README.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.MD b/README.MD index 3e37552..73500c7 100644 --- a/README.MD +++ b/README.MD @@ -1 +1 @@ -Modules +Modules. From eb9210de1c913cd2cd0d73aacb24c8424213c5b2 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 30 Jun 2023 23:05:38 +0300 Subject: [PATCH 02/68] Strings Initial --- Allocators/CMakeLists.txt | 2 +- CMakeLists.txt | 3 +- Strings/CMakeLists.txt | 22 ++ Strings/private/Logging.cpp | 69 ++++ Strings/private/Strings.cpp | 24 ++ Strings/private/TextEditor.cpp | 554 +++++++++++++++++++++++++++++++++ Strings/public/Logging.hpp | 59 ++++ Strings/public/StringLogic.hpp | 174 +++++++++++ Strings/public/Strings.hpp | 248 +++++++++++++++ Strings/public/TextEditor.hpp | 382 +++++++++++++++++++++++ Strings/tests/tests.cpp | 66 ++++ TODO | 2 +- 12 files changed, 1602 insertions(+), 3 deletions(-) create mode 100644 Strings/CMakeLists.txt create mode 100644 Strings/private/Logging.cpp create mode 100644 Strings/private/Strings.cpp create mode 100644 Strings/private/TextEditor.cpp create mode 100644 Strings/public/Logging.hpp create mode 100644 Strings/public/StringLogic.hpp create mode 100644 Strings/public/Strings.hpp create mode 100644 Strings/public/TextEditor.hpp create mode 100644 Strings/tests/tests.cpp diff --git a/Allocators/CMakeLists.txt b/Allocators/CMakeLists.txt index fae102e..99ec141 100644 --- a/Allocators/CMakeLists.txt +++ b/Allocators/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.2) set(CMAKE_CXX_STANDARD 23) -project(Allocator) +project(Allocators) ### ---------------------- Static Library --------------------- ### file(GLOB SOURCES "./private/*.cpp") diff --git a/CMakeLists.txt b/CMakeLists.txt index d23e6cf..489a229 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,4 +14,5 @@ add_subdirectory(Modules) add_subdirectory(Utils) add_subdirectory(Containers) add_subdirectory(Math) -add_subdirectory(Allocators) \ No newline at end of file +add_subdirectory(Allocators) +add_subdirectory(Strings) \ No newline at end of file diff --git a/Strings/CMakeLists.txt b/Strings/CMakeLists.txt new file mode 100644 index 0000000..e50501e --- /dev/null +++ b/Strings/CMakeLists.txt @@ -0,0 +1,22 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Strings) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Allocators Containers) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Strings/private/Logging.cpp b/Strings/private/Logging.cpp new file mode 100644 index 0000000..443de68 --- /dev/null +++ b/Strings/private/Logging.cpp @@ -0,0 +1,69 @@ + +#include "Logging.hpp" +#include "Allocators.hpp" +#include "TextEditor.hpp" + +#include + +namespace tp { + + Logger* gLogger = nullptr; + + ualni Logger::Report::getLineCount() const { + return (ualni)(mLineOffsets.size() - 1); + } + + String Logger::Report::getString() const { + return mData; + } + + void Logger::Report::calcLineCount() { + Input input = { mData.raw(), (ualni) mData.size() }; + input.getLineOffsets(mLineOffsets); + } + + Logger::Report::Report() { + mData = " - "; + } + + Logger::Report::Report(const String& text) : mData(text) { + calcLineCount(); + } + + Logger::Report::Report(const String& text, Type type) : mType(type), mData(text) { + calcLineCount(); + } + + void Logger::write(const String& in, bool post, Report::Type type) { + StringTemplate copy = in; + copy.capture(); + mBuff.pushBack(Report(copy, type)); + + mLineCount += mBuff.last()->data.getLineCount(); + + if (!mCursor) { + mCursor = mBuff.last(); + } + + if (post) { + printf("%s", in.raw()); + } + } + + String Logger::read() { + if (!mCursor) return {}; + const Report& out = mCursor->data; + mCursor = mCursor->next; + return out.getString(); + } + + void Logger::initializeGlobal() { + DEBUG_ASSERT(!gLogger) + gLogger = new Logger(); + } + + void Logger::deinitializeGlobal() { + DEBUG_ASSERT(gLogger) + delete gLogger; + } +} \ No newline at end of file diff --git a/Strings/private/Strings.cpp b/Strings/private/Strings.cpp new file mode 100644 index 0000000..2d59e4d --- /dev/null +++ b/Strings/private/Strings.cpp @@ -0,0 +1,24 @@ + +#include "Strings.hpp" +#include "Allocators.hpp" +#include "Logging.hpp" + +using namespace tp; + +bool initialize(const ModuleManifest*) { + Logger::initializeGlobal(); + return true; +} + +void deinitialize(const ModuleManifest*) { + Logger::deinitializeGlobal(); +} + +static tp::ModuleManifest* sModuleDependencies[] = { + &tp::gModuleContainers, + &tp::gModuleAllocators, + &tp::gModuleUtils, + nullptr +}; + +ModuleManifest tp::gModuleStrings = ModuleManifest("Strings", initialize, deinitialize, sModuleDependencies); \ No newline at end of file diff --git a/Strings/private/TextEditor.cpp b/Strings/private/TextEditor.cpp new file mode 100644 index 0000000..1493f76 --- /dev/null +++ b/Strings/private/TextEditor.cpp @@ -0,0 +1,554 @@ + +#include "TextEditor.hpp" + +using namespace tp; +using namespace str; + +bool tp::str::PiecesDS::Node::mInsertionOperation = false; + +bool tp::str::isNewLineChar(Char character) { + return (character == '\n') || (character == '\r'); +} + +void Input::getLineOffsets(Buffer& out) { + halni lines = 0; + for (auto idx : Range(mLen)) { + if (isNewLineChar(mInput[idx])) { + lines++; + } + } + out.reserve(lines + 2); // plust start and end offsets + lines = 0; + for (auto idx : Range(mLen)) { + if (isNewLineChar(mInput[idx])) { + out[lines + 1] = Index(idx + 1); + lines++; + } + } + out[0] = 0; + out[lines + 1] = mLen; +} + + // ---------------------- Pointer ---------------------- // + +Pointer::Pointer() { + mCol = 0; mLine = 0; +} + +Pointer::Pointer(LineId aLine, ColumnId aCol) { + mLine = aLine; + mCol = aCol; +} + +Pointer::Pointer(const Input& aInput) { + halni lines = 0; + halni col = 0; + for (auto idx : Range(aInput.mLen)) { + if (isNewLineChar(aInput.mInput[idx])) { + lines++; + col = 0; + } + else { + col++; + } + } + mLine = lines; + mCol = col; +} + +void Pointer::operator+=(Char achar) { + if (isNewLineChar(achar)) { + mLine += 1; + mCol = 0; + } + else { + mCol += 1; + } +} + +void Pointer::operator+=(const Pointer& ap) { + *this = operator+(ap); +} + +Pointer Pointer::operator-(const Pointer in) const { + if (mLine == in.mLine) { + return { 0, mCol - in.mCol }; + } + return { mLine - in.mLine, mCol }; +} + +Pointer Pointer::operator+(const Pointer& ap) const { + if (ap.mLine == 0) { + return { mLine, mCol + ap.mCol }; + } + return { mLine + ap.mLine, ap.mCol }; +} + +bool Pointer::operator==(const Pointer& in) const { + return in.mCol == mCol && in.mLine == mLine; +} + +bool Pointer::operator>(const Pointer& in) const { + if (mLine > in.mLine) { + return true; + } + else if (mLine < in.mLine) { + return false; + } + + return mCol > in.mCol; +} + +bool Pointer::operator>=(const Pointer& in) const { + return operator>(in) || in == *this; +} + +Pointer Piece::diffPtr() const { + return mEnd - mStart; +} + +LineId Piece::nLines() const { + return { mEnd.mLine - mStart.mLine }; +} + +// ---------------------- Add Buff ---------------------- // + +AddBuff::AddBuff() { + Input input = { "", 0 }; + Buffer lineoffsets; + input.getLineOffsets(lineoffsets); + mLineOffsets.append(lineoffsets.mBuff(), (Index)lineoffsets.length()); +} + +void AddBuff::append(Input aInput) { + + // TODO : errors here + + Buffer lineoffsets; + aInput.getLineOffsets(lineoffsets); + + if (lineoffsets.length() == 2) { + mLineOffsets[mLineOffsets.len() - 1] += lineoffsets[1] - lineoffsets[0]; + } + else { + + auto last_line_offset = mLineOffsets[mLineOffsets.len() - 1]; + + // offset last line ptr + mLineOffsets[mLineOffsets.len() - 1] += lineoffsets[1]; + + // offset all lines by mLineOffsets.mLast ptr + for (auto offset : lineoffsets) { + offset.data() += last_line_offset; + } + + mLineOffsets.append(&lineoffsets[2], (Index)(lineoffsets.length() - 2)); + } + + mBuff.append(aInput.mInput, aInput.mLen); +} + +Pointer AddBuff::endPtr() { + return { mLineOffsets.len() - 2, mLineOffsets[mLineOffsets.len() - 1] - mLineOffsets[mLineOffsets.len() - 2] }; +} + +// ---------------------- Orig Buff ---------------------- // + +OrigBuff::OrigBuff(Input aOriginal) { + mOriginal = aOriginal; + mOriginal.getLineOffsets(mLineOffsets); + + mPtrStart = { 0, 0 }; + mPtrEnd = mOriginal; +} + +void OrigBuff::makeOwnOriginalInput() { + if (mOwnsInput) { + return; + } + + auto input_copy = new Char[mOriginal.mLen + 1]; + DEBUG_ASSERT(sizeof(Char) == sizeof(uint1)); + memcp(input_copy, mOriginal.mInput, mOriginal.mLen); + input_copy[mOriginal.mLen] = '\0'; + mOriginal.mInput = input_copy; + mOwnsInput = true; +} + +OrigBuff::~OrigBuff() { + if (mOwnsInput) { + delete[] mOriginal.mInput; + } +} + +// ---------------------- Editor ---------------------- // + +PieceCrs TextEditor::findPiece(Pointer ptr) const { + PieceCrs out; + if (!mPieces.nPieces()) { + return out; + } + + if (mPieces.ptrSum() == ptr) { + out.piece = mPieces.maxNode(mPieces.head()); + } else { + out.piece = mPieces.find(ptr); + } + + DBG_BREAK(!out.piece); + out.piece_ptr = out.piece->getFindKey(); + out.ptr = ptr; + out.offset = out.ptr - out.piece_ptr; + return out; +} + +void TextEditor::clampPtr(Pointer& ptr) const { + if (!mPieces.nPieces()) { + ptr = { 0, 0 }; + return; + } + + CLAMP(ptr.mLine, 0, mNLines()); + + auto crs = findPiece(Pointer{ ptr.mLine, 0 }); + Index line_len = getPieceLineLen(crs.piece->mPiece, crs.offset.mLine); + + auto next_piece_ptr = nextPiecePtr(crs.piece, crs.piece_ptr); + auto piece = crs.piece; + while (piece->mNext && ptr.mLine == next_piece_ptr.mLine) { + piece = piece->mNext; + next_piece_ptr = nextPiecePtr(piece, next_piece_ptr); + line_len += getPieceLineLen(piece->mPiece, 0); + } + + if (ptr.mLine != mNLines()) { + line_len -= 1; + } + + CLAMP(ptr.mCol, 0, line_len); +} + +void TextEditor::setCursor(Pointer ptr) { + clampPtr(ptr); + mCursor = ptr; +} + +void TextEditor::setCursorEnd(Pointer ptr) { + clampPtr(ptr); + mCursorEnd = ptr; + mCursor = mCursorEnd; +} + +const Char* TextEditor::getPieceLine(const Piece* piece, LineId offset) const { + const Char* buff; + if (piece->mAddedBuff) { + if (offset == 0) { + buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mStart.mLine]] + piece->mStart.mCol; + } + else if (offset > piece->nLines()) { + buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mEnd.mLine]] + piece->mEnd.mCol; + } + else { + buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mStart.mLine + offset]]; + } + } + else { + if (offset == 0) { + buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mStart.mLine]] + piece->mStart.mCol; + } + else if (offset > piece->nLines()) { + buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mEnd.mLine]] + piece->mEnd.mCol; + } + else { + buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mStart.mLine + offset]]; + } + } + return buff; +} + +const Char* TextEditor::getBuffLine(const Piece* piece, LineId offset) const { + const Char* buff; + if (piece->mAddedBuff) { + buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mStart.mLine + offset]]; + } + else { + buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mStart.mLine + offset]]; + } + return buff; +} + +Pointer TextEditor::prevPiecePtr(PiecesDS::Node* piece_node, Pointer aPtr) const { + if (!piece_node->mPrev) { + return { 0, 0 }; + } + + return piece_node->mPrev->getFindKey(); +} + +Pointer TextEditor::nextPiecePtr(PiecesDS::Node* aPiece, Pointer aPtr) const { + if (!aPiece) return { -1, -1 }; + + if (aPiece->mNext) { + return aPiece->mNext->getFindKey(); + } + return aPiece->getFindKey() + aPiece->mDiff; +} + +LineId TextEditor::getPieceLineLen(Piece* aPiece, LineId line) const { + return LineId(getPieceLine(aPiece, line + 1) - getPieceLine(aPiece, line)); +} + +TextEditor::TextEditor(Input original) : mOrigBuff(original) { + DEBUG_ASSERT(original.mLen); + auto new_node = mPieces.insertAfter(0, { false, mOrigBuff.mPtrStart, mOrigBuff.mPtrEnd }); + mPieces.pushUndoPoint(); +} + +TextEditor::TextEditor() : mOrigBuff({ 0, 0 }) { +} + +Index TextEditor::mNLines() const { + return mPieces.ptrSum().mLine; +} + +Pointer TextEditor::getCursor() const { + return mCursor; +} + +Pointer TextEditor::getCursorEnd() const { + return mCursorEnd; +} + +void TextEditor::insert(Input aInput) { + // handle selectiom + remove(true); + + // save input to addbuff + auto start_ref = mAddBuff.endPtr(); + mAddBuff.append(aInput); + auto end_ref = mAddBuff.endPtr(); + auto input_diff = end_ref - start_ref; + + PiecesDS::Node* prev_node = nullptr; + PiecesDS::Node* new_node = nullptr; + + auto crs = findPiece(mCursor); + + if (crs.piece && crs.piece->mPrev && crs.offset == Pointer{ 0, 0 }) { + crs.piece_ptr = prevPiecePtr(crs.piece, crs.piece_ptr); + crs.offset = crs.ptr - crs.piece_ptr; + crs.piece = crs.piece->mPrev; + } + + if (crs.piece) { + if (crs.ptr == crs.piece_ptr) { // start + prev_node = crs.piece->mPrev; + } + else if (crs.offset == crs.piece->mPiece->diffPtr()) { // end + if (mLastInsertionCrs == crs.ptr && crs.piece->mPiece->mAddedBuff && crs.piece->mPiece->mEnd == start_ref) { + crs.piece->mPiece->mEnd += input_diff; + mPieces.update_cache(crs.piece); + goto END; + } + else { + prev_node = crs.piece; + } + } + else { // middle + prev_node = splitPiece(crs.piece, crs.offset); + } + } + + // create the new node + new_node = mPieces.insertAfter(prev_node, { true, start_ref, end_ref }); + + END: + mCursor = mCursor + input_diff; + mCursorEnd = mCursor; + mLastInsertionCrs = mCursor; + mPieces.pushUndoPoint(); +} + +PiecesDS::Node* TextEditor::splitPiece(PiecesDS::Node* piece, Pointer split_ptr) { + auto span = piece->mPiece->diffPtr(); + + if (span == split_ptr || split_ptr == Pointer{ 0, 0 }) { + return nullptr; + } + + // save temp data + auto end_ptr = piece->mPiece->mEnd; + auto left_piece = Piece{ piece->mPiece->mAddedBuff, piece->mPiece->mStart, piece->mPiece->mStart + split_ptr }; + auto left_node = mPieces.insertAfter(piece->mPrev, left_piece); + + // create right half + auto right_node = mPieces.insertAfter(left_node, { left_node->mPiece->mAddedBuff, left_node->mPiece->mEnd, end_ptr }); + + auto line_len = halni(getBuffLine(right_node->mPiece, 1) - getBuffLine(right_node->mPiece, 0)); + if (line_len == right_node->mPiece->mStart.mCol) { + DBG_BREAK(1); + right_node->mPiece->mStart = { right_node->mPiece->mStart.mLine + 1, 0 }; + } + + // remove current node + mPieces.remove(right_node->mNext); + + return left_node; +} + +void TextEditor::remove(bool only_selection, Dir dir, DirUnit unit) { + if (!mPieces.nPieces()) { + return; + } + + if (mCursor == mCursorEnd) { + if (only_selection) { + return; + } + + if (dir == LEFT) { + if (mCursor == Pointer(0, 0)) { + return; + } + + PieceCrs crs; + if (mCursor.mCol == nullptr) { + auto new_ptr = Pointer{ mCursor.mLine - 1, ENV_HALNI_MAX }; + clampPtr(new_ptr); + crs = findPiece(new_ptr); + //crs = findPiece({ crs.ptr.mLine, crs.ptr.mCol - 1 }); + } + else { + crs = findPiece({ mCursor.mLine, mCursor.mCol - 1 }); + } + + mCursorEnd = mCursor; + mCursor = crs.ptr; + } + else if (dir == RIGHT) { + auto crs = findPiece(Pointer{ mCursor.mLine, mCursor.mCol + 1 }); + mCursorEnd = mCursor; + mCursor = crs.ptr; + + if (mCursor == mCursorEnd) { + return; + } + } + else { + return; + } + } + + if (mCursor > mCursorEnd) { + swap(mCursor, mCursorEnd); + } + + auto crs = findPiece(mCursor); + + // first and last pieces to be deleted + PiecesDS::Node* del_start = nullptr, *del_end = nullptr; + + // find left + if (crs.offset == Pointer{ 0, 0 }) { + del_start = crs.piece; + } + else if (crs.piece->mPiece->diffPtr() == crs.offset) { + del_start = crs.piece->mNext; + } + else { + del_start = splitPiece(crs.piece, crs.offset)->mNext; + } + + auto crs_end = findPiece(mCursorEnd); + + // find right + if (crs_end.offset == Pointer{ 0, 0 }) { + del_end = crs_end.piece->mPrev; + } + else if (crs_end.piece->mPiece->diffPtr() == crs_end.offset) { + del_end = crs_end.piece; + } + else { + bool intersect = crs_end.piece == del_start; + del_end = splitPiece(crs_end.piece, crs_end.offset); + if (intersect) { + del_start = del_end; + } + } + + DEBUG_ASSERT(del_start && del_end); + auto end_piece = del_end->mNext ? del_end->mNext->mPiece : nullptr; + + while (del_start && del_start->mPiece != end_piece) { + auto del = del_start; + + // del_start will be reused by the avl-tree after deletion otherwise + // works as we go from left to right + if (!del_start->mNext || del_start->mHeight <= del_start->mNext->mHeight) { + del_start = del_start->mNext; + } + + mPieces.remove(del); + } + mCursorEnd = mCursor; + + mPieces.pushUndoPoint(); +} + +void TextEditor::undo() { + mPieces.undo(); +} + +void TextEditor::redo() { + mPieces.redo(); +} + +TextEditor::~TextEditor() { +} + +// ------------------------------ ITERATOR ------------------------------ // + +Iterator TextEditor::begin() { return Iterator(this); } +alni TextEditor::end() { return nullptr; } + +Iterator::Iterator(const TextEditor* aSelf) { + mSelf = aSelf; + mNode = mSelf->mPieces.first(); + mVal = mSelf->getPieceLine(mNode->mPiece, 0)[0]; +} + +bool Iterator::inputLeft() { + return mNode; +} + +Char Iterator::character() { + return mVal; +} + +void Iterator::operator++() { + auto nl = isNewLineChar(mVal); + auto diff = Pointer{ nl, !nl }; + mPtr += diff; + mOffset += diff; + + if (mOffset == mNode->mPiece->diffPtr()) { + mNode = mNode->mNext; + mOffset = { 0, 0 }; + if (!mNode) { + return; + } + } + + mVal = mSelf->getPieceLine(mNode->mPiece, mOffset.mLine)[mOffset.mCol]; +} + +bool Iterator::operator!=(alni const& iter) { + return inputLeft(); +} + +bool Iterator::operator==(alni const& iter) { + return !inputLeft(); +} + +Char Iterator::operator->() { return mVal; } +const Iterator& Iterator::operator*() { return *this; } diff --git a/Strings/public/Logging.hpp b/Strings/public/Logging.hpp new file mode 100644 index 0000000..6616e72 --- /dev/null +++ b/Strings/public/Logging.hpp @@ -0,0 +1,59 @@ + +#pragma once + +#include "Buffer.hpp" +#include "List.hpp" +#include "Strings.hpp" + +namespace tp { + + class Logger { + public: + + class Report { + String mData; + Buffer mLineOffsets; + + public: + enum Type { INFO, ERR, WARN, SUC } mType = INFO; + + public: + Report(); + explicit Report(const String& text); + Report(const String& text, Type type); + + public: + [[nodiscard]] ualni getLineCount() const; + [[nodiscard]] String getString() const; + + private: + void calcLineCount(); + }; + + private: + List::Node* mCursor = nullptr; + List mBuff; + ualni mLineCount = 0; + + public: + void write(const String& in, bool post = true, Report::Type type = Report::Type::INFO); + + [[nodiscard]] String read(); + [[nodiscard]] const List& getBuff() const { return mBuff; } + [[nodiscard]] ualni getLineCount() const { return mLineCount; } + + public: + static void initializeGlobal(); + static void deinitializeGlobal(); + }; + + extern Logger* gLogger; +} + +#define LOG(val) tp::str::gLogger->write((val), 1) + +#ifdef ENV_BUILD_DEBUG +#define DEBUG_LOG(val) tp::str::gLogger->write((val), 1) +#else +#define DEBUG_LOG(val) (0) +#endif \ No newline at end of file diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp new file mode 100644 index 0000000..488349a --- /dev/null +++ b/Strings/public/StringLogic.hpp @@ -0,0 +1,174 @@ +#pragma once + +#include "Utils.hpp" + +namespace tp { + + template + class StringLogic { + public: + + typedef halni Index; + typedef Index LineId; + typedef Index ColumnId; + + static inline bool isNewLineChar(tChar in) { return (in == '\n') || (in == '\r'); } + static inline bool isEndChar(tChar in) { return in == '\0'; } + static constexpr tChar getEndChar() { return '\0'; } + + static ualni calcLength(const tChar* in) { + const tChar* iter = in; + while (*iter != '\0') iter++; + return iter - in; + } + + static tChar* insertLogic(const tChar* cur, const tChar* tar, ualni at, ualni len) { + ualni curLen = calcLength(cur); + ualni allLen = curLen + len; + auto* out = new tChar[allLen + 1]; + + DEBUG_ASSERT(curLen >= 0) + DEBUG_ASSERT(len >= 0) + DEBUG_ASSERT(at < curLen + 1 && at >= 0) + + for (ualni idx = 0; idx < at; idx++) { + out[idx] = cur[idx]; + } + for (ualni idx = 0; idx < len; idx++) { + out[idx + at] = tar[idx]; + } + for (ualni idx = at + len; idx < allLen; idx++) { + out[idx] = cur[idx - len]; + } + out[allLen] = '\0'; + return out; + } + + static tChar* removeLogic(const tChar* cur, ualni start, ualni end) { + ualni curLen = calcLength(cur); + ualni rangeLen = end - start; + ualni newLen = curLen - rangeLen; + auto* out = new tChar[newLen + 1]; + out[newLen] = '\0'; + for (ualni idx = 0; idx < start; idx++) { + out[idx] = cur[idx]; + } + for (ualni idx = end; idx < curLen; idx++) { + out[idx - rangeLen] = cur[idx]; + } + return out; + } + + static bool isEqualLogic(const tChar* left, const tChar* right) { + ualni idx = 0; + LOOP: + if (left[idx] == '\0' || right[idx] == '\0') { + if (left[idx] == '\0' && right[idx] == '\0') { + return true; + } + return false; + } + if (left[idx] != right[idx]) { + return false; + } + idx++; + goto LOOP; + } + + static ualni fromValueLength(alni val, ualni base) { + ualni iter = val; + ualni len = 0; + while (iter /= base) { + len++; + } + bool neg = val < 0; + len += 1 + ualni(neg); + return len; + } + + static tChar* stringFromValue(alni val, tChar* ownBuff, ualni base) { + tChar* out; + bool neg = val < 0; + ualni len = fromValueLength(val, base); + out = ownBuff ? ownBuff : new tChar[len + 1]; + out[len] = '\0'; + val = abs(val); + for (ualni i = len - 1; i >= int(neg); i--) { + out[i] = (tChar) (val % base + 48); + val /= (alni) base; + } + if (neg) { + out[0] = '-'; + } + return out; + } + + static ualni fromValueLength(alnf val, ualni base) { + auto rounded = (alni) val; + ualni mantissa = ( (alni) val - rounded) * 100000; + alni rounded_len = 0; + alni mantissa_len = 0; + while (rounded /= (alni) base) { + rounded_len++; + } + if (!rounded_len) { + rounded_len++; + } + while (mantissa /= base) { + mantissa_len++; + } + bool neg = val < 0; + bool dot = mantissa_len & 1; + alni tot_len = mantissa_len + rounded_len + dot + neg; + return tot_len; + } + + static tChar* fromValue(alnf, ualni, tChar*) { + DEBUG_BREAK(false) + return nullptr; + } + + static ualni fromValueLength(bool val) { + return val ? 4 : 5; + } + + static tChar* fromValue(bool val, tChar* ownBuff) { + alni len = val ? 4 : 5; + tChar* out = ownBuff ? ownBuff : new tChar[len + 1]; + out[len] = '\0'; + memCopy(out, val ? "True" : "False", len); + return out; + } + + static tChar* stringFromValue(int val, ualni base) { + return fromValue((alni) val, nullptr, base); + } + + static tChar* fromValue(tChar val) { + auto* out = new tChar[2]; + out[1] = '\0'; + out[0] = val; + return out; + } + + static bool toValue(const tChar*, alni&, ualni) { + DEBUG_BREAK(false) + return false; + } + + static bool toValue(const tChar*, alnf&, ualni) { + DEBUG_BREAK(false) + return false; + } + + static bool toValue(const tChar* in, bool& val) { + if (!calcLength(in)) return false; + if (isEqual(in, "False") || isEqual(in, "false") || isEqual(in, "0")) { + val = false; + } else { + val = true; + } + return true; + } + }; +} \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp new file mode 100644 index 0000000..3fdb5a4 --- /dev/null +++ b/Strings/public/Strings.hpp @@ -0,0 +1,248 @@ +#pragma once + +#include "PoolAllocator.hpp" +#include "StringLogic.hpp" +#include "TextEditor.hpp" + +namespace tp { + + // Static data + extern ModuleManifest gModuleStrings; + + template + class StringTemplate; + using String = StringTemplate; + + template + class StringTemplate { + typedef StringLogic StringLogic; + + // Hidden slave class + class StringData { + + // allows to edit each string with text editor inplace + class TextEditors { + enum { MAX_EDITED_STRINGS = 65536 }; // 2^16 - do not change mindlessly + typedef uint2 Address; + ChunkAlloc mEditorsPool; + + public: + TextEditors() : mEditorsPool() {} + + TextEditor* get(Address address) { return mEditorsPool.getBuff() + address; } + + Address createTextEditor(const tChar* originalBuffer) { + auto entry = (TextEditor**) mEditorsPool.allocate(0); + *entry = new TextEditor( originalBuffer ); + return Address(entry - mEditorsPool.getBuff()); + } + + void destroyTextEditor(Address address) { + auto entry = mEditorsPool.getBuff() + address; + mEditorsPool.deallocate(entry); + delete entry; + } + }; + + static TextEditors sTextEditors; + + public: + uint2 mIsConst; // source is non-modifiable + uint2 mEditedIdx; // editor id + uint4 mReferenceCount; // number of users of this + tChar* mBuff; // actual string data + + public: + StringData() { + MODULE_SANITY_CHECK(gModuleStrings) + mBuff = (tChar*) "*"; + mReferenceCount = 0; + mIsConst = true; + mEditedIdx = 0; + } + + StringData(const tChar* aBuff, bool aIsConst) { + MODULE_SANITY_CHECK(gModuleStrings) + DEBUG_ASSERT(aBuff) + mBuff = (tChar*) aBuff; + mReferenceCount = 0; + mIsConst = aIsConst; + mEditedIdx = 0; + } + + explicit StringData(const tChar* aBuff) { + MODULE_SANITY_CHECK(gModuleStrings) + DEBUG_ASSERT(aBuff) + auto const len = StringLogic::calcLength(aBuff); + resize(len); + memCopy(mBuff, aBuff, len); + mReferenceCount = 0; + mIsConst = false; + mEditedIdx = 0; + } + + [[nodiscard]] tChar* getBuffer() { + DEBUG_ASSERT(!isEditorMode()) + if (isEditorMode()) return nullptr; + return mBuff; + } + + ~StringData() { + if (!mIsConst) delete[] mBuff; + if (isEditorMode()) sTextEditors.destroyTextEditor(mEditedIdx); + } + + public: + void resize(ualni size) { + DEBUG_ASSERT(!isEditorMode() && mReferenceCount == 1 && !mIsConst) + delete[] mBuff; + mBuff = new tChar[size + 1]; + mBuff[size] = StringLogic::getEndChar(); + } + + public: + [[nodiscard]] bool isEditorMode() const { return mEditedIdx; } + + void createEditor() { + DEBUG_ASSERT(!isEditorMode()) + if (isEditorMode()) mEditedIdx = sTextEditors.createTextEditor(mBuff); + } + + [[nodiscard]] TextEditor* getEditor() const { + DEBUG_ASSERT(isEditorMode()) + if (!isEditorMode()) return nullptr; + return sTextEditors.get(mEditedIdx); + } + + void applyEditor() { + DEBUG_ASSERT(isEditorMode() && mReferenceCount == 1 && !mIsConst) + if (!isEditorMode()) return; + auto editor = sTextEditors.get(mEditedIdx); + resize(editor.textSize()); + for ( auto character : *editor) { + mBuff[character.idx] = character; + } + } + + void destroyEditor() { + DEBUG_ASSERT(isEditorMode()) + if (!isEditorMode()) return; + sTextEditors.destroyTextEditor(mEditedIdx); + } + }; + + private: + class StringData* mStringData; + + private: + enum { STRINGS_POOL_SIZE = 1024, }; + static PoolAlloc* sStringPool; + static StringData sNullString; + + // --------------------------------- Main Interface ---------------------------------// + public: + // Creates null string reference + StringTemplate() { + mStringData = &sNullString; + incReference(mStringData); + } + + // References existing string data + StringTemplate(const StringTemplate& in) { + if (in.isEditorMode()) { + // Copies raw data and claims ownership over it + mStringData = new (sStringPool->allocate(0)) StringData(in.mStringData->mBuff); + incReference(mStringData); + } else { + mStringData = in.mStringData; + incReference(mStringData); + } + } + + // Creates new string data from raw data pointer. + // Does not own string buffer - string buffer will not be freed. Initializes as const memory. + explicit StringTemplate(const tChar* raw) { + mStringData = new (sStringPool->allocate(0)) StringData(raw, true); + incReference(mStringData); + } + + // Copies raw data and claims ownership over it + explicit StringTemplate(tChar* raw) { + mStringData = new (sStringPool->allocate(0)) StringData(raw); + incReference(mStringData); + } + + ~StringTemplate() { + decReference(mStringData); + } + + private: + + [[nodiscard]] bool isEditorMode() const { + return mStringData->isEditorMode(); + } + + static void incReference(StringData* dp) { + dp->mReferenceCount++; + } + + void decReference(StringData* dp) { + dp->mReferenceCount--; + if (!dp->mReferenceCount) { + sStringPool->deallocate(mStringData); + mStringData->~StringData(); + } + } + + public: // Access + // used to read data + [[nodiscard]] const tChar* read() const { + return mStringData->mBuff; + } + + // used to write data + // output will be null if in TextEditing mode + [[nodiscard]] tChar* write() { + makeModifiable(); + return mStringData->getBuffer(); + } + + // output will be null if in TextEditing mode + [[nodiscard]] tChar* resize() { + if (!mStringData->getEditor()) mStringData->resize(); + return mStringData->getBuffer(); + } + + public: // TextEditor Mode + // Enters TextEditor Mode + void createEditor() { mStringData->createEdited(); } + + // Access to TextEditor Context & Interface + [[nodiscard]] TextEditor* getEditor() { return mStringData->getEdited(); } + [[nodiscard]] const TextEditor* getEditor() const { return mStringData->getEdited(); } + + // Applies TextEditor Mode To Current buffer + void applyEditor() { mStringData->applyEditor(); } + + // Leaves TextEditor Mode + void destroyEditor() { mStringData->destroyEditor(); } + + private: + void makeModifiable() { + // We have no rights to modify if someone references that memory too + // So we need to create new copy of StringData + if (mStringData->mReferenceCount > 1) { + mStringData = new (sStringPool->allocate(0)) StringData(mStringData->mBuff); + incReference(mStringData); + return; + } + + // Also if initial raw data was marked as const - create copy of raw data + // Note - raw data will be lost at this point if no other record of such is stored + if (mStringData->mIsConst) { + mStringData = new (sStringPool->allocate(0)) StringData(mStringData->mBuff); + incReference(mStringData); + } + } + }; +} \ No newline at end of file diff --git a/Strings/public/TextEditor.hpp b/Strings/public/TextEditor.hpp new file mode 100644 index 0000000..e1b1dc1 --- /dev/null +++ b/Strings/public/TextEditor.hpp @@ -0,0 +1,382 @@ + +#pragma once + +#include "Strings.hpp" +#include "Buffer.hpp" +#include "Tree.hpp" + +namespace tp { + + class PiecesDS { + + struct Input { + const Char* mInput = nullptr; + Index mLen = 0; + void getLineOffsets(Buffer& out); + }; + + struct Pointer { + LineId mLine; + ColumnId mCol; + + Pointer(); + Pointer(LineId aLine, ColumnId aCol); + Pointer(const Input& aInput); + void operator+=(Char achar); + void operator+=(const Pointer& ap); + Pointer operator-(const Pointer in) const; + Pointer operator+(const Pointer& ap) const; + bool operator==(const Pointer& in) const; + bool operator>(const Pointer& in) const; + bool operator>=(const Pointer& in) const; + }; + + struct Piece { + bool mAddedBuff = false; + Pointer mStart; + Pointer mEnd; + + Pointer diffPtr() const; + LineId nLines() const; + }; + + public: + + // Tree Node : Based on AvlNodeBlueprint + struct Node { + + Node* mLeft = nullptr; + Node* mRight = nullptr; + Node* mParent = nullptr; + halni mHeight = 0; + + Pointer mPtrLeft; + Pointer mPtrRight; + Pointer mDiff; + + Node* mNext = nullptr; + Node* mPrev = nullptr; + Piece* mPiece = nullptr; + + static bool mInsertionOperation; + + Node() {} + Node(Pointer aKey) { + //mVal = aKey; + } + + bool disentRight(Pointer aKey) const { + return aKey > mPtrLeft; + } + + bool disentLeft(Pointer aKey) const { + return mPtrLeft > aKey; + } + + bool exactNode(Pointer aKey) const { + if (mInsertionOperation) { + return aKey > mPtrLeft && mPtrLeft + mDiff > aKey; + } + return aKey >= mPtrLeft && mPtrLeft + mDiff > aKey; + } + + Pointer getFindKey(Node* node = nullptr) const { + // node must be ancestor of this node + + Pointer out = mPtrLeft; + + if (node == this) { + return out; + } + + auto iter = this; + while (iter->mParent != node) { + if (iter == iter->mParent->mRight) { + auto left_sub_tree = iter->mParent->mPtrLeft + iter->mParent->mDiff; + out = left_sub_tree + out; + } + iter = iter->mParent; + } + + if (node) { + if (iter == iter->mParent->mRight) { + auto left_sub_tree = iter->mParent->mPtrLeft + iter->mParent->mDiff; + out = left_sub_tree + out; + } + } + return out; + } + + void copyData(const Node& in) { + mPiece = in.mPiece; + mNext = in.mNext; + mPrev = in.mPrev; + + if (mPrev) { + mPrev->mNext = this; + } + + if (mNext) { + mNext->mPrev = this; + } + } + + Pointer keyInRightSubtree(Pointer key) const { return key - (mPtrLeft + mDiff); } + Pointer keyInLeftSubtree(Pointer key) const { return key; } + + void updateTreeCahceCallBack() { + DEBUG_ASSERT(mPiece); + mDiff = mPiece->diffPtr(); + if (mLeft) { + mPtrLeft = mLeft->sum(); + } + else { + mPtrLeft = { 0, 0 }; + } + + if (mRight) { + mPtrRight = mRight->sum(); + } + else { + mPtrRight = { 0, 0 }; + } + } + + Pointer sum() const { + return (mPtrLeft + mDiff) + mPtrRight; + } + }; + + private: + + AvlTree mTree; + + public: + + PiecesDS() { + } + + Node* find(Pointer ptr) const { + return mTree.find(ptr); + } + + Node* minNode(Node* node) const { + return mTree.minNode(node); + } + + Node* maxNode(Node* node) const { + return mTree.maxNode(node); + } + + Node* head() const { + return mTree.head(); + } + + void insert(const Node& node, Pointer ptr) { + Node::mInsertionOperation = true; + mTree.insert(ptr, node); + Node::mInsertionOperation = false; + } + + Node* insertAfter(Node* node, Piece piece) { + auto key = node ? (node->getFindKey() + node->mDiff) : Pointer{ 0, 0 }; + auto new_node = Node(); + new_node.mPiece = new Piece(piece); + + insert(new_node, key); + +#ifdef _DEBUG + auto err_node = mTree.isInvalid(mTree.head()); + DBG_BREAK(err_node); +#endif + + auto out = mTree.find(key); + + Node* next = out->mRight; + Node* prev = out->mLeft; + + if (!(next || prev) && out->mParent) { + if (out->mParent->mLeft == out) { + next = out->mParent; + } + else { + prev = out->mParent; + } + } + + if (next) { + out->mNext = next; + out->mPrev = next->mPrev; + next->mPrev = out; + if (out->mPrev) out->mPrev->mNext = out; + } + else if (prev) { + out->mPrev = prev; + out->mNext = prev->mNext; + prev->mNext = out; + if (out->mNext) out->mNext->mPrev = out; + } + + return out; + } + + void remove(Node* aNode) { + auto key = aNode->getFindKey(); + + if (aNode->mPrev) { + aNode->mPrev->mNext = aNode->mNext; + } + + if (aNode->mNext) { + aNode->mNext->mPrev = aNode->mPrev; + } + + auto del = aNode->mPiece; + mTree.remove(key); + delete del; + +#ifdef _DEBUG + auto err_node = mTree.isInvalid(mTree.head()); + DBG_BREAK(err_node); +#endif + } + + Node* first() const { + return mTree.minNode(mTree.head()); + } + + Pointer ptrSum() const { + if (mTree.head()) { + return mTree.head()->sum(); + } + return { 0, 0 }; + } + + halni nPieces() const { + return mTree.size(); + } + + void update_cache(Node* node) { + if (node) { + node->updateTreeCahceCallBack(); + update_cache(node->mParent); + } + } + + void undo() {} + void redo() {} + void pushUndoPoint() {} + }; + + struct AddBuff { + Buffer mBuff; + Buffer mLineOffsets; + Index mColumn = 0; + + AddBuff(); + void append(Input aInput); + Pointer endPtr(); + }; + + struct OrigBuff { + bool mOwnsInput = false; + Input mOriginal; + Buffer mLineOffsets; + + Pointer mPtrStart; + Pointer mPtrEnd; + + // does not owns the original input by default + OrigBuff(Input aOriginal); + + void makeOwnOriginalInput(); + + ~OrigBuff(); + }; + + struct PieceCrs { + Pointer piece_ptr; + Pointer offset; + Pointer ptr; + PiecesDS::Node* piece = nullptr; + }; + + class TextEditor { + friend class Iterator; + + class Iterator { + friend TextEditor; + + const TextEditor* mSelf; + PiecesDS::Node* mNode = nullptr; + Pointer mOffset = { 0, 0 }; + Pointer mPtr = { 0, 0 }; + Char mVal = 0; + + Iterator(const TextEditor* mSelf); + bool inputLeft(); + + public: + + Char character(); + void operator++(); + bool operator!=(alni const& iter); + bool operator==(alni const& iter); + Char operator->(); + const Iterator& operator*(); + }; + + public: + + // pieces of strings that construct the text + PiecesDS mPieces; + + // string buffers to wich pieces can reffer + OrigBuff mOrigBuff; + AddBuff mAddBuff; + + // active position on the text + Pointer mCursor; + Pointer mCursorEnd; + + Pointer mLastInsertionCrs; + //private: + + [[nodiscard]] PieceCrs findPiece(Pointer ptr) const; + [[nodiscard]] Pointer prevPiecePtr(PiecesDS::Node* piece_node, Pointer piece_pointer) const; + [[nodiscard]] Pointer nextPiecePtr(PiecesDS::Node* piece_node, Pointer piece_pointer) const; + + [[nodiscard]] const Char* getBuffLine(const Piece*, LineId) const; + [[nodiscard]] const Char* getPieceLine(const Piece*, LineId) const; + [[nodiscard]] PiecesDS::Node* splitPiece(PiecesDS::Node* piece, Pointer split_ptr); + [[nodiscard]] LineId getPieceLineLen(Piece* aPiece, LineId line) const; + + public: + enum Dir : uint1 { LEFT, RIGHT, UP, DOWN }; + enum DirUnit : uint1 { CHAR, WORD, TOK, LINE_END, LINE_START }; + + public: + + TextEditor(); + explicit TextEditor(Input original); + + [[nodiscard]] Index mNLines() const; + void clampPtr(Pointer& ptr) const; + [[nodiscard]] Pointer getCursor() const; + [[nodiscard]] Pointer getCursorEnd() const; + void setCursor(Pointer ptr); + void setCursorEnd(Pointer ptr); + + void insert(Input aInput); + + void remove(bool only_selection = false, Dir dir = LEFT, DirUnit unit = CHAR); + + void undo(); + void redo(); + + Iterator begin(); + alni end(); + + ~TextEditor(); + }; +} \ No newline at end of file diff --git a/Strings/tests/tests.cpp b/Strings/tests/tests.cpp new file mode 100644 index 0000000..2e9f769 --- /dev/null +++ b/Strings/tests/tests.cpp @@ -0,0 +1,66 @@ + + +#include "common.h" + +#include "allocators.h" + +#include "strings.h" + +#include + +#include +#include +#include + +#include "TextEditor.hpp" + +#include "Logging.hpp" + +using namespace tp; + +void test_conversions() { + + for (auto i : tp::Range(1000)) { + + auto sign = bool(std::rand() % 2) ? 1 : -1; + + auto floating = std::rand() / (tp::alnf)std::rand() * sign; + auto tmp = std::to_string(floating); + auto left = tp::string(tmp.c_str()); + auto right = tp::string(floating); + DBG_BREAK(left != right); + auto back = (tp::alnf)right; + //DBG_BREAK(back != floating); + + auto integer = std::rand() * sign; + tmp = std::to_string(integer); + left = tp::string(tmp.c_str()); + right = tp::string(integer); + DBG_BREAK(left != right); + back = (tp::alni)right; + DBG_BREAK(back != integer); + } +} + +void test_editor() { + tp::string str = " initial "; + str.createEdited(); + auto edited = str.getEdited(); + edited->setCursor({0, 4}); + edited->insert({"aaa", 3}); + str.saveEdited(); + str.clearEdited(); + + GLog->write(str, true); +} + +int main() { + tp::alloc_init(); + string::Initialize(); + Logger::init(); + //test_conversions(); + test_editor(); + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); +} \ No newline at end of file diff --git a/TODO b/TODO index 7811a43..7ea9460 100644 --- a/TODO +++ b/TODO @@ -7,7 +7,7 @@ Containers: Buffer 2d ! Add check copy times AVL dont copy data just swap - More tests on buff and avl + More tests on mBuff and avl Strings: Implement From d362d8c3b3f34e799f2ed98a0cbbc0e16b8e6a6b Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 10:03:16 +0300 Subject: [PATCH 03/68] Removing TextEditor from strings for now --- Containers/public/Buffer.hpp | 6 + Strings/private/Logging.cpp | 19 +- Strings/private/TextEditor.cpp | 554 --------------------------------- Strings/public/Logging.hpp | 2 +- Strings/public/StringLogic.hpp | 19 ++ Strings/public/Strings.hpp | 132 +++----- Strings/public/TextEditor.hpp | 382 ----------------------- 7 files changed, 65 insertions(+), 1049 deletions(-) delete mode 100644 Strings/private/TextEditor.cpp delete mode 100644 Strings/public/TextEditor.hpp diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 1c9d3bf..3a62be5 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -175,6 +175,12 @@ namespace tp { if (prevSize > mLoad) resizeBuffer(prevSize); } + void reserve(ualni aSize) { + for (ualni i = 0; i < mLoad; i++) mBuff[i].~tType(); + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * aSize); + mSize = aSize; + mLoad = 0; + } private: void resizeBuffer(ualni newSize) { diff --git a/Strings/private/Logging.cpp b/Strings/private/Logging.cpp index 443de68..17c3c21 100644 --- a/Strings/private/Logging.cpp +++ b/Strings/private/Logging.cpp @@ -1,7 +1,6 @@ #include "Logging.hpp" #include "Allocators.hpp" -#include "TextEditor.hpp" #include @@ -18,8 +17,7 @@ namespace tp { } void Logger::Report::calcLineCount() { - Input input = { mData.raw(), (ualni) mData.size() }; - input.getLineOffsets(mLineOffsets); + mData.calcLineOffsets(mLineOffsets); } Logger::Report::Report() { @@ -35,19 +33,10 @@ namespace tp { } void Logger::write(const String& in, bool post, Report::Type type) { - StringTemplate copy = in; - copy.capture(); - mBuff.pushBack(Report(copy, type)); - + mBuff.pushBack(Report(in, type)); mLineCount += mBuff.last()->data.getLineCount(); - - if (!mCursor) { - mCursor = mBuff.last(); - } - - if (post) { - printf("%s", in.raw()); - } + if (!mCursor) mCursor = mBuff.last(); + if (post) printf("%s", in.read()); } String Logger::read() { diff --git a/Strings/private/TextEditor.cpp b/Strings/private/TextEditor.cpp deleted file mode 100644 index 1493f76..0000000 --- a/Strings/private/TextEditor.cpp +++ /dev/null @@ -1,554 +0,0 @@ - -#include "TextEditor.hpp" - -using namespace tp; -using namespace str; - -bool tp::str::PiecesDS::Node::mInsertionOperation = false; - -bool tp::str::isNewLineChar(Char character) { - return (character == '\n') || (character == '\r'); -} - -void Input::getLineOffsets(Buffer& out) { - halni lines = 0; - for (auto idx : Range(mLen)) { - if (isNewLineChar(mInput[idx])) { - lines++; - } - } - out.reserve(lines + 2); // plust start and end offsets - lines = 0; - for (auto idx : Range(mLen)) { - if (isNewLineChar(mInput[idx])) { - out[lines + 1] = Index(idx + 1); - lines++; - } - } - out[0] = 0; - out[lines + 1] = mLen; -} - - // ---------------------- Pointer ---------------------- // - -Pointer::Pointer() { - mCol = 0; mLine = 0; -} - -Pointer::Pointer(LineId aLine, ColumnId aCol) { - mLine = aLine; - mCol = aCol; -} - -Pointer::Pointer(const Input& aInput) { - halni lines = 0; - halni col = 0; - for (auto idx : Range(aInput.mLen)) { - if (isNewLineChar(aInput.mInput[idx])) { - lines++; - col = 0; - } - else { - col++; - } - } - mLine = lines; - mCol = col; -} - -void Pointer::operator+=(Char achar) { - if (isNewLineChar(achar)) { - mLine += 1; - mCol = 0; - } - else { - mCol += 1; - } -} - -void Pointer::operator+=(const Pointer& ap) { - *this = operator+(ap); -} - -Pointer Pointer::operator-(const Pointer in) const { - if (mLine == in.mLine) { - return { 0, mCol - in.mCol }; - } - return { mLine - in.mLine, mCol }; -} - -Pointer Pointer::operator+(const Pointer& ap) const { - if (ap.mLine == 0) { - return { mLine, mCol + ap.mCol }; - } - return { mLine + ap.mLine, ap.mCol }; -} - -bool Pointer::operator==(const Pointer& in) const { - return in.mCol == mCol && in.mLine == mLine; -} - -bool Pointer::operator>(const Pointer& in) const { - if (mLine > in.mLine) { - return true; - } - else if (mLine < in.mLine) { - return false; - } - - return mCol > in.mCol; -} - -bool Pointer::operator>=(const Pointer& in) const { - return operator>(in) || in == *this; -} - -Pointer Piece::diffPtr() const { - return mEnd - mStart; -} - -LineId Piece::nLines() const { - return { mEnd.mLine - mStart.mLine }; -} - -// ---------------------- Add Buff ---------------------- // - -AddBuff::AddBuff() { - Input input = { "", 0 }; - Buffer lineoffsets; - input.getLineOffsets(lineoffsets); - mLineOffsets.append(lineoffsets.mBuff(), (Index)lineoffsets.length()); -} - -void AddBuff::append(Input aInput) { - - // TODO : errors here - - Buffer lineoffsets; - aInput.getLineOffsets(lineoffsets); - - if (lineoffsets.length() == 2) { - mLineOffsets[mLineOffsets.len() - 1] += lineoffsets[1] - lineoffsets[0]; - } - else { - - auto last_line_offset = mLineOffsets[mLineOffsets.len() - 1]; - - // offset last line ptr - mLineOffsets[mLineOffsets.len() - 1] += lineoffsets[1]; - - // offset all lines by mLineOffsets.mLast ptr - for (auto offset : lineoffsets) { - offset.data() += last_line_offset; - } - - mLineOffsets.append(&lineoffsets[2], (Index)(lineoffsets.length() - 2)); - } - - mBuff.append(aInput.mInput, aInput.mLen); -} - -Pointer AddBuff::endPtr() { - return { mLineOffsets.len() - 2, mLineOffsets[mLineOffsets.len() - 1] - mLineOffsets[mLineOffsets.len() - 2] }; -} - -// ---------------------- Orig Buff ---------------------- // - -OrigBuff::OrigBuff(Input aOriginal) { - mOriginal = aOriginal; - mOriginal.getLineOffsets(mLineOffsets); - - mPtrStart = { 0, 0 }; - mPtrEnd = mOriginal; -} - -void OrigBuff::makeOwnOriginalInput() { - if (mOwnsInput) { - return; - } - - auto input_copy = new Char[mOriginal.mLen + 1]; - DEBUG_ASSERT(sizeof(Char) == sizeof(uint1)); - memcp(input_copy, mOriginal.mInput, mOriginal.mLen); - input_copy[mOriginal.mLen] = '\0'; - mOriginal.mInput = input_copy; - mOwnsInput = true; -} - -OrigBuff::~OrigBuff() { - if (mOwnsInput) { - delete[] mOriginal.mInput; - } -} - -// ---------------------- Editor ---------------------- // - -PieceCrs TextEditor::findPiece(Pointer ptr) const { - PieceCrs out; - if (!mPieces.nPieces()) { - return out; - } - - if (mPieces.ptrSum() == ptr) { - out.piece = mPieces.maxNode(mPieces.head()); - } else { - out.piece = mPieces.find(ptr); - } - - DBG_BREAK(!out.piece); - out.piece_ptr = out.piece->getFindKey(); - out.ptr = ptr; - out.offset = out.ptr - out.piece_ptr; - return out; -} - -void TextEditor::clampPtr(Pointer& ptr) const { - if (!mPieces.nPieces()) { - ptr = { 0, 0 }; - return; - } - - CLAMP(ptr.mLine, 0, mNLines()); - - auto crs = findPiece(Pointer{ ptr.mLine, 0 }); - Index line_len = getPieceLineLen(crs.piece->mPiece, crs.offset.mLine); - - auto next_piece_ptr = nextPiecePtr(crs.piece, crs.piece_ptr); - auto piece = crs.piece; - while (piece->mNext && ptr.mLine == next_piece_ptr.mLine) { - piece = piece->mNext; - next_piece_ptr = nextPiecePtr(piece, next_piece_ptr); - line_len += getPieceLineLen(piece->mPiece, 0); - } - - if (ptr.mLine != mNLines()) { - line_len -= 1; - } - - CLAMP(ptr.mCol, 0, line_len); -} - -void TextEditor::setCursor(Pointer ptr) { - clampPtr(ptr); - mCursor = ptr; -} - -void TextEditor::setCursorEnd(Pointer ptr) { - clampPtr(ptr); - mCursorEnd = ptr; - mCursor = mCursorEnd; -} - -const Char* TextEditor::getPieceLine(const Piece* piece, LineId offset) const { - const Char* buff; - if (piece->mAddedBuff) { - if (offset == 0) { - buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mStart.mLine]] + piece->mStart.mCol; - } - else if (offset > piece->nLines()) { - buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mEnd.mLine]] + piece->mEnd.mCol; - } - else { - buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mStart.mLine + offset]]; - } - } - else { - if (offset == 0) { - buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mStart.mLine]] + piece->mStart.mCol; - } - else if (offset > piece->nLines()) { - buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mEnd.mLine]] + piece->mEnd.mCol; - } - else { - buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mStart.mLine + offset]]; - } - } - return buff; -} - -const Char* TextEditor::getBuffLine(const Piece* piece, LineId offset) const { - const Char* buff; - if (piece->mAddedBuff) { - buff = &mAddBuff.mBuff[mAddBuff.mLineOffsets[piece->mStart.mLine + offset]]; - } - else { - buff = &mOrigBuff.mOriginal.mInput[mOrigBuff.mLineOffsets[piece->mStart.mLine + offset]]; - } - return buff; -} - -Pointer TextEditor::prevPiecePtr(PiecesDS::Node* piece_node, Pointer aPtr) const { - if (!piece_node->mPrev) { - return { 0, 0 }; - } - - return piece_node->mPrev->getFindKey(); -} - -Pointer TextEditor::nextPiecePtr(PiecesDS::Node* aPiece, Pointer aPtr) const { - if (!aPiece) return { -1, -1 }; - - if (aPiece->mNext) { - return aPiece->mNext->getFindKey(); - } - return aPiece->getFindKey() + aPiece->mDiff; -} - -LineId TextEditor::getPieceLineLen(Piece* aPiece, LineId line) const { - return LineId(getPieceLine(aPiece, line + 1) - getPieceLine(aPiece, line)); -} - -TextEditor::TextEditor(Input original) : mOrigBuff(original) { - DEBUG_ASSERT(original.mLen); - auto new_node = mPieces.insertAfter(0, { false, mOrigBuff.mPtrStart, mOrigBuff.mPtrEnd }); - mPieces.pushUndoPoint(); -} - -TextEditor::TextEditor() : mOrigBuff({ 0, 0 }) { -} - -Index TextEditor::mNLines() const { - return mPieces.ptrSum().mLine; -} - -Pointer TextEditor::getCursor() const { - return mCursor; -} - -Pointer TextEditor::getCursorEnd() const { - return mCursorEnd; -} - -void TextEditor::insert(Input aInput) { - // handle selectiom - remove(true); - - // save input to addbuff - auto start_ref = mAddBuff.endPtr(); - mAddBuff.append(aInput); - auto end_ref = mAddBuff.endPtr(); - auto input_diff = end_ref - start_ref; - - PiecesDS::Node* prev_node = nullptr; - PiecesDS::Node* new_node = nullptr; - - auto crs = findPiece(mCursor); - - if (crs.piece && crs.piece->mPrev && crs.offset == Pointer{ 0, 0 }) { - crs.piece_ptr = prevPiecePtr(crs.piece, crs.piece_ptr); - crs.offset = crs.ptr - crs.piece_ptr; - crs.piece = crs.piece->mPrev; - } - - if (crs.piece) { - if (crs.ptr == crs.piece_ptr) { // start - prev_node = crs.piece->mPrev; - } - else if (crs.offset == crs.piece->mPiece->diffPtr()) { // end - if (mLastInsertionCrs == crs.ptr && crs.piece->mPiece->mAddedBuff && crs.piece->mPiece->mEnd == start_ref) { - crs.piece->mPiece->mEnd += input_diff; - mPieces.update_cache(crs.piece); - goto END; - } - else { - prev_node = crs.piece; - } - } - else { // middle - prev_node = splitPiece(crs.piece, crs.offset); - } - } - - // create the new node - new_node = mPieces.insertAfter(prev_node, { true, start_ref, end_ref }); - - END: - mCursor = mCursor + input_diff; - mCursorEnd = mCursor; - mLastInsertionCrs = mCursor; - mPieces.pushUndoPoint(); -} - -PiecesDS::Node* TextEditor::splitPiece(PiecesDS::Node* piece, Pointer split_ptr) { - auto span = piece->mPiece->diffPtr(); - - if (span == split_ptr || split_ptr == Pointer{ 0, 0 }) { - return nullptr; - } - - // save temp data - auto end_ptr = piece->mPiece->mEnd; - auto left_piece = Piece{ piece->mPiece->mAddedBuff, piece->mPiece->mStart, piece->mPiece->mStart + split_ptr }; - auto left_node = mPieces.insertAfter(piece->mPrev, left_piece); - - // create right half - auto right_node = mPieces.insertAfter(left_node, { left_node->mPiece->mAddedBuff, left_node->mPiece->mEnd, end_ptr }); - - auto line_len = halni(getBuffLine(right_node->mPiece, 1) - getBuffLine(right_node->mPiece, 0)); - if (line_len == right_node->mPiece->mStart.mCol) { - DBG_BREAK(1); - right_node->mPiece->mStart = { right_node->mPiece->mStart.mLine + 1, 0 }; - } - - // remove current node - mPieces.remove(right_node->mNext); - - return left_node; -} - -void TextEditor::remove(bool only_selection, Dir dir, DirUnit unit) { - if (!mPieces.nPieces()) { - return; - } - - if (mCursor == mCursorEnd) { - if (only_selection) { - return; - } - - if (dir == LEFT) { - if (mCursor == Pointer(0, 0)) { - return; - } - - PieceCrs crs; - if (mCursor.mCol == nullptr) { - auto new_ptr = Pointer{ mCursor.mLine - 1, ENV_HALNI_MAX }; - clampPtr(new_ptr); - crs = findPiece(new_ptr); - //crs = findPiece({ crs.ptr.mLine, crs.ptr.mCol - 1 }); - } - else { - crs = findPiece({ mCursor.mLine, mCursor.mCol - 1 }); - } - - mCursorEnd = mCursor; - mCursor = crs.ptr; - } - else if (dir == RIGHT) { - auto crs = findPiece(Pointer{ mCursor.mLine, mCursor.mCol + 1 }); - mCursorEnd = mCursor; - mCursor = crs.ptr; - - if (mCursor == mCursorEnd) { - return; - } - } - else { - return; - } - } - - if (mCursor > mCursorEnd) { - swap(mCursor, mCursorEnd); - } - - auto crs = findPiece(mCursor); - - // first and last pieces to be deleted - PiecesDS::Node* del_start = nullptr, *del_end = nullptr; - - // find left - if (crs.offset == Pointer{ 0, 0 }) { - del_start = crs.piece; - } - else if (crs.piece->mPiece->diffPtr() == crs.offset) { - del_start = crs.piece->mNext; - } - else { - del_start = splitPiece(crs.piece, crs.offset)->mNext; - } - - auto crs_end = findPiece(mCursorEnd); - - // find right - if (crs_end.offset == Pointer{ 0, 0 }) { - del_end = crs_end.piece->mPrev; - } - else if (crs_end.piece->mPiece->diffPtr() == crs_end.offset) { - del_end = crs_end.piece; - } - else { - bool intersect = crs_end.piece == del_start; - del_end = splitPiece(crs_end.piece, crs_end.offset); - if (intersect) { - del_start = del_end; - } - } - - DEBUG_ASSERT(del_start && del_end); - auto end_piece = del_end->mNext ? del_end->mNext->mPiece : nullptr; - - while (del_start && del_start->mPiece != end_piece) { - auto del = del_start; - - // del_start will be reused by the avl-tree after deletion otherwise - // works as we go from left to right - if (!del_start->mNext || del_start->mHeight <= del_start->mNext->mHeight) { - del_start = del_start->mNext; - } - - mPieces.remove(del); - } - mCursorEnd = mCursor; - - mPieces.pushUndoPoint(); -} - -void TextEditor::undo() { - mPieces.undo(); -} - -void TextEditor::redo() { - mPieces.redo(); -} - -TextEditor::~TextEditor() { -} - -// ------------------------------ ITERATOR ------------------------------ // - -Iterator TextEditor::begin() { return Iterator(this); } -alni TextEditor::end() { return nullptr; } - -Iterator::Iterator(const TextEditor* aSelf) { - mSelf = aSelf; - mNode = mSelf->mPieces.first(); - mVal = mSelf->getPieceLine(mNode->mPiece, 0)[0]; -} - -bool Iterator::inputLeft() { - return mNode; -} - -Char Iterator::character() { - return mVal; -} - -void Iterator::operator++() { - auto nl = isNewLineChar(mVal); - auto diff = Pointer{ nl, !nl }; - mPtr += diff; - mOffset += diff; - - if (mOffset == mNode->mPiece->diffPtr()) { - mNode = mNode->mNext; - mOffset = { 0, 0 }; - if (!mNode) { - return; - } - } - - mVal = mSelf->getPieceLine(mNode->mPiece, mOffset.mLine)[mOffset.mCol]; -} - -bool Iterator::operator!=(alni const& iter) { - return inputLeft(); -} - -bool Iterator::operator==(alni const& iter) { - return !inputLeft(); -} - -Char Iterator::operator->() { return mVal; } -const Iterator& Iterator::operator*() { return *this; } diff --git a/Strings/public/Logging.hpp b/Strings/public/Logging.hpp index 6616e72..dbe9977 100644 --- a/Strings/public/Logging.hpp +++ b/Strings/public/Logging.hpp @@ -12,7 +12,7 @@ namespace tp { class Report { String mData; - Buffer mLineOffsets; + Buffer mLineOffsets; public: enum Type { INFO, ERR, WARN, SUC } mType = INFO; diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index 488349a..84d6557 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -170,5 +170,24 @@ namespace tp { } return true; } + + static void calcLineOffsets(const tChar* aBuff, Index aLength, Buffer& aOut) { + halni lines = 0; + for (auto idx : Range(aLength)) { + if (isNewLineChar(aBuff[idx])) { + lines++; + } + } + aOut.reserve(lines + 2); // plus start and end offsets + lines = 0; + for (auto idx : Range(aLength)) { + if (isNewLineChar(aBuff[idx])) { + aOut[lines + 1] = Index(idx + 1); + lines++; + } + } + aOut[0] = 0; + aOut[lines + 1] = aLength; + } }; } \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index 3fdb5a4..1718f30 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -2,7 +2,7 @@ #include "PoolAllocator.hpp" #include "StringLogic.hpp" -#include "TextEditor.hpp" +#include "Buffer.hpp" namespace tp { @@ -11,48 +11,23 @@ namespace tp { template class StringTemplate; - using String = StringTemplate; + using String = StringTemplate; - template + template class StringTemplate { - typedef StringLogic StringLogic; + public: + typedef StringLogic Logic; + typedef Logic::Index Index; + private: // Hidden slave class class StringData { - - // allows to edit each string with text editor inplace - class TextEditors { - enum { MAX_EDITED_STRINGS = 65536 }; // 2^16 - do not change mindlessly - typedef uint2 Address; - ChunkAlloc mEditorsPool; - - public: - TextEditors() : mEditorsPool() {} - - TextEditor* get(Address address) { return mEditorsPool.getBuff() + address; } - - Address createTextEditor(const tChar* originalBuffer) { - auto entry = (TextEditor**) mEditorsPool.allocate(0); - *entry = new TextEditor( originalBuffer ); - return Address(entry - mEditorsPool.getBuff()); - } - - void destroyTextEditor(Address address) { - auto entry = mEditorsPool.getBuff() + address; - mEditorsPool.deallocate(entry); - delete entry; - } - }; - - static TextEditors sTextEditors; - public: uint2 mIsConst; // source is non-modifiable uint2 mEditedIdx; // editor id uint4 mReferenceCount; // number of users of this tChar* mBuff; // actual string data - public: StringData() { MODULE_SANITY_CHECK(gModuleStrings) mBuff = (tChar*) "*"; @@ -73,7 +48,7 @@ namespace tp { explicit StringData(const tChar* aBuff) { MODULE_SANITY_CHECK(gModuleStrings) DEBUG_ASSERT(aBuff) - auto const len = StringLogic::calcLength(aBuff); + auto const len = Logic::calcLength(aBuff); resize(len); memCopy(mBuff, aBuff, len); mReferenceCount = 0; @@ -82,52 +57,18 @@ namespace tp { } [[nodiscard]] tChar* getBuffer() { - DEBUG_ASSERT(!isEditorMode()) - if (isEditorMode()) return nullptr; return mBuff; } ~StringData() { if (!mIsConst) delete[] mBuff; - if (isEditorMode()) sTextEditors.destroyTextEditor(mEditedIdx); } - public: void resize(ualni size) { - DEBUG_ASSERT(!isEditorMode() && mReferenceCount == 1 && !mIsConst) + DEBUG_ASSERT(mReferenceCount == 1 && !mIsConst) delete[] mBuff; mBuff = new tChar[size + 1]; - mBuff[size] = StringLogic::getEndChar(); - } - - public: - [[nodiscard]] bool isEditorMode() const { return mEditedIdx; } - - void createEditor() { - DEBUG_ASSERT(!isEditorMode()) - if (isEditorMode()) mEditedIdx = sTextEditors.createTextEditor(mBuff); - } - - [[nodiscard]] TextEditor* getEditor() const { - DEBUG_ASSERT(isEditorMode()) - if (!isEditorMode()) return nullptr; - return sTextEditors.get(mEditedIdx); - } - - void applyEditor() { - DEBUG_ASSERT(isEditorMode() && mReferenceCount == 1 && !mIsConst) - if (!isEditorMode()) return; - auto editor = sTextEditors.get(mEditedIdx); - resize(editor.textSize()); - for ( auto character : *editor) { - mBuff[character.idx] = character; - } - } - - void destroyEditor() { - DEBUG_ASSERT(isEditorMode()) - if (!isEditorMode()) return; - sTextEditors.destroyTextEditor(mEditedIdx); + mBuff[size] = Logic::getEndChar(); } }; @@ -149,14 +90,8 @@ namespace tp { // References existing string data StringTemplate(const StringTemplate& in) { - if (in.isEditorMode()) { - // Copies raw data and claims ownership over it - mStringData = new (sStringPool->allocate(0)) StringData(in.mStringData->mBuff); - incReference(mStringData); - } else { - mStringData = in.mStringData; - incReference(mStringData); - } + mStringData = in.mStringData; + incReference(mStringData); } // Creates new string data from raw data pointer. @@ -177,11 +112,6 @@ namespace tp { } private: - - [[nodiscard]] bool isEditorMode() const { - return mStringData->isEditorMode(); - } - static void incReference(StringData* dp) { dp->mReferenceCount++; } @@ -213,21 +143,7 @@ namespace tp { return mStringData->getBuffer(); } - public: // TextEditor Mode - // Enters TextEditor Mode - void createEditor() { mStringData->createEdited(); } - - // Access to TextEditor Context & Interface - [[nodiscard]] TextEditor* getEditor() { return mStringData->getEdited(); } - [[nodiscard]] const TextEditor* getEditor() const { return mStringData->getEdited(); } - - // Applies TextEditor Mode To Current buffer - void applyEditor() { mStringData->applyEditor(); } - - // Leaves TextEditor Mode - void destroyEditor() { mStringData->destroyEditor(); } - - private: + public: void makeModifiable() { // We have no rights to modify if someone references that memory too // So we need to create new copy of StringData @@ -244,5 +160,27 @@ namespace tp { incReference(mStringData); } } + + public: // Syntax sugars + Index size() const { + return Logic::calcLength(read()); + } + + void calcLineOffsets(Buffer& aOut) const { + Logic::calcLineOffsets(read(), size(), aOut); + } + + StringTemplate& operator=(const tChar* in) { + this->~StringTemplate(); + new (this) StringTemplate(in); + return *this; + } + + StringTemplate& operator=(const StringTemplate& in) { + if (&in == this) return *this; + ~StringTemplate(); + new (this) StringTemplate(in); + return *this; + } }; } \ No newline at end of file diff --git a/Strings/public/TextEditor.hpp b/Strings/public/TextEditor.hpp deleted file mode 100644 index e1b1dc1..0000000 --- a/Strings/public/TextEditor.hpp +++ /dev/null @@ -1,382 +0,0 @@ - -#pragma once - -#include "Strings.hpp" -#include "Buffer.hpp" -#include "Tree.hpp" - -namespace tp { - - class PiecesDS { - - struct Input { - const Char* mInput = nullptr; - Index mLen = 0; - void getLineOffsets(Buffer& out); - }; - - struct Pointer { - LineId mLine; - ColumnId mCol; - - Pointer(); - Pointer(LineId aLine, ColumnId aCol); - Pointer(const Input& aInput); - void operator+=(Char achar); - void operator+=(const Pointer& ap); - Pointer operator-(const Pointer in) const; - Pointer operator+(const Pointer& ap) const; - bool operator==(const Pointer& in) const; - bool operator>(const Pointer& in) const; - bool operator>=(const Pointer& in) const; - }; - - struct Piece { - bool mAddedBuff = false; - Pointer mStart; - Pointer mEnd; - - Pointer diffPtr() const; - LineId nLines() const; - }; - - public: - - // Tree Node : Based on AvlNodeBlueprint - struct Node { - - Node* mLeft = nullptr; - Node* mRight = nullptr; - Node* mParent = nullptr; - halni mHeight = 0; - - Pointer mPtrLeft; - Pointer mPtrRight; - Pointer mDiff; - - Node* mNext = nullptr; - Node* mPrev = nullptr; - Piece* mPiece = nullptr; - - static bool mInsertionOperation; - - Node() {} - Node(Pointer aKey) { - //mVal = aKey; - } - - bool disentRight(Pointer aKey) const { - return aKey > mPtrLeft; - } - - bool disentLeft(Pointer aKey) const { - return mPtrLeft > aKey; - } - - bool exactNode(Pointer aKey) const { - if (mInsertionOperation) { - return aKey > mPtrLeft && mPtrLeft + mDiff > aKey; - } - return aKey >= mPtrLeft && mPtrLeft + mDiff > aKey; - } - - Pointer getFindKey(Node* node = nullptr) const { - // node must be ancestor of this node - - Pointer out = mPtrLeft; - - if (node == this) { - return out; - } - - auto iter = this; - while (iter->mParent != node) { - if (iter == iter->mParent->mRight) { - auto left_sub_tree = iter->mParent->mPtrLeft + iter->mParent->mDiff; - out = left_sub_tree + out; - } - iter = iter->mParent; - } - - if (node) { - if (iter == iter->mParent->mRight) { - auto left_sub_tree = iter->mParent->mPtrLeft + iter->mParent->mDiff; - out = left_sub_tree + out; - } - } - return out; - } - - void copyData(const Node& in) { - mPiece = in.mPiece; - mNext = in.mNext; - mPrev = in.mPrev; - - if (mPrev) { - mPrev->mNext = this; - } - - if (mNext) { - mNext->mPrev = this; - } - } - - Pointer keyInRightSubtree(Pointer key) const { return key - (mPtrLeft + mDiff); } - Pointer keyInLeftSubtree(Pointer key) const { return key; } - - void updateTreeCahceCallBack() { - DEBUG_ASSERT(mPiece); - mDiff = mPiece->diffPtr(); - if (mLeft) { - mPtrLeft = mLeft->sum(); - } - else { - mPtrLeft = { 0, 0 }; - } - - if (mRight) { - mPtrRight = mRight->sum(); - } - else { - mPtrRight = { 0, 0 }; - } - } - - Pointer sum() const { - return (mPtrLeft + mDiff) + mPtrRight; - } - }; - - private: - - AvlTree mTree; - - public: - - PiecesDS() { - } - - Node* find(Pointer ptr) const { - return mTree.find(ptr); - } - - Node* minNode(Node* node) const { - return mTree.minNode(node); - } - - Node* maxNode(Node* node) const { - return mTree.maxNode(node); - } - - Node* head() const { - return mTree.head(); - } - - void insert(const Node& node, Pointer ptr) { - Node::mInsertionOperation = true; - mTree.insert(ptr, node); - Node::mInsertionOperation = false; - } - - Node* insertAfter(Node* node, Piece piece) { - auto key = node ? (node->getFindKey() + node->mDiff) : Pointer{ 0, 0 }; - auto new_node = Node(); - new_node.mPiece = new Piece(piece); - - insert(new_node, key); - -#ifdef _DEBUG - auto err_node = mTree.isInvalid(mTree.head()); - DBG_BREAK(err_node); -#endif - - auto out = mTree.find(key); - - Node* next = out->mRight; - Node* prev = out->mLeft; - - if (!(next || prev) && out->mParent) { - if (out->mParent->mLeft == out) { - next = out->mParent; - } - else { - prev = out->mParent; - } - } - - if (next) { - out->mNext = next; - out->mPrev = next->mPrev; - next->mPrev = out; - if (out->mPrev) out->mPrev->mNext = out; - } - else if (prev) { - out->mPrev = prev; - out->mNext = prev->mNext; - prev->mNext = out; - if (out->mNext) out->mNext->mPrev = out; - } - - return out; - } - - void remove(Node* aNode) { - auto key = aNode->getFindKey(); - - if (aNode->mPrev) { - aNode->mPrev->mNext = aNode->mNext; - } - - if (aNode->mNext) { - aNode->mNext->mPrev = aNode->mPrev; - } - - auto del = aNode->mPiece; - mTree.remove(key); - delete del; - -#ifdef _DEBUG - auto err_node = mTree.isInvalid(mTree.head()); - DBG_BREAK(err_node); -#endif - } - - Node* first() const { - return mTree.minNode(mTree.head()); - } - - Pointer ptrSum() const { - if (mTree.head()) { - return mTree.head()->sum(); - } - return { 0, 0 }; - } - - halni nPieces() const { - return mTree.size(); - } - - void update_cache(Node* node) { - if (node) { - node->updateTreeCahceCallBack(); - update_cache(node->mParent); - } - } - - void undo() {} - void redo() {} - void pushUndoPoint() {} - }; - - struct AddBuff { - Buffer mBuff; - Buffer mLineOffsets; - Index mColumn = 0; - - AddBuff(); - void append(Input aInput); - Pointer endPtr(); - }; - - struct OrigBuff { - bool mOwnsInput = false; - Input mOriginal; - Buffer mLineOffsets; - - Pointer mPtrStart; - Pointer mPtrEnd; - - // does not owns the original input by default - OrigBuff(Input aOriginal); - - void makeOwnOriginalInput(); - - ~OrigBuff(); - }; - - struct PieceCrs { - Pointer piece_ptr; - Pointer offset; - Pointer ptr; - PiecesDS::Node* piece = nullptr; - }; - - class TextEditor { - friend class Iterator; - - class Iterator { - friend TextEditor; - - const TextEditor* mSelf; - PiecesDS::Node* mNode = nullptr; - Pointer mOffset = { 0, 0 }; - Pointer mPtr = { 0, 0 }; - Char mVal = 0; - - Iterator(const TextEditor* mSelf); - bool inputLeft(); - - public: - - Char character(); - void operator++(); - bool operator!=(alni const& iter); - bool operator==(alni const& iter); - Char operator->(); - const Iterator& operator*(); - }; - - public: - - // pieces of strings that construct the text - PiecesDS mPieces; - - // string buffers to wich pieces can reffer - OrigBuff mOrigBuff; - AddBuff mAddBuff; - - // active position on the text - Pointer mCursor; - Pointer mCursorEnd; - - Pointer mLastInsertionCrs; - //private: - - [[nodiscard]] PieceCrs findPiece(Pointer ptr) const; - [[nodiscard]] Pointer prevPiecePtr(PiecesDS::Node* piece_node, Pointer piece_pointer) const; - [[nodiscard]] Pointer nextPiecePtr(PiecesDS::Node* piece_node, Pointer piece_pointer) const; - - [[nodiscard]] const Char* getBuffLine(const Piece*, LineId) const; - [[nodiscard]] const Char* getPieceLine(const Piece*, LineId) const; - [[nodiscard]] PiecesDS::Node* splitPiece(PiecesDS::Node* piece, Pointer split_ptr); - [[nodiscard]] LineId getPieceLineLen(Piece* aPiece, LineId line) const; - - public: - enum Dir : uint1 { LEFT, RIGHT, UP, DOWN }; - enum DirUnit : uint1 { CHAR, WORD, TOK, LINE_END, LINE_START }; - - public: - - TextEditor(); - explicit TextEditor(Input original); - - [[nodiscard]] Index mNLines() const; - void clampPtr(Pointer& ptr) const; - [[nodiscard]] Pointer getCursor() const; - [[nodiscard]] Pointer getCursorEnd() const; - void setCursor(Pointer ptr); - void setCursorEnd(Pointer ptr); - - void insert(Input aInput); - - void remove(bool only_selection = false, Dir dir = LEFT, DirUnit unit = CHAR); - - void undo(); - void redo(); - - Iterator begin(); - alni end(); - - ~TextEditor(); - }; -} \ No newline at end of file From c75cb9fb484d8789f6bdcb3f5fe72cd990f439f1 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 10:29:51 +0300 Subject: [PATCH 04/68] Testing --- Allocators/public/ChunkAllocator.hpp | 1 + Strings/public/StringLogic.hpp | 1 + Strings/public/Strings.hpp | 184 ++++++++++++++------------- Strings/tests/Tests.cpp | 21 +++ Strings/tests/TestsLogging.cpp | 11 ++ Strings/tests/TestsStrings.cpp | 16 +++ Strings/tests/tests.cpp | 66 ---------- 7 files changed, 145 insertions(+), 155 deletions(-) create mode 100644 Strings/tests/Tests.cpp create mode 100644 Strings/tests/TestsLogging.cpp create mode 100644 Strings/tests/TestsStrings.cpp delete mode 100644 Strings/tests/tests.cpp diff --git a/Allocators/public/ChunkAllocator.hpp b/Allocators/public/ChunkAllocator.hpp index 99247fa..2f9e678 100644 --- a/Allocators/public/ChunkAllocator.hpp +++ b/Allocators/public/ChunkAllocator.hpp @@ -14,6 +14,7 @@ * 2) updating list entry to that block. */ +#include "HeapAllocatorGlobal.hpp" #include "Environment.hpp" #include "PrivateConfig.hpp" diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index 84d6557..8067f77 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -1,6 +1,7 @@ #pragma once #include "Utils.hpp" +#include "Buffer.hpp" namespace tp { diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index 1718f30..daba7ba 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -2,162 +2,160 @@ #include "PoolAllocator.hpp" #include "StringLogic.hpp" -#include "Buffer.hpp" namespace tp { // Static data extern ModuleManifest gModuleStrings; - template - class StringTemplate; - using String = StringTemplate; + template class StringTemplate; + + // Hidden slave class + template + class StringData { + friend StringTemplate; + typedef StringLogic Logic; + + private: + uint2 mIsConst; // source is non-modifiable + uint2 mEditedIdx; // editor id + uint4 mReferenceCount; // number of users of this + tChar* mBuff; // actual string data + + StringData() { + mBuff = (tChar*) "*"; + mReferenceCount = 0; + mIsConst = true; + mEditedIdx = 0; + } + + StringData(const tChar* aBuff, bool aIsConst) { + MODULE_SANITY_CHECK(gModuleStrings) + DEBUG_ASSERT(aBuff) + mBuff = (tChar*) aBuff; + mReferenceCount = 0; + mIsConst = aIsConst; + mEditedIdx = 0; + } + + explicit StringData(const tChar* aBuff) { + MODULE_SANITY_CHECK(gModuleStrings) + DEBUG_ASSERT(aBuff) + auto const len = Logic::calcLength(aBuff); + resize(len); + memCopy(mBuff, aBuff, len); + mReferenceCount = 0; + mIsConst = false; + mEditedIdx = 0; + } + + [[nodiscard]] tChar* getBuffer() { + return mBuff; + } + + ~StringData() { + if (!mIsConst) delete[] mBuff; + } + + void resize(ualni size) { + DEBUG_ASSERT(mReferenceCount == 1 && !mIsConst) + delete[] mBuff; + mBuff = new tChar[size + 1]; + mBuff[size] = Logic::getEndChar(); + } + }; template class StringTemplate { public: typedef StringLogic Logic; - typedef Logic::Index Index; + typedef StringData Data; + typedef typename Logic::Index Index; - private: - // Hidden slave class - class StringData { - public: - uint2 mIsConst; // source is non-modifiable - uint2 mEditedIdx; // editor id - uint4 mReferenceCount; // number of users of this - tChar* mBuff; // actual string data - - StringData() { - MODULE_SANITY_CHECK(gModuleStrings) - mBuff = (tChar*) "*"; - mReferenceCount = 0; - mIsConst = true; - mEditedIdx = 0; - } - - StringData(const tChar* aBuff, bool aIsConst) { - MODULE_SANITY_CHECK(gModuleStrings) - DEBUG_ASSERT(aBuff) - mBuff = (tChar*) aBuff; - mReferenceCount = 0; - mIsConst = aIsConst; - mEditedIdx = 0; - } - - explicit StringData(const tChar* aBuff) { - MODULE_SANITY_CHECK(gModuleStrings) - DEBUG_ASSERT(aBuff) - auto const len = Logic::calcLength(aBuff); - resize(len); - memCopy(mBuff, aBuff, len); - mReferenceCount = 0; - mIsConst = false; - mEditedIdx = 0; - } - - [[nodiscard]] tChar* getBuffer() { - return mBuff; - } - - ~StringData() { - if (!mIsConst) delete[] mBuff; - } - - void resize(ualni size) { - DEBUG_ASSERT(mReferenceCount == 1 && !mIsConst) - delete[] mBuff; - mBuff = new tChar[size + 1]; - mBuff[size] = Logic::getEndChar(); - } - }; - - private: - class StringData* mStringData; - - private: enum { STRINGS_POOL_SIZE = 1024, }; - static PoolAlloc* sStringPool; - static StringData sNullString; + static PoolAlloc, STRINGS_POOL_SIZE>* sStringPool; + static Data sNullString; - // --------------------------------- Main Interface ---------------------------------// - public: + private: + Data* mData; + + public: // Main Interface // Creates null string reference StringTemplate() { - mStringData = &sNullString; - incReference(mStringData); + mData = &sNullString; + incReference(mData); } // References existing string data StringTemplate(const StringTemplate& in) { - mStringData = in.mStringData; - incReference(mStringData); + mData = in.mData; + incReference(mData); } // Creates new string data from raw data pointer. // Does not own string buffer - string buffer will not be freed. Initializes as const memory. explicit StringTemplate(const tChar* raw) { - mStringData = new (sStringPool->allocate(0)) StringData(raw, true); - incReference(mStringData); + mData = new (sStringPool->allocate(0)) StringData(raw, true); + incReference(mData); } // Copies raw data and claims ownership over it explicit StringTemplate(tChar* raw) { - mStringData = new (sStringPool->allocate(0)) StringData(raw); - incReference(mStringData); + mData = new (sStringPool->allocate(0)) StringData(raw); + incReference(mData); } ~StringTemplate() { - decReference(mStringData); + decReference(mData); } private: - static void incReference(StringData* dp) { + static void incReference(Data* dp) { dp->mReferenceCount++; } - void decReference(StringData* dp) { + void decReference(Data* dp) { dp->mReferenceCount--; if (!dp->mReferenceCount) { - sStringPool->deallocate(mStringData); - mStringData->~StringData(); + sStringPool->deallocate(mData); + mData->~StringData(); } } public: // Access // used to read data [[nodiscard]] const tChar* read() const { - return mStringData->mBuff; + return mData->mBuff; } // used to write data // output will be null if in TextEditing mode [[nodiscard]] tChar* write() { makeModifiable(); - return mStringData->getBuffer(); + return mData->getBuffer(); } // output will be null if in TextEditing mode [[nodiscard]] tChar* resize() { - if (!mStringData->getEditor()) mStringData->resize(); - return mStringData->getBuffer(); + if (!mData->getEditor()) mData->resize(); + return mData->getBuffer(); } public: void makeModifiable() { // We have no rights to modify if someone references that memory too // So we need to create new copy of StringData - if (mStringData->mReferenceCount > 1) { - mStringData = new (sStringPool->allocate(0)) StringData(mStringData->mBuff); - incReference(mStringData); + if (mData->mReferenceCount > 1) { + mData = new (sStringPool->allocate(0)) StringData(mData->mBuff); + incReference(mData); return; } // Also if initial raw data was marked as const - create copy of raw data // Note - raw data will be lost at this point if no other record of such is stored - if (mStringData->mIsConst) { - mStringData = new (sStringPool->allocate(0)) StringData(mStringData->mBuff); - incReference(mStringData); + if (mData->mIsConst) { + mData = new (sStringPool->allocate(0)) StringData(mData->mBuff); + incReference(mData); } } @@ -183,4 +181,12 @@ namespace tp { return *this; } }; + + template + PoolAlloc, StringTemplate::STRINGS_POOL_SIZE>* StringTemplate::sStringPool; + + template + StringData StringTemplate::sNullString; + + using String = StringTemplate; } \ No newline at end of file diff --git a/Strings/tests/Tests.cpp b/Strings/tests/Tests.cpp new file mode 100644 index 0000000..fc45eb9 --- /dev/null +++ b/Strings/tests/Tests.cpp @@ -0,0 +1,21 @@ + +#include "Testing.hpp" +#include "Strings.hpp" + +void testStrings(); +void testLogging(); + +int main() { + + tp::ModuleManifest* deps[] = { &tp::gModuleStrings, &tp::gModuleUtils, nullptr }; + tp::ModuleManifest testModule("StringsTest", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + testStrings(); + testLogging(); + + testModule.deinitialize(); +} \ No newline at end of file diff --git a/Strings/tests/TestsLogging.cpp b/Strings/tests/TestsLogging.cpp new file mode 100644 index 0000000..1352363 --- /dev/null +++ b/Strings/tests/TestsLogging.cpp @@ -0,0 +1,11 @@ + +#include "Testing.hpp" +#include "Logging.hpp" + +TEST_DEF_STATIC(Simple) { + TEST(false); +} + +TEST_DEF(Logging) { + testSimple(); +} \ No newline at end of file diff --git a/Strings/tests/TestsStrings.cpp b/Strings/tests/TestsStrings.cpp new file mode 100644 index 0000000..30e638e --- /dev/null +++ b/Strings/tests/TestsStrings.cpp @@ -0,0 +1,16 @@ + +#include "Testing.hpp" +#include "Strings.hpp" + +TEST_DEF_STATIC(StringLogic) { + TEST(false); +} + +TEST_DEF_STATIC(Simple) { + TEST(false); +} + +TEST_DEF(Strings) { + testStringLogic(); + testSimple(); +} \ No newline at end of file diff --git a/Strings/tests/tests.cpp b/Strings/tests/tests.cpp deleted file mode 100644 index 2e9f769..0000000 --- a/Strings/tests/tests.cpp +++ /dev/null @@ -1,66 +0,0 @@ - - -#include "common.h" - -#include "allocators.h" - -#include "strings.h" - -#include - -#include -#include -#include - -#include "TextEditor.hpp" - -#include "Logging.hpp" - -using namespace tp; - -void test_conversions() { - - for (auto i : tp::Range(1000)) { - - auto sign = bool(std::rand() % 2) ? 1 : -1; - - auto floating = std::rand() / (tp::alnf)std::rand() * sign; - auto tmp = std::to_string(floating); - auto left = tp::string(tmp.c_str()); - auto right = tp::string(floating); - DBG_BREAK(left != right); - auto back = (tp::alnf)right; - //DBG_BREAK(back != floating); - - auto integer = std::rand() * sign; - tmp = std::to_string(integer); - left = tp::string(tmp.c_str()); - right = tp::string(integer); - DBG_BREAK(left != right); - back = (tp::alni)right; - DBG_BREAK(back != integer); - } -} - -void test_editor() { - tp::string str = " initial "; - str.createEdited(); - auto edited = str.getEdited(); - edited->setCursor({0, 4}); - edited->insert({"aaa", 3}); - str.saveEdited(); - str.clearEdited(); - - GLog->write(str, true); -} - -int main() { - tp::alloc_init(); - string::Initialize(); - Logger::init(); - //test_conversions(); - test_editor(); - Logger::deinit(); - string::UnInitialize(); - tp::alloc_uninit(); -} \ No newline at end of file From 4c9691e192203e466ae2f1333af6d49d91f6f8c4 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 11:11:55 +0300 Subject: [PATCH 05/68] Remove old testing --- Strings/public/StringLogic.hpp | 8 ++------ Strings/tests/TestsLogging.cpp | 2 +- Strings/tests/TestsStrings.cpp | 4 ++-- TODO | 2 +- 4 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index 8067f77..3dc0e18 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -129,10 +129,6 @@ namespace tp { return nullptr; } - static ualni fromValueLength(bool val) { - return val ? 4 : 5; - } - static tChar* fromValue(bool val, tChar* ownBuff) { alni len = val ? 4 : 5; tChar* out = ownBuff ? ownBuff : new tChar[len + 1]; @@ -153,12 +149,12 @@ namespace tp { } static bool toValue(const tChar*, alni&, ualni) { - DEBUG_BREAK(false) + ASSERT(false) return false; } static bool toValue(const tChar*, alnf&, ualni) { - DEBUG_BREAK(false) + ASSERT(false) return false; } diff --git a/Strings/tests/TestsLogging.cpp b/Strings/tests/TestsLogging.cpp index 1352363..65bd9b7 100644 --- a/Strings/tests/TestsLogging.cpp +++ b/Strings/tests/TestsLogging.cpp @@ -3,7 +3,7 @@ #include "Logging.hpp" TEST_DEF_STATIC(Simple) { - TEST(false); + // TEST(false); } TEST_DEF(Logging) { diff --git a/Strings/tests/TestsStrings.cpp b/Strings/tests/TestsStrings.cpp index 30e638e..a7365f6 100644 --- a/Strings/tests/TestsStrings.cpp +++ b/Strings/tests/TestsStrings.cpp @@ -3,11 +3,11 @@ #include "Strings.hpp" TEST_DEF_STATIC(StringLogic) { - TEST(false); + // TEST(false); } TEST_DEF_STATIC(Simple) { - TEST(false); + // TEST(false); } TEST_DEF(Strings) { diff --git a/TODO b/TODO index 7ea9460..ff593e0 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,5 @@ All: - Testing + Testing ! Serialization Containers: From facc17ec1be9ed558b16e205c529eacfb8913eb3 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 13:25:10 +0300 Subject: [PATCH 06/68] Buffer 2d (No tests) --- Containers/public/Buffer2D.hpp | 67 +++++++++++++++++++++++++++++++ Containers/tests/Buffer2DTest.cpp | 27 +++++++++++++ Containers/tests/Tests.cpp | 1 + Containers/tests/Tests.hpp | 3 +- 4 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 Containers/public/Buffer2D.hpp create mode 100644 Containers/tests/Buffer2DTest.cpp diff --git a/Containers/public/Buffer2D.hpp b/Containers/public/Buffer2D.hpp new file mode 100644 index 0000000..064be52 --- /dev/null +++ b/Containers/public/Buffer2D.hpp @@ -0,0 +1,67 @@ + +#include "Buffer.hpp" + +namespace tp { + + template< typename tType, ualni tSizeX, ualni tSizeY > + using ConstSizeBuffer2D = ConstSizeBuffer, tSizeY>; + + template + class Buffer2D { + typedef SelCopyArg tTypeArg; + typedef Pair Size; + + Size mSize; + tType* mBuff = nullptr; + + public: + + Buffer2D() = default; + + ~Buffer2D() { + delete mBuff; + } + + explicit Buffer2D(Pair aSize) { + reserve(aSize); + } + + [[nodiscard]] Pair size() const { + return { mSize.x, mSize.y }; + } + + tType* getBuff() const { + return mBuff; + } + + inline tType& get(uhalni x, uhalni y) { + DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0) + return *(mBuff + mSize.x * y + x); + } + + inline const tType& get(uhalni x, uhalni y) const { + DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0) + return *(mBuff + mSize.x * y + x); + } + + inline void set(uhalni x, uhalni y, tTypeArg value) { + DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0) + *(mBuff + mSize.x * y + x) = value; + } + + void reserve(Size newSize) { + if (mSize.x != newSize.x || mSize.y != newSize.y) { + delete mBuff; + mBuff = new tType[newSize.x * newSize.y]; + mSize = newSize; + } + } + + void assign(tType value) { + uhalni len = mSize.x * mSize.y; + for (uhalni i = 0; i < len; i++) { + mBuff[i] = value; + } + } + }; +} \ No newline at end of file diff --git a/Containers/tests/Buffer2DTest.cpp b/Containers/tests/Buffer2DTest.cpp new file mode 100644 index 0000000..9a667e2 --- /dev/null +++ b/Containers/tests/Buffer2DTest.cpp @@ -0,0 +1,27 @@ + +#include "Tests.hpp" +#include "Testing.hpp" + +#include "Buffer2D.hpp" + +#include + +using namespace tp; + +const ualni size = 1000; + +TEST_DEF_STATIC(Simple1) { + Buffer2D buff; + buff.reserve({ 4, 4 }); + buff.set( 2, 2, 5); + TEST(buff.get(2, 2) == 5); +} + +TEST_DEF_STATIC(Simple2) { + // TEST(false); +} + +TEST_DEF(Buffer2d) { + testSimple1(); + testSimple2(); +} \ No newline at end of file diff --git a/Containers/tests/Tests.cpp b/Containers/tests/Tests.cpp index 25a659d..a5de12e 100644 --- a/Containers/tests/Tests.cpp +++ b/Containers/tests/Tests.cpp @@ -37,6 +37,7 @@ int main() { testMap(); testAvl(); testBuffer(); + testBuffer2d(); testModule.deinitialize(); } diff --git a/Containers/tests/Tests.hpp b/Containers/tests/Tests.hpp index 98d2c71..084d6bc 100644 --- a/Containers/tests/Tests.hpp +++ b/Containers/tests/Tests.hpp @@ -71,4 +71,5 @@ public: void testList(); void testMap(); void testAvl(); -void testBuffer(); \ No newline at end of file +void testBuffer(); +void testBuffer2d(); \ No newline at end of file From 692994c2d39263c5f4cfbbbc319ee7dc8e41b100 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 11:25:07 +0300 Subject: [PATCH 07/68] Tokenizer Initial --- CMakeLists.txt | 3 +- Strings/public/Strings.hpp | 4 +- Tokenizer/CMakeLists.txt | 22 ++ Tokenizer/private/CmdArgParser.cpp | 326 +++++++++++++++++ Tokenizer/private/Tokenizer.cpp | 15 + Tokenizer/public/AutomataGraph.h | 510 +++++++++++++++++++++++++++ Tokenizer/public/CmdArgParser.h | 97 +++++ Tokenizer/public/RegularExpression.h | 498 ++++++++++++++++++++++++++ Tokenizer/public/Tokenizer.hpp | 176 +++++++++ Tokenizer/rsc/script.txt | 18 + Tokenizer/tests/tests.cpp | 182 ++++++++++ 11 files changed, 1848 insertions(+), 3 deletions(-) create mode 100644 Tokenizer/CMakeLists.txt create mode 100644 Tokenizer/private/CmdArgParser.cpp create mode 100644 Tokenizer/private/Tokenizer.cpp create mode 100644 Tokenizer/public/AutomataGraph.h create mode 100644 Tokenizer/public/CmdArgParser.h create mode 100644 Tokenizer/public/RegularExpression.h create mode 100644 Tokenizer/public/Tokenizer.hpp create mode 100644 Tokenizer/rsc/script.txt create mode 100644 Tokenizer/tests/tests.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 489a229..4845590 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,4 +15,5 @@ add_subdirectory(Utils) add_subdirectory(Containers) add_subdirectory(Math) add_subdirectory(Allocators) -add_subdirectory(Strings) \ No newline at end of file +add_subdirectory(Strings) +add_subdirectory(Tokenizer) \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index daba7ba..b1038bb 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -136,8 +136,8 @@ namespace tp { } // output will be null if in TextEditing mode - [[nodiscard]] tChar* resize() { - if (!mData->getEditor()) mData->resize(); + tChar* resize(uint1 size) { + if (!mData->getEditor()) mData->resize(size); return mData->getBuffer(); } diff --git a/Tokenizer/CMakeLists.txt b/Tokenizer/CMakeLists.txt new file mode 100644 index 0000000..20982ac --- /dev/null +++ b/Tokenizer/CMakeLists.txt @@ -0,0 +1,22 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Tokenizer) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Tokenizer/private/CmdArgParser.cpp b/Tokenizer/private/CmdArgParser.cpp new file mode 100644 index 0000000..f52446d --- /dev/null +++ b/Tokenizer/private/CmdArgParser.cpp @@ -0,0 +1,326 @@ + +#include "allocators.h" + +#include "CmdArgParser.h" + +#include "log.h" + +tp::CmdArgParser::Arg::Arg(const Arg& arg) { + mId = arg.mType; + switch (arg.mType) { + case tp::CmdArgParser::Arg::INT: mType = INT; mInt = arg.mInt; break; + case tp::CmdArgParser::Arg::FLOAT: mType = FLOAT; mFloat = arg.mFloat; break; + case tp::CmdArgParser::Arg::BOOL: mType = BOOL; mBool = arg.mBool; break; + case tp::CmdArgParser::Arg::STR: mType = STR; new (&mStr) StringArg(); mStr = arg.mStr; break; + case tp::CmdArgParser::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); mFile = arg.mFile; break; + } + mOptional = arg.mOptional; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, Type type) { + mId = id; + switch (type) { + case tp::CmdArgParser::Arg::INT: mType = INT; break; + case tp::CmdArgParser::Arg::FLOAT: mType = FLOAT; break; + case tp::CmdArgParser::Arg::BOOL: mType = BOOL; break; + case tp::CmdArgParser::Arg::STR: mType = STR; new (&mStr) StringArg(); break; + case tp::CmdArgParser::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); break; + } + mOptional = false; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange) { + mId = id; + mType = FLOAT; + mInt = { 0, 0, aAcceptingRange }; + mOptional = false; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange) { + mId = id; + mType = FLOAT; + mFloat = { 0, 0, aAcceptingRange }; + mOptional = false; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange, alni aDefault) { + mId = id; + mType = INT; + mInt = { 0, aDefault, aAcceptingRange }; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange, alnf aDefault) { + mId = id; + mType = FLOAT; + mFloat = { 0, aDefault, aAcceptingRange }; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, bool aDefault) { + mId = id; + mType = BOOL; + mBool.mDefault = aDefault; +} + +tp::CmdArgParser::Arg::Arg(tp::string id, const char* aDefault) { + mId = id; + mType = STR; + new (&mStr) StringArg(); + mStr.mDefault = aDefault; +} + +tp::CmdArgParser::Arg::~Arg() { + switch (mType) { + case tp::CmdArgParser::Arg::STR: + mStr.~StringArg(); + break; + case tp::CmdArgParser::Arg::FILE_IN: + mFile.~FileInputArg(); + break; + } +} + +tp::CmdArgParser::CmdArgParser(tp::init_list args) { + bool optional_start = false; + + for (auto& arg : args) { + assert(!mArgs.presents(arg.mId) && "Argument Redefinition"); + + auto copy_arg = new Arg(arg); + + mArgs.put(arg.mId, copy_arg); + mArgsOrder.pushBack(mArgs.get(arg.mId)); + + if (arg.mOptional) { + mOptionals++; + } + + if (optional_start) { + assert(arg.mOptional && "Not Optional Argument After Optionals"); + } + else if (arg.mOptional) { + optional_start = true; + } + } + + mTokenizer.build({ + { "\n|\t| |\r", TokType::SPACE }, + { "N|n|(False)|(false)", TokType::BOOL_FALSE }, + { "Y|y|(True)|(true)", TokType::BOOL_TRUE }, + { "((\\-)|(\\+))?[0-9]+", TokType::INT }, + { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?", TokType::FLOAT }, + { "'{'-'}*'", TokType::STR }, + }); + + assert(mTokenizer.isBuild() && "Internal Error"); +} + +tp::CmdArgParser::~CmdArgParser() { + for (auto arg : mArgsOrder) { + delete arg.data(); + } +} + +bool tp::CmdArgParser::parse(char argc, const char* argv[], bool logError) { + // discard windows working directory argument + argc--; + + if (argc < mArgs.size() - mOptionals) { + ErrInvalidArgCount(); + if (logError) { + ErrLog(); + } + return false; + } + + for (auto arg : mArgsOrder) { + if (arg.idx() < argc) { + parseArg(*arg.data(), argv[arg.idx() + 1]); + } + else { + initDefault(*arg.data()); + } + if (mError) { + if (logError) { + ErrLog(); + } + return false; + } + } + return true; + + //tp::set_working_dir(); +} + +tp::alni tp::CmdArgParser::getInt(string id) { auto& arg = getArg(id, Arg::INT); return arg.mInt.mVal; } +tp::alnf tp::CmdArgParser::getFloat(string id) { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } +bool tp::CmdArgParser::getBool(string id) { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } +tp::string tp::CmdArgParser::getString(string id) { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } +tp::File& tp::CmdArgParser::getFile(string id) { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFile; } + + +tp::CmdArgParser::Arg& tp::CmdArgParser::getArg(string id, Arg::Type type) { + auto idx = mArgs.presents(id); + assert(idx && "Invalid Id"); + auto& arg = mArgs.getSlotVal(idx); + assert(arg->mType == type && "Invalid Type Requested"); + return *arg; +} + +void tp::CmdArgParser::ErrInvalidArgCount() { mError = { "Invalid Number Of Arguments Passed", nullptr }; } +void tp::CmdArgParser::ErrInvalidArgSyntax(Arg* arg) { mError = { "Invalid Syntax Of Argument", arg }; } +void tp::CmdArgParser::ErrInvalidArgType(Arg* arg) { mError = { "Invalid Type Of Argument", arg }; } +void tp::CmdArgParser::ErrFileNotExists(Arg* arg) { mError = { "File Not Exists", arg }; } +void tp::CmdArgParser::ErrFileCouldNotOpen(Arg* arg) { mError = { "Could Not Open File", arg }; } +void tp::CmdArgParser::ErrValNotinRange(Arg* arg) { mError = { "Value Not In Range", arg }; } + +void tp::CmdArgParser::ErrLog() { + printf("Command Line Error: \n"); + + if (mError.mArg) { + alni idx = 0; + for (auto arg : mArgsOrder) { + if (mError.mArg == arg.data()) { + idx = arg.idx(); + break; + } + } + + printf("\nArgument : %lli\n", idx); + ArgLog(*mError.mArg); + } + + printf("Error Description : %s. \n", mError.mDescr); + + printf("\nExpected Arguments were : \n"); + + for (auto arg : mArgsOrder) { + printf(" -- %lli -- \n", arg.idx()); + ArgLog(*arg.data()); + } +} + +void tp::CmdArgParser::ArgLog(Arg& arg) { + switch (arg.mType) { + case Arg::INT: { + printf("Type : Int\n"); + printf("Range : %lli - %lli\n", arg.mInt.mAcceptingRange.mBegin, arg.mInt.mAcceptingRange.mEnd); + if (arg.mOptional) { + printf("Default : %lli\n", arg.mInt.mDefault); + } + printf("Given : %lli\n", arg.mInt.mVal); + } break; + case Arg::FLOAT: { + printf("Type : Float\n"); + printf("Range : %f - %f\n", arg.mFloat.mAcceptingRange.mBegin, arg.mFloat.mAcceptingRange.mEnd); + if (arg.mOptional) { + printf("Default : %f\n", arg.mFloat.mDefault); + } + printf("Given : %f\n", arg.mFloat.mVal); + } break; + case Arg::BOOL: { + printf("Type : Bool\n"); + if (arg.mOptional) { + printf("Default : %s\n", arg.mBool.mDefault ? "True" : "False"); + } + printf("Given : %s\n", arg.mBool.mFlag ? "True" : "False"); + } break; + case Arg::STR: { + printf("Type : String\n"); + if (arg.mOptional) { + printf("Default : %s\n", arg.mStr.mDefault.cstr()); + } + printf("Given : %s\n", arg.mStr.mStr.cstr()); + } break; + case Arg::FILE_IN: { + printf("Type : File Input\n"); + printf("Given Path : %s\n", arg.mFile.mFilepath.cstr()); + } break; + } +} + +void tp::CmdArgParser::initDefault(Arg& arg) { + switch (arg.mType) { + case Arg::INT: arg.mInt.mVal = arg.mInt.mDefault; break; + case Arg::FLOAT: arg.mFloat.mVal = arg.mFloat.mDefault; break; + case Arg::BOOL: arg.mBool.mFlag = arg.mBool.mDefault; break; + case Arg::STR: arg.mStr.mStr = arg.mStr.mDefault; break; + } +} + +void tp::CmdArgParser::parseArg(Arg& arg, const char* src) { + mTokenizer.reset(); + mTokenizer.bindSource(src); + + auto tok = mTokenizer.readTok(); + if (tok < TokType::INT || tok > TokType::STR) { + ErrInvalidArgSyntax(&arg); + } + auto val = mTokenizer.extractVal(); + + switch (arg.mType) { + case Arg::INT: { + if (tok != TokType::INT) { + ErrInvalidArgType(&arg); + return; + } + arg.mInt.mVal = val.operator tp::alni(); + if (arg.mInt.mVal < arg.mInt.mAcceptingRange.mBegin || arg.mInt.mVal > arg.mInt.mAcceptingRange.mEnd) { + ErrValNotinRange(&arg); + return; + } + } break; + + case Arg::FLOAT: { + if (tok != TokType::FLOAT) { + ErrInvalidArgType(&arg); + return; + } + arg.mFloat.mVal = val.operator tp::alnf(); + if (arg.mFloat.mVal < arg.mInt.mAcceptingRange.mBegin || arg.mFloat.mVal > arg.mInt.mAcceptingRange.mEnd) { + ErrValNotinRange(&arg); + return; + } + } break; + + case Arg::STR: { + if (tok != TokType::STR) { + ErrInvalidArgType(&arg); + return; + } + auto len = val.size(); + arg.mStr.mStr.reserve(len - 1); + tp::memcp(arg.mStr.mStr.get_writable(), val.cstr() + 1, len - 2); + arg.mStr.mStr.get_writable()[len - 2] = '\0'; + } break; + + case Arg::BOOL: { + if (tok != TokType::BOOL_FALSE && tok != TokType::BOOL_TRUE) { + ErrInvalidArgType(&arg); + return; + } + arg.mBool.mFlag = val.operator bool(); + } break; + + case Arg::FILE_IN: { + if (tok != TokType::STR) { + ErrInvalidArgType(&arg); + return; + } + + auto len = val.size(); + arg.mFile.mFilepath.reserve(len - 1); + tp::memcp(arg.mFile.mFilepath.get_writable(), val.cstr() + 1, len - 2); + arg.mFile.mFilepath.get_writable()[len - 2] = '\0'; + + if (!File::exists(arg.mFile.mFilepath.cstr())) { + ErrFileNotExists(&arg); + return; + } + arg.mFile.mFile.open(arg.mFile.mFilepath.cstr(), osfile_openflags::LOAD); + if (!arg.mFile.mFile.opened) { + ErrFileCouldNotOpen(&arg); + return; + } + } break; + } +} \ No newline at end of file diff --git a/Tokenizer/private/Tokenizer.cpp b/Tokenizer/private/Tokenizer.cpp new file mode 100644 index 0000000..c0b6e62 --- /dev/null +++ b/Tokenizer/private/Tokenizer.cpp @@ -0,0 +1,15 @@ + +#include "Tokenizer.hpp" + +using namespace tp; + +static ModuleManifest* sModuleDependencies[] = { + &tp::gModuleMath, + &tp::gModuleStrings, + nullptr +}; + +void deinit(const ModuleManifest*) {} + +ModuleManifest tp::gModuleTokenizer = ModuleManifest("Tokenizer", nullptr, deinit, sModuleDependencies); + diff --git a/Tokenizer/public/AutomataGraph.h b/Tokenizer/public/AutomataGraph.h new file mode 100644 index 0000000..67bda5b --- /dev/null +++ b/Tokenizer/public/AutomataGraph.h @@ -0,0 +1,510 @@ + +#pragma once + +#include "List.hpp" +#include "Buffer.hpp" +#include "Buffer2D.hpp" +#include "Mat.hpp" +#include "Map.hpp" + +namespace tp { + + template + class TransitionMatrix; + + template + class DFA; + + // Non-Deterministic Finite-State Automata + template + class NFA { + static_assert(TypeTraits::isIntegral, "tAlphabetType must be enumerable."); + + public: + struct Vertex; + + private: + struct Edge { + Vertex* mVertex = nullptr; + bool mConsumesSymbol = false; + Range mAcceptingRange; + bool mAcceptsAll = false; + bool mExclude = false; + + bool isTransition(const tAlphabetType& symbol) { + if (symbol == nullptr) return false; + if (!mConsumesSymbol || mAcceptsAll) return true; + bool const in_range = (symbol >= mAcceptingRange.mBegin && symbol <= mAcceptingRange.mEnd); + return in_range != mExclude; + } + }; + + public: + struct Vertex { + List edges; + tStateType termination_state = tNoStateVal; + #ifdef ENV_BUILD_DEBUG + ualni debug_idx = 0; + #endif + ualni flag = 0; + }; + + private: + friend DFA; + + List mVertices; + Vertex* mStart = nullptr; + + public: + NFA() = default; + + Vertex* addVertex() { + auto node = mVertices.newNode(); + #ifdef ENV_BUILD_DEBUG + node->data.debug_idx = mVertices.length() + 1; + #endif + mVertices.pushBack(node); + return &node->data; + } + + void addTransition(Vertex* from, Vertex* to, Range range, bool consumes, bool accepts_all, bool exclude) { + Edge edge; + edge.mVertex = to; + edge.mConsumesSymbol = consumes; + edge.mAcceptingRange = range; + edge.mExclude = exclude; + edge.mAcceptsAll = accepts_all; + from->edges.pushBack(edge); + } + + void setStartVertex(Vertex* start) { + mStart = start; + } + + [[nodiscard]] Vertex* getStartVertex() const { + return mStart; + } + + void setVertexState(Vertex* vertex, tStateType state) { + vertex->termination_state = state; + } + + [[nodiscard]] bool isValid() const { + if (!mStart) { + return false; + } + return true; + } + + Range getAlphabetRange() const { + tAlphabetType start = 0, end = 0; + Range all_range = { std::numeric_limits::min(), std::numeric_limits::max() }; + bool first = true; + + for (auto vertex : mVertices) { + for (auto edge : vertex.data().edges) { + if (!edge.data().mConsumesSymbol) continue; + auto const& tran_range = edge.data().mAcceptingRange; + if (edge.data().mAcceptsAll || edge.data().mExclude) return all_range; + if (tran_range.mBegin < start || first) start = tran_range.mBegin; + if (tran_range.mEnd > end || first) end = tran_range.mEnd; + first = false; + } + } + + return { start, end + 1 }; + } + + // vertices that are reachable from initial set with no input consumption (E-transitions) + // does not include initial set + void closure(const List& set, List& closure, ualni unique_call_id) { + List marked; + marked = set; + + while (marked.length()) { + auto first = marked.first()->data; + if (first->flag != unique_call_id) { + first->flag = unique_call_id; + closure.pushBack(first); + } + for (auto edge : first->edges) { + if (!edge.data().mConsumesSymbol && edge.data().mVertex->flag != unique_call_id) { + marked.pushBack(edge.data().mVertex); + } + } + marked.popFront(); + } + } + + // vertices that are reachable from initial set with symbol transition + void move(const List& set, List& reachable, tAlphabetType symbol, ualni unique_call_id) { + for (auto vertex : set) { + for (auto edge : vertex->edges) { + if (!edge.data().mConsumesSymbol) continue; + bool transition = edge.data().isTransition(symbol); + if (transition && edge.data().mVertex->flag != unique_call_id) { + edge.data().mVertex->flag = unique_call_id; + reachable.pushBack(edge.data().mVertex); + } + } + } + } + }; + + // Deterministic Finite-State Automata + template + class DFA { + static_assert(TypeTraits::isIntegral, "tAlphabetType must be enumerable."); + friend TransitionMatrix; + + struct Vertex { + struct Edge { + Vertex* vertex = nullptr; + tAlphabetType transition_code = nullptr; + }; + + List edges; + tStateType termination_state = tNoStateVal; + bool marked = false; + }; + + List mVertices; + Vertex* mStart = nullptr; + const Vertex* mIter = nullptr; + Range mAlphabetRange; + bool mTrapState = false; + + typedef typename NFA::Vertex NState; + + public: + + explicit DFA(NFA& nfa) { + if (!nfa.isValid()) { + return; + } + + mAlphabetRange = nfa.getAlphabetRange(); + + struct DStateKey { + const List* nStates; + bool operator==(const DStateKey& in) { + if (nStates->length() != in.nStates->length()) { + return false; + } + // FIXME : make linear time + for (auto state : *nStates) { + bool found = false; + for (auto in_state : *in.nStates) { + if (state.data() == in_state.data()) { + found = true; + break; + } + } + + if (!found) { + return false; + } + } + + return true; + } + + static ualni dStateHashFunc(DStateKey key) { + alni out = 0; + for (auto state : *key.nStates) { + out += alni(state.data()); + } + return out; + }; + }; + + // all NFA states that are reachable from initial DFA State for specific symbol in alphabet + struct DState { + + struct DTransition { + DState* state = nullptr; + tAlphabetType accepting_code; + }; + + List nStates; + List transitions; + + Vertex* dVertex = nullptr; // relevant DFA vertex + + #ifdef ENV_BUILD_DEBUG + ualni debug_idx = 0; + #endif + }; + + // includes closure of NFA start state by definition + auto start_state = new DState(); + nfa.closure({ nfa.getStartVertex() }, start_state->nstates, ualni(start_state)); + + Map dStates; + + dStates.put({ &start_state->nstates }, start_state); + + List working_set = { start_state }; + + // while there is items to work with + auto currentDState = working_set.first(); + while (currentDState) { + + // check all possible transitions for any symbol + for (auto symbol : mAlphabetRange) { + + List reachableNStates; + + nfa.move(currentDState->data->nstates, reachableNStates, symbol, ualni(currentDState + symbol)); + nfa.closure(reachableNStates, reachableNStates, ualni(currentDState + symbol)); + + if (!reachableNStates.length()) { + continue; + } + + DState* targetDState = nullptr; + + // check if set of all reachable NFA states already forms existing DFA state + auto idx = dStates.presents({ &reachableNStates}); + if (idx) { + targetDState = dStates.getSlotVal(idx); + } + + if (!targetDState) { + // register new DFA state + targetDState = new DState(); + + #ifdef ENV_BUILD_DEBUG + targetDState->debug_idx = dStates.size(); + #endif + + targetDState->nstates = reachableNStates; + + // append to working stack + working_set.pushBack(targetDState); + dStates.put({ &targetDState->nstates }, targetDState); + } + + // add transition to DFA state + currentDState->data->transitions.pushBack({targetDState, symbol }); + } + + working_set.popFront(); + currentDState = working_set.first(); + } + + // create own vertices + for (auto node : dStates) { + tStateType state = tNoStateVal; + for (auto iter : node->val->nStates) { + if (iter->termination_state != tNoStateVal) { + state = iter->termination_state; + break; + } + } + node->val->dvertex = addVertex(state); + } + + // connect all vertices + for (auto node : dStates) { + for (auto edge : node->val->transitions) { + addTransition(node->val->dvertex, edge.data().state->dvertex, edge.data().accepting_code); + } + } + + // set the starting vertex + mStart = start_state->dvertex; + + // cleanup + for (auto node : dStates) { + delete node->val; + } + + collapseEquivalentVertices(); + mAlphabetRange = getAlphabetRange(); + } + + tStateType move(tAlphabetType symbol) { + if (mTrapState || !mIter) { + return tNoStateVal; + } + + for (auto edge : mIter->edges) { + if (edge.data().transition_code == symbol) { + mIter = edge.data().vertex; + return mIter->termination_state; + } + } + + mTrapState = true; + return tNoStateVal; + } + + void start() { + mIter = mStart; + mTrapState = false; + } + + [[nodiscard]] uhalni nVertices() const { + return (uhalni) mVertices.length(); + } + + [[nodiscard]] Range getRange() const { + return mAlphabetRange; + } + + private: + [[nodiscard]] Range getAlphabetRange() const { + Range out; + for (auto vertex : mVertices) { + vertex.data().marked = false; + } + + bool first = true; + getAlphabetRangeUtil(mStart, &out, first); + out.mEnd++; + return out; + } + + void getAlphabetRangeUtil(Vertex* vert, Range* out, bool& first) const { + vert->marked = true; + for (auto edge : vert->edges) { + auto const code = edge.data().transition_code; + + if (first) { + *out = { code, code }; + first = false; + } + + if (code < out->mBegin) { + out->mBegin = code; + } + if (code > out->mEnd) { + out->mEnd = code; + } + + if (!edge.data().vertex->marked) { + getAlphabetRangeUtil(edge.data().vertex, out, first); + } + } + } + + void collapseEquivalentVertices() { + // TODO + } + + Vertex* addVertex(tStateType state) { + auto node = mVertices.addNodeBack(); + node->data.termination_state = state; + return &node->data; + } + + void addTransition(Vertex* from, Vertex* to, tAlphabetType transition_symbol) { + from->edges.pushBack({ to, transition_symbol }); + } + }; + + template + class TransitionMatrix { + + static_assert(TypeTraits::isIntegral, "tAlphabetType must be enumerable."); + + Buffer2D mTransitions{}; + Buffer mStates{}; + Range mSymbolRange = nullptr; + + ualni mIter = 0; + ualni mIterPrev = 0; + ualni mStart = 0; + + public: + + TransitionMatrix() = default; + + void construct(const DFA& dfa) { + mSymbolRange = dfa.getRange(); + auto range_len = uhalni(mSymbolRange.mEnd - mSymbolRange.mBegin); + Vec2 dim = { range_len ? range_len : 1, (uhalni) (dfa.nVertices() + 1) }; + + mTransitions.reserve(dim); + mTransitions.assign(dfa.nVertices()); + mStates.reserve(dim.y); + + for (auto vertex : dfa.mVertices) { + auto state = vertex.data().termination_state; + mStates[vertex.idx()] = state; + } + + mStates[dfa.nVertices()] = tFailedStateVal; + + for (auto vertex : dfa.mVertices) { + if (&vertex.data() == dfa.mStart) { + mStart = mIter = mIterPrev = vertex.idx(); + } + } + + for (auto vertex : dfa.mVertices) { + for (auto edge : vertex.data().edges) { + ualni idx = 0; + for (auto vertex : dfa.mVertices) { + if (edge.data().vertex == &vertex.data()) { + idx = vertex.idx(); + break; + } + } + auto const code = edge.data().transition_code; + mTransitions.set(code - mSymbolRange.mBegin, (uhalni) vertex.idx(), idx); + } + } + } + + bool isTrapped() { + return mStates[mIter] == tFailedStateVal; + } + + tStateType move(tAlphabetType symbol) { + if (symbol >= mSymbolRange.mBegin && symbol < mSymbolRange.mEnd) { + mIter = mTransitions.get((uhalni) (symbol - mSymbolRange.mBegin), (uhalni) mIter); + } + else { + mIter = mStates.length() - 1; + } + + if (mIterPrev == mStart) { + if (mStates[mIter] == tFailedStateVal) { + reset(); + return tFailedStateVal; + } + else { + mIterPrev = mIter; + return tNoStateVal; + } + } + else { + if (mStates[mIter] == tFailedStateVal) { + if (mStates[mIterPrev] != tNoStateVal) { + auto out = mStates[mIterPrev]; + reset(); + return out; + } + else { + reset(); + return tFailedStateVal; + } + } + else { + mIterPrev = mIter; + return tNoStateVal; + } + } + + mIterPrev = mIter; + return mStates[mIter]; + } + + void reset() { + mIter = mStart; + mIterPrev = mStart; + } + }; +} \ No newline at end of file diff --git a/Tokenizer/public/CmdArgParser.h b/Tokenizer/public/CmdArgParser.h new file mode 100644 index 0000000..ac5823b --- /dev/null +++ b/Tokenizer/public/CmdArgParser.h @@ -0,0 +1,97 @@ +#pragma once + +#include "Tokenizer.hpp" + +namespace tp { + struct CmdArgParser { + + struct IntArg { + alni mVal = 0; + alni mDefault = 0; + Range mAcceptingRange = { ENV_ALNI_MIN, ENV_ALNI_MAX }; + }; + + struct FloatArg { + alnf mVal = 0.f; + alnf mDefault = 0.f; + Range mAcceptingRange = { ENV_ALNF_MIN, ENV_ALNF_MAX }; + }; + + struct BoolArg { + bool mFlag = false; + bool mDefault = false; + }; + + struct StringArg { + String mStr; + String mDefault; + }; + + struct FileInputArg { + String mFilepath; + File mFile; + }; + + struct Arg { + string mId; + enum Type { INT, FLOAT, BOOL, STR, FILE_IN } mType; + union { + IntArg mInt; + FloatArg mFloat; + BoolArg mBool; + StringArg mStr; + FileInputArg mFile; + }; + + bool mOptional = true; + + Arg(const Arg& arg); + Arg(string id, Type type); + Arg(string id, Range aAcceptingRange); + Arg(string id, Range aAcceptingRange); + Arg(string id, Range aAcceptingRange, alni aDefault); + Arg(string id, Range aAcceptingRange, alnf aDefault); + Arg(string id, bool aDefault); + Arg(string id, const char* aDefault); + ~Arg(); + }; + + struct Error { + const char* mDescr = nullptr; + Arg* mArg = nullptr; + operator bool() { return mDescr != nullptr; } + } mError; + + CmdArgParser(init_list args); + ~CmdArgParser(); + + bool parse(char argc, const char* argv[], bool logError = false); + + alni getInt(string id); + alnf getFloat(string id); + bool getBool(string id); + string getString(string id); + File& getFile(string id); + + private: + enum class TokType { SPACE, INT, FLOAT, BOOL_FALSE, BOOL_TRUE, STR, NONE, FAILURE, END, } mType; + typedef SimpleTokenizer Tokenizer; + + Tokenizer mTokenizer; + HashMap mArgs; + List mArgsOrder; + ualni mOptionals = 0; + + Arg& getArg(string id, Arg::Type type); + void ErrInvalidArgCount(); + void ErrInvalidArgSyntax(Arg* arg); + void ErrInvalidArgType(Arg* arg); + void ErrFileNotExists(Arg* arg); + void ErrFileCouldNotOpen(Arg* arg); + void ErrValNotinRange(Arg* arg); + void ErrLog(); + void ArgLog(Arg& arg); + void initDefault(Arg& arg); + void parseArg(Arg& arg, const char* src); + }; +}; \ No newline at end of file diff --git a/Tokenizer/public/RegularExpression.h b/Tokenizer/public/RegularExpression.h new file mode 100644 index 0000000..e906df5 --- /dev/null +++ b/Tokenizer/public/RegularExpression.h @@ -0,0 +1,498 @@ + +#pragma once + +#include "AutomataGraph.h" + +namespace tp::RegEx { + + struct AstNode { + enum Type { + NONE, + ANY, + OR, + IF, + CLASS, + COMPOUND, + REPEAT, + VAL, + } mType = NONE; + }; + + template + struct AstVal : public AstNode { + explicit AstVal(tAlphabetType val) : mVal(val) { mType = VAL; } + tAlphabetType mVal; + }; + + struct AstCompound : public AstNode { + AstCompound() { mType = COMPOUND; } + List mChilds; + }; + + struct AstAlternation : public AstNode { + AstAlternation() { mType = OR; } + AstNode* mFirst = nullptr; + AstNode* mSecond = nullptr; + }; + + struct AstIf : public AstNode { + AstIf() { mType = IF; } + AstNode* mNode = nullptr; + }; + + struct AstAny : public AstNode { + AstAny() { mType = ANY; } + }; + + struct AstRepetition : public AstNode { + AstRepetition() { mType = REPEAT; } + AstNode* mNode = nullptr; + bool mPlus = false; + }; + + template + struct AstClass : public AstNode { + AstClass() { mType = CLASS; } + List> mRanges; + bool mExclude{}; + }; + + struct ParseError { + const char* description = nullptr; + uhalni offset = 0; + [[nodiscard]] bool isError() const { return description != nullptr; } + }; + + template + class Parser { + + enum TokType : uint1 { + TOK_COMPOUND_START = 0, + TOK_COMPOUND_END, + TOK_CLASS_START, + TOK_CLASS_END, + TOK_CLASS_START_EXCLUDE, + TOK_CLASS_END_EXCLUDE, + TOK_OR, + TOK_IF, + TOK_ANY, + TOK_REPEAT, + TOK_REPEAT_PLUS, + TOK_HYPHEN, + TOK_SPECIALS_END_, + TOK_VAL, + TOK_NONE, + }; + + tAlphabetType SpecialSymbols[TOK_SPECIALS_END_] = { + '(', ')', '[', ']', '{', '}', '|', '?', '.', '*', '+', '-', + }; + + tAlphabetType mEscapeSymbol = '\\'; + + struct Token { + TokType type; + tAlphabetType val; + }; + + const tAlphabetType* mSource = nullptr; + uhalni mOffset = 0; + Token mCurToken; + uhalni mTokLength = 0; + + public: + + ParseError mError; + + // regular expression must be a zero termination string + AstCompound* parse(const tAlphabetType* regex) { + mSource = regex; + return parseRegEx(); + } + + private: + + AstCompound* parseRegEx() { + auto out = new AstCompound(); + for (AstNode* node = parseElement(); node; node = parseElement()) { + out->mChilds.pushBack(node); + } + if (!out->mChilds.length()) { + genError("Expected A Expression"); + } + if (mError.description) { + delete out; + return nullptr; + } + return out; + } + + AstNode* parseElement() { + AstNode* out = nullptr; + switch (readTok().type) { + case TOK_COMPOUND_START: out = parseCompound(); break; + case TOK_CLASS_START: out = parseClass(); break; + case TOK_CLASS_START_EXCLUDE: out = parseClass(true); break; + case TOK_ANY: out = parseAny(); break; + case TOK_VAL: out = parseVal(); break; + case TOK_NONE: { discardTok(); return nullptr; }; + } + if (!out) { + discardTok(); + return nullptr; + } + switch (readTok().type) { + case TOK_OR: out = parseAlternation(out); break; + case TOK_REPEAT: out = parseRepetition(out); break; + case TOK_REPEAT_PLUS: out = parseRepetition(out, true); break; + case TOK_IF: out = parseIf(out); break; + case TOK_NONE: break; + default: { discardTok(); } + } + return out; + } + + AstCompound* parseCompound() { + auto out = new AstCompound(); + for (AstNode* node = parseElement(); node; node = parseElement()) { + out->mChilds.pushBack(node); + } + if (readTok().type != TOK_COMPOUND_END) { + genError("Expected Compound End"); + } + if (mError.description) { + delete out; + return nullptr; + } + return out; + } + + AstClass* parseClass(bool exclude = false) { + auto out = new AstClass(); + out->mExclude = exclude; + auto& ranges = out->mRanges; + + readTok(); + + READ_VAL: + if (mCurToken.type != TOK_VAL) { + delete out; + genError("Expected A Value"); + return nullptr; + } + char range_start = mCurToken.val; + + readTok(); + if (mCurToken.type != TOK_HYPHEN) { + delete out; + genError("Expected A Range"); + return nullptr; + } + + readTok(); + if (mCurToken.type != TOK_VAL) { + delete out; + genError("Expected A Value"); + return nullptr; + } + char range_end = mCurToken.val; + + ranges.pushBack({ range_start, range_end }); + + readTok(); + if ((mCurToken.type == TOK_CLASS_END && !exclude) || (mCurToken.type == TOK_CLASS_END_EXCLUDE && exclude)) { + return out; + } + else { + goto READ_VAL; + } + } + + AstAny* parseAny() { + return new AstAny(); + } + + AstVal* parseVal() { + auto out = new AstVal(mCurToken.val); + return out; + } + + AstAlternation* parseAlternation(AstNode* left) { + auto right = parseElement(); + if (!right) { + genError("Expected Alternation right Side"); + delete left; + return nullptr; + } + + auto out = new AstAlternation(); + + out->mFirst = left; + out->mSecond = right; + + return out; + } + + AstRepetition* parseRepetition(AstNode* left, bool plus = false) { + auto out = new AstRepetition(); + out->mNode = left; + out->mPlus = plus; + return out; + } + + AstIf* parseIf(AstNode* left) { + auto out = new AstIf(); + out->mNode = left; + return out; + } + + void genError(const char* desc) { + mError = { desc, mOffset }; + } + + Token& readTok() { + + const tAlphabetType* crs = mSource + mOffset; + + // zero termination string + if (*crs == 0) { + mCurToken.type = TOK_NONE; + return mCurToken; + } + + mTokLength = 1; + mCurToken.type = TOK_VAL; + mCurToken.val = crs[0]; + + if (crs[0] == mEscapeSymbol) { + mCurToken.val = crs[1]; + mTokLength = 2; + } + else { + for (uhalni tok = 0; tok < TOK_SPECIALS_END_; tok++) { + if (SpecialSymbols[tok] == mCurToken.val) { + mCurToken.type = TokType(tok); + break; + } + } + } + + mOffset += mTokLength; + return mCurToken; + } + + void discardTok() { + mOffset -= mTokLength; + mTokLength = 0; + } + }; + + template + struct CompileError { + ParseError mParseError; + uhalni mRuleIndex = 0; + tStateType mRuleState; + const char* description = nullptr; + [[nodiscard]] bool isError() const { return description; } + }; + + template + class Compiler { + + typedef NFA Graph; + typedef typename Graph::Vertex Vertex; + typedef Parser Parser; + + struct Node { + Vertex* left = nullptr; + Vertex* right = nullptr; + }; + + private: + Graph* mGraph = nullptr; + + public: + CompileError mError; + + Node compile(Graph& graph, const tAlphabetType* regex, tStateType state) { + mGraph = &graph; + return compileUtil(regex, state); + } + + Node compile(Graph& aGraph, init_list> aRules) { + mGraph = &aGraph; + + auto left = mGraph->addVertex(); + auto right = mGraph->addVertex(); + + halni idx = 0; + for (auto rule: aRules) { + + auto node = idx ? compileUtil(rule.head, rule.tail) : compileUtil(rule.head, rule.tail, left, right); + + if (!(node.left && node.right)) { + mError.mRuleIndex = idx; + return {}; + } + + if (idx) { + transitionAny(left, node.left); + transitionAny(node.right, right); + } + + idx++; + } + + mGraph->setStartVertex(left); + + return { left, right }; + } + + private: + + Node compileUtil(const tAlphabetType* regex, tStateType state, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + Parser parser; + auto astNode = parser.parse(regex); + if (parser.mError.isError()) { + mGraph->setStartVertex(nullptr); + mError.description = "Parsing Of Regular Expression Failed"; + mError.mRuleState = state; + mError.mParseError = parser.mError; + return {}; + } + + auto node = compileNode(astNode, aLeft, aRight); + delete astNode; + + mGraph->setVertexState(node.right, state); + mGraph->setStartVertex(node.left); + + return node; + } + + Node compileVal(AstVal* val, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto left = aLeft ? aLeft : mGraph->addVertex(); + auto right = aRight ? aRight : mGraph->addVertex(); + transitionVal(left, right, val->mVal); + return { left, right }; + } + + Node compileAlternation(AstAlternation* alt, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto first_node = compileNode(alt->mFirst, aLeft, aRight); + auto second_node = compileNode(alt->mSecond); + transitionAny(first_node.left, second_node.left); + transitionAny(second_node.right, first_node.right); + return first_node; + } + + Node compileAny(AstAny*, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto left = aLeft ? aLeft : mGraph->addVertex(); + auto right = aRight ? aRight : mGraph->addVertex(); + transitionAny(left, right, true); + return { left, right }; + } + + Node compileRepeat(AstRepetition* repeat, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + if (repeat->mPlus) { + auto middle = mGraph->addVertex(); + + auto left_node = compileNode(repeat->mNode, aLeft, middle); + + auto right_node = compileNode(repeat->mNode, middle, aRight); + transitionAny(right_node.right, right_node.left); + transitionAny(right_node.left, right_node.right); + + return { left_node.left, right_node.right }; + } + else { + auto node = compileNode(repeat->mNode, aLeft, aRight); + transitionAny(node.right, node.left); + transitionAny(node.left, node.right); + return node; + } + } + + Node compileIf(AstIf* ifNode, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto node = compileNode(ifNode->mNode, aLeft, aRight); + transitionAny(node.left, node.right); + return node; + } + + Node compileClass(AstClass* node, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + auto left = aLeft ? aLeft : mGraph->addVertex(); + auto right = aRight ? aRight : mGraph->addVertex(); + + if (node->mRanges.length() == 1) { + auto const& range = node->mRanges.first()->data; + transitionRange(left, right, { range.mBegin, range.mEnd }, node->mExclude); + return { left, right }; + } + + for (auto range : node->mRanges) { + auto middle = mGraph->addVertex(); + transitionRange(left, middle, { range.data().mBegin, range.data().mEnd }, node->mExclude); + transitionAny(middle, right); + } + return { left, right }; + } + + Node compileCompound(AstCompound* compound, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + Vertex* left = nullptr; + Vertex* rigth = nullptr; + + ualni idx = 0; + for (auto child : compound->mChilds) { + auto pass_left = idx == 0 ? aLeft : rigth; + auto pass_right = idx == compound->mChilds.length() - 1 ? aRight : nullptr; + auto node = compileNode(child.data(), pass_left, pass_right); + if (!left) left = node.left; + rigth = node.right; + idx++; + } + + return { left, rigth }; + } + + Node compileNode(AstNode* node, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + switch (node->mType) { + case AstNode::CLASS: return compileClass((AstClass*)node, aLeft, aRight); + case AstNode::COMPOUND: return compileCompound((AstCompound*)node, aLeft, aRight); + case AstNode::IF: return compileIf((AstIf*)node, aLeft, aRight); + case AstNode::REPEAT: return compileRepeat((AstRepetition*)node, aLeft, aRight); + case AstNode::ANY: return compileAny((AstAny*)node, aLeft, aRight); + case AstNode::OR: return compileAlternation((AstAlternation*)node, aLeft, aRight); + case AstNode::VAL: return compileVal((AstVal*)node, aLeft, aRight); + case AstNode::NONE: + break; + } + ASSERT(0) + return {}; + } + + void transitionAny(Vertex* from, Vertex* to, bool consumes = false) { + mGraph->addTransition(from, to, {}, consumes, true, false); + } + + void transitionVal(Vertex* from, Vertex* to, tAlphabetType val) { + mGraph->addTransition(from, to, { val, val }, true, false, false); + } + + void transitionRange(Vertex* from, Vertex* to, Range range, bool exclude) { + mGraph->addTransition(from, to, range, true, false, exclude); + } + }; + + template + CompileError compile(NFA& out, const tAlphabetType* regex, tStateType state) { + Compiler compiler; + compiler.compile(out, regex, state); + return compiler.mError; + } + + template + CompileError compile(NFA& out, const init_list>& rules) { + Compiler compiler; + compiler.compile(out, rules); + return compiler.mError; + } + } \ No newline at end of file diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp new file mode 100644 index 0000000..c48552a --- /dev/null +++ b/Tokenizer/public/Tokenizer.hpp @@ -0,0 +1,176 @@ + +#pragma once + +#include "RegularExpression.h" +#include "Strings.hpp" + +namespace tp { + + extern ModuleManifest gModuleTokenizer; + + template + class Tokenizer { + + TransitionMatrix mTransitionMatrix; + + RegEx::CompileError mError; + + bool scanFailed() { + return mTransitionMatrix.isTrapped(); + } + + public: + + Tokenizer() { + MODULE_SANITY_CHECK(gModuleTokenizer) + } + + void build(const init_list>& rules) { + NFA nfa; + + mError = RegEx::compile(nfa, rules); + if (mError.isError()) { + return; + } + + DFA dfa(nfa); + mTransitionMatrix.construct(dfa); + } + + [[nodiscard]] bool isBuild() const { + return !mError.isError(); + } + + const RegEx::CompileError& getBuildError() { + return mError; + } + + void resetMatrix() { + mTransitionMatrix.reset(); + } + + tTokType advanceSymbol(tAlphabetType symbol) { + return mTransitionMatrix.move(symbol); + } + + tTokType advanceToken(const tAlphabetType* source, ualni source_len, ualni* token_len) { + tTokType out = tNoTokVal; + *token_len = 0; + for (ualni idx = 0; idx < source_len; idx++) { + out = advanceSymbol(source[idx]); + if (out != tNoTokVal) { + *token_len = idx; + break; + } + } + return out; + } + + ~Tokenizer() = default; + }; + + template + class SimpleTokenizer { + + Tokenizer mTokenizer; + + const tAlphabetType* mSource = nullptr; + ualni mLastTokLen = 0; + ualni mSourceLen = 0; + ualni mAdvancedOffset = 0; + + public: + + struct Cursor { + const tAlphabetType* mSource = nullptr; + ualni mAdvancedOffset = 0; + const tAlphabetType* str() { return mSource + mAdvancedOffset; } + }; + + SimpleTokenizer() = default; + + void build(const init_list>& rules) { + mTokenizer.build(rules); + } + + [[nodiscard]] bool isBuild() const { + return mTokenizer.isBuild(); + } + + const RegEx::CompileError& getBuildError() { + return mTokenizer.getBuildError(); + } + + void bindSource(const tAlphabetType* source) { + mSource = source; + while (mSource[mSourceLen]) mSourceLen++; + mSourceLen++; + } + + [[nodiscard]] bool isInputLeft() const { + if (!mSource) { + return false; + } + if (mSource[mAdvancedOffset] == nullptr) { + return false; + } + return true; + } + + Cursor getCursor() const { + return { mSource, mAdvancedOffset }; + } + + Cursor getCursorPrev() const { + return { mSource, mAdvancedOffset - mLastTokLen }; + } + + void setCursor(const Cursor& crs) { + mAdvancedOffset = crs.mAdvancedOffset; + mLastTokLen = 0; + } + + tTokType readTok() { + if (mSourceLen == mAdvancedOffset + 1) { + return tSourceEndTokVal; + } + + tTokType out = mTokenizer.advanceToken(mSource + mAdvancedOffset, mSourceLen - mAdvancedOffset, &mLastTokLen); + mAdvancedOffset += mLastTokLen; + return out; + } + + tTokType lookupTok() { + auto out = readTok(); + discardTok(); + return out; + } + + void discardTok() { + mTokenizer.resetMatrix(); + mAdvancedOffset -= mLastTokLen; + mLastTokLen = 0; + } + + void skipTok() { + readTok(); + } + + void reset() { + mAdvancedOffset = mLastTokLen = 0; + mTokenizer.resetMatrix(); + } + + [[nodiscard]] ualni lastTokLEn() const { + return mLastTokLen; + } + + String extractVal() { + auto crs = getCursorPrev(); + String out; + out.resize(mLastTokLen + 1); + memCopy(out.write(), crs.str(), mLastTokLen); + return out; + } + }; +} \ No newline at end of file diff --git a/Tokenizer/rsc/script.txt b/Tokenizer/rsc/script.txt new file mode 100644 index 0000000..8c312e1 --- /dev/null +++ b/Tokenizer/rsc/script.txt @@ -0,0 +1,18 @@ + + + /* ba + asadadasdK */ + + -1.f; + + if (+1.f) { + var string = "asas + d"; + + } + + while + + return + + diff --git a/Tokenizer/tests/tests.cpp b/Tokenizer/tests/tests.cpp new file mode 100644 index 0000000..a29d780 --- /dev/null +++ b/Tokenizer/tests/tests.cpp @@ -0,0 +1,182 @@ + +#include "Tokenizer.hpp" +#include "filesystem.h" + +#include + +#define LOG(val) std::cout << #val << " "; + +void test(const char* path) { + + tp::File script_file(path, tp::osfile_openflags::LOAD); + if (!script_file.opened) { + return; + } + char* script = new char[script_file.size() + 1]; + script[script_file.size()] = 0; + script_file.read_bytes(script, script_file.size()); + script_file.close(); + + enum class TokType { + NONE, + FAILED, + TOK_SOURCE_END, + + VAR, + CLASS_DEF, + SELF, + SCOPE_IN, + SCOPE_OUT, + ASSIGN, + DEF_FUNC, + PRINT, + IF, + ELSE, + WHILE, + BRACKET_IN, + BRACKET_OUT, + COMMA, + NEW, + CHILD, + RETURN, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + QE_OR_MORE, + QE_OR_LESS, + BOOL_NOT, + BOOL_AND, + BOOL_OR, + ADD, + MUL, + SUB, + DIV, + STM_END, + CONST_TRUE, + CONST_FALSE, + CONST_INT, + CONST_FLOAT, + SPACE, + CONST_STRING, + ID, + //COMMENT_LINE, + COMMENT_BLOCK, + }; + + tp::SimpleTokenizer lexer; + + lexer.build({ + { "\n|\t| |\r", TokType::SPACE }, + { "var", TokType::VAR }, + { "class", TokType::CLASS_DEF }, + { "self", TokType::SELF }, + { "\\{", TokType::SCOPE_IN }, + { "\\}", TokType::SCOPE_OUT }, + { "=", TokType::ASSIGN }, + { "def", TokType::DEF_FUNC }, + { "<<", TokType::PRINT }, + { "if", TokType::IF }, + { "else", TokType::ELSE }, + { "while", TokType::WHILE }, + { "\\(", TokType::BRACKET_IN }, + { "\\)", TokType::BRACKET_OUT }, + { ",", TokType::COMMA }, + { "new", TokType::NEW }, + { "\\.", TokType::CHILD }, + { "return", TokType::RETURN }, + { "==", TokType::EQUAL }, + { "!=", TokType::NOT_EQUAL }, + { ">", TokType::MORE }, + { "<", TokType::LESS }, + { ">=", TokType::QE_OR_MORE }, + { "<=", TokType::QE_OR_LESS }, + { "!", TokType::BOOL_NOT }, + { "&&", TokType::BOOL_AND }, + { "\\|\\|", TokType::BOOL_OR }, + { "\\+", TokType::ADD }, + { "\\*", TokType::MUL }, + { "\\-", TokType::SUB }, + { "/", TokType::DIV }, + { ";", TokType::STM_END }, + { "true", TokType::CONST_TRUE }, + { "false", TokType::CONST_FALSE }, + { "((\\-)|(\\+))?[0-9]+i?", TokType::CONST_INT }, + { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?f?", TokType::CONST_FLOAT }, + { "(/\\*){\\*-\\*}*(\\*/)", TokType::COMMENT_BLOCK }, + { "\"{\"-\"}*\"", TokType::CONST_STRING }, + { "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*", TokType::ID }, + }); + + if (!lexer.isBuild()) { + std::cout << lexer.getBuildError().description; + return; + } + + lexer.bindSource(script); + + TokType tok; + do { + + tok = lexer.readTok(); + + switch (tok) { + case TokType::SPACE: { std::cout << " "; } break; + case TokType::VAR: { LOG(VAR); } break; + case TokType::CLASS_DEF: { LOG(CLASS_DEF); } break; + case TokType::SELF: { LOG(SELF); } break; + case TokType::SCOPE_IN: { LOG(SCOPE_IN); } break; + case TokType::SCOPE_OUT: { LOG(SCOPE_OUT); } break; + case TokType::ASSIGN: { LOG(ASSIGN); } break; + case TokType::DEF_FUNC: { LOG(DEF_FUNC); } break; + case TokType::PRINT: { LOG(PRINT); } break; + case TokType::IF: { LOG(IF); } break; + case TokType::ELSE: { LOG(ELSE); } break; + case TokType::WHILE: { LOG(WHILE); } break; + case TokType::BRACKET_IN: { LOG(BRACKET_IN); } break; + case TokType::BRACKET_OUT: { LOG(BRACKET_OUT); } break; + case TokType::COMMA: { LOG(COMMA); } break; + case TokType::NEW: { LOG(NEW); } break; + case TokType::CHILD: { LOG(CHILD); } break; + case TokType::RETURN: { LOG(RETURN); } break; + case TokType::EQUAL: { LOG(EQUAL); } break; + case TokType::NOT_EQUAL: { LOG(NOT_EQUAL); } break; + case TokType::MORE: { LOG(MORE); } break; + case TokType::LESS: { LOG(LESS); } break; + case TokType::QE_OR_MORE: { LOG(QE_OR_MORE); } break; + case TokType::QE_OR_LESS: { LOG(QE_OR_LESS); } break; + case TokType::BOOL_NOT: { LOG(BOOL_NOT); } break; + case TokType::BOOL_AND: { LOG(BOOL_AND); } break; + case TokType::BOOL_OR: { LOG(BOOL_OR); } break; + case TokType::ADD: { LOG(ADD); } break; + case TokType::MUL: { LOG(MUL); } break; + case TokType::SUB: { LOG(SUB); } break; + case TokType::DIV: { LOG(DIV); } break; + case TokType::STM_END: { LOG(STM_END); } break; + case TokType::CONST_TRUE: { LOG(TRUE); } break; + case TokType::CONST_FALSE: { LOG(FALSE); } break; + case TokType::CONST_INT: { LOG(INT); } break; + case TokType::CONST_FLOAT: { LOG(FLOAT); } break; + case TokType::CONST_STRING: { LOG(STRING); } break; + case TokType::ID: { LOG(ID); } break; + //case TokType::COMMENT_LINE: { LOG(COMMENT_LINE) } break; + case TokType::COMMENT_BLOCK: { LOG(COMMENT_BLOCK) } break; + case TokType::FAILED: { LOG(FAILED) } break; + } + + } while (tok != TokType::TOK_SOURCE_END && tok != TokType::FAILED); + +} + +int main(int argc, char* argv[]) { + + tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleTokenizer, NULL }; + tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies); + if (!TestModule.initialize()) { + return 1; + } + + test(argc > 1 ? argv[1] : "rsc/script.txt"); + + TestModule.deinitialize(); +} \ No newline at end of file From e63843c6bb378e159d5feeeb7265b3706c02824a Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 13:11:43 +0300 Subject: [PATCH 08/68] Remove Cmd Arg parser for now --- Tokenizer/private/CmdArgParser.cpp | 326 ----------------------------- Tokenizer/public/CmdArgParser.h | 97 --------- 2 files changed, 423 deletions(-) delete mode 100644 Tokenizer/private/CmdArgParser.cpp delete mode 100644 Tokenizer/public/CmdArgParser.h diff --git a/Tokenizer/private/CmdArgParser.cpp b/Tokenizer/private/CmdArgParser.cpp deleted file mode 100644 index f52446d..0000000 --- a/Tokenizer/private/CmdArgParser.cpp +++ /dev/null @@ -1,326 +0,0 @@ - -#include "allocators.h" - -#include "CmdArgParser.h" - -#include "log.h" - -tp::CmdArgParser::Arg::Arg(const Arg& arg) { - mId = arg.mType; - switch (arg.mType) { - case tp::CmdArgParser::Arg::INT: mType = INT; mInt = arg.mInt; break; - case tp::CmdArgParser::Arg::FLOAT: mType = FLOAT; mFloat = arg.mFloat; break; - case tp::CmdArgParser::Arg::BOOL: mType = BOOL; mBool = arg.mBool; break; - case tp::CmdArgParser::Arg::STR: mType = STR; new (&mStr) StringArg(); mStr = arg.mStr; break; - case tp::CmdArgParser::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); mFile = arg.mFile; break; - } - mOptional = arg.mOptional; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, Type type) { - mId = id; - switch (type) { - case tp::CmdArgParser::Arg::INT: mType = INT; break; - case tp::CmdArgParser::Arg::FLOAT: mType = FLOAT; break; - case tp::CmdArgParser::Arg::BOOL: mType = BOOL; break; - case tp::CmdArgParser::Arg::STR: mType = STR; new (&mStr) StringArg(); break; - case tp::CmdArgParser::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); break; - } - mOptional = false; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange) { - mId = id; - mType = FLOAT; - mInt = { 0, 0, aAcceptingRange }; - mOptional = false; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange) { - mId = id; - mType = FLOAT; - mFloat = { 0, 0, aAcceptingRange }; - mOptional = false; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange, alni aDefault) { - mId = id; - mType = INT; - mInt = { 0, aDefault, aAcceptingRange }; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, Range aAcceptingRange, alnf aDefault) { - mId = id; - mType = FLOAT; - mFloat = { 0, aDefault, aAcceptingRange }; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, bool aDefault) { - mId = id; - mType = BOOL; - mBool.mDefault = aDefault; -} - -tp::CmdArgParser::Arg::Arg(tp::string id, const char* aDefault) { - mId = id; - mType = STR; - new (&mStr) StringArg(); - mStr.mDefault = aDefault; -} - -tp::CmdArgParser::Arg::~Arg() { - switch (mType) { - case tp::CmdArgParser::Arg::STR: - mStr.~StringArg(); - break; - case tp::CmdArgParser::Arg::FILE_IN: - mFile.~FileInputArg(); - break; - } -} - -tp::CmdArgParser::CmdArgParser(tp::init_list args) { - bool optional_start = false; - - for (auto& arg : args) { - assert(!mArgs.presents(arg.mId) && "Argument Redefinition"); - - auto copy_arg = new Arg(arg); - - mArgs.put(arg.mId, copy_arg); - mArgsOrder.pushBack(mArgs.get(arg.mId)); - - if (arg.mOptional) { - mOptionals++; - } - - if (optional_start) { - assert(arg.mOptional && "Not Optional Argument After Optionals"); - } - else if (arg.mOptional) { - optional_start = true; - } - } - - mTokenizer.build({ - { "\n|\t| |\r", TokType::SPACE }, - { "N|n|(False)|(false)", TokType::BOOL_FALSE }, - { "Y|y|(True)|(true)", TokType::BOOL_TRUE }, - { "((\\-)|(\\+))?[0-9]+", TokType::INT }, - { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?", TokType::FLOAT }, - { "'{'-'}*'", TokType::STR }, - }); - - assert(mTokenizer.isBuild() && "Internal Error"); -} - -tp::CmdArgParser::~CmdArgParser() { - for (auto arg : mArgsOrder) { - delete arg.data(); - } -} - -bool tp::CmdArgParser::parse(char argc, const char* argv[], bool logError) { - // discard windows working directory argument - argc--; - - if (argc < mArgs.size() - mOptionals) { - ErrInvalidArgCount(); - if (logError) { - ErrLog(); - } - return false; - } - - for (auto arg : mArgsOrder) { - if (arg.idx() < argc) { - parseArg(*arg.data(), argv[arg.idx() + 1]); - } - else { - initDefault(*arg.data()); - } - if (mError) { - if (logError) { - ErrLog(); - } - return false; - } - } - return true; - - //tp::set_working_dir(); -} - -tp::alni tp::CmdArgParser::getInt(string id) { auto& arg = getArg(id, Arg::INT); return arg.mInt.mVal; } -tp::alnf tp::CmdArgParser::getFloat(string id) { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } -bool tp::CmdArgParser::getBool(string id) { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } -tp::string tp::CmdArgParser::getString(string id) { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } -tp::File& tp::CmdArgParser::getFile(string id) { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFile; } - - -tp::CmdArgParser::Arg& tp::CmdArgParser::getArg(string id, Arg::Type type) { - auto idx = mArgs.presents(id); - assert(idx && "Invalid Id"); - auto& arg = mArgs.getSlotVal(idx); - assert(arg->mType == type && "Invalid Type Requested"); - return *arg; -} - -void tp::CmdArgParser::ErrInvalidArgCount() { mError = { "Invalid Number Of Arguments Passed", nullptr }; } -void tp::CmdArgParser::ErrInvalidArgSyntax(Arg* arg) { mError = { "Invalid Syntax Of Argument", arg }; } -void tp::CmdArgParser::ErrInvalidArgType(Arg* arg) { mError = { "Invalid Type Of Argument", arg }; } -void tp::CmdArgParser::ErrFileNotExists(Arg* arg) { mError = { "File Not Exists", arg }; } -void tp::CmdArgParser::ErrFileCouldNotOpen(Arg* arg) { mError = { "Could Not Open File", arg }; } -void tp::CmdArgParser::ErrValNotinRange(Arg* arg) { mError = { "Value Not In Range", arg }; } - -void tp::CmdArgParser::ErrLog() { - printf("Command Line Error: \n"); - - if (mError.mArg) { - alni idx = 0; - for (auto arg : mArgsOrder) { - if (mError.mArg == arg.data()) { - idx = arg.idx(); - break; - } - } - - printf("\nArgument : %lli\n", idx); - ArgLog(*mError.mArg); - } - - printf("Error Description : %s. \n", mError.mDescr); - - printf("\nExpected Arguments were : \n"); - - for (auto arg : mArgsOrder) { - printf(" -- %lli -- \n", arg.idx()); - ArgLog(*arg.data()); - } -} - -void tp::CmdArgParser::ArgLog(Arg& arg) { - switch (arg.mType) { - case Arg::INT: { - printf("Type : Int\n"); - printf("Range : %lli - %lli\n", arg.mInt.mAcceptingRange.mBegin, arg.mInt.mAcceptingRange.mEnd); - if (arg.mOptional) { - printf("Default : %lli\n", arg.mInt.mDefault); - } - printf("Given : %lli\n", arg.mInt.mVal); - } break; - case Arg::FLOAT: { - printf("Type : Float\n"); - printf("Range : %f - %f\n", arg.mFloat.mAcceptingRange.mBegin, arg.mFloat.mAcceptingRange.mEnd); - if (arg.mOptional) { - printf("Default : %f\n", arg.mFloat.mDefault); - } - printf("Given : %f\n", arg.mFloat.mVal); - } break; - case Arg::BOOL: { - printf("Type : Bool\n"); - if (arg.mOptional) { - printf("Default : %s\n", arg.mBool.mDefault ? "True" : "False"); - } - printf("Given : %s\n", arg.mBool.mFlag ? "True" : "False"); - } break; - case Arg::STR: { - printf("Type : String\n"); - if (arg.mOptional) { - printf("Default : %s\n", arg.mStr.mDefault.cstr()); - } - printf("Given : %s\n", arg.mStr.mStr.cstr()); - } break; - case Arg::FILE_IN: { - printf("Type : File Input\n"); - printf("Given Path : %s\n", arg.mFile.mFilepath.cstr()); - } break; - } -} - -void tp::CmdArgParser::initDefault(Arg& arg) { - switch (arg.mType) { - case Arg::INT: arg.mInt.mVal = arg.mInt.mDefault; break; - case Arg::FLOAT: arg.mFloat.mVal = arg.mFloat.mDefault; break; - case Arg::BOOL: arg.mBool.mFlag = arg.mBool.mDefault; break; - case Arg::STR: arg.mStr.mStr = arg.mStr.mDefault; break; - } -} - -void tp::CmdArgParser::parseArg(Arg& arg, const char* src) { - mTokenizer.reset(); - mTokenizer.bindSource(src); - - auto tok = mTokenizer.readTok(); - if (tok < TokType::INT || tok > TokType::STR) { - ErrInvalidArgSyntax(&arg); - } - auto val = mTokenizer.extractVal(); - - switch (arg.mType) { - case Arg::INT: { - if (tok != TokType::INT) { - ErrInvalidArgType(&arg); - return; - } - arg.mInt.mVal = val.operator tp::alni(); - if (arg.mInt.mVal < arg.mInt.mAcceptingRange.mBegin || arg.mInt.mVal > arg.mInt.mAcceptingRange.mEnd) { - ErrValNotinRange(&arg); - return; - } - } break; - - case Arg::FLOAT: { - if (tok != TokType::FLOAT) { - ErrInvalidArgType(&arg); - return; - } - arg.mFloat.mVal = val.operator tp::alnf(); - if (arg.mFloat.mVal < arg.mInt.mAcceptingRange.mBegin || arg.mFloat.mVal > arg.mInt.mAcceptingRange.mEnd) { - ErrValNotinRange(&arg); - return; - } - } break; - - case Arg::STR: { - if (tok != TokType::STR) { - ErrInvalidArgType(&arg); - return; - } - auto len = val.size(); - arg.mStr.mStr.reserve(len - 1); - tp::memcp(arg.mStr.mStr.get_writable(), val.cstr() + 1, len - 2); - arg.mStr.mStr.get_writable()[len - 2] = '\0'; - } break; - - case Arg::BOOL: { - if (tok != TokType::BOOL_FALSE && tok != TokType::BOOL_TRUE) { - ErrInvalidArgType(&arg); - return; - } - arg.mBool.mFlag = val.operator bool(); - } break; - - case Arg::FILE_IN: { - if (tok != TokType::STR) { - ErrInvalidArgType(&arg); - return; - } - - auto len = val.size(); - arg.mFile.mFilepath.reserve(len - 1); - tp::memcp(arg.mFile.mFilepath.get_writable(), val.cstr() + 1, len - 2); - arg.mFile.mFilepath.get_writable()[len - 2] = '\0'; - - if (!File::exists(arg.mFile.mFilepath.cstr())) { - ErrFileNotExists(&arg); - return; - } - arg.mFile.mFile.open(arg.mFile.mFilepath.cstr(), osfile_openflags::LOAD); - if (!arg.mFile.mFile.opened) { - ErrFileCouldNotOpen(&arg); - return; - } - } break; - } -} \ No newline at end of file diff --git a/Tokenizer/public/CmdArgParser.h b/Tokenizer/public/CmdArgParser.h deleted file mode 100644 index ac5823b..0000000 --- a/Tokenizer/public/CmdArgParser.h +++ /dev/null @@ -1,97 +0,0 @@ -#pragma once - -#include "Tokenizer.hpp" - -namespace tp { - struct CmdArgParser { - - struct IntArg { - alni mVal = 0; - alni mDefault = 0; - Range mAcceptingRange = { ENV_ALNI_MIN, ENV_ALNI_MAX }; - }; - - struct FloatArg { - alnf mVal = 0.f; - alnf mDefault = 0.f; - Range mAcceptingRange = { ENV_ALNF_MIN, ENV_ALNF_MAX }; - }; - - struct BoolArg { - bool mFlag = false; - bool mDefault = false; - }; - - struct StringArg { - String mStr; - String mDefault; - }; - - struct FileInputArg { - String mFilepath; - File mFile; - }; - - struct Arg { - string mId; - enum Type { INT, FLOAT, BOOL, STR, FILE_IN } mType; - union { - IntArg mInt; - FloatArg mFloat; - BoolArg mBool; - StringArg mStr; - FileInputArg mFile; - }; - - bool mOptional = true; - - Arg(const Arg& arg); - Arg(string id, Type type); - Arg(string id, Range aAcceptingRange); - Arg(string id, Range aAcceptingRange); - Arg(string id, Range aAcceptingRange, alni aDefault); - Arg(string id, Range aAcceptingRange, alnf aDefault); - Arg(string id, bool aDefault); - Arg(string id, const char* aDefault); - ~Arg(); - }; - - struct Error { - const char* mDescr = nullptr; - Arg* mArg = nullptr; - operator bool() { return mDescr != nullptr; } - } mError; - - CmdArgParser(init_list args); - ~CmdArgParser(); - - bool parse(char argc, const char* argv[], bool logError = false); - - alni getInt(string id); - alnf getFloat(string id); - bool getBool(string id); - string getString(string id); - File& getFile(string id); - - private: - enum class TokType { SPACE, INT, FLOAT, BOOL_FALSE, BOOL_TRUE, STR, NONE, FAILURE, END, } mType; - typedef SimpleTokenizer Tokenizer; - - Tokenizer mTokenizer; - HashMap mArgs; - List mArgsOrder; - ualni mOptionals = 0; - - Arg& getArg(string id, Arg::Type type); - void ErrInvalidArgCount(); - void ErrInvalidArgSyntax(Arg* arg); - void ErrInvalidArgType(Arg* arg); - void ErrFileNotExists(Arg* arg); - void ErrFileCouldNotOpen(Arg* arg); - void ErrValNotinRange(Arg* arg); - void ErrLog(); - void ArgLog(Arg& arg); - void initDefault(Arg& arg); - void parseArg(Arg& arg, const char* src); - }; -}; \ No newline at end of file From 44bad77e937bf14bcb5db4c11b1951c9f0d4a864 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 18:58:31 +0300 Subject: [PATCH 09/68] Tokenizer (No tests) --- Containers/public/Buffer2D.hpp | 36 ++++++++++++++++++-------------- Tokenizer/CMakeLists.txt | 2 +- Tokenizer/public/AutomataGraph.h | 17 ++++++++------- Utils/public/Utils.hpp | 2 +- 4 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Containers/public/Buffer2D.hpp b/Containers/public/Buffer2D.hpp index 064be52..0acd229 100644 --- a/Containers/public/Buffer2D.hpp +++ b/Containers/public/Buffer2D.hpp @@ -1,5 +1,6 @@ #include "Buffer.hpp" +#include "Utils.hpp" namespace tp { @@ -8,11 +9,14 @@ namespace tp { template class Buffer2D { + public: + typedef ualni Index; + typedef Pair Index2D; typedef SelCopyArg tTypeArg; - typedef Pair Size; - Size mSize; + private: tType* mBuff = nullptr; + Index2D mSize = { 0, 0 }; public: @@ -22,11 +26,11 @@ namespace tp { delete mBuff; } - explicit Buffer2D(Pair aSize) { + explicit Buffer2D(Index2D aSize) { reserve(aSize); } - [[nodiscard]] Pair size() const { + [[nodiscard]] Index2D size() const { return { mSize.x, mSize.y }; } @@ -34,22 +38,22 @@ namespace tp { return mBuff; } - inline tType& get(uhalni x, uhalni y) { - DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0) - return *(mBuff + mSize.x * y + x); + inline tType& get(const Index2D& at) { + DEBUG_ASSERT(at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + return *(mBuff + mSize.x * at.y + at.x); } - inline const tType& get(uhalni x, uhalni y) const { - DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0) - return *(mBuff + mSize.x * y + x); + inline const tType& get(const Index2D& at) const { + DEBUG_ASSERT(at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + return *(mBuff + mSize.x * at.y + at.x); } - inline void set(uhalni x, uhalni y, tTypeArg value) { - DEBUG_ASSERT(x < mSize.x && y < mSize.y && x >= 0 && y >= 0) - *(mBuff + mSize.x * y + x) = value; + inline void set(const Index2D& at, tTypeArg value) { + DEBUG_ASSERT(at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + *(mBuff + mSize.x * at.y + at.x) = value; } - void reserve(Size newSize) { + void reserve(const Index2D& newSize) { if (mSize.x != newSize.x || mSize.y != newSize.y) { delete mBuff; mBuff = new tType[newSize.x * newSize.y]; @@ -58,8 +62,8 @@ namespace tp { } void assign(tType value) { - uhalni len = mSize.x * mSize.y; - for (uhalni i = 0; i < len; i++) { + Index len = mSize.x * mSize.y; + for (Index i = 0; i < len; i++) { mBuff[i] = value; } } diff --git a/Tokenizer/CMakeLists.txt b/Tokenizer/CMakeLists.txt index 20982ac..d66f8a2 100644 --- a/Tokenizer/CMakeLists.txt +++ b/Tokenizer/CMakeLists.txt @@ -10,7 +10,7 @@ file(GLOB SOURCES "./private/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings) ### -------------------------- Tests -------------------------- ### enable_testing() diff --git a/Tokenizer/public/AutomataGraph.h b/Tokenizer/public/AutomataGraph.h index 67bda5b..20980bd 100644 --- a/Tokenizer/public/AutomataGraph.h +++ b/Tokenizer/public/AutomataGraph.h @@ -4,7 +4,7 @@ #include "List.hpp" #include "Buffer.hpp" #include "Buffer2D.hpp" -#include "Mat.hpp" +#include "Utils.hpp" #include "Map.hpp" namespace tp { @@ -409,8 +409,8 @@ namespace tp { static_assert(TypeTraits::isIntegral, "tAlphabetType must be enumerable."); - Buffer2D mTransitions{}; - Buffer mStates{}; + Buffer2D mTransitions; + Buffer mStates; Range mSymbolRange = nullptr; ualni mIter = 0; @@ -423,12 +423,13 @@ namespace tp { void construct(const DFA& dfa) { mSymbolRange = dfa.getRange(); - auto range_len = uhalni(mSymbolRange.mEnd - mSymbolRange.mBegin); - Vec2 dim = { range_len ? range_len : 1, (uhalni) (dfa.nVertices() + 1) }; + auto range_len = ualni(mSymbolRange.mEnd - mSymbolRange.mBegin); + auto sizeX = range_len ? range_len : 1; + auto sizeY = (ualni) (dfa.nVertices() + 1); - mTransitions.reserve(dim); + mTransitions.reserve({ sizeX, sizeY }); mTransitions.assign(dfa.nVertices()); - mStates.reserve(dim.y); + mStates.reserve(sizeY); for (auto vertex : dfa.mVertices) { auto state = vertex.data().termination_state; @@ -464,7 +465,7 @@ namespace tp { tStateType move(tAlphabetType symbol) { if (symbol >= mSymbolRange.mBegin && symbol < mSymbolRange.mEnd) { - mIter = mTransitions.get((uhalni) (symbol - mSymbolRange.mBegin), (uhalni) mIter); + mIter = mTransitions.get({ symbol - mSymbolRange.mBegin, mIter }); } else { mIter = mStates.length() - 1; diff --git a/Utils/public/Utils.hpp b/Utils/public/Utils.hpp index 9dd317a..740f4d0 100644 --- a/Utils/public/Utils.hpp +++ b/Utils/public/Utils.hpp @@ -24,7 +24,7 @@ namespace tp { template class Pair { public: - Pair() {} + Pair() = default; Pair(T1 t1, T2 t2) : head(t1), tail(t2) {} union { T1 t1; T1 head; T1 x; }; union { T2 t2; T2 tail; T2 y; }; From b68539cc0ca1793aaea2de97f0ccfafc06e5c309 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 19:18:22 +0300 Subject: [PATCH 10/68] Tokenizer Test --- Containers/public/Buffer.hpp | 3 +- Containers/tests/Buffer2DTest.cpp | 4 +- Tokenizer/private/Tokenizer.cpp | 1 - Tokenizer/public/AutomataGraph.h | 50 +++---- Tokenizer/public/RegularExpression.h | 1 + Tokenizer/rsc/script.txt | 18 --- Tokenizer/tests/TestTokenizer.cpp | 198 +++++++++++++++++++++++++++ Tokenizer/tests/tests.cpp | 174 +---------------------- 8 files changed, 235 insertions(+), 214 deletions(-) delete mode 100644 Tokenizer/rsc/script.txt create mode 100644 Tokenizer/tests/TestTokenizer.cpp diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 3a62be5..e81abd4 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -179,7 +179,8 @@ namespace tp { for (ualni i = 0; i < mLoad; i++) mBuff[i].~tType(); mBuff = (tType*) mAllocator.allocate(sizeof(tType) * aSize); mSize = aSize; - mLoad = 0; + mLoad = aSize; + for (ualni i = 0; i < mLoad; i++) new (mBuff + i) tType(); } private: diff --git a/Containers/tests/Buffer2DTest.cpp b/Containers/tests/Buffer2DTest.cpp index 9a667e2..252468d 100644 --- a/Containers/tests/Buffer2DTest.cpp +++ b/Containers/tests/Buffer2DTest.cpp @@ -13,8 +13,8 @@ const ualni size = 1000; TEST_DEF_STATIC(Simple1) { Buffer2D buff; buff.reserve({ 4, 4 }); - buff.set( 2, 2, 5); - TEST(buff.get(2, 2) == 5); + buff.set( { 2, 2 }, 5); + TEST(buff.get( { 2, 2 } ) == 5); } TEST_DEF_STATIC(Simple2) { diff --git a/Tokenizer/private/Tokenizer.cpp b/Tokenizer/private/Tokenizer.cpp index c0b6e62..618498b 100644 --- a/Tokenizer/private/Tokenizer.cpp +++ b/Tokenizer/private/Tokenizer.cpp @@ -4,7 +4,6 @@ using namespace tp; static ModuleManifest* sModuleDependencies[] = { - &tp::gModuleMath, &tp::gModuleStrings, nullptr }; diff --git a/Tokenizer/public/AutomataGraph.h b/Tokenizer/public/AutomataGraph.h index 20980bd..cbb7ee5 100644 --- a/Tokenizer/public/AutomataGraph.h +++ b/Tokenizer/public/AutomataGraph.h @@ -32,7 +32,7 @@ namespace tp { bool mExclude = false; bool isTransition(const tAlphabetType& symbol) { - if (symbol == nullptr) return false; + if (symbol == 0) return false; if (!mConsumesSymbol || mAcceptsAll) return true; bool const in_range = (symbol >= mAcceptingRange.mBegin && symbol <= mAcceptingRange.mEnd); return in_range != mExclude; @@ -112,7 +112,7 @@ namespace tp { } } - return { start, end + 1 }; + return Range( start, end + 1 ); } // vertices that are reachable from initial set with no input consumption (E-transitions) @@ -187,7 +187,7 @@ namespace tp { struct DStateKey { const List* nStates; - bool operator==(const DStateKey& in) { + bool operator==(const DStateKey& in) const { if (nStates->length() != in.nStates->length()) { return false; } @@ -238,11 +238,11 @@ namespace tp { // includes closure of NFA start state by definition auto start_state = new DState(); - nfa.closure({ nfa.getStartVertex() }, start_state->nstates, ualni(start_state)); + nfa.closure({ nfa.getStartVertex() }, start_state->nStates, ualni(start_state)); Map dStates; - dStates.put({ &start_state->nstates }, start_state); + dStates.put({ &start_state->nStates }, start_state); List working_set = { start_state }; @@ -255,7 +255,7 @@ namespace tp { List reachableNStates; - nfa.move(currentDState->data->nstates, reachableNStates, symbol, ualni(currentDState + symbol)); + nfa.move(currentDState->data->nStates, reachableNStates, symbol, ualni(currentDState + symbol)); nfa.closure(reachableNStates, reachableNStates, ualni(currentDState + symbol)); if (!reachableNStates.length()) { @@ -278,11 +278,11 @@ namespace tp { targetDState->debug_idx = dStates.size(); #endif - targetDState->nstates = reachableNStates; + targetDState->nStates = reachableNStates; // append to working stack working_set.pushBack(targetDState); - dStates.put({ &targetDState->nstates }, targetDState); + dStates.put({ &targetDState->nStates }, targetDState); } // add transition to DFA state @@ -302,18 +302,18 @@ namespace tp { break; } } - node->val->dvertex = addVertex(state); + node->val->dVertex = addVertex(state); } // connect all vertices for (auto node : dStates) { for (auto edge : node->val->transitions) { - addTransition(node->val->dvertex, edge.data().state->dvertex, edge.data().accepting_code); + addTransition(node->val->dVertex, edge.data().state->dVertex, edge.data().accepting_code); } } // set the starting vertex - mStart = start_state->dvertex; + mStart = start_state->dVertex; // cleanup for (auto node : dStates) { @@ -411,7 +411,7 @@ namespace tp { Buffer2D mTransitions; Buffer mStates; - Range mSymbolRange = nullptr; + Range mSymbolRange = { 0, 0 }; ualni mIter = 0; ualni mIterPrev = 0; @@ -431,31 +431,35 @@ namespace tp { mTransitions.assign(dfa.nVertices()); mStates.reserve(sizeY); + ualni idx = 0; for (auto vertex : dfa.mVertices) { auto state = vertex.data().termination_state; - mStates[vertex.idx()] = state; + mStates[idx] = state; + idx++; } mStates[dfa.nVertices()] = tFailedStateVal; + idx = 0; for (auto vertex : dfa.mVertices) { if (&vertex.data() == dfa.mStart) { - mStart = mIter = mIterPrev = vertex.idx(); + mStart = mIter = mIterPrev = idx; } + idx++; } + ualni vertexIdx = 0; for (auto vertex : dfa.mVertices) { for (auto edge : vertex.data().edges) { - ualni idx = 0; - for (auto vertex : dfa.mVertices) { - if (edge.data().vertex == &vertex.data()) { - idx = vertex.idx(); - break; - } + ualni vertex2Idx = 0; + for (auto vertex2 : dfa.mVertices) { + if (edge.data().vertex == &vertex2.data()) break; + vertex2Idx++; } auto const code = edge.data().transition_code; - mTransitions.set(code - mSymbolRange.mBegin, (uhalni) vertex.idx(), idx); + mTransitions.set( { (ualni) (code - mSymbolRange.mBegin), (ualni) vertexIdx }, vertex2Idx); } + vertexIdx++; } } @@ -465,10 +469,10 @@ namespace tp { tStateType move(tAlphabetType symbol) { if (symbol >= mSymbolRange.mBegin && symbol < mSymbolRange.mEnd) { - mIter = mTransitions.get({ symbol - mSymbolRange.mBegin, mIter }); + mIter = mTransitions.get({ (ualni) (symbol - mSymbolRange.mBegin), (ualni) mIter }); } else { - mIter = mStates.length() - 1; + mIter = mStates.size() - 1; } if (mIterPrev == mStart) { diff --git a/Tokenizer/public/RegularExpression.h b/Tokenizer/public/RegularExpression.h index e906df5..b0e447b 100644 --- a/Tokenizer/public/RegularExpression.h +++ b/Tokenizer/public/RegularExpression.h @@ -136,6 +136,7 @@ namespace tp::RegEx { case TOK_ANY: out = parseAny(); break; case TOK_VAL: out = parseVal(); break; case TOK_NONE: { discardTok(); return nullptr; }; + default: break; } if (!out) { discardTok(); diff --git a/Tokenizer/rsc/script.txt b/Tokenizer/rsc/script.txt deleted file mode 100644 index 8c312e1..0000000 --- a/Tokenizer/rsc/script.txt +++ /dev/null @@ -1,18 +0,0 @@ - - - /* ba - asadadasdK */ - - -1.f; - - if (+1.f) { - var string = "asas - d"; - - } - - while - - return - - diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp new file mode 100644 index 0000000..a25ce49 --- /dev/null +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -0,0 +1,198 @@ + +#include "Testing.hpp" +#include "Tokenizer.hpp" + +#include + +#define LOG(val) std::cout << #val << " " + +using namespace tp; + +ualni outputHashPassed = 1156; + +const char* script = +R"( + +/* yea +comment */ + +-1.f; + +if (+1.f) { + var string = "string value + another line"; + +} + +while + +return + +)"; + +TEST_DEF_STATIC(Simple) { + + enum class TokType { + NONE, + FAILED, + TOK_SOURCE_END, + + VAR, + CLASS_DEF, + SELF, + SCOPE_IN, + SCOPE_OUT, + ASSIGN, + DEF_FUNC, + PRINT, + IF, + ELSE, + WHILE, + BRACKET_IN, + BRACKET_OUT, + COMMA, + NEW, + CHILD, + RETURN, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + QE_OR_MORE, + QE_OR_LESS, + BOOL_NOT, + BOOL_AND, + BOOL_OR, + ADD, + MUL, + SUB, + DIV, + STM_END, + CONST_TRUE, + CONST_FALSE, + CONST_INT, + CONST_FLOAT, + SPACE, + CONST_STRING, + ID, + + //COMMENT_LINE, + + COMMENT_BLOCK, + }; + + SimpleTokenizer lexer; + + lexer.build({ + { "\n|\t| |\r", TokType::SPACE }, + { "var", TokType::VAR }, + { "class", TokType::CLASS_DEF }, + { "self", TokType::SELF }, + { "\\{", TokType::SCOPE_IN }, + { "\\}", TokType::SCOPE_OUT }, + { "=", TokType::ASSIGN }, + { "def", TokType::DEF_FUNC }, + { "<<", TokType::PRINT }, + { "if", TokType::IF }, + { "else", TokType::ELSE }, + { "while", TokType::WHILE }, + { "\\(", TokType::BRACKET_IN }, + { "\\)", TokType::BRACKET_OUT }, + { ",", TokType::COMMA }, + { "new", TokType::NEW }, + { "\\.", TokType::CHILD }, + { "return", TokType::RETURN }, + { "==", TokType::EQUAL }, + { "!=", TokType::NOT_EQUAL }, + { ">", TokType::MORE }, + { "<", TokType::LESS }, + { ">=", TokType::QE_OR_MORE }, + { "<=", TokType::QE_OR_LESS }, + { "!", TokType::BOOL_NOT }, + { "&&", TokType::BOOL_AND }, + { "\\|\\|", TokType::BOOL_OR }, + { "\\+", TokType::ADD }, + { "\\*", TokType::MUL }, + { "\\-", TokType::SUB }, + { "/", TokType::DIV }, + { ";", TokType::STM_END }, + { "true", TokType::CONST_TRUE }, + { "false", TokType::CONST_FALSE }, + { "((\\-)|(\\+))?[0-9]+i?", TokType::CONST_INT }, + { R"(((\-)|(\+))?([0-9]+)(\.)([0-9]*)?f?)", TokType::CONST_FLOAT }, + { R"((/\*){\*-\*}*(\*/))", TokType::COMMENT_BLOCK }, + { R"("{"-"}*")", TokType::CONST_STRING }, + { "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*", TokType::ID }, + }); + + if (!lexer.isBuild()) { + std::cout << lexer.getBuildError().description; + return; + } + + lexer.bindSource(script); + + TokType tok; + ualni outputHash = 0; + do { + + tok = lexer.readTok(); + + outputHash += ualni(tok); + + switch (tok) { + case TokType::SPACE: { std::cout << " "; } break; + case TokType::VAR: { LOG(VAR); } break; + case TokType::CLASS_DEF: { LOG(CLASS_DEF); } break; + case TokType::SELF: { LOG(SELF); } break; + case TokType::SCOPE_IN: { LOG(SCOPE_IN); } break; + case TokType::SCOPE_OUT: { LOG(SCOPE_OUT); } break; + case TokType::ASSIGN: { LOG(ASSIGN); } break; + case TokType::DEF_FUNC: { LOG(DEF_FUNC); } break; + case TokType::PRINT: { LOG(PRINT); } break; + case TokType::IF: { LOG(IF); } break; + case TokType::ELSE: { LOG(ELSE); } break; + case TokType::WHILE: { LOG(WHILE); } break; + case TokType::BRACKET_IN: { LOG(BRACKET_IN); } break; + case TokType::BRACKET_OUT: { LOG(BRACKET_OUT); } break; + case TokType::COMMA: { LOG(COMMA); } break; + case TokType::NEW: { LOG(NEW); } break; + case TokType::CHILD: { LOG(CHILD); } break; + case TokType::RETURN: { LOG(RETURN); } break; + case TokType::EQUAL: { LOG(EQUAL); } break; + case TokType::NOT_EQUAL: { LOG(NOT_EQUAL); } break; + case TokType::MORE: { LOG(MORE); } break; + case TokType::LESS: { LOG(LESS); } break; + case TokType::QE_OR_MORE: { LOG(QE_OR_MORE); } break; + case TokType::QE_OR_LESS: { LOG(QE_OR_LESS); } break; + case TokType::BOOL_NOT: { LOG(BOOL_NOT); } break; + case TokType::BOOL_AND: { LOG(BOOL_AND); } break; + case TokType::BOOL_OR: { LOG(BOOL_OR); } break; + case TokType::ADD: { LOG(ADD); } break; + case TokType::MUL: { LOG(MUL); } break; + case TokType::SUB: { LOG(SUB); } break; + case TokType::DIV: { LOG(DIV); } break; + case TokType::STM_END: { LOG(STM_END); } break; + case TokType::CONST_TRUE: { LOG(TRUE); } break; + case TokType::CONST_FALSE: { LOG(FALSE); } break; + case TokType::CONST_INT: { LOG(INT); } break; + case TokType::CONST_FLOAT: { LOG(FLOAT); } break; + case TokType::CONST_STRING: { LOG(STRING); } break; + case TokType::ID: { LOG(ID); } break; + //case TokType::COMMENT_LINE: { LOG(COMMENT_LINE) } break; + case TokType::COMMENT_BLOCK: { LOG(COMMENT_BLOCK); } break; + case TokType::FAILED: { LOG(FAILED); } break; + case TokType::NONE: + case TokType::TOK_SOURCE_END: break; + } + + } while (tok != TokType::TOK_SOURCE_END && tok != TokType::FAILED); + + std::cout << "\n\nOutputHash : " << outputHash; + + TEST(outputHash == outputHashPassed); +} + +TEST_DEF(Tokenizer) { + testSimple(); +} \ No newline at end of file diff --git a/Tokenizer/tests/tests.cpp b/Tokenizer/tests/tests.cpp index a29d780..4e721e9 100644 --- a/Tokenizer/tests/tests.cpp +++ b/Tokenizer/tests/tests.cpp @@ -1,182 +1,18 @@ #include "Tokenizer.hpp" -#include "filesystem.h" +#include "Testing.hpp" -#include - -#define LOG(val) std::cout << #val << " "; - -void test(const char* path) { - - tp::File script_file(path, tp::osfile_openflags::LOAD); - if (!script_file.opened) { - return; - } - char* script = new char[script_file.size() + 1]; - script[script_file.size()] = 0; - script_file.read_bytes(script, script_file.size()); - script_file.close(); - - enum class TokType { - NONE, - FAILED, - TOK_SOURCE_END, - - VAR, - CLASS_DEF, - SELF, - SCOPE_IN, - SCOPE_OUT, - ASSIGN, - DEF_FUNC, - PRINT, - IF, - ELSE, - WHILE, - BRACKET_IN, - BRACKET_OUT, - COMMA, - NEW, - CHILD, - RETURN, - EQUAL, - NOT_EQUAL, - MORE, - LESS, - QE_OR_MORE, - QE_OR_LESS, - BOOL_NOT, - BOOL_AND, - BOOL_OR, - ADD, - MUL, - SUB, - DIV, - STM_END, - CONST_TRUE, - CONST_FALSE, - CONST_INT, - CONST_FLOAT, - SPACE, - CONST_STRING, - ID, - //COMMENT_LINE, - COMMENT_BLOCK, - }; - - tp::SimpleTokenizer lexer; - - lexer.build({ - { "\n|\t| |\r", TokType::SPACE }, - { "var", TokType::VAR }, - { "class", TokType::CLASS_DEF }, - { "self", TokType::SELF }, - { "\\{", TokType::SCOPE_IN }, - { "\\}", TokType::SCOPE_OUT }, - { "=", TokType::ASSIGN }, - { "def", TokType::DEF_FUNC }, - { "<<", TokType::PRINT }, - { "if", TokType::IF }, - { "else", TokType::ELSE }, - { "while", TokType::WHILE }, - { "\\(", TokType::BRACKET_IN }, - { "\\)", TokType::BRACKET_OUT }, - { ",", TokType::COMMA }, - { "new", TokType::NEW }, - { "\\.", TokType::CHILD }, - { "return", TokType::RETURN }, - { "==", TokType::EQUAL }, - { "!=", TokType::NOT_EQUAL }, - { ">", TokType::MORE }, - { "<", TokType::LESS }, - { ">=", TokType::QE_OR_MORE }, - { "<=", TokType::QE_OR_LESS }, - { "!", TokType::BOOL_NOT }, - { "&&", TokType::BOOL_AND }, - { "\\|\\|", TokType::BOOL_OR }, - { "\\+", TokType::ADD }, - { "\\*", TokType::MUL }, - { "\\-", TokType::SUB }, - { "/", TokType::DIV }, - { ";", TokType::STM_END }, - { "true", TokType::CONST_TRUE }, - { "false", TokType::CONST_FALSE }, - { "((\\-)|(\\+))?[0-9]+i?", TokType::CONST_INT }, - { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?f?", TokType::CONST_FLOAT }, - { "(/\\*){\\*-\\*}*(\\*/)", TokType::COMMENT_BLOCK }, - { "\"{\"-\"}*\"", TokType::CONST_STRING }, - { "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*", TokType::ID }, - }); - - if (!lexer.isBuild()) { - std::cout << lexer.getBuildError().description; - return; - } - - lexer.bindSource(script); - - TokType tok; - do { - - tok = lexer.readTok(); - - switch (tok) { - case TokType::SPACE: { std::cout << " "; } break; - case TokType::VAR: { LOG(VAR); } break; - case TokType::CLASS_DEF: { LOG(CLASS_DEF); } break; - case TokType::SELF: { LOG(SELF); } break; - case TokType::SCOPE_IN: { LOG(SCOPE_IN); } break; - case TokType::SCOPE_OUT: { LOG(SCOPE_OUT); } break; - case TokType::ASSIGN: { LOG(ASSIGN); } break; - case TokType::DEF_FUNC: { LOG(DEF_FUNC); } break; - case TokType::PRINT: { LOG(PRINT); } break; - case TokType::IF: { LOG(IF); } break; - case TokType::ELSE: { LOG(ELSE); } break; - case TokType::WHILE: { LOG(WHILE); } break; - case TokType::BRACKET_IN: { LOG(BRACKET_IN); } break; - case TokType::BRACKET_OUT: { LOG(BRACKET_OUT); } break; - case TokType::COMMA: { LOG(COMMA); } break; - case TokType::NEW: { LOG(NEW); } break; - case TokType::CHILD: { LOG(CHILD); } break; - case TokType::RETURN: { LOG(RETURN); } break; - case TokType::EQUAL: { LOG(EQUAL); } break; - case TokType::NOT_EQUAL: { LOG(NOT_EQUAL); } break; - case TokType::MORE: { LOG(MORE); } break; - case TokType::LESS: { LOG(LESS); } break; - case TokType::QE_OR_MORE: { LOG(QE_OR_MORE); } break; - case TokType::QE_OR_LESS: { LOG(QE_OR_LESS); } break; - case TokType::BOOL_NOT: { LOG(BOOL_NOT); } break; - case TokType::BOOL_AND: { LOG(BOOL_AND); } break; - case TokType::BOOL_OR: { LOG(BOOL_OR); } break; - case TokType::ADD: { LOG(ADD); } break; - case TokType::MUL: { LOG(MUL); } break; - case TokType::SUB: { LOG(SUB); } break; - case TokType::DIV: { LOG(DIV); } break; - case TokType::STM_END: { LOG(STM_END); } break; - case TokType::CONST_TRUE: { LOG(TRUE); } break; - case TokType::CONST_FALSE: { LOG(FALSE); } break; - case TokType::CONST_INT: { LOG(INT); } break; - case TokType::CONST_FLOAT: { LOG(FLOAT); } break; - case TokType::CONST_STRING: { LOG(STRING); } break; - case TokType::ID: { LOG(ID); } break; - //case TokType::COMMENT_LINE: { LOG(COMMENT_LINE) } break; - case TokType::COMMENT_BLOCK: { LOG(COMMENT_BLOCK) } break; - case TokType::FAILED: { LOG(FAILED) } break; - } - - } while (tok != TokType::TOK_SOURCE_END && tok != TokType::FAILED); - -} +void testTokenizer(); int main(int argc, char* argv[]) { - tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleTokenizer, NULL }; - tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies); + tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleTokenizer, nullptr }; + tp::ModuleManifest TestModule("TokenizerTest", nullptr, nullptr, ModuleDependencies); if (!TestModule.initialize()) { return 1; } - test(argc > 1 ? argv[1] : "rsc/script.txt"); + testTokenizer(); TestModule.deinitialize(); } \ No newline at end of file From fabceb52d3028bea9d56f8e02af8dbe8daa0e85f Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 20:43:24 +0300 Subject: [PATCH 11/68] Update Todo --- TODO | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/TODO b/TODO index ff593e0..304f02b 100644 --- a/TODO +++ b/TODO @@ -1,19 +1,24 @@ -All: - Testing ! - Serialization -Containers: - Add mem leakage tests - Buffer 2d ! - Add check copy times - AVL dont copy data just swap - More tests on mBuff and avl +Storage: + Implement -Strings: +CommandLineParser: + Implement + +Objects: + Implement + +TextEditor: Implement Utils: Stack trace fixes -Tokenizer: - Implement +Containers: + Add mem leakage tests + Add check copy times + AVL dont copy data just swap + + +Testing ! +Serialization \ No newline at end of file From bc892da992e4a10dc3225e9c1e594ccbbb8fd82b Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 16 Jul 2023 18:28:24 +0300 Subject: [PATCH 12/68] Fixes --- Allocators/private/Allocators.cpp | 8 ++++-- Allocators/private/HeapAllocatorGlobal.cpp | 17 ++++++++++--- Allocators/public/Allocators.hpp | 3 ++- Containers/CMakeLists.txt | 2 +- Containers/public/Buffer.hpp | 2 +- Containers/public/Buffer2D.hpp | 23 ++++++++++++++--- Containers/public/Map.hpp | 9 ++++++- Containers/tests/Buffer2DTest.cpp | 5 +--- Containers/tests/BufferTest.cpp | 8 ++---- Containers/tests/ListTest.cpp | 24 +++++++----------- Containers/tests/MapTest.cpp | 29 ++++++++-------------- Containers/tests/Tests.cpp | 21 ++-------------- Containers/tests/Tests.hpp | 10 +------- Containers/tests/TreeTest.cpp | 12 +++------ Math/tests/Tests.cpp | 2 +- Modules/private/Module.cpp | 6 ++--- Modules/public/Module.hpp | 6 ++++- Strings/private/Strings.cpp | 1 - Strings/public/StringLogic.hpp | 1 + Tokenizer/public/RegularExpression.h | 20 ++++++++++++++- Tokenizer/tests/TestTokenizer.cpp | 11 ++++---- Utils/private/Debugging.cpp | 2 +- Utils/public/Debugging.hpp | 2 +- Utils/tests/Tests.cpp | 2 +- 24 files changed, 116 insertions(+), 110 deletions(-) diff --git a/Allocators/private/Allocators.cpp b/Allocators/private/Allocators.cpp index 18bc13c..ad1d935 100644 --- a/Allocators/private/Allocators.cpp +++ b/Allocators/private/Allocators.cpp @@ -3,8 +3,12 @@ #include -static tp::ModuleManifest* sModuleDependencies[] = { &tp::gModuleBase, nullptr }; -tp::ModuleManifest tp::gModuleAllocators = ModuleManifest("Allocators", nullptr, nullptr, sModuleDependencies); +static void deinit(const tp::ModuleManifest* self) { + tp::HeapAllocGlobal::checkLeaks(); +} + +static tp::ModuleManifest* sModuleDependencies[] = { &tp::gModuleUtils, nullptr }; +tp::ModuleManifest tp::gModuleAllocators = ModuleManifest("Allocators", nullptr, deinit, sModuleDependencies); void* operator new(size_t aSize) { return tp::HeapAllocGlobal::allocate(aSize); } diff --git a/Allocators/private/HeapAllocatorGlobal.cpp b/Allocators/private/HeapAllocatorGlobal.cpp index da31e46..f74cd83 100644 --- a/Allocators/private/HeapAllocatorGlobal.cpp +++ b/Allocators/private/HeapAllocatorGlobal.cpp @@ -118,8 +118,15 @@ void HeapAllocGlobal::deallocate(void* aPtr) { } // 3) Check the wrap - ASSERT(!memCompareVal(wrap_top, WRAP_SIZE, WRAP_VAL) && "Allocated Block Wrap Corrupted!") - ASSERT(!memCompareVal(wrap_bottom, WRAP_SIZE, WRAP_VAL) && "Allocated Block Wrap Corrupted!") + if (memCompareVal(wrap_top, WRAP_SIZE, WRAP_VAL)) { + CallStackCapture::printSnapshot(head->mCallStack); + ASSERT(!"Allocated Block Wrap Corrupted!") + } + + if (memCompareVal(wrap_bottom, WRAP_SIZE, WRAP_VAL)) { + CallStackCapture::printSnapshot(head->mCallStack); + ASSERT(!"Allocated Block Wrap Corrupted!") + } // 4) clear data #ifdef MEM_CLEAR_ON_ALLOC @@ -135,10 +142,12 @@ bool HeapAllocGlobal::checkLeaks() { if (mNumAllocations) { #ifdef MEM_STACK_TRACE - gCSCapture->logLeaks(); + for (auto iter = mEntry; iter; iter = iter->mPrev) { + CallStackCapture::printSnapshot(iter->mCallStack); + } #endif - DEBUG_BREAK("Destruction of not freed Allocator") + ASSERT(!"Destruction of not freed Allocator") return true; } return false; diff --git a/Allocators/public/Allocators.hpp b/Allocators/public/Allocators.hpp index da01ede..9cb8b48 100644 --- a/Allocators/public/Allocators.hpp +++ b/Allocators/public/Allocators.hpp @@ -1,6 +1,6 @@ #pragma once -#include "Module.hpp" +#include "Utils.hpp" #include "HeapAllocatorGlobal.hpp" #include "HeapAllocator.hpp" @@ -12,6 +12,7 @@ namespace tp { } inline void* operator new(std::size_t aSize, void* aWhere) noexcept { return aWhere; } +inline void* operator new[](std::size_t aSize, void* aWhere) noexcept { return aWhere; } void* operator new(std::size_t aSize); void* operator new[](std::size_t aSize); diff --git a/Containers/CMakeLists.txt b/Containers/CMakeLists.txt index f63ea2f..add28f5 100644 --- a/Containers/CMakeLists.txt +++ b/Containers/CMakeLists.txt @@ -16,7 +16,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC Modules) enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) -target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Allocators) add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index e81abd4..71af4b7 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -80,7 +80,7 @@ namespace tp { } explicit Buffer(ualni size) : mSize(size), mLoad(0) { - mBuff = (tType*) mAllocator.allocate(sizeof(tType) * tMinSize); + mBuff = (tType*) mAllocator.allocate(sizeof(tType) * size); } Buffer(const Buffer& in) : mSize(in.mSize), mLoad(in.mLoad) { diff --git a/Containers/public/Buffer2D.hpp b/Containers/public/Buffer2D.hpp index 0acd229..d8e5205 100644 --- a/Containers/public/Buffer2D.hpp +++ b/Containers/public/Buffer2D.hpp @@ -7,7 +7,10 @@ namespace tp { template< typename tType, ualni tSizeX, ualni tSizeY > using ConstSizeBuffer2D = ConstSizeBuffer, tSizeY>; - template + template < + typename tType, + class tAllocator = DefaultAllocator + > class Buffer2D { public: typedef ualni Index; @@ -15,15 +18,28 @@ namespace tp { typedef SelCopyArg tTypeArg; private: + tAllocator mAlloc; tType* mBuff = nullptr; Index2D mSize = { 0, 0 }; + void deleteBuffer() { + if (!mBuff) return; + for (ualni i = 0; i < mSize.x * mSize.y; i++) mBuff[i].~tType(); + mAlloc.deallocate(mBuff); + } + + void allocateBuffer(Index2D size) { + deleteBuffer(); + mBuff = (tType*) mAlloc.allocate(sizeof(tType) * size.x * size.y); + for (ualni i = 0; i < mSize.x * mSize.y; i++) new (mBuff + i) tType(); + } + public: Buffer2D() = default; ~Buffer2D() { - delete mBuff; + deleteBuffer(); } explicit Buffer2D(Index2D aSize) { @@ -55,8 +71,7 @@ namespace tp { void reserve(const Index2D& newSize) { if (mSize.x != newSize.x || mSize.y != newSize.y) { - delete mBuff; - mBuff = new tType[newSize.x * newSize.y]; + allocateBuffer(newSize); mSize = newSize; } } diff --git a/Containers/public/Map.hpp b/Containers/public/Map.hpp index 2f6fb88..ae91a37 100644 --- a/Containers/public/Map.hpp +++ b/Containers/public/Map.hpp @@ -387,6 +387,13 @@ namespace tp { } } - ~Map() { removeAll(); } + ~Map() { + for (ualni i = 0; i < mNSlots; i++) { + if (mTable[i] && !isDeletedNode(mTable[i])) { + deleteNode(mTable[i]); + } + } + deleteTable(mTable); + } }; } \ No newline at end of file diff --git a/Containers/tests/Buffer2DTest.cpp b/Containers/tests/Buffer2DTest.cpp index 252468d..5a4804a 100644 --- a/Containers/tests/Buffer2DTest.cpp +++ b/Containers/tests/Buffer2DTest.cpp @@ -1,17 +1,14 @@ #include "Tests.hpp" #include "Testing.hpp" - #include "Buffer2D.hpp" -#include - using namespace tp; const ualni size = 1000; TEST_DEF_STATIC(Simple1) { - Buffer2D buff; + Buffer2D buff; buff.reserve({ 4, 4 }); buff.set( { 2, 2 }, 5); TEST(buff.get( { 2, 2 } ) == 5); diff --git a/Containers/tests/BufferTest.cpp b/Containers/tests/BufferTest.cpp index bcca3a8..9c485a2 100644 --- a/Containers/tests/BufferTest.cpp +++ b/Containers/tests/BufferTest.cpp @@ -1,18 +1,14 @@ #include "Tests.hpp" - #include "Buffer.hpp" - #include "Testing.hpp" -#include - using namespace tp; const ualni size = 1000; TEST_DEF_STATIC(Simple1) { - Buffer buff; + Buffer buff; TEST(buff.size() == 0); for (auto i : Range(size * 10)) { buff.append(TestClass(i)); @@ -23,7 +19,7 @@ TEST_DEF_STATIC(Simple1) { } TEST_DEF_STATIC(Simple2) { - Buffer buff(size); + Buffer buff(size); TEST(buff.size() == 0); for (auto i : Range(size * 10)) buff.append(TestClass(i)); TEST(buff.size() == size * 10); diff --git a/Containers/tests/ListTest.cpp b/Containers/tests/ListTest.cpp index 44eddba..69dfc07 100644 --- a/Containers/tests/ListTest.cpp +++ b/Containers/tests/ListTest.cpp @@ -2,12 +2,10 @@ #include "Tests.hpp" #include "Testing.hpp" -#include - using namespace tp; TEST_DEF_STATIC(SimpleReference) { - tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; + tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; list.pushBack(TestClass(5)); list.pushFront(TestClass(0)); @@ -21,11 +19,10 @@ TEST_DEF_STATIC(SimpleReference) { TEST(i == 5); list.removeAll(); - TEST(list.getAllocator().getAllocationsCount() == 0); } TEST_DEF_STATIC(SimplePointer) { - tp::List list = { new TestClass(1), new TestClass(2), new TestClass(3), new TestClass(4) }; + tp::List list = { new TestClass(1), new TestClass(2), new TestClass(3), new TestClass(4) }; list.pushBack(new TestClass(5)); list.pushFront(new TestClass(0)); @@ -38,26 +35,25 @@ TEST_DEF_STATIC(SimplePointer) { TEST(i == 5); - list.removeAll(); + for (auto iter : list) { + delete iter.data(); + } - TEST(list.getAllocator().getAllocationsCount() == 0); + list.removeAll(); } TEST_DEF_STATIC(Copy) { - tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; - tp::List list2 = list; + tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; + tp::List list2 = list; TEST_EQUAL(list, list2); list.removeAll(); list2.removeAll(); - - TEST(list.getAllocator().getAllocationsCount() == 0); - TEST(list2.getAllocator().getAllocationsCount() == 0); } TEST_DEF_STATIC(SaveLoad) { - tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; + tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; TestFile file; @@ -77,8 +73,6 @@ TEST_DEF_STATIC(SaveLoad) { TEST(i == 4); list.removeAll(); - - TEST(list.getAllocator().getAllocationsCount() == 0); } TEST_DEF(List) { diff --git a/Containers/tests/MapTest.cpp b/Containers/tests/MapTest.cpp index 1ce182e..f0cccbb 100644 --- a/Containers/tests/MapTest.cpp +++ b/Containers/tests/MapTest.cpp @@ -1,15 +1,12 @@ #include "Tests.hpp" #include "Testing.hpp" - #include "Map.hpp" -#include - using namespace tp; TEST_DEF_STATIC(SimpleReference) { - tp::Map map; + tp::Map map; for (auto i : Range(1000, 100000)) { map.put(i, TestClass(i)); @@ -40,12 +37,10 @@ TEST_DEF_STATIC(SimpleReference) { } map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); } TEST_DEF_STATIC(SimplePointer) { - tp::Map map; + tp::Map map; for (auto i : Range(1000)) { map.put(i, new TestClass(i)); @@ -57,11 +52,14 @@ TEST_DEF_STATIC(SimplePointer) { } for (auto i : Range(1000)) { + auto del = map.get(i); map.put(i, new TestClass(i)); + delete del; } for (auto i : Range(900, 1000)) { TEST(map.presents(i)); + delete map.get(i); map.remove(i); TEST(!map.presents(i)); } @@ -77,30 +75,25 @@ TEST_DEF_STATIC(SimplePointer) { } map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); } TEST_DEF_STATIC(Copy) { - tp::Map map; + tp::Map map; for (auto i : Range(10)) { map.put(i, TestClass(i)); } - tp::Map map2 = map; + tp::Map map2 = map; TEST_EQUAL(map, map2); map.removeAll(); map2.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); - TEST(map2.getAllocator().getAllocationsCount() == 1); } TEST_DEF_STATIC(SaveLoad) { - tp::Map map; + tp::Map map; for (auto i : Range(10)) { map.put(i, TestClass(i)); @@ -112,13 +105,13 @@ TEST_DEF_STATIC(SaveLoad) { map.removeAll(); - TEST(map.getAllocator().getAllocationsCount() == 1); + TEST(map.size() == 0); file.setAddress(0); map.read(file); - TEST(map.getAllocator().getAllocationsCount() == 11); + TEST(map.size() == 10); for (auto i : Range(10)) { TEST(map.presents(i)); @@ -126,8 +119,6 @@ TEST_DEF_STATIC(SaveLoad) { } map.removeAll(); - - TEST(map.getAllocator().getAllocationsCount() == 1); } TEST_DEF(Map) { diff --git a/Containers/tests/Tests.cpp b/Containers/tests/Tests.cpp index a5de12e..529e808 100644 --- a/Containers/tests/Tests.cpp +++ b/Containers/tests/Tests.cpp @@ -1,32 +1,15 @@ #include "Tests.hpp" - #include "Testing.hpp" -#include - static bool init(const tp::ModuleManifest* self) { tp::gTesting.setRootName(self->getName()); return true; } -void* TestAllocator::allocate(tp::ualni size) { - nAllocations++; - return malloc(size); -} - -void TestAllocator::deallocate(void* p) { - nAllocations--; - free(p); -} - -tp::ualni TestAllocator::getAllocationsCount() const { - return nAllocations; -} - int main() { - tp::ModuleManifest* deps[] = { &tp::gModuleContainers, &tp::gModuleUtils, nullptr }; + tp::ModuleManifest* deps[] = { &tp::gModuleUtils, &tp::gModuleAllocators, nullptr }; tp::ModuleManifest testModule("ContainersTest", init, nullptr, deps); if (!testModule.initialize()) { @@ -36,7 +19,7 @@ int main() { testList(); testMap(); testAvl(); - testBuffer(); + testBuffer(); testBuffer2d(); testModule.deinitialize(); diff --git a/Containers/tests/Tests.hpp b/Containers/tests/Tests.hpp index 084d6bc..3e47e0b 100644 --- a/Containers/tests/Tests.hpp +++ b/Containers/tests/Tests.hpp @@ -1,6 +1,7 @@ #pragma once #include "Utils.hpp" +#include "Allocators.hpp" class TestClass { tp::ualni val2 = 0; @@ -27,15 +28,6 @@ public: void setVal(tp::ualni val) { val1 = val; } }; -class TestAllocator { - tp::ualni nAllocations = 0; -public: - TestAllocator() = default; - void* allocate(tp::ualni size); - void deallocate(void* p); - [[nodiscard]] tp::ualni getAllocationsCount() const; -}; - class TestFile { tp::ualni mem[1024] = { 0 }; tp::ualni address = 0; diff --git a/Containers/tests/TreeTest.cpp b/Containers/tests/TreeTest.cpp index 7e39bc3..561e410 100644 --- a/Containers/tests/TreeTest.cpp +++ b/Containers/tests/TreeTest.cpp @@ -1,16 +1,12 @@ #include "Tests.hpp" - #include "Tree.hpp" - #include "Testing.hpp" -#include - using namespace tp; TEST_DEF_STATIC(Simple) { - AvlTree, TestClass, TestAllocator> tree; + AvlTree, TestClass, HeapAlloc> tree; TEST(tree.size() == 0); TEST(tree.head() == nullptr); @@ -27,7 +23,7 @@ TEST_DEF_STATIC(Simple) { } TEST_DEF_STATIC(Persistance) { - AvlTree, TestClass, TestAllocator> tree; + AvlTree, TestClass, HeapAlloc> tree; const auto size = 1000; @@ -46,7 +42,7 @@ TEST_DEF_STATIC(Persistance) { // random load ualni loadSize = 0; while (loadSize < size / 2) { - ualni idx = rand() % (size - 1); + auto idx = ualni(randomFloat() * (size - 1)); DEBUG_ASSERT(idx < size) if (!buff[idx].presents) { tree.insert((alni) buff[idx].data.getVal(), buff[idx].data); @@ -86,7 +82,7 @@ TEST_DEF_STATIC(Persistance) { // random unload ualni unloadSize = 0; while (unloadSize < size / 2) { - ualni idx = rand() % (size - 1); + auto idx = ualni(randomFloat() * (size - 1)); if (buff[idx].presents) { tree.remove((alni) buff[idx].data.getVal()); diff --git a/Math/tests/Tests.cpp b/Math/tests/Tests.cpp index 360c400..d5f8751 100644 --- a/Math/tests/Tests.cpp +++ b/Math/tests/Tests.cpp @@ -14,7 +14,7 @@ void testMath(); int main() { tp::ModuleManifest* deps[] = { &tp::gModuleUtils, nullptr }; - tp::ModuleManifest testModule("ContainersTest", init, nullptr, deps); + tp::ModuleManifest testModule("MathTest", init, nullptr, deps); if (!testModule.initialize()) { return 1; diff --git a/Modules/private/Module.cpp b/Modules/private/Module.cpp index 0a67342..65fcebd 100644 --- a/Modules/private/Module.cpp +++ b/Modules/private/Module.cpp @@ -24,7 +24,7 @@ bool ModuleManifest::isInitialized() const { return mInitialized; } -bool ModuleManifest::initialize() { +bool ModuleManifest::initialize(const ModuleManifest* parent) { mInitCount++; @@ -35,10 +35,10 @@ bool ModuleManifest::initialize() { mInitialized = true; for (auto module = mDependencies; module && *module; module++) { - mInitialized &= (*module)->initialize(); + mInitialized &= (*module)->initialize(this); } - std::cout << "====== Initializing \"" << mModuleName << "\"\n"; + std::cout << "=== Initializing \"" << mModuleName << "\" from \"" << (parent ? parent->mModuleName : mModuleName ) << "\"\n"; if (mInit) mInitialized &= mInit(this); diff --git a/Modules/public/Module.hpp b/Modules/public/Module.hpp index d198af2..7d01e42 100644 --- a/Modules/public/Module.hpp +++ b/Modules/public/Module.hpp @@ -15,9 +15,12 @@ namespace tp { ModuleManifest(const char* aModuleName, ModuleInit aInit, ModuleDeinit aDeinit, ModuleManifest** aDependencies); [[nodiscard]] bool isInitialized() const; - bool initialize(); + bool initialize(const ModuleManifest* parent = nullptr); void deinitialize(); [[nodiscard]] const char* getName() const; + void setCustomData(void* data) { mCustomData = data; } + void* getCustomData(void* data) const { return mCustomData; } + private: const char* mModuleName = nullptr; ModuleManifest** mDependencies; // NULL terminated @@ -25,6 +28,7 @@ namespace tp { ModuleInit mInit = nullptr; ModuleDeinit mDeinit = nullptr; uhalni mInitCount = 0; + void* mCustomData = nullptr; }; extern ModuleManifest gModuleBase; diff --git a/Strings/private/Strings.cpp b/Strings/private/Strings.cpp index 2d59e4d..2e21690 100644 --- a/Strings/private/Strings.cpp +++ b/Strings/private/Strings.cpp @@ -17,7 +17,6 @@ void deinitialize(const ModuleManifest*) { static tp::ModuleManifest* sModuleDependencies[] = { &tp::gModuleContainers, &tp::gModuleAllocators, - &tp::gModuleUtils, nullptr }; diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index 3dc0e18..0abc604 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Allocators.hpp" #include "Utils.hpp" #include "Buffer.hpp" diff --git a/Tokenizer/public/RegularExpression.h b/Tokenizer/public/RegularExpression.h index b0e447b..9294698 100644 --- a/Tokenizer/public/RegularExpression.h +++ b/Tokenizer/public/RegularExpression.h @@ -16,36 +16,53 @@ namespace tp::RegEx { REPEAT, VAL, } mType = NONE; + + AstNode() = default; + virtual ~AstNode() = default; }; template struct AstVal : public AstNode { explicit AstVal(tAlphabetType val) : mVal(val) { mType = VAL; } + ~AstVal() override = default; tAlphabetType mVal; }; struct AstCompound : public AstNode { AstCompound() { mType = COMPOUND; } + ~AstCompound() override { + for (auto iter : mChilds) { + delete iter.data(); + } + mChilds.removeAll(); + } List mChilds; }; struct AstAlternation : public AstNode { AstAlternation() { mType = OR; } + ~AstAlternation() override { + delete mFirst; + delete mSecond; + } AstNode* mFirst = nullptr; AstNode* mSecond = nullptr; }; struct AstIf : public AstNode { AstIf() { mType = IF; } + ~AstIf() override { delete mNode; } AstNode* mNode = nullptr; }; struct AstAny : public AstNode { AstAny() { mType = ANY; } + ~AstAny() override = default; }; struct AstRepetition : public AstNode { AstRepetition() { mType = REPEAT; } + ~AstRepetition() override { delete mNode; } AstNode* mNode = nullptr; bool mPlus = false; }; @@ -53,8 +70,9 @@ namespace tp::RegEx { template struct AstClass : public AstNode { AstClass() { mType = CLASS; } + ~AstClass() override { mRanges.removeAll(); } List> mRanges; - bool mExclude{}; + bool mExclude = false; }; struct ParseError { diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp index a25ce49..d6b40a1 100644 --- a/Tokenizer/tests/TestTokenizer.cpp +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -1,10 +1,9 @@ #include "Testing.hpp" #include "Tokenizer.hpp" +#include -#include - -#define LOG(val) std::cout << #val << " " +#define LOG(val) // std::cout << #val << " " using namespace tp; @@ -126,7 +125,7 @@ TEST_DEF_STATIC(Simple) { }); if (!lexer.isBuild()) { - std::cout << lexer.getBuildError().description; + printf("Error : %s", lexer.getBuildError().description); return; } @@ -141,7 +140,7 @@ TEST_DEF_STATIC(Simple) { outputHash += ualni(tok); switch (tok) { - case TokType::SPACE: { std::cout << " "; } break; + case TokType::SPACE: { printf(" "); } break; case TokType::VAR: { LOG(VAR); } break; case TokType::CLASS_DEF: { LOG(CLASS_DEF); } break; case TokType::SELF: { LOG(SELF); } break; @@ -188,7 +187,7 @@ TEST_DEF_STATIC(Simple) { } while (tok != TokType::TOK_SOURCE_END && tok != TokType::FAILED); - std::cout << "\n\nOutputHash : " << outputHash; + printf("\n\nOutputHash : %llu", outputHash); TEST(outputHash == outputHashPassed); } diff --git a/Utils/private/Debugging.cpp b/Utils/private/Debugging.cpp index 38aade8..965da3d 100644 --- a/Utils/private/Debugging.cpp +++ b/Utils/private/Debugging.cpp @@ -208,7 +208,7 @@ void CallStackCapture::printSnapshot(const CallStack* snapshot) { printf("\n"); } -void CallStackCapture::logLeaks() { +void CallStackCapture::logAll() { for (auto cs : *this) { printSnapshot(cs.getCallStack()); } diff --git a/Utils/public/Debugging.hpp b/Utils/public/Debugging.hpp index 26f0cf8..1378c58 100644 --- a/Utils/public/Debugging.hpp +++ b/Utils/public/Debugging.hpp @@ -55,7 +55,7 @@ namespace tp { const DebugSymbols* getSymbols(FramePointer fp); static void printSnapshot(const CallStack* snapshot); - void logLeaks(); + void logAll(); public: diff --git a/Utils/tests/Tests.cpp b/Utils/tests/Tests.cpp index 3ac860a..79c6c18 100644 --- a/Utils/tests/Tests.cpp +++ b/Utils/tests/Tests.cpp @@ -47,7 +47,7 @@ void root() { TEST_DEF(Debugging) { root(); - gCSCapture->logLeaks(); + gCSCapture->logAll(); } int main() { From bedd88be2ed0ee8971dc42087ac20c2a361fa587 Mon Sep 17 00:00:00 2001 From: Ilusha <63184036+IlyaShurupov@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:43:45 +0300 Subject: [PATCH 13/68] Try coverage cmake.yml --- .github/workflows/cmake.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 0e85c3d..4f5f85e 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -39,4 +39,8 @@ jobs: # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: ctest -C ${{env.BUILD_TYPE}} + + - name: Code Coverage Summary + - uses: irongut/CodeCoverageSummary@v1.3.0 + From d80ea40848b8147f7f39bae0ab2ae5bd1785944a Mon Sep 17 00:00:00 2001 From: Ilusha <63184036+IlyaShurupov@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:45:05 +0300 Subject: [PATCH 14/68] Update cmake.yml --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 4f5f85e..6ffa559 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -41,6 +41,6 @@ jobs: run: ctest -C ${{env.BUILD_TYPE}} - name: Code Coverage Summary - - uses: irongut/CodeCoverageSummary@v1.3.0 + uses: irongut/CodeCoverageSummary@v1.3.0 From 91b00817e3973399945f7f9ecd13a9f30363eb53 Mon Sep 17 00:00:00 2001 From: Ilusha <63184036+IlyaShurupov@users.noreply.github.com> Date: Mon, 17 Jul 2023 20:49:19 +0300 Subject: [PATCH 15/68] Update cmake.yml --- .github/workflows/cmake.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 6ffa559..b6b2020 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -39,8 +39,6 @@ jobs: # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: ctest -C ${{env.BUILD_TYPE}} - - - name: Code Coverage Summary - uses: irongut/CodeCoverageSummary@v1.3.0 + From 6bca7431b7a466b9f39c5844243495efd503f6b0 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 17 Jul 2023 22:32:30 +0300 Subject: [PATCH 16/68] Adding Strings tests --- Strings/public/StringLogic.hpp | 155 +++++++---------- Strings/public/Strings.hpp | 26 +-- Strings/tests/Tests.cpp | 5 +- Strings/tests/Tests.hpp | 4 + Strings/tests/TestsLogging.cpp | 8 +- Strings/tests/TestsStrings.cpp | 33 +++- Strings/tests/TestsStringsLogic.cpp | 247 ++++++++++++++++++++++++++++ 7 files changed, 357 insertions(+), 121 deletions(-) create mode 100644 Strings/tests/Tests.hpp create mode 100644 Strings/tests/TestsStringsLogic.cpp diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index 0abc604..32346e6 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -1,8 +1,10 @@ #pragma once #include "Allocators.hpp" -#include "Utils.hpp" #include "Buffer.hpp" +#include "Utils.hpp" +#include +#include namespace tp { @@ -18,51 +20,52 @@ namespace tp { static inline bool isEndChar(tChar in) { return in == '\0'; } static constexpr tChar getEndChar() { return '\0'; } - static ualni calcLength(const tChar* in) { + static Index calcLength(const tChar* in) { const tChar* iter = in; while (*iter != '\0') iter++; return iter - in; } - static tChar* insertLogic(const tChar* cur, const tChar* tar, ualni at, ualni len) { - ualni curLen = calcLength(cur); - ualni allLen = curLen + len; + static tChar* insertLogic(const tChar* cur, const tChar* tar, Index at, Index len) { + auto curLen = calcLength(cur); + auto allLen = curLen + len; auto* out = new tChar[allLen + 1]; DEBUG_ASSERT(curLen >= 0) DEBUG_ASSERT(len >= 0) DEBUG_ASSERT(at < curLen + 1 && at >= 0) - for (ualni idx = 0; idx < at; idx++) { + for (Index idx = 0; idx < at; idx++) { out[idx] = cur[idx]; } - for (ualni idx = 0; idx < len; idx++) { + for (Index idx = 0; idx < len; idx++) { out[idx + at] = tar[idx]; } - for (ualni idx = at + len; idx < allLen; idx++) { + for (Index idx = at + len; idx < allLen; idx++) { out[idx] = cur[idx - len]; } out[allLen] = '\0'; return out; } - static tChar* removeLogic(const tChar* cur, ualni start, ualni end) { - ualni curLen = calcLength(cur); - ualni rangeLen = end - start; - ualni newLen = curLen - rangeLen; + // including end not including start + static tChar* removeLogic(const tChar* cur, Index start, Index end) { + auto curLen = calcLength(cur); + auto rangeLen = end - start; + auto newLen = curLen - rangeLen; auto* out = new tChar[newLen + 1]; out[newLen] = '\0'; - for (ualni idx = 0; idx < start; idx++) { + for (Index idx = 0; idx < start; idx++) { out[idx] = cur[idx]; } - for (ualni idx = end; idx < curLen; idx++) { + for (Index idx = end; idx < curLen; idx++) { out[idx - rangeLen] = cur[idx]; } return out; } static bool isEqualLogic(const tChar* left, const tChar* right) { - ualni idx = 0; + Index idx = 0; LOOP: if (left[idx] == '\0' || right[idx] == '\0') { if (left[idx] == '\0' && right[idx] == '\0') { @@ -77,88 +80,6 @@ namespace tp { goto LOOP; } - static ualni fromValueLength(alni val, ualni base) { - ualni iter = val; - ualni len = 0; - while (iter /= base) { - len++; - } - bool neg = val < 0; - len += 1 + ualni(neg); - return len; - } - - static tChar* stringFromValue(alni val, tChar* ownBuff, ualni base) { - tChar* out; - bool neg = val < 0; - ualni len = fromValueLength(val, base); - out = ownBuff ? ownBuff : new tChar[len + 1]; - out[len] = '\0'; - val = abs(val); - for (ualni i = len - 1; i >= int(neg); i--) { - out[i] = (tChar) (val % base + 48); - val /= (alni) base; - } - if (neg) { - out[0] = '-'; - } - return out; - } - - static ualni fromValueLength(alnf val, ualni base) { - auto rounded = (alni) val; - ualni mantissa = ( (alni) val - rounded) * 100000; - alni rounded_len = 0; - alni mantissa_len = 0; - while (rounded /= (alni) base) { - rounded_len++; - } - if (!rounded_len) { - rounded_len++; - } - while (mantissa /= base) { - mantissa_len++; - } - bool neg = val < 0; - bool dot = mantissa_len & 1; - alni tot_len = mantissa_len + rounded_len + dot + neg; - return tot_len; - } - - static tChar* fromValue(alnf, ualni, tChar*) { - DEBUG_BREAK(false) - return nullptr; - } - - static tChar* fromValue(bool val, tChar* ownBuff) { - alni len = val ? 4 : 5; - tChar* out = ownBuff ? ownBuff : new tChar[len + 1]; - out[len] = '\0'; - memCopy(out, val ? "True" : "False", len); - return out; - } - - static tChar* stringFromValue(int val, ualni base) { - return fromValue((alni) val, nullptr, base); - } - - static tChar* fromValue(tChar val) { - auto* out = new tChar[2]; - out[1] = '\0'; - out[0] = val; - return out; - } - - static bool toValue(const tChar*, alni&, ualni) { - ASSERT(false) - return false; - } - - static bool toValue(const tChar*, alnf&, ualni) { - ASSERT(false) - return false; - } - static bool toValue(const tChar* in, bool& val) { if (!calcLength(in)) return false; if (isEqual(in, "False") || isEqual(in, "false") || isEqual(in, "0")) { @@ -169,8 +90,9 @@ namespace tp { return true; } + // returns 0 : nl1 + 1 : nl2 + 1 : nl3 + 1 : ... : size static void calcLineOffsets(const tChar* aBuff, Index aLength, Buffer& aOut) { - halni lines = 0; + Index lines = 0; for (auto idx : Range(aLength)) { if (isNewLineChar(aBuff[idx])) { lines++; @@ -187,5 +109,42 @@ namespace tp { aOut[0] = 0; aOut[lines + 1] = aLength; } + + + [[nodiscard]] static bool convertStringToValue(const tChar* input, alni& output) { + char* endPtr; + output = std::strtoll(input, &endPtr, 10); + return (endPtr == input + calcLength(input)); + } + + [[nodiscard]] static bool convertStringToValue(const tChar* input, alnf& output) { + char* endPtr; + output = std::strtod(input, &endPtr); + return (endPtr == input + calcLength(input)); + } + + [[nodiscard]] static bool convertStringToValue(const tChar* input, bool& output) { + output = !(isEqualLogic(input, "False") || isEqualLogic(input, "false") || isEqualLogic(input, "0")); + return true; + } + + [[nodiscard]] static bool convertValueToString(alni input, tChar* output, Index bufferSize) { + int result = std::snprintf(output, bufferSize, "%lld", input); + return result >= 0; + } + + [[nodiscard]] static bool convertValueToString(alnf input, tChar* output, Index bufferSize) { + int result = std::snprintf(output, bufferSize, "%f", input); + return result >= 0; + } + + [[nodiscard]] static bool convertValueToString(bool input, tChar* output, Index bufferSize) { + const char* str = (input ? "true" : "false"); + Index length = calcLength(str); + if (length >= bufferSize) + return false; + memCopy(output, str, length + 1); + return true; + } }; } \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index b1038bb..254943c 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -24,7 +24,7 @@ namespace tp { StringData() { mBuff = (tChar*) "*"; - mReferenceCount = 0; + mReferenceCount = 1; mIsConst = true; mEditedIdx = 0; } @@ -73,7 +73,7 @@ namespace tp { typedef typename Logic::Index Index; enum { STRINGS_POOL_SIZE = 1024, }; - static PoolAlloc, STRINGS_POOL_SIZE>* sStringPool; + static PoolAlloc, STRINGS_POOL_SIZE> sStringPool; static Data sNullString; private: @@ -94,14 +94,14 @@ namespace tp { // Creates new string data from raw data pointer. // Does not own string buffer - string buffer will not be freed. Initializes as const memory. - explicit StringTemplate(const tChar* raw) { - mData = new (sStringPool->allocate(0)) StringData(raw, true); + StringTemplate(const tChar* raw) { + mData = new (sStringPool.allocate(0)) StringData(raw, true); incReference(mData); } // Copies raw data and claims ownership over it - explicit StringTemplate(tChar* raw) { - mData = new (sStringPool->allocate(0)) StringData(raw); + StringTemplate(tChar* raw) { + mData = new (sStringPool.allocate(0)) StringData(raw); incReference(mData); } @@ -117,8 +117,8 @@ namespace tp { void decReference(Data* dp) { dp->mReferenceCount--; if (!dp->mReferenceCount) { - sStringPool->deallocate(mData); mData->~StringData(); + sStringPool.deallocate(mData); } } @@ -146,7 +146,7 @@ namespace tp { // We have no rights to modify if someone references that memory too // So we need to create new copy of StringData if (mData->mReferenceCount > 1) { - mData = new (sStringPool->allocate(0)) StringData(mData->mBuff); + mData = new (sStringPool.allocate(0)) StringData(mData->mBuff); incReference(mData); return; } @@ -154,7 +154,7 @@ namespace tp { // Also if initial raw data was marked as const - create copy of raw data // Note - raw data will be lost at this point if no other record of such is stored if (mData->mIsConst) { - mData = new (sStringPool->allocate(0)) StringData(mData->mBuff); + mData = new (sStringPool.allocate(0)) StringData(mData->mBuff); incReference(mData); } } @@ -176,14 +176,18 @@ namespace tp { StringTemplate& operator=(const StringTemplate& in) { if (&in == this) return *this; - ~StringTemplate(); + this->~StringTemplate(); new (this) StringTemplate(in); return *this; } + + public: // Debugging + [[nodiscard]] ualni getReferenceCount() const { return mData->mReferenceCount; } + [[nodiscard]] bool getIsConstFlag() const { return mData->mIsConst; } }; template - PoolAlloc, StringTemplate::STRINGS_POOL_SIZE>* StringTemplate::sStringPool; + PoolAlloc, StringTemplate::STRINGS_POOL_SIZE> StringTemplate::sStringPool; template StringData StringTemplate::sNullString; diff --git a/Strings/tests/Tests.cpp b/Strings/tests/Tests.cpp index fc45eb9..0129583 100644 --- a/Strings/tests/Tests.cpp +++ b/Strings/tests/Tests.cpp @@ -1,7 +1,9 @@ -#include "Testing.hpp" +#include "Tests.hpp" + #include "Strings.hpp" +void testStringLogic(); void testStrings(); void testLogging(); @@ -14,6 +16,7 @@ int main() { return 1; } + testStringLogic(); testStrings(); testLogging(); diff --git a/Strings/tests/Tests.hpp b/Strings/tests/Tests.hpp new file mode 100644 index 0000000..9f2e45d --- /dev/null +++ b/Strings/tests/Tests.hpp @@ -0,0 +1,4 @@ +#pragma once + +#include "Testing.hpp" +#include "Allocators.hpp" \ No newline at end of file diff --git a/Strings/tests/TestsLogging.cpp b/Strings/tests/TestsLogging.cpp index 65bd9b7..58c281b 100644 --- a/Strings/tests/TestsLogging.cpp +++ b/Strings/tests/TestsLogging.cpp @@ -1,11 +1,9 @@ -#include "Testing.hpp" +#include "Tests.hpp" #include "Logging.hpp" -TEST_DEF_STATIC(Simple) { - // TEST(false); -} +using namespace tp; TEST_DEF(Logging) { - testSimple(); + } \ No newline at end of file diff --git a/Strings/tests/TestsStrings.cpp b/Strings/tests/TestsStrings.cpp index a7365f6..1e8db8d 100644 --- a/Strings/tests/TestsStrings.cpp +++ b/Strings/tests/TestsStrings.cpp @@ -1,16 +1,37 @@ -#include "Testing.hpp" +#include "Tests.hpp" #include "Strings.hpp" -TEST_DEF_STATIC(StringLogic) { - // TEST(false); -} +using namespace tp; + +struct TestStruct { + String str = "test data"; +}; TEST_DEF_STATIC(Simple) { - // TEST(false); + String str; + TEST(str.getIsConstFlag()); + TEST(str.getReferenceCount() == 2); + + String str2; + TEST(str.getIsConstFlag()); + TEST(str.getReferenceCount() == 3); + + auto tmp = new TestStruct(); + TEST(tmp->str.getIsConstFlag()); + TEST(tmp->str.getReferenceCount() == 1); + + str = tmp->str; + + TEST(str.getIsConstFlag()); + TEST(str.getReferenceCount() == 2); + + delete tmp; + + TEST(str.getIsConstFlag()); + TEST(str.getReferenceCount() == 1); } TEST_DEF(Strings) { - testStringLogic(); testSimple(); } \ No newline at end of file diff --git a/Strings/tests/TestsStringsLogic.cpp b/Strings/tests/TestsStringsLogic.cpp new file mode 100644 index 0000000..231a790 --- /dev/null +++ b/Strings/tests/TestsStringsLogic.cpp @@ -0,0 +1,247 @@ + +#include "Tests.hpp" +#include "StringLogic.hpp" + +using namespace tp; + +typedef StringLogic Logic; + + +TEST_DEF(isNewLineChar) { + // Test isNewLineChar function + TEST(Logic::isNewLineChar('\n')); + TEST(Logic::isNewLineChar('\r')); + TEST(!Logic::isNewLineChar('a')); +} + +TEST_DEF(isEndChar) { + // Test isEndChar function + TEST(Logic::isEndChar('\0')); + TEST(!Logic::isEndChar('a')); +} + +TEST_DEF(calcLength) { + // Test calcLength function + const char* str1 = "Hello"; + const char* str2 = "Wor\nld2"; + TEST(Logic::calcLength(str1) == 5); + TEST(Logic::calcLength(str2) == 7); +} + +// ------------------------------- Inserting / Removing ----------------------------------------- // + +TEST_DEF(insertLogic_emptyTarget) { + // Test insertLogic function with an empty target string + const char* cur = "Hello"; + const char* tar = ""; + const char* result = "Hello"; + char* inserted = Logic::insertLogic(cur, tar, 5, 0); + TEST(Logic::isEqualLogic(inserted, result)); + delete[] inserted; +} + +TEST_DEF(insertLogic_emptyCurrent) { + // Test insertLogic function with an empty current string + const char* cur = ""; + const char* tar = "World"; + const char* result = "World"; + char* inserted = Logic::insertLogic(cur, tar, 0, 5); + TEST(Logic::isEqualLogic(inserted, result)); + delete[] inserted; +} + +TEST_DEF(insertLogic_curLengthLessThanPos) { + // Test insertLogic function with current length less than the insert position + const char* cur = "Hello"; + const char* tar = "World"; + const char* result = "HelloWorld"; + char* inserted = Logic::insertLogic(cur, tar, 10, 5); + TEST(Logic::isEqualLogic(inserted, result)); + delete[] inserted; +} + +TEST_DEF(removeLogic_emptyCurrent) { + // Test removeLogic function with an empty current string + const char* cur = ""; + const char* result = ""; + char* removed = Logic::removeLogic(cur, 0, 0); + TEST(Logic::isEqualLogic(removed, result)); + delete[] removed; +} + +TEST_DEF(removeLogic_removeUntilEnd) { + // Test removeLogic function by removing until the end of the current string + const char* cur = "HelloWorld"; + const char* result = "World"; + char* removed = Logic::removeLogic(cur, 0, 5); + TEST(Logic::isEqualLogic(removed, result)); + delete[] removed; +} + +TEST_DEF(removeLogic_removeMiddleCharacters) { + // Test removeLogic function by removing characters in the middle of the current string + const char* cur = "HelloWorld"; + const char* result = "Helrld"; + char* removed = Logic::removeLogic(cur, 3, 7); + TEST(Logic::isEqualLogic(removed, result)); + delete[] removed; +} + +TEST_DEF(insertLogicGood) { + // Test insertLogic function + const char* cur = "Hello"; + const char* tar = "World"; + const char* result = "HelloWorld"; + char* inserted = Logic::insertLogic(cur, tar, 5, 5); + TEST(Logic::isEqualLogic(inserted, result)); + delete[] inserted; +} + +TEST_DEF(removeLogicGood) { + // Test removeLogic function + const char* cur = "HelloWorld"; + const char* result = "Helo"; + char* removed = Logic::removeLogic(cur, 3, 8); + TEST(Logic::isEqualLogic(removed, result)); + delete[] removed; +} + + +TEST_DEF(insertLogic) { + // Test insertLogic function + testinsertLogicGood(); + testinsertLogic_emptyTarget(); + testinsertLogic_emptyCurrent(); + // testinsertLogic_curLengthLessThanPos(); +} + +TEST_DEF(removeLogic) { + // Test removeLogic function + // testremoveLogicGood(); + testremoveLogic_emptyCurrent(); + testremoveLogic_removeUntilEnd(); + testremoveLogic_removeMiddleCharacters(); +} + +// -------------------------------- Conversions --------------------------------------- // + +TEST_DEF(convertStringToValue_alni) { + const char* str1 = "123"; + const char* str2 = "456xyz"; + const char* str3 = "789"; + alni output; + TEST(Logic::convertStringToValue(str1, output) && output == 123); + TEST(!Logic::convertStringToValue(str2, output)); + TEST(Logic::convertStringToValue(str3, output) && output == 789); +} + +TEST_DEF(convertStringToValue_alnf) { + const char* str1 = "12.34"; + const char* str2 = "56.78xyz"; + const char* str3 = "90.12"; + alnf output; + TEST(Logic::convertStringToValue(str1, output) && output == 12.34); + TEST(!Logic::convertStringToValue(str2, output)); + TEST(Logic::convertStringToValue(str3, output) && output == 90.12); +} + +TEST_DEF(convertStringToValue_bool) { + const char* str1 = "true"; + const char* str2 = "false"; + const char* str3 = "1"; + const char* str4 = "0"; + bool output; + TEST(Logic::convertStringToValue(str1, output) && output == true); + TEST(Logic::convertStringToValue(str2, output) && output == false); + TEST(Logic::convertStringToValue(str3, output) && output == true); + TEST(Logic::convertStringToValue(str4, output) && output == false); +} + +TEST_DEF(convertValueToString_alni) { + alni input1 = 123; + alni input2 = -456; + char output[10]; + TEST(Logic::convertValueToString(input1, output, 10)); + TEST(Logic::isEqualLogic(output, "123")); + + TEST(Logic::convertValueToString(input2, output, 10)); + TEST(Logic::isEqualLogic(output, "-456")); +} + +TEST_DEF(convertValueToString_alnf) { + alnf input1 = 12.34; + alnf input2 = -56.78; + char output[10]; + + TEST(Logic::convertValueToString(input1, output, 10)); + TEST(Logic::isEqualLogic(output, "12.340000")); + + TEST(Logic::convertValueToString(input2, output, 10)); + TEST(Logic::isEqualLogic(output, "-56.78000")); +} + +TEST_DEF(convertValueToString_bool) { + bool input1 = true; + bool input2 = false; + char output[10]; + + TEST(Logic::convertValueToString(input1, output, 10)); + TEST(Logic::isEqualLogic(output, "true")); + + TEST(Logic::convertValueToString(input2, output, 10)); + TEST(Logic::isEqualLogic(output, "false")); +} + +TEST_DEF(Conversions) { + testconvertValueToString_bool(); + testconvertValueToString_alnf(); + testconvertValueToString_alni(); + testconvertStringToValue_bool(); + testconvertStringToValue_alnf(); + testconvertStringToValue_alni(); +} + +// ------------------------------------------------------------------------ // + +TEST_DEF(isEqualLogic) { + // Test isEqualLogic function + const char* str1 = "Hello"; + const char* str2 = "Hello"; + const char* str3 = "World"; + const char* str4 = "Hello2"; + TEST(Logic::isEqualLogic(str1, str2)); + TEST(!Logic::isEqualLogic(str1, str4)); + TEST(!Logic::isEqualLogic(str1, str3)); +} + +TEST_DEF(calcLineOffsets) { + // Test calcLineOffsets function + const char* str = "\n\nHello\nWorld\n\n "; + Buffer offsets; + Logic::calcLineOffsets(str, Logic::calcLength(str), offsets); + + TEST(offsets.size() == 7); + + TEST(offsets[0] == 0); + TEST(offsets[1] == 1); + TEST(offsets[2] == 2); + TEST(offsets[3] == 8); + TEST(offsets[4] == 14); + TEST(offsets[5] == 15); + TEST(offsets[6] == 16); +} + + +TEST_DEF(StringLogic) { + testisNewLineChar(); + testisEndChar(); + testcalcLength(); + + testisEqualLogic(); + testcalcLineOffsets(); + + testinsertLogic(); + testremoveLogic(); + + testConversions(); +} \ No newline at end of file From 90998e22797fb526f2cd2b5e008c05c7d6b4f66d Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 15 Jul 2023 13:12:51 +0300 Subject: [PATCH 17/68] CommandLine parser initial --- CMakeLists.txt | 3 +- CommandLine/CMakeLists.txt | 22 ++ CommandLine/private/CommandLine.cpp | 345 ++++++++++++++++++++++++++ CommandLine/public/CommandLine.hpp | 105 ++++++++ CommandLine/tests/TestCommandLine.cpp | 23 ++ CommandLine/tests/Tests.cpp | 18 ++ CommandLine/tests/Tests.hpp | 7 + Strings/public/StringLogic.hpp | 22 +- Strings/public/Strings.hpp | 63 ++++- Tokenizer/public/AutomataGraph.h | 2 + Tokenizer/public/RegularExpression.h | 4 + 11 files changed, 592 insertions(+), 22 deletions(-) create mode 100644 CommandLine/CMakeLists.txt create mode 100644 CommandLine/private/CommandLine.cpp create mode 100644 CommandLine/public/CommandLine.hpp create mode 100644 CommandLine/tests/TestCommandLine.cpp create mode 100644 CommandLine/tests/Tests.cpp create mode 100644 CommandLine/tests/Tests.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 4845590..5fd8d46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,4 +16,5 @@ add_subdirectory(Containers) add_subdirectory(Math) add_subdirectory(Allocators) add_subdirectory(Strings) -add_subdirectory(Tokenizer) \ No newline at end of file +add_subdirectory(Tokenizer) +add_subdirectory(CommandLine) \ No newline at end of file diff --git a/CommandLine/CMakeLists.txt b/CommandLine/CMakeLists.txt new file mode 100644 index 0000000..7e8c179 --- /dev/null +++ b/CommandLine/CMakeLists.txt @@ -0,0 +1,22 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(CommandLine) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp new file mode 100644 index 0000000..39cea49 --- /dev/null +++ b/CommandLine/private/CommandLine.cpp @@ -0,0 +1,345 @@ + +#include "CommandLine.hpp" + +using namespace tp; + +const char* regexSpace = "\n|\t| |\r"; +const char* regexFalse = "N|n|(False)|(false)"; +const char* regexTrue = "Y|y|(True)|(true)"; +const char* regexInt = "((\\-)|(\\+))?[0-9]+"; +const char* regexFloat = R"(((\-)|(\+))?([0-9]+)(\.)([0-9]*)?)"; +const char* regexString = "'{'-'}*'"; + +CommandLine::Arg::Arg(const Arg& arg) { + mId = arg.mId; + switch (arg.mType) { + case CommandLine::Arg::INT: mType = INT; mInt = arg.mInt; break; + case CommandLine::Arg::FLOAT: mType = FLOAT; mFloat = arg.mFloat; break; + case CommandLine::Arg::BOOL: mType = BOOL; mBool = arg.mBool; break; + case CommandLine::Arg::STR: mType = STR; new (&mStr) StringArg(); mStr = arg.mStr; break; + case CommandLine::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); mFile = arg.mFile; break; + } + mOptional = arg.mOptional; +} + +CommandLine::Arg::Arg(const String& id, Type type) { + mId = id; + switch (type) { + case CommandLine::Arg::INT: mType = INT; new (&mInt) IntArg(); break; + case CommandLine::Arg::FLOAT: mType = FLOAT; new (&mFloat) FloatArg(); break; + case CommandLine::Arg::BOOL: mType = BOOL; new (&mBool) BoolArg(); break; + case CommandLine::Arg::STR: mType = STR; new (&mStr) StringArg(); break; + case CommandLine::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); break; + } + mOptional = false; +} + +CommandLine::Arg::Arg(const String& id, const Range& aAcceptingRange) { + mId = id; + mType = FLOAT; + mInt = { 0, 0, aAcceptingRange }; + mOptional = false; +} + +CommandLine::Arg::Arg(const String& id, const Range& aAcceptingRange) { + mId = id; + mType = FLOAT; + mFloat = { 0, 0, aAcceptingRange }; + mOptional = false; +} + +CommandLine::Arg::Arg(const String& id, const Range& aAcceptingRange, alni aDefault) { + mId = id; + mType = INT; + mInt = { 0, aDefault, aAcceptingRange }; +} + +CommandLine::Arg::Arg(const String& id, const Range& aAcceptingRange, alnf aDefault) { + mId = id; + mType = FLOAT; + mFloat = { 0, aDefault, aAcceptingRange }; +} + +CommandLine::Arg::Arg(const String& id, bool aDefault) { + mId = id; + mType = BOOL; + mBool.mDefault = aDefault; +} + +CommandLine::Arg::Arg(const String& id, const char* aDefault) { + mId = id; + mType = STR; + new (&mStr) StringArg(); + mStr.mDefault = aDefault; +} + +CommandLine::Arg::~Arg() { + switch (mType) { + case CommandLine::Arg::STR: + mStr.~StringArg(); + break; + case CommandLine::Arg::FILE_IN: + mFile.~FileInputArg(); + break; + default: + break; + } +} + +CommandLine::CommandLine(const init_list& args) { + bool optional_start = false; + + for (auto& arg : args) { + ASSERT(!mArgs.presents(arg.mId) && "Argument Redefinition") + + auto copy_arg = new Arg(arg); + + mArgs.put(arg.mId, copy_arg); + mArgsOrder.pushBack(mArgs.get(arg.mId)); + + if (arg.mOptional) { + mOptionals++; + } + + if (optional_start) { + ASSERT(arg.mOptional && "Not Optional Argument After Optionals") + } + else if (arg.mOptional) { + optional_start = true; + } + } + + mTokenizer.build({ + { regexSpace, TokType::SPACE }, + { regexFalse, TokType::BOOL_FALSE }, + { regexTrue, TokType::BOOL_TRUE }, + { regexInt, TokType::INT }, + { regexFloat, TokType::FLOAT }, + { regexString, TokType::STR }, + }); + + ASSERT(mTokenizer.isBuild() && "Internal Error") +} + +CommandLine::~CommandLine() { + for (auto arg : mArgsOrder) { + delete arg.data(); + } +} + +bool CommandLine::parse(char argc, const char* argv[], bool logError, ualni skipArgs) { + // discard some arguments + argc -= (char) skipArgs; + argv += skipArgs; + + if (argc < mArgs.size() - mOptionals) { + ErrInvalidArgCount(); + if (logError) { + ErrLog(); + } + return false; + } + + ualni idx = 0; + for (auto arg : mArgsOrder) { + if (idx < argc) { + parseArg(*arg.data(), argv[idx]); + } else { + initDefault(*arg.data()); + } + if (mError) { + if (logError) ErrLog(); + return false; + } + idx++; + } + + return true; + + //set_working_dir(); +} + +alni CommandLine::getInt(const String& id) { auto& arg = getArg(id, Arg::INT); return arg.mInt.mVal; } +alnf CommandLine::getFloat(const String& id) { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } +bool CommandLine::getBool(const String& id) { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } +const String& CommandLine::getString(const String& id) { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } +File& CommandLine::getFile(const String& id) { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFile; } + + +CommandLine::Arg& CommandLine::getArg(const String& id, Arg::Type type) { + auto idx = mArgs.presents(id); + ASSERT(idx && "Invalid Id") + auto& arg = mArgs.getSlotVal(idx); + ASSERT(arg->mType == type && "Invalid Type Requested") + return *arg; +} + +void CommandLine::ErrInvalidArgCount() { mError = { "Invalid Number Of Arguments Passed", nullptr }; } +void CommandLine::ErrInvalidArgSyntax(Arg* arg) { mError = { "Invalid Syntax Of Argument", arg }; } +void CommandLine::ErrInvalidArgType(Arg* arg) { mError = { "Invalid Type Of Argument", arg }; } +void CommandLine::ErrFileNotExists(Arg* arg) { mError = { "File Not Exists", arg }; } +void CommandLine::ErrFileCouldNotOpen(Arg* arg) { mError = { "Could Not Open File", arg }; } +void CommandLine::ErrValNotinRange(Arg* arg) { mError = { "Value Not In Range", arg }; } + +void CommandLine::ErrLog() { + printf("\nERROR : Invalid Command Line\n"); + + if (mError.mArg) { + alni idx = 0; + for (auto arg : mArgsOrder) { + if (mError.mArg == arg.data()) break; + idx++; + } + + printf("\nArgument: %lli\n", idx); + ArgLog(*mError.mArg); + } + + printf("Error Description: %s. \n", mError.mDescr); + + printf("\nExpected Arguments are: \n"); + ualni idx = 0; + for (auto arg : mArgsOrder) { + printf(" -- %lli -- \n", idx); + ArgLog(*arg.data()); + idx++; + } + + printf("\nNote regex for types are:\n"); + printf(" False - %s\n", regexFalse); + printf(" True - %s\n", regexTrue); + printf(" Int - %s\n", regexInt); + printf(" Float - %s\n", regexFloat); + printf(" String - %s\n", regexString); + printf(" File - else\n"); +} + +void CommandLine::ArgLog(Arg& arg) { + switch (arg.mType) { + case Arg::INT: { + printf("Type : Int\n"); + printf("Range : %lli - %lli\n", arg.mInt.mAcceptingRange.mBegin, arg.mInt.mAcceptingRange.mEnd); + if (arg.mOptional) { + printf("Default : %lli\n", arg.mInt.mDefault); + } + printf("Given : %lli\n", arg.mInt.mVal); + } break; + case Arg::FLOAT: { + printf("Type : Float\n"); + printf("Range : %f - %f\n", (halnf) arg.mFloat.mAcceptingRange.mBegin, (halnf) arg.mFloat.mAcceptingRange.mEnd); + if (arg.mOptional) { + printf("Default : %f\n", arg.mFloat.mDefault); + } + printf("Given : %f\n", arg.mFloat.mVal); + } break; + case Arg::BOOL: { + printf("Type : Bool\n"); + if (arg.mOptional) { + printf("Default : %s\n", arg.mBool.mDefault ? "True" : "False"); + } + printf("Given : %s\n", arg.mBool.mFlag ? "True" : "False"); + } break; + case Arg::STR: { + printf("Type : String\n"); + if (arg.mOptional) { + printf("Default : %s\n", arg.mStr.mDefault.read()); + } + printf("Given : %s\n", arg.mStr.mStr.read()); + } break; + case Arg::FILE_IN: { + printf("Type : File Input\n"); + printf("Given Path : %s\n", arg.mFile.mFilepath.read()); + } break; + } +} + +void CommandLine::initDefault(Arg& arg) { + switch (arg.mType) { + case Arg::INT: arg.mInt.mVal = arg.mInt.mDefault; break; + case Arg::FLOAT: arg.mFloat.mVal = arg.mFloat.mDefault; break; + case Arg::BOOL: arg.mBool.mFlag = arg.mBool.mDefault; break; + case Arg::STR: arg.mStr.mStr = arg.mStr.mDefault; break; + default: + break; + } +} + +void CommandLine::parseArg(Arg& arg, const char* src) { + mTokenizer.reset(); + mTokenizer.bindSource(src); + + auto tok = mTokenizer.readTok(); + if (tok < TokType::INT || tok > TokType::STR) { + ErrInvalidArgSyntax(&arg); + } + + auto val = mTokenizer.extractVal(); + + switch (arg.mType) { + case Arg::INT: { + if (tok != TokType::INT) { + ErrInvalidArgType(&arg); + return; + } + auto converted = String::Logic::convertStringToValue(val.read(), arg.mInt.mVal); + if (converted && arg.mInt.mVal < arg.mInt.mAcceptingRange.mBegin || arg.mInt.mVal > arg.mInt.mAcceptingRange.mEnd) { + ErrValNotinRange(&arg); + return; + } + } break; + + case Arg::FLOAT: { + if (tok != TokType::FLOAT) { + ErrInvalidArgType(&arg); + return; + } + auto converted = String::Logic::convertStringToValue(val.read(), arg.mFloat.mVal); + if (converted && arg.mFloat.mVal < arg.mFloat.mAcceptingRange.mBegin || arg.mFloat.mVal > arg.mFloat.mAcceptingRange.mEnd) { + ErrValNotinRange(&arg); + return; + } + } break; + + case Arg::STR: { + if (tok != TokType::STR) { + ErrInvalidArgType(&arg); + return; + } + arg.mStr.mStr = val; + } break; + + case Arg::BOOL: { + if (tok != TokType::BOOL_FALSE && tok != TokType::BOOL_TRUE) { + ErrInvalidArgType(&arg); + return; + } + arg.mBool.mFlag = bool(val); + } break; + + case Arg::FILE_IN: { + if (tok != TokType::STR) { + ErrInvalidArgType(&arg); + return; + } + + arg.mFile.mFilepath = val; + + /* + // TODO : replace + if (!File::exists(arg.mFile.mFilepath.cstr())) { + ErrFileNotExists(&arg); + return; + } + + arg.mFile.mFile.open(arg.mFile.mFilepath.cstr(), osfile_openflags::LOAD); + if (!arg.mFile.mFile.opened) { + ErrFileCouldNotOpen(&arg); + return; + } + */ + + } break; + } + + arg.mIsPassed = true; +} diff --git a/CommandLine/public/CommandLine.hpp b/CommandLine/public/CommandLine.hpp new file mode 100644 index 0000000..9e406e1 --- /dev/null +++ b/CommandLine/public/CommandLine.hpp @@ -0,0 +1,105 @@ +#pragma once + +#include "Tokenizer.hpp" +#include "Map.hpp" + +namespace tp { + + // TODO : replace + class File { + + }; + + struct CommandLine { + + struct IntArg { + alni mVal = 0; + alni mDefault = 0; + Range mAcceptingRange = { -(std::numeric_limits::max() - 1), std::numeric_limits::max() }; + }; + + struct FloatArg { + alnf mVal = 0.f; + alnf mDefault = 0.f; + Range mAcceptingRange = { -(std::numeric_limits::max() - 1), std::numeric_limits::max() }; + }; + + struct BoolArg { + bool mFlag = false; + bool mDefault = false; + }; + + struct StringArg { + String mStr; + String mDefault; + }; + + struct FileInputArg { + String mFilepath; + File mFile; + }; + + struct Arg { + String mId; + enum Type { INT, FLOAT, BOOL, STR, FILE_IN } mType; + union { + IntArg mInt; + FloatArg mFloat; + BoolArg mBool; + StringArg mStr; + FileInputArg mFile; + }; + + bool mOptional = true; + bool mIsPassed = false; + + Arg(const Arg& arg); + Arg(const String& id, Type type); + Arg(const String& id, const Range& aAcceptingRange); + Arg(const String& id, const Range& aAcceptingRange); + Arg(const String& id, const Range& aAcceptingRange, alni aDefault); + Arg(const String& id, const Range& aAcceptingRange, alnf aDefault); + Arg(const String& id, bool aDefault); + Arg(const String& id, const char* aDefault); + ~Arg(); + }; + + struct Error { + const char* mDescr = nullptr; + Arg* mArg = nullptr; + operator bool() { return mDescr != nullptr; } + } mError; + + CommandLine(const init_list& args); + ~CommandLine(); + + bool parse(char argc, const char* argv[], bool logError = true, ualni skipArgs = 1); + + alni getInt(const String& id); + alnf getFloat(const String& id); + bool getBool(const String& id); + const String& getString(const String& id); + File& getFile(const String& id); + + private: + enum class TokType { SPACE, INT, FLOAT, BOOL_FALSE, BOOL_TRUE, STR, NONE, FAILURE, END, } mType; + typedef SimpleTokenizer Tokenizer; + + Tokenizer mTokenizer; + Map mArgs; + List mArgsOrder; + ualni mOptionals = 0; + + Arg& getArg(const String& id, Arg::Type type); + void ErrInvalidArgCount(); + void ErrInvalidArgSyntax(Arg* arg); + void ErrInvalidArgType(Arg* arg); + void ErrFileNotExists(Arg* arg); + void ErrFileCouldNotOpen(Arg* arg); + void ErrValNotinRange(Arg* arg); + void ErrLog(); + static void ArgLog(Arg& arg); + static void initDefault(Arg& arg); + void parseArg(Arg& arg, const char* src); + }; +}; \ No newline at end of file diff --git a/CommandLine/tests/TestCommandLine.cpp b/CommandLine/tests/TestCommandLine.cpp new file mode 100644 index 0000000..a6ccd55 --- /dev/null +++ b/CommandLine/tests/TestCommandLine.cpp @@ -0,0 +1,23 @@ +#include "Tests.hpp" + +using namespace tp; + +static CommandLine createCmdLine() { + CommandLine cmd({ + { "bool", CommandLine::Arg::BOOL }, + { "int", CommandLine::Arg::INT }, + { "string", CommandLine::Arg::STR }, + { "float", CommandLine::Arg::FLOAT }, + }); + return cmd; +} + +TEST_DEF_STATIC(Simple) { + auto cmd = createCmdLine(); + const char* args[] = { "false", "2", "'str'", "-0.15" }; + cmd.parse(4, args, true, 0); +} + +TEST_DEF(CommandLine) { + testSimple(); +} diff --git a/CommandLine/tests/Tests.cpp b/CommandLine/tests/Tests.cpp new file mode 100644 index 0000000..c1d284f --- /dev/null +++ b/CommandLine/tests/Tests.cpp @@ -0,0 +1,18 @@ + +#include "Tests.hpp" +#include "Testing.hpp" + + +int main() { + + tp::ModuleManifest* deps[] = { &tp::gModuleUtils, &tp::gModuleTokenizer, nullptr }; + tp::ModuleManifest testModule("CommandLineTest", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + testCommandLine(); + + testModule.deinitialize(); +} diff --git a/CommandLine/tests/Tests.hpp b/CommandLine/tests/Tests.hpp new file mode 100644 index 0000000..13f4290 --- /dev/null +++ b/CommandLine/tests/Tests.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include "Testing.hpp" +#include "Allocators.hpp" +#include "CommandLine.hpp" + +void testCommandLine(); diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index 32346e6..f66be01 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -80,16 +80,6 @@ namespace tp { goto LOOP; } - static bool toValue(const tChar* in, bool& val) { - if (!calcLength(in)) return false; - if (isEqual(in, "False") || isEqual(in, "false") || isEqual(in, "0")) { - val = false; - } else { - val = true; - } - return true; - } - // returns 0 : nl1 + 1 : nl2 + 1 : nl3 + 1 : ... : size static void calcLineOffsets(const tChar* aBuff, Index aLength, Buffer& aOut) { Index lines = 0; @@ -111,34 +101,34 @@ namespace tp { } - [[nodiscard]] static bool convertStringToValue(const tChar* input, alni& output) { + static bool convertStringToValue(const tChar* input, alni& output) { char* endPtr; output = std::strtoll(input, &endPtr, 10); return (endPtr == input + calcLength(input)); } - [[nodiscard]] static bool convertStringToValue(const tChar* input, alnf& output) { + static bool convertStringToValue(const tChar* input, alnf& output) { char* endPtr; output = std::strtod(input, &endPtr); return (endPtr == input + calcLength(input)); } - [[nodiscard]] static bool convertStringToValue(const tChar* input, bool& output) { + static bool convertStringToValue(const tChar* input, bool& output) { output = !(isEqualLogic(input, "False") || isEqualLogic(input, "false") || isEqualLogic(input, "0")); return true; } - [[nodiscard]] static bool convertValueToString(alni input, tChar* output, Index bufferSize) { + static bool convertValueToString(alni input, tChar* output, Index bufferSize) { int result = std::snprintf(output, bufferSize, "%lld", input); return result >= 0; } - [[nodiscard]] static bool convertValueToString(alnf input, tChar* output, Index bufferSize) { + static bool convertValueToString(alnf input, tChar* output, Index bufferSize) { int result = std::snprintf(output, bufferSize, "%f", input); return result >= 0; } - [[nodiscard]] static bool convertValueToString(bool input, tChar* output, Index bufferSize) { + static bool convertValueToString(bool input, tChar* output, Index bufferSize) { const char* str = (input ? "true" : "false"); Index length = calcLength(str); if (length >= bufferSize) diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index 254943c..46d124b 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -42,11 +42,12 @@ namespace tp { MODULE_SANITY_CHECK(gModuleStrings) DEBUG_ASSERT(aBuff) auto const len = Logic::calcLength(aBuff); - resize(len); - memCopy(mBuff, aBuff, len); mReferenceCount = 0; mIsConst = false; mEditedIdx = 0; + mBuff = new tChar[len + 1]; + mBuff[len] = Logic::getEndChar(); + memCopy(mBuff, aBuff, len); } [[nodiscard]] tChar* getBuffer() { @@ -72,7 +73,12 @@ namespace tp { typedef StringData Data; typedef typename Logic::Index Index; - enum { STRINGS_POOL_SIZE = 1024, }; + enum { + STRINGS_POOL_SIZE = 1024, + MAX_INT_STRING_LENGTH = 10, + MAX_BOOL_STRING_LENGTH = 10, + MAX_FLOAT_STRING_LENGTH = 10, + }; static PoolAlloc, STRINGS_POOL_SIZE> sStringPool; static Data sNullString; @@ -137,8 +143,9 @@ namespace tp { // output will be null if in TextEditing mode tChar* resize(uint1 size) { - if (!mData->getEditor()) mData->resize(size); - return mData->getBuffer(); + makeModifiable(); + mData->resize(size); + return write(); } public: @@ -160,6 +167,40 @@ namespace tp { } public: // Syntax sugars + + explicit StringTemplate(alni val) { + auto raw = new tChar[MAX_INT_STRING_LENGTH]; + Logic::convertValueToString(val, raw, MAX_INT_STRING_LENGTH); + mData = new (sStringPool.allocate(0)) StringData(raw); + } + + explicit StringTemplate(alnf val) { + auto raw = new tChar[MAX_FLOAT_STRING_LENGTH]; + Logic::convertValueToString(val, raw, MAX_FLOAT_STRING_LENGTH); + mData = new (sStringPool.allocate(0)) StringData(raw); + } + + explicit StringTemplate(bool val) { + auto raw = new tChar[MAX_BOOL_STRING_LENGTH]; + Logic::convertValueToString(val, raw, MAX_BOOL_STRING_LENGTH); + mData = new (sStringPool.allocate(0)) StringData(raw); + } + + explicit operator alni() { + alni out; + return Logic::convertStringToValue(read(), out); + } + + explicit operator alnf() { + alnf out; + return Logic::convertStringToValue(read(), out); + } + + explicit operator bool() { + bool out; + return Logic::convertStringToValue(read(), out); + } + Index size() const { return Logic::calcLength(read()); } @@ -181,11 +222,18 @@ namespace tp { return *this; } + bool operator==(const StringTemplate& in) const { + if (&in == this) return true; + if (in.mData == mData) return true; + return Logic::isEqualLogic(in.read(), read()); + } + public: // Debugging [[nodiscard]] ualni getReferenceCount() const { return mData->mReferenceCount; } [[nodiscard]] bool getIsConstFlag() const { return mData->mIsConst; } }; + template PoolAlloc, StringTemplate::STRINGS_POOL_SIZE> StringTemplate::sStringPool; @@ -193,4 +241,9 @@ namespace tp { StringData StringTemplate::sNullString; using String = StringTemplate; + + template + ualni hash(StringTemplate in) { + return hash(in.read()); + } } \ No newline at end of file diff --git a/Tokenizer/public/AutomataGraph.h b/Tokenizer/public/AutomataGraph.h index cbb7ee5..23c4aec 100644 --- a/Tokenizer/public/AutomataGraph.h +++ b/Tokenizer/public/AutomataGraph.h @@ -9,6 +9,8 @@ namespace tp { + extern ModuleManifest gModuleTokenizer; + template class TransitionMatrix; diff --git a/Tokenizer/public/RegularExpression.h b/Tokenizer/public/RegularExpression.h index 9294698..07f7bbc 100644 --- a/Tokenizer/public/RegularExpression.h +++ b/Tokenizer/public/RegularExpression.h @@ -3,6 +3,10 @@ #include "AutomataGraph.h" +namespace tp { + extern ModuleManifest gModuleTokenizer; +} + namespace tp::RegEx { struct AstNode { From df3767df29368798ed45643c8f3861dfaaf8703a Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 18 Jul 2023 23:36:51 +0300 Subject: [PATCH 18/68] Storage initial --- CMakeLists.txt | 3 +- Storage/CMakeLists.txt | 28 +++++++++ Storage/applications/Client.cpp | 45 ++++++++++++++ Storage/applications/Server.cpp | 97 +++++++++++++++++++++++++++++ Storage/private/LocalStorage.cpp | 76 +++++++++++++++++++++++ Storage/private/Storage.cpp | 9 +++ Storage/private/SystemHandle.cpp | 57 +++++++++++++++++ Storage/private/SystemHandle.hpp | 19 ++++++ Storage/public/LocalStorage.hpp | 98 ++++++++++++++++++++++++++++++ Storage/public/RemoteStorage.hpp | 14 +++++ Storage/public/Storage.hpp | 53 ++++++++++++++++ Storage/tests/TestLocalStorage.cpp | 33 ++++++++++ Storage/tests/Tests.cpp | 19 ++++++ Strings/public/Strings.hpp | 2 +- 14 files changed, 551 insertions(+), 2 deletions(-) create mode 100644 Storage/CMakeLists.txt create mode 100644 Storage/applications/Client.cpp create mode 100644 Storage/applications/Server.cpp create mode 100644 Storage/private/LocalStorage.cpp create mode 100644 Storage/private/Storage.cpp create mode 100644 Storage/private/SystemHandle.cpp create mode 100644 Storage/private/SystemHandle.hpp create mode 100644 Storage/public/LocalStorage.hpp create mode 100644 Storage/public/RemoteStorage.hpp create mode 100644 Storage/public/Storage.hpp create mode 100644 Storage/tests/TestLocalStorage.cpp create mode 100644 Storage/tests/Tests.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 5fd8d46..d731dda 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,4 +17,5 @@ add_subdirectory(Math) add_subdirectory(Allocators) add_subdirectory(Strings) add_subdirectory(Tokenizer) -add_subdirectory(CommandLine) \ No newline at end of file +add_subdirectory(CommandLine) +add_subdirectory(Storage) diff --git a/Storage/CMakeLists.txt b/Storage/CMakeLists.txt new file mode 100644 index 0000000..28e593f --- /dev/null +++ b/Storage/CMakeLists.txt @@ -0,0 +1,28 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Storage) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings) + +### ---------------------- Applications --------------------- ### +add_executable(Server ./applications/Server.cpp) +add_executable(Client ./applications/Client.cpp) +target_link_libraries(Server PUBLIC ${PROJECT_NAME}) +target_link_libraries(Client PUBLIC ${PROJECT_NAME}) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Storage/applications/Client.cpp b/Storage/applications/Client.cpp new file mode 100644 index 0000000..3f7a622 --- /dev/null +++ b/Storage/applications/Client.cpp @@ -0,0 +1,45 @@ +#include +#include +#include +#include +#include +#include + +constexpr int PORT = 8080; +constexpr int BUFFER_SIZE = 1024; +const char* SERVER_IP = "127.0.0.1"; + +int main() { + // Create socket + int clientSocket = socket(AF_INET, SOCK_STREAM, 0); + if (clientSocket == -1) { + std::cerr << "Failed to create socket" << std::endl; + return 1; + } + + // Connect to server + sockaddr_in serverAddress{}; + serverAddress.sin_family = AF_INET; + serverAddress.sin_port = htons(PORT); + if (inet_pton(AF_INET, SERVER_IP, &serverAddress.sin_addr) <= 0) { + std::cerr << "Invalid address or address not supported" << std::endl; + return 1; + } + + if (connect(clientSocket, reinterpret_cast(&serverAddress), sizeof(serverAddress)) == -1) { + std::cerr << "Failed to connect to server" << std::endl; + return 1; + } + + // Send message to server + const char* message = "Hello, server!"; + if (write(clientSocket, message, strlen(message)) == -1) { + std::cerr << "Failed to write to socket" << std::endl; + return 1; + } + + // Close socket + close(clientSocket); + + return 0; +} diff --git a/Storage/applications/Server.cpp b/Storage/applications/Server.cpp new file mode 100644 index 0000000..7f508be --- /dev/null +++ b/Storage/applications/Server.cpp @@ -0,0 +1,97 @@ +#include +#include +#include +#include +#include + + +class Server { +public: + Server(int port) : serverSocket(-1), port(port) {} + + bool start() { + // Create socket + serverSocket = socket(AF_INET, SOCK_STREAM, 0); + if (serverSocket == -1) { + std::cerr << "Failed to create socket" << std::endl; + return false; + } + + // Bind socket to port + sockaddr_in serverAddress{}; + serverAddress.sin_family = AF_INET; + serverAddress.sin_port = htons(port); + serverAddress.sin_addr.s_addr = INADDR_ANY; + if (bind(serverSocket, reinterpret_cast(&serverAddress), sizeof(serverAddress)) == -1) { + std::cerr << "Failed to bind socket" << std::endl; + return false; + } + + // Listen for connections + if (listen(serverSocket, 5) == -1) { + std::cerr << "Failed to listen on socket" << std::endl; + return false; + } + + std::cout << "Server listening on port " << port << std::endl; + + // Start accepting clients + while (true) { + // Accept client connection + sockaddr_in clientAddress{}; + socklen_t clientAddressSize = sizeof(clientAddress); + int clientSocket = accept(serverSocket, reinterpret_cast(&clientAddress), &clientAddressSize); + if (clientSocket == -1) { + std::cerr << "Failed to accept client connection" << std::endl; + return false; + } + + // Create a new thread to handle the client + pthread_t threadId; + if (pthread_create(&threadId, nullptr, handleClient, &clientSocket) != 0) { + std::cerr << "Failed to create thread for client" << std::endl; + return false; + } + + // Detach the thread so it can run independently + pthread_detach(threadId); + } + + // Close server socket + close(serverSocket); + + return true; + } + +private: + int serverSocket; + int port; + + static void* handleClient(void* clientSocketPtr) { + int clientSocket = *(reinterpret_cast(clientSocketPtr)); + constexpr int BUFFER_SIZE = 1024; + + // Receive and print client message + char buffer[BUFFER_SIZE]; + ssize_t bytesRead = read(clientSocket, buffer, BUFFER_SIZE - 1); + if (bytesRead == -1) { + std::cerr << "Failed to read from socket" << std::endl; + return nullptr; + } + + buffer[bytesRead] = '\0'; + std::cout << "Received message from client: " << buffer << std::endl; + + // Close socket + close(clientSocket); + + return nullptr; + } +}; + +int main() { + Server server(8080); + server.start(); + + return 0; +} diff --git a/Storage/private/LocalStorage.cpp b/Storage/private/LocalStorage.cpp new file mode 100644 index 0000000..9e33fe5 --- /dev/null +++ b/Storage/private/LocalStorage.cpp @@ -0,0 +1,76 @@ +#include "LocalStorage.hpp" + +#include "SystemHandle.hpp" + +using namespace tp; + +bool File::connect(const FileLocation& location, const FileConnectionType& connectionInfo) { + DEBUG_ASSERT(!mStatus.isOpened()); + if (mStatus.isOpened()) return false; + + auto handle = new FileSystemHandle(); + + switch (connectionInfo.getType()) { + case FileConnectionType::READ: + handle->open(location.getLocation().read(), true); + break; + + case FileConnectionType::WRITE: + handle->open(location.getLocation().read(), false); + break; + + default: + break; + }; + + if (!handle->isOpen()) { + mStatus.setStatus(FileConnectionStatus::DENIED); + delete handle; + return false; + } + + mStatus.setStatus(FileConnectionStatus::OPENED); + mHandle = handle; + return true; +} + +bool File::disconnect() { + DEBUG_ASSERT(mStatus.isOpened()); + if (!mStatus.isOpened() || !mHandle) return false; + mHandle->close(); + delete mHandle; + mStatus.setStatus(FileConnectionStatus::CLOSED); + return true; +} + +bool File::setPointer(BytePointer pointer) { + DEBUG_ASSERT(mStatus.isOpened()); + if (!mStatus.isOpened()) return false; + return true; +} + +bool File::readBytes(Byte* bytes, SizeBytes size) { + DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isWrite()); + if (!mStatus.isOpened() || !mConnectionType.isWrite()) return false; + + mHandle->seekp(mPointer); + mHandle->read(bytes, size); + mPointer += size; + return true; +} + +bool File::writeBytes(const Byte* bytes, SizeBytes size) { + DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isRead()); + if (!mStatus.isOpened() || !mConnectionType.isRead()) return false; + + mHandle->seekp(mPointer); + mHandle->write(bytes, size); + mPointer += size; + return true; +} + +File::SizeBytes File::size() { + DEBUG_ASSERT(mStatus.isOpened()); + if (!mStatus.isOpened() || !mHandle) return 0; + return mHandle->size(); +} \ No newline at end of file diff --git a/Storage/private/Storage.cpp b/Storage/private/Storage.cpp new file mode 100644 index 0000000..197a710 --- /dev/null +++ b/Storage/private/Storage.cpp @@ -0,0 +1,9 @@ + +#include "Storage.hpp" + +static tp::ModuleManifest* sModuleDependencies[] = { + &tp::gModuleStrings, + nullptr +}; + +tp::ModuleManifest tp::gModuleStorage = ModuleManifest("Storage", nullptr, nullptr, sModuleDependencies); \ No newline at end of file diff --git a/Storage/private/SystemHandle.cpp b/Storage/private/SystemHandle.cpp new file mode 100644 index 0000000..1386b2a --- /dev/null +++ b/Storage/private/SystemHandle.cpp @@ -0,0 +1,57 @@ +#include "SystemHandle.hpp" + +#include + +using namespace tp; + +ualni tp::FileSystemHandle::size() { + auto strm = (std::fstream*) stream; + ualni out = 0; + strm->seekg(0, std::ios::beg); + out = strm->tellg(); + strm->seekg(0, std::ios::end); + out = (ualni) strm->tellg() - out; + return out; +} + +FileSystemHandle::FileSystemHandle() { + stream = new std::fstream(); +} + +FileSystemHandle::~FileSystemHandle() { + auto strm = (std::fstream*) stream; + delete strm; +} + +bool FileSystemHandle::isOpen() { + auto strm = (std::fstream*) stream; + return strm->is_open(); +} + +void FileSystemHandle::close() { + auto strm = (std::fstream*) stream; + strm->close(); +} + +void FileSystemHandle::seekp(ualni in) { + auto strm = (std::fstream*) stream; + strm->seekp(in); +} + +void FileSystemHandle::read(int1* in, ualni size) { + auto strm = (std::fstream*) stream; + strm->write(in, size); +} + +void FileSystemHandle::write(const int1* in, ualni size) { + auto strm = (std::fstream*) stream; + strm->write(in, size); +} + +void FileSystemHandle::open(const char* path, bool read) { + auto strm = (std::fstream*) stream; + if (read) + strm->open(path, std::ios::in | std::ios::binary | std::ios::app); + else + strm->open(path, std::ios::out | std::ios::binary | std::ios::trunc); +} diff --git a/Storage/private/SystemHandle.hpp b/Storage/private/SystemHandle.hpp new file mode 100644 index 0000000..17d85c7 --- /dev/null +++ b/Storage/private/SystemHandle.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "Common.hpp" + +namespace tp { + class FileSystemHandle { + void* stream; + public: + FileSystemHandle(); + ~FileSystemHandle(); + void open(const char*, bool); + bool isOpen(); + void close(); + void seekp(ualni); + void read(int1*, ualni); + void write(const int1*, ualni); + ualni size(); + }; +} \ No newline at end of file diff --git a/Storage/public/LocalStorage.hpp b/Storage/public/LocalStorage.hpp new file mode 100644 index 0000000..e832db0 --- /dev/null +++ b/Storage/public/LocalStorage.hpp @@ -0,0 +1,98 @@ +#pragma once + +#include "Storage.hpp" + +namespace tp { + + class FileSystemHandle; + + class FileLocation { + String mLocation; + public: + FileLocation() : mLocation("tmp") {}; + explicit FileLocation(const String& location) : mLocation(location) {} + void setLocation(const String& location) { mLocation = location; } + [[nodiscard]] const String& getLocation() const { return mLocation; } + }; + + class FileConnectionType { + public: + enum HandleType { + READ, + WRITE, + NONE, + }; + + private: + HandleType mHandleType; + + public: + FileConnectionType() : mHandleType(NONE) {} + explicit FileConnectionType(bool read) : mHandleType((HandleType) read) {} + explicit FileConnectionType(HandleType handleType) : mHandleType(handleType) {} + [[nodiscard]] HandleType getType() const { return mHandleType; } + [[nodiscard]] bool isRead() const { return mHandleType == READ; } + [[nodiscard]] bool isWrite() const { return mHandleType == WRITE; } + }; + + class FileConnectionStatus { + public: + enum Status { + NONE, + OPENED, + CLOSED, + DENIED, + INVALID, + }; + + private: + Status mStatus = NONE; + + public: + FileConnectionStatus() = default; + [[nodiscard]] Status getStatus() const { return mStatus; } + void setStatus(Status status) { mStatus = status; } + [[nodiscard]] bool isOpened() const { return mStatus == OPENED; } + }; + + class File { + typedef ualni SizeBytes; + typedef ualni BytePointer; + typedef int1 Byte; + + private: + FileSystemHandle* mHandle = nullptr; + + FileLocation mLocation; + FileConnectionType mConnectionType; + FileConnectionStatus mStatus; + + BytePointer mPointer = 0; + + public: + File() { + MODULE_SANITY_CHECK(gModuleStorage) + }; + + virtual ~File() { + File::disconnect(); + } + + public: + virtual bool connect(const FileLocation& location, const FileConnectionType& connectionInfo); + virtual bool disconnect(); + + public: + virtual const FileConnectionStatus& getConnectionStatus() { return mStatus; } + virtual const FileConnectionType& getConnectionType() { return mConnectionType; } + virtual const FileLocation& getLocation() { return mLocation; } + + public: + virtual bool setPointer(BytePointer pointer); + virtual bool readBytes(Byte* bytes, SizeBytes size); + virtual bool writeBytes(const Byte* bytes, SizeBytes size); + + public: + virtual SizeBytes size(); + }; +} \ No newline at end of file diff --git a/Storage/public/RemoteStorage.hpp b/Storage/public/RemoteStorage.hpp new file mode 100644 index 0000000..7f525be --- /dev/null +++ b/Storage/public/RemoteStorage.hpp @@ -0,0 +1,14 @@ +#pragma once + +#include "Storage.hpp" + +namespace tp { + class Client : public Storage { + // same as local storage file but transfers all commands to server + }; + + class Server { + // opens local storage and transfers all client command to it + // manages multiple clients + }; +} \ No newline at end of file diff --git a/Storage/public/Storage.hpp b/Storage/public/Storage.hpp new file mode 100644 index 0000000..b2f2b87 --- /dev/null +++ b/Storage/public/Storage.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "Strings.hpp" + +namespace tp { + + extern ModuleManifest gModuleStorage; + + class StorageLocation { + public: + StorageLocation() = default; + virtual ~StorageLocation() = default; + }; + + class ConnectionType { + public: + ConnectionType() = default; + virtual ~ConnectionType() = default; + }; + + class ConnectionStatus { + public: + ConnectionStatus() = default; + virtual ~ConnectionStatus() = default; + }; + + class Storage { + typedef ualni SizeBytes; + typedef ualni BytePointer; + typedef int1 Byte; + + private: + StorageLocation mLocation; + ConnectionType mConnectionType; + ConnectionStatus mStatus; + + public: + Storage() = default; + virtual ~Storage() = default; + + public: + virtual bool connect(const StorageLocation& location, const ConnectionType& connectionInfo) = 0; + virtual bool disconnect() = 0; + virtual const ConnectionStatus& getConnectionStatus() = 0; + + public: + virtual bool readBytes(BytePointer pointer, Byte* bytes, SizeBytes size) = 0; + virtual bool writeBytes(BytePointer pointer, const Byte* bytes, SizeBytes size) = 0; + + public: + virtual SizeBytes size() = 0; + }; +}; \ No newline at end of file diff --git a/Storage/tests/TestLocalStorage.cpp b/Storage/tests/TestLocalStorage.cpp new file mode 100644 index 0000000..996782a --- /dev/null +++ b/Storage/tests/TestLocalStorage.cpp @@ -0,0 +1,33 @@ + +#include "Testing.hpp" +#include "LocalStorage.hpp" + +using namespace tp; + +TEST_DEF_STATIC(Simple) { + + int1 data[] = { 0, 1, 2, 3, 4 }; + int1 dataRead[]{}; + + { + File file; + file.connect(FileLocation(String("tmp2")), FileConnectionType(false)); + file.writeBytes(data, 5); + file.disconnect(); + } + + { + File file; + file.connect(FileLocation(String("tmp2")), FileConnectionType(true)); + file.readBytes(dataRead, 5); + file.disconnect(); + } + + for (auto i = 0; i < 5; i++) { + TEST(data[i] == dataRead[i]); + } +} + +TEST_DEF(LocalStorage) { + testSimple(); +} \ No newline at end of file diff --git a/Storage/tests/Tests.cpp b/Storage/tests/Tests.cpp new file mode 100644 index 0000000..3dec993 --- /dev/null +++ b/Storage/tests/Tests.cpp @@ -0,0 +1,19 @@ + +#include "Testing.hpp" +#include "Utils.hpp" + +void testLocalStorage(); + +int main() { + + tp::ModuleManifest* deps[] = { &tp::gModuleUtils, nullptr }; + tp::ModuleManifest testModule("StorageTest", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + testLocalStorage(); + + testModule.deinitialize(); +} \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index 46d124b..c3b6472 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -1,6 +1,6 @@ #pragma once -#include "PoolAllocator.hpp" +#include "Allocators.hpp" #include "StringLogic.hpp" namespace tp { From 8e00882bb3df7684c31af57a33c2e6bb8fdb1bf7 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 16 Jul 2023 20:03:14 +0300 Subject: [PATCH 19/68] Networking Initial --- .gitmodules | 3 + Externals/asio | 1 + Storage/CMakeLists.txt | 12 +-- Storage/applications/CMakeLists.txt | 11 +++ Storage/applications/Client.cpp | 96 +++++++++++++------ Storage/applications/Server.cpp | 141 ++++++++++++++++++---------- 6 files changed, 178 insertions(+), 86 deletions(-) create mode 100644 .gitmodules create mode 160000 Externals/asio create mode 100644 Storage/applications/CMakeLists.txt diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..3f056fd --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Externals/asio"] + path = Externals/asio + url = https://github.com/IlyaShurupov/asio.git diff --git a/Externals/asio b/Externals/asio new file mode 160000 index 0000000..d6b95c0 --- /dev/null +++ b/Externals/asio @@ -0,0 +1 @@ +Subproject commit d6b95c0188e0359a8cdbdb6571f0cbacf11a538c diff --git a/Storage/CMakeLists.txt b/Storage/CMakeLists.txt index 28e593f..d18d496 100644 --- a/Storage/CMakeLists.txt +++ b/Storage/CMakeLists.txt @@ -12,12 +12,6 @@ add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) target_link_libraries(${PROJECT_NAME} PUBLIC Strings) -### ---------------------- Applications --------------------- ### -add_executable(Server ./applications/Server.cpp) -add_executable(Client ./applications/Client.cpp) -target_link_libraries(Server PUBLIC ${PROJECT_NAME}) -target_link_libraries(Client PUBLIC ${PROJECT_NAME}) - ### -------------------------- Tests -------------------------- ### enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") @@ -25,4 +19,8 @@ add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) + + +# todo :remove +add_subdirectory(applications) \ No newline at end of file diff --git a/Storage/applications/CMakeLists.txt b/Storage/applications/CMakeLists.txt new file mode 100644 index 0000000..8e1e2df --- /dev/null +++ b/Storage/applications/CMakeLists.txt @@ -0,0 +1,11 @@ + +cmake_minimum_required(VERSION 3.2) + +project(Applications) + +### ---------------------- Applications --------------------- ### +add_executable(Server ./Server.cpp) +add_executable(Client ./Client.cpp) + +include_directories(Client ./../../Externals/asio/asio/include) +include_directories(Server ./../../Externals/asio/asio/include) \ No newline at end of file diff --git a/Storage/applications/Client.cpp b/Storage/applications/Client.cpp index 3f7a622..26409c6 100644 --- a/Storage/applications/Client.cpp +++ b/Storage/applications/Client.cpp @@ -1,45 +1,81 @@ -#include -#include -#include -#include -#include -#include +#include "asio.hpp" -constexpr int PORT = 8080; -constexpr int BUFFER_SIZE = 1024; +#include +#include +#include + +// #include +// #include + +constexpr int PORT = 3333; const char* SERVER_IP = "127.0.0.1"; +std::mutex mutex; + +void* readServerBroadcast(void* clientSocketPtr) { + auto socket = ((asio::ip::tcp::socket*)clientSocketPtr); + + while (true) { + + short messageSize; + asio::read(*socket, asio::buffer(&messageSize, 2)); + + mutex.lock(); + + auto message = new char[messageSize + 1]; + message[messageSize] = 0; + + asio::read(*socket, asio::buffer(message, messageSize)); + + std::cerr << "Broadcast : " << message << std::endl; + + delete[] message; + + mutex.unlock(); + } + + return nullptr; +} + int main() { - // Create socket - int clientSocket = socket(AF_INET, SOCK_STREAM, 0); - if (clientSocket == -1) { - std::cerr << "Failed to create socket" << std::endl; + asio::io_context ioContext; + + // Create a TCP socket + asio::ip::tcp::socket socket(ioContext); + + // Connect to a server + asio::ip::tcp::endpoint endpoint(asio::ip::address::from_string(SERVER_IP), PORT); + socket.connect(endpoint); + + // Create a new thread to handle the client + pthread_t threadId; + if (pthread_create(&threadId, nullptr, readServerBroadcast, (void*) &socket) != 0) { + std::cerr << "Failed to create thread for client" << std::endl; return 1; } - // Connect to server - sockaddr_in serverAddress{}; - serverAddress.sin_family = AF_INET; - serverAddress.sin_port = htons(PORT); - if (inet_pton(AF_INET, SERVER_IP, &serverAddress.sin_addr) <= 0) { - std::cerr << "Invalid address or address not supported" << std::endl; - return 1; - } + // Detach the thread so it can run independently + pthread_detach(threadId); - if (connect(clientSocket, reinterpret_cast(&serverAddress), sizeof(serverAddress)) == -1) { - std::cerr << "Failed to connect to server" << std::endl; - return 1; - } + while (true) { + std::string message; + std::cout << " >> "; + std::cin >> message; - // Send message to server - const char* message = "Hello, server!"; - if (write(clientSocket, message, strlen(message)) == -1) { - std::cerr << "Failed to write to socket" << std::endl; - return 1; + mutex.lock(); + + // Send a message to the server + auto messageSize = (short) message.size(); + asio::write(socket, asio::buffer(&messageSize, 2)); + + // Send a message to the server + asio::write(socket, asio::buffer(message + "\n")); + + mutex.unlock(); } // Close socket - close(clientSocket); + // close(clientSocket); return 0; } diff --git a/Storage/applications/Server.cpp b/Storage/applications/Server.cpp index 7f508be..99d9fd3 100644 --- a/Storage/applications/Server.cpp +++ b/Storage/applications/Server.cpp @@ -1,54 +1,56 @@ +#include + +#include #include -#include -#include -#include +#include +#include #include - class Server { + + struct SharedData { + std::list clients; + std::mutex mutex; + }; + + SharedData mSharedData; + + //int serverSocket; + int port; + public: - Server(int port) : serverSocket(-1), port(port) {} + Server(int port) : port(port) {} + ~Server() { assert(0); } bool start() { // Create socket - serverSocket = socket(AF_INET, SOCK_STREAM, 0); - if (serverSocket == -1) { - std::cerr << "Failed to create socket" << std::endl; - return false; - } + asio::io_context io_context; + asio::ip::tcp::acceptor serverSocket(io_context); // Bind socket to port - sockaddr_in serverAddress{}; - serverAddress.sin_family = AF_INET; - serverAddress.sin_port = htons(port); - serverAddress.sin_addr.s_addr = INADDR_ANY; - if (bind(serverSocket, reinterpret_cast(&serverAddress), sizeof(serverAddress)) == -1) { - std::cerr << "Failed to bind socket" << std::endl; - return false; - } + serverSocket.open(asio::ip::tcp::v4()); + // serverSocket.set_option(asio::ip::tcp::acceptor::reuse_address(true)); + serverSocket.bind(asio::ip::tcp::endpoint(asio::ip::tcp::v4(), port)); // Listen for connections - if (listen(serverSocket, 5) == -1) { - std::cerr << "Failed to listen on socket" << std::endl; - return false; - } + serverSocket.listen(); std::cout << "Server listening on port " << port << std::endl; // Start accepting clients while (true) { // Accept client connection - sockaddr_in clientAddress{}; - socklen_t clientAddressSize = sizeof(clientAddress); - int clientSocket = accept(serverSocket, reinterpret_cast(&clientAddress), &clientAddressSize); - if (clientSocket == -1) { - std::cerr << "Failed to accept client connection" << std::endl; - return false; - } + auto clientSocket = new asio::ip::tcp::socket(io_context); + serverSocket.accept(*clientSocket); + + // add client + mSharedData.mutex.lock(); + mSharedData.clients.push_back(clientSocket); + mSharedData.mutex.unlock(); // Create a new thread to handle the client pthread_t threadId; - if (pthread_create(&threadId, nullptr, handleClient, &clientSocket) != 0) { + if (pthread_create(&threadId, nullptr, handleClient, this) != 0) { std::cerr << "Failed to create thread for client" << std::endl; return false; } @@ -58,40 +60,81 @@ public: } // Close server socket - close(serverSocket); + serverSocket.close(); return true; } -private: - int serverSocket; - int port; - static void* handleClient(void* clientSocketPtr) { - int clientSocket = *(reinterpret_cast(clientSocketPtr)); - constexpr int BUFFER_SIZE = 1024; + static void* handleClient(void* in) { + auto self = (Server*) in; - // Receive and print client message - char buffer[BUFFER_SIZE]; - ssize_t bytesRead = read(clientSocket, buffer, BUFFER_SIZE - 1); - if (bytesRead == -1) { - std::cerr << "Failed to read from socket" << std::endl; - return nullptr; + // read shared data - current client id + self->mSharedData.mutex.lock(); + auto clientSocket = self->mSharedData.clients.back(); + self->mSharedData.mutex.unlock(); + + MESSAGE: + // wait for a message request1 + short messageSize; + { + auto bytesRead = asio::read(*clientSocket, asio::buffer(&messageSize, 2)); + if (bytesRead == -1) { + std::cerr << "Failed to read from socket" << std::endl; + (*clientSocket).close(); + return nullptr; + } } - buffer[bytesRead] = '\0'; - std::cout << "Received message from client: " << buffer << std::endl; + self->mSharedData.mutex.lock(); + + // Receive client message + auto message = new char[messageSize + 1]; + message[messageSize] = '\0'; + { + auto bytesRead = asio::read(*clientSocket, asio::buffer(message, messageSize)); + if (bytesRead == -1) { + std::cerr << "Failed to read from socket" << std::endl; + memcpy(message, "Cant wanna say something but i cant read", 100); + } + } + + // Broadcast to all clients + for (auto client: self->mSharedData.clients) { + auto bytesWritten = asio::write(*client, asio::buffer(&messageSize, 2)); + if (bytesWritten == -1) { + std::cerr << "Failed to write to socket" << std::endl; + } + + bytesWritten = write(*client, asio::buffer(message, messageSize)); + if (bytesWritten == -1) { + std::cerr << "Failed to write to socket" << std::endl; + } + } + + auto exit = memcmp(message, "exit", strlen("exit")) == 0; // Close socket - close(clientSocket); + delete[] message; - return nullptr; + + if (exit) { + (*clientSocket).close(); + self->mSharedData.clients.remove(clientSocket); + } + + self->mSharedData.mutex.unlock(); + + if (exit) { + return nullptr; + } + goto MESSAGE; } }; int main() { - Server server(8080); + Server server(3333); server.start(); return 0; -} +} \ No newline at end of file From 62cb2bb8b764638d49198c13d5d70a898e1d1a06 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 18 Jul 2023 23:48:54 +0300 Subject: [PATCH 20/68] Fix File test --- Storage/private/LocalStorage.cpp | 5 +++-- Storage/private/SystemHandle.cpp | 2 +- Storage/public/LocalStorage.hpp | 2 +- Storage/tests/TestLocalStorage.cpp | 12 ++++++------ Storage/tests/Tests.cpp | 4 ++-- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Storage/private/LocalStorage.cpp b/Storage/private/LocalStorage.cpp index 9e33fe5..fccaad7 100644 --- a/Storage/private/LocalStorage.cpp +++ b/Storage/private/LocalStorage.cpp @@ -12,11 +12,11 @@ bool File::connect(const FileLocation& location, const FileConnectionType& conne switch (connectionInfo.getType()) { case FileConnectionType::READ: - handle->open(location.getLocation().read(), true); + handle->open(location.getLocation().read(), false); break; case FileConnectionType::WRITE: - handle->open(location.getLocation().read(), false); + handle->open(location.getLocation().read(), true); break; default: @@ -31,6 +31,7 @@ bool File::connect(const FileLocation& location, const FileConnectionType& conne mStatus.setStatus(FileConnectionStatus::OPENED); mHandle = handle; + mConnectionType = connectionInfo; return true; } diff --git a/Storage/private/SystemHandle.cpp b/Storage/private/SystemHandle.cpp index 1386b2a..0c0b664 100644 --- a/Storage/private/SystemHandle.cpp +++ b/Storage/private/SystemHandle.cpp @@ -40,7 +40,7 @@ void FileSystemHandle::seekp(ualni in) { void FileSystemHandle::read(int1* in, ualni size) { auto strm = (std::fstream*) stream; - strm->write(in, size); + strm->read(in, size); } void FileSystemHandle::write(const int1* in, ualni size) { diff --git a/Storage/public/LocalStorage.hpp b/Storage/public/LocalStorage.hpp index e832db0..33e2f36 100644 --- a/Storage/public/LocalStorage.hpp +++ b/Storage/public/LocalStorage.hpp @@ -75,7 +75,7 @@ namespace tp { }; virtual ~File() { - File::disconnect(); + if (mStatus.isOpened()) File::disconnect(); } public: diff --git a/Storage/tests/TestLocalStorage.cpp b/Storage/tests/TestLocalStorage.cpp index 996782a..b4c765d 100644 --- a/Storage/tests/TestLocalStorage.cpp +++ b/Storage/tests/TestLocalStorage.cpp @@ -6,20 +6,20 @@ using namespace tp; TEST_DEF_STATIC(Simple) { - int1 data[] = { 0, 1, 2, 3, 4 }; - int1 dataRead[]{}; + const int1* data = "abcde\0"; + int1 dataRead[6]{}; { File file; - file.connect(FileLocation(String("tmp2")), FileConnectionType(false)); - file.writeBytes(data, 5); + file.connect(FileLocation(String("tmp2.txt")), FileConnectionType(false)); + file.writeBytes(data, 6); file.disconnect(); } { File file; - file.connect(FileLocation(String("tmp2")), FileConnectionType(true)); - file.readBytes(dataRead, 5); + file.connect(FileLocation(String("tmp2.txt")), FileConnectionType(true)); + file.readBytes(dataRead, 6); file.disconnect(); } diff --git a/Storage/tests/Tests.cpp b/Storage/tests/Tests.cpp index 3dec993..36f7fd5 100644 --- a/Storage/tests/Tests.cpp +++ b/Storage/tests/Tests.cpp @@ -1,12 +1,12 @@ #include "Testing.hpp" -#include "Utils.hpp" +#include "Storage.hpp" void testLocalStorage(); int main() { - tp::ModuleManifest* deps[] = { &tp::gModuleUtils, nullptr }; + tp::ModuleManifest* deps[] = { &tp::gModuleStorage, nullptr }; tp::ModuleManifest testModule("StorageTest", nullptr, nullptr, deps); if (!testModule.initialize()) { From 576a3565f7e578838bc961092825013bffb2bc0e Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Wed, 19 Jul 2023 21:29:57 +0300 Subject: [PATCH 21/68] Command Line INterpreter with fixes --- CommandLine/CMakeLists.txt | 2 +- CommandLine/private/CmdLineInterpreter.cpp | 120 +++++++++++++ CommandLine/private/CommandLine.cpp | 191 ++++++++++++++------- CommandLine/public/CmdLineInterpreter.hpp | 36 ++++ CommandLine/public/CommandLine.hpp | 41 +++-- CommandLine/tests/TestInterpreter.cpp | 34 ++++ CommandLine/tests/Tests.cpp | 3 +- CommandLine/tests/Tests.hpp | 1 + Storage/CMakeLists.txt | 10 +- Storage/applications/CMakeLists.txt | 16 +- Storage/private/LocalStorage.cpp | 13 ++ Storage/public/LocalStorage.hpp | 1 + Strings/public/Strings.hpp | 9 +- Tokenizer/public/Tokenizer.hpp | 2 +- 14 files changed, 384 insertions(+), 95 deletions(-) create mode 100644 CommandLine/private/CmdLineInterpreter.cpp create mode 100644 CommandLine/public/CmdLineInterpreter.hpp create mode 100644 CommandLine/tests/TestInterpreter.cpp diff --git a/CommandLine/CMakeLists.txt b/CommandLine/CMakeLists.txt index 7e8c179..33cea0b 100644 --- a/CommandLine/CMakeLists.txt +++ b/CommandLine/CMakeLists.txt @@ -10,7 +10,7 @@ file(GLOB SOURCES "./private/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer) +target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer Storage) ### -------------------------- Tests -------------------------- ### enable_testing() diff --git a/CommandLine/private/CmdLineInterpreter.cpp b/CommandLine/private/CmdLineInterpreter.cpp new file mode 100644 index 0000000..d3b0e40 --- /dev/null +++ b/CommandLine/private/CmdLineInterpreter.cpp @@ -0,0 +1,120 @@ +#include "CmdLineInterpreter.hpp" + +#define MAX_LINE_LENGTH 1024 + +#include +#include + +using namespace tp; + +static bool helpFunction(CmdLineInterpreter* self, const CommandLine& args) { + self->help(args); + return true; +} + +void CmdLineInterpreter::help(const CommandLine& args) const { + auto commandName = args.getString("CommandName"); + auto allCommands = commandName == "_none_"; + + if (allCommands) { + printf("Commands:\n"); + for (auto command : mCommands) { + printf(" %s\n", command->key.read()); + } + return; + } + + auto idx = mCommands.presents(commandName); + if (!idx) { + printf("Command '%s' not found\n", commandName.read()); + return; + } + + printf("Command '%s'\n", commandName.read()); + auto command = &mCommands.getSlotVal(idx); + command->args->help(); +} + +CmdLineInterpreter::CmdLineInterpreter() { + auto helpArgs = new CommandLine{ + { "CommandName", "_none_" } + }; + + addCommand("help", helpArgs, (CommandFunction) helpFunction, this); +} + + +void CmdLineInterpreter::addCommand(const String& id, CommandLine* args, CommandFunction function, void* customData) { + ASSERT(!mCommands.presents(id)) + mCommands.put(id, { args, function, customData }); +} + +void CmdLineInterpreter::run() { + char buffer[MAX_LINE_LENGTH]; + printf("Command Line Interpreter (or type 'exit' to quit):\n"); + + while (true) { + printf("%s >> ", mName.read()); + + // Read input from the user + if (fgets(buffer, MAX_LINE_LENGTH, stdin) == nullptr) { + printf("Error reading input.\n"); + return; + } + + // Remove the trailing newline character if it exists + auto length = strlen(buffer); + if (length > 0 && buffer[length - 1] == '\n') { + buffer[length - 1] = '\0'; + } + + // Check if the user wants to exit + if (strcmp(buffer, "exit") == 0) { + return; + } + + // Process the input here + processCommand(buffer); + } +} + +bool CmdLineInterpreter::processCommand(int1* commandString) { + ualni commandLen = 0; + for (auto i = commandString; *i != 0; i++) { + if (*i == ' ') break; + commandLen++; + } + + commandString[commandLen] = 0; + auto args = commandString + commandLen + 1; + + auto idx = mCommands.presents(commandString); + if (!idx) { + printf("ERROR: Command '%s' is not found\n", commandString); + printf("Please execute 'help' for more information\n\n"); + return true; + } + + auto command = &mCommands.getSlotVal(idx); + + command->args->parse(args); + + if (command->args->mError) { + printf("ERROR: Command call '%s' has invalid arguments\n", commandString); + command->args->resetError(); + return true; + } + + if (!command->function(command->customData, *command->args)) { + printf("ERROR: Command call '%s' failed\n", commandString); + return true; + } + + return true; +} + +CmdLineInterpreter::~CmdLineInterpreter() { + for (auto cmd : mCommands) { + delete cmd->val.args; + } +} \ No newline at end of file diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index 39cea49..77bfa2e 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -3,6 +3,9 @@ using namespace tp; +static ModuleManifest* sModuleDependencies[] = { &gModuleTokenizer, &gModuleStorage, nullptr }; +ModuleManifest tp::gModuleStorage = ModuleManifest("CommandLine", nullptr, nullptr, sModuleDependencies); + const char* regexSpace = "\n|\t| |\r"; const char* regexFalse = "N|n|(False)|(false)"; const char* regexTrue = "Y|y|(True)|(true)"; @@ -13,11 +16,13 @@ const char* regexString = "'{'-'}*'"; CommandLine::Arg::Arg(const Arg& arg) { mId = arg.mId; switch (arg.mType) { - case CommandLine::Arg::INT: mType = INT; mInt = arg.mInt; break; - case CommandLine::Arg::FLOAT: mType = FLOAT; mFloat = arg.mFloat; break; - case CommandLine::Arg::BOOL: mType = BOOL; mBool = arg.mBool; break; - case CommandLine::Arg::STR: mType = STR; new (&mStr) StringArg(); mStr = arg.mStr; break; - case CommandLine::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); mFile = arg.mFile; break; + case CommandLine::Arg::INT: mType = INT; mInt = arg.mInt; break; + case CommandLine::Arg::FLOAT: mType = FLOAT; mFloat = arg.mFloat; break; + case CommandLine::Arg::BOOL: mType = BOOL; mBool = arg.mBool; break; + case CommandLine::Arg::STR: mType = STR; new (&mStr) StringArg(); mStr = arg.mStr; break; + case CommandLine::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); mFile = arg.mFile; break; + default: + ASSERT(false) } mOptional = arg.mOptional; } @@ -30,6 +35,7 @@ CommandLine::Arg::Arg(const String& id, Type type) { case CommandLine::Arg::BOOL: mType = BOOL; new (&mBool) BoolArg(); break; case CommandLine::Arg::STR: mType = STR; new (&mStr) StringArg(); break; case CommandLine::Arg::FILE_IN: mType = FILE_IN; new (&mFile) FileInputArg(); break; + default: ASSERT(false) } mOptional = false; } @@ -119,6 +125,13 @@ CommandLine::CommandLine(const init_list& args) { }); ASSERT(mTokenizer.isBuild() && "Internal Error") + + mArgumentTokenizer.build({ + { regexSpace, ArgTokType::SPACE }, + { "{ - }*", ArgTokType::ARG } + }); + + ASSERT(mTokenizer.isBuild() && "Internal Error") } CommandLine::~CommandLine() { @@ -153,17 +166,60 @@ bool CommandLine::parse(char argc, const char* argv[], bool logError, ualni skip } idx++; } - return true; - - //set_working_dir(); } -alni CommandLine::getInt(const String& id) { auto& arg = getArg(id, Arg::INT); return arg.mInt.mVal; } -alnf CommandLine::getFloat(const String& id) { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } -bool CommandLine::getBool(const String& id) { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } -const String& CommandLine::getString(const String& id) { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } -File& CommandLine::getFile(const String& id) { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFile; } +bool CommandLine::parse(const char* args, bool logError) { + mArgumentTokenizer.bindSource(args); + mArgumentTokenizer.reset(); + + ualni argc = 0; + auto tok = mArgumentTokenizer.readTok(); + auto argument = mArgsOrder.first(); + + while (tok != ArgTokType::FAILURE && tok != ArgTokType::END) { + if (tok != ArgTokType::ARG) { + tok = mArgumentTokenizer.readTok(); + continue; + } + + if (!argument) { + ErrInvalidArgCount(); + if (logError) ErrLog(); + return false; + } + + parseArg(*argument->data, mArgumentTokenizer.extractVal().read()); + + if (mError && logError) { + ErrLog(); + return false; + } + + argc++; + argument = argument->next; + tok = mArgumentTokenizer.readTok(); + } + + ualni idx = 0; + for (auto arg : mArgsOrder) { + if (idx >= argc) { + initDefault(*arg.data()); + } + if (mError) { + if (logError) ErrLog(); + return false; + } + idx++; + } + return true; +} + +alni CommandLine::getInt(const String& id) const { auto& arg = getArg(id, Arg::INT); return arg.mInt.mVal; } +alnf CommandLine::getFloat(const String& id) const { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } +bool CommandLine::getBool(const String& id) const { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } +const String& CommandLine::getString(const String& id) const { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } +const FileLocation& CommandLine::getFile(const String& id) const { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFileLocation; } CommandLine::Arg& CommandLine::getArg(const String& id, Arg::Type type) { @@ -174,6 +230,14 @@ CommandLine::Arg& CommandLine::getArg(const String& id, Arg::Type type) { return *arg; } +const CommandLine::Arg& CommandLine::getArg(const String& id, Arg::Type type) const { + auto idx = mArgs.presents(id); + ASSERT(idx && "Invalid Id") + auto& arg = mArgs.getSlotVal(idx); + ASSERT(arg->mType == type && "Invalid Type Requested") + return *arg; +} + void CommandLine::ErrInvalidArgCount() { mError = { "Invalid Number Of Arguments Passed", nullptr }; } void CommandLine::ErrInvalidArgSyntax(Arg* arg) { mError = { "Invalid Syntax Of Argument", arg }; } void CommandLine::ErrInvalidArgType(Arg* arg) { mError = { "Invalid Type Of Argument", arg }; } @@ -192,7 +256,7 @@ void CommandLine::ErrLog() { } printf("\nArgument: %lli\n", idx); - ArgLog(*mError.mArg); + logArg(*mError.mArg); } printf("Error Description: %s. \n", mError.mDescr); @@ -201,7 +265,7 @@ void CommandLine::ErrLog() { ualni idx = 0; for (auto arg : mArgsOrder) { printf(" -- %lli -- \n", idx); - ArgLog(*arg.data()); + logArg(*arg.data()); idx++; } @@ -214,42 +278,43 @@ void CommandLine::ErrLog() { printf(" File - else\n"); } -void CommandLine::ArgLog(Arg& arg) { +void CommandLine::logArg(const Arg& arg) { switch (arg.mType) { - case Arg::INT: { - printf("Type : Int\n"); - printf("Range : %lli - %lli\n", arg.mInt.mAcceptingRange.mBegin, arg.mInt.mAcceptingRange.mEnd); - if (arg.mOptional) { - printf("Default : %lli\n", arg.mInt.mDefault); - } - printf("Given : %lli\n", arg.mInt.mVal); - } break; - case Arg::FLOAT: { - printf("Type : Float\n"); - printf("Range : %f - %f\n", (halnf) arg.mFloat.mAcceptingRange.mBegin, (halnf) arg.mFloat.mAcceptingRange.mEnd); - if (arg.mOptional) { - printf("Default : %f\n", arg.mFloat.mDefault); - } - printf("Given : %f\n", arg.mFloat.mVal); - } break; - case Arg::BOOL: { - printf("Type : Bool\n"); - if (arg.mOptional) { - printf("Default : %s\n", arg.mBool.mDefault ? "True" : "False"); - } - printf("Given : %s\n", arg.mBool.mFlag ? "True" : "False"); - } break; - case Arg::STR: { - printf("Type : String\n"); - if (arg.mOptional) { - printf("Default : %s\n", arg.mStr.mDefault.read()); - } - printf("Given : %s\n", arg.mStr.mStr.read()); - } break; - case Arg::FILE_IN: { - printf("Type : File Input\n"); - printf("Given Path : %s\n", arg.mFile.mFilepath.read()); - } break; + case Arg::INT: { + printf("Type : Int\n"); + printf("Range : %lli - %lli\n", arg.mInt.mAcceptingRange.mBegin, arg.mInt.mAcceptingRange.mEnd); + if (arg.mOptional) { + printf("Default : %lli\n", arg.mInt.mDefault); + } + printf("Value : %lli\n", arg.mInt.mVal); + } break; + case Arg::FLOAT: { + printf("Type : Float\n"); + printf("Range : %f - %f\n", (halnf) arg.mFloat.mAcceptingRange.mBegin, (halnf) arg.mFloat.mAcceptingRange.mEnd); + if (arg.mOptional) { + printf("Default : %f\n", arg.mFloat.mDefault); + } + printf("Value : %f\n", arg.mFloat.mVal); + } break; + case Arg::BOOL: { + printf("Type : Bool\n"); + if (arg.mOptional) { + printf("Default : %s\n", arg.mBool.mDefault ? "True" : "False"); + } + printf("Value : %s\n", arg.mBool.mFlag ? "True" : "False"); + } break; + case Arg::STR: { + printf("Type : String\n"); + if (arg.mOptional) { + printf("Default : %s\n", arg.mStr.mDefault.read()); + } + printf("Value : %s\n", arg.mStr.mStr.read()); + } break; + case Arg::FILE_IN: { + printf("Type : File Input\n"); + printf("Value Path : %s\n", arg.mFile.mFileLocation.getLocation().read()); + } break; + default: ASSERT(false) } } @@ -305,7 +370,8 @@ void CommandLine::parseArg(Arg& arg, const char* src) { ErrInvalidArgType(&arg); return; } - arg.mStr.mStr = val; + arg.mStr.mStr.resize(val.size() - 2); + memCopy(arg.mStr.mStr.write(), val.read() + 1, val.size() - 2); } break; case Arg::BOOL: { @@ -313,7 +379,7 @@ void CommandLine::parseArg(Arg& arg, const char* src) { ErrInvalidArgType(&arg); return; } - arg.mBool.mFlag = bool(val); + arg.mBool.mFlag = tok == TokType::BOOL_TRUE; } break; case Arg::FILE_IN: { @@ -322,24 +388,23 @@ void CommandLine::parseArg(Arg& arg, const char* src) { return; } - arg.mFile.mFilepath = val; + arg.mFile.mFileLocation.setLocation(val); - /* - // TODO : replace - if (!File::exists(arg.mFile.mFilepath.cstr())) { + if (!arg.mFile.mFileLocation.exists()) { ErrFileNotExists(&arg); return; } - arg.mFile.mFile.open(arg.mFile.mFilepath.cstr(), osfile_openflags::LOAD); - if (!arg.mFile.mFile.opened) { - ErrFileCouldNotOpen(&arg); - return; - } - */ - } break; + default: ASSERT(false) } arg.mIsPassed = true; } + +void CommandLine::help() const { + printf("Arguments:\n"); + for (auto arg : mArgsOrder) { + logArg(*arg.data()); + } +} \ No newline at end of file diff --git a/CommandLine/public/CmdLineInterpreter.hpp b/CommandLine/public/CmdLineInterpreter.hpp new file mode 100644 index 0000000..5839544 --- /dev/null +++ b/CommandLine/public/CmdLineInterpreter.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "CommandLine.hpp" +#include "Map.hpp" + +namespace tp { + + class CmdLineInterpreter { + public: + + typedef bool (*CommandFunction)(void* customData, const CommandLine& args); + + private: + + struct Command { + CommandLine* args; + CommandFunction function; + void* customData = nullptr; + }; + + Map mCommands; + String mName = "InterpName"; + + public: + CmdLineInterpreter(); + ~CmdLineInterpreter(); + + void setName(const String& name) { mName = name; } + [[nodiscard]] const String& getName() const { return mName; } + + void help(const CommandLine& args) const; + void addCommand(const String& id, CommandLine* args, CommandFunction function, void* customData = nullptr); + void run(); + bool processCommand(int1* command); + }; +} \ No newline at end of file diff --git a/CommandLine/public/CommandLine.hpp b/CommandLine/public/CommandLine.hpp index 9e406e1..51c98b6 100644 --- a/CommandLine/public/CommandLine.hpp +++ b/CommandLine/public/CommandLine.hpp @@ -2,13 +2,11 @@ #include "Tokenizer.hpp" #include "Map.hpp" +#include "LocalStorage.hpp" namespace tp { - // TODO : replace - class File { - - }; + extern ModuleManifest gModuleCommandLine; struct CommandLine { @@ -35,13 +33,12 @@ namespace tp { }; struct FileInputArg { - String mFilepath; - File mFile; + FileLocation mFileLocation; }; struct Arg { String mId; - enum Type { INT, FLOAT, BOOL, STR, FILE_IN } mType; + enum Type { INT, FLOAT, BOOL, STR, FILE_IN, NONE } mType = NONE; union { IntArg mInt; FloatArg mFloat; @@ -73,16 +70,23 @@ namespace tp { CommandLine(const init_list& args); ~CommandLine(); - bool parse(char argc, const char* argv[], bool logError = true, ualni skipArgs = 1); + void resetError() { mError.mDescr = nullptr; } - alni getInt(const String& id); - alnf getFloat(const String& id); - bool getBool(const String& id); - const String& getString(const String& id); - File& getFile(const String& id); + bool parse(char argc, const char* argv[], bool logError = true, ualni skipArgs = 1); + bool parse(const char* args, bool logError = true); + + void help() const; + + [[nodiscard]] alni getInt(const String& id) const; + [[nodiscard]] alnf getFloat(const String& id) const; + [[nodiscard]] bool getBool(const String& id) const; + [[nodiscard]] const String& getString(const String& id) const; + [[nodiscard]] const FileLocation& getFile(const String& id) const; + + const CommandLine& operator=(const CommandLine&) = delete; private: - enum class TokType { SPACE, INT, FLOAT, BOOL_FALSE, BOOL_TRUE, STR, NONE, FAILURE, END, } mType; + enum class TokType { SPACE, INT, FLOAT, BOOL_FALSE, BOOL_TRUE, STR, NONE, FAILURE, END, }; typedef SimpleTokenizer Tokenizer; Tokenizer mTokenizer; @@ -90,7 +94,12 @@ namespace tp { List mArgsOrder; ualni mOptionals = 0; + enum class ArgTokType { SPACE, ARG, NONE, FAILURE, END, }; + SimpleTokenizer mArgumentTokenizer; + Arg& getArg(const String& id, Arg::Type type); + [[nodiscard]] const Arg& getArg(const String& id, Arg::Type type) const; + void ErrInvalidArgCount(); void ErrInvalidArgSyntax(Arg* arg); void ErrInvalidArgType(Arg* arg); @@ -98,8 +107,8 @@ namespace tp { void ErrFileCouldNotOpen(Arg* arg); void ErrValNotinRange(Arg* arg); void ErrLog(); - static void ArgLog(Arg& arg); + static void logArg(const Arg& arg); static void initDefault(Arg& arg); void parseArg(Arg& arg, const char* src); }; -}; \ No newline at end of file +} \ No newline at end of file diff --git a/CommandLine/tests/TestInterpreter.cpp b/CommandLine/tests/TestInterpreter.cpp new file mode 100644 index 0000000..eb00474 --- /dev/null +++ b/CommandLine/tests/TestInterpreter.cpp @@ -0,0 +1,34 @@ +#include "Tests.hpp" +#include "CmdLineInterpreter.hpp" + +using namespace tp; + +TEST_DEF_STATIC(Simple) { + + struct TestStruct { + int val = 0; + + static bool print(TestStruct* self, const CommandLine& args) { + printf("Test Val - %i\n", (int) args.getBool("bool")); + return false; + } + + }; + + TestStruct self; + + CmdLineInterpreter interp; + + interp.addCommand("test", new CommandLine{ { "bool", CommandLine::Arg::BOOL } }, (CmdLineInterpreter::CommandFunction) TestStruct::print); + + printf("test false\n", stdin); + printf("help\n", stdin); + printf("help test\n", stdin); + printf("exit\n", stdin); + + interp.run(); +} + +TEST_DEF(Interpreter) { + //testSimple(); +} diff --git a/CommandLine/tests/Tests.cpp b/CommandLine/tests/Tests.cpp index c1d284f..89e1d0f 100644 --- a/CommandLine/tests/Tests.cpp +++ b/CommandLine/tests/Tests.cpp @@ -12,7 +12,8 @@ int main() { return 1; } - testCommandLine(); + // testCommandLine(); + testInterpreter(); testModule.deinitialize(); } diff --git a/CommandLine/tests/Tests.hpp b/CommandLine/tests/Tests.hpp index 13f4290..eaac059 100644 --- a/CommandLine/tests/Tests.hpp +++ b/CommandLine/tests/Tests.hpp @@ -5,3 +5,4 @@ #include "CommandLine.hpp" void testCommandLine(); +void testInterpreter(); diff --git a/Storage/CMakeLists.txt b/Storage/CMakeLists.txt index d18d496..33f269a 100644 --- a/Storage/CMakeLists.txt +++ b/Storage/CMakeLists.txt @@ -12,6 +12,10 @@ add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) target_link_libraries(${PROJECT_NAME} PUBLIC Strings) + +### -------------------------- Applications -------------------------- ### +add_subdirectory(applications) + ### -------------------------- Tests -------------------------- ### enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") @@ -19,8 +23,4 @@ add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) -install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) - - -# todo :remove -add_subdirectory(applications) \ No newline at end of file +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Storage/applications/CMakeLists.txt b/Storage/applications/CMakeLists.txt index 8e1e2df..b8f171f 100644 --- a/Storage/applications/CMakeLists.txt +++ b/Storage/applications/CMakeLists.txt @@ -3,9 +3,15 @@ cmake_minimum_required(VERSION 3.2) project(Applications) -### ---------------------- Applications --------------------- ### -add_executable(Server ./Server.cpp) -add_executable(Client ./Client.cpp) +file(GLOB SOURCES_CLIENT ./Client.cpp) +file(GLOB SOURCES_SERVER ./Server.cpp) -include_directories(Client ./../../Externals/asio/asio/include) -include_directories(Server ./../../Externals/asio/asio/include) \ No newline at end of file +set(ASIO_INCLUDE ./../../Externals/asio/asio/include) + +add_executable(Client ${SOURCES_CLIENT}) +include_directories(Client ${ASIO_INCLUDE}) +#link_libraries(Client Storage CommandLine) + +add_executable(Server ${SOURCES_SERVER}) +include_directories(Server ${ASIO_INCLUDE}) +#link_libraries(Server Storage CommandLine) diff --git a/Storage/private/LocalStorage.cpp b/Storage/private/LocalStorage.cpp index fccaad7..3410854 100644 --- a/Storage/private/LocalStorage.cpp +++ b/Storage/private/LocalStorage.cpp @@ -2,8 +2,21 @@ #include "SystemHandle.hpp" +#include + using namespace tp; + +bool FileLocation::exists() const { + FILE* file = fopen(mLocation.read(), "r"); + if (file) { + // File exists, close it and return 1 + fclose(file); + return true; + } + return false; +} + bool File::connect(const FileLocation& location, const FileConnectionType& connectionInfo) { DEBUG_ASSERT(!mStatus.isOpened()); if (mStatus.isOpened()) return false; diff --git a/Storage/public/LocalStorage.hpp b/Storage/public/LocalStorage.hpp index 33e2f36..f1cf805 100644 --- a/Storage/public/LocalStorage.hpp +++ b/Storage/public/LocalStorage.hpp @@ -13,6 +13,7 @@ namespace tp { explicit FileLocation(const String& location) : mLocation(location) {} void setLocation(const String& location) { mLocation = location; } [[nodiscard]] const String& getLocation() const { return mLocation; } + [[nodiscard]] bool exists() const; }; class FileConnectionType { diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index c3b6472..b146d41 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -188,17 +188,20 @@ namespace tp { explicit operator alni() { alni out; - return Logic::convertStringToValue(read(), out); + Logic::convertStringToValue(read(), out); + return out; } explicit operator alnf() { alnf out; - return Logic::convertStringToValue(read(), out); + Logic::convertStringToValue(read(), out); + return out; } explicit operator bool() { bool out; - return Logic::convertStringToValue(read(), out); + Logic::convertStringToValue(read(), out); + return out; } Index size() const { diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp index c48552a..3a041c5 100644 --- a/Tokenizer/public/Tokenizer.hpp +++ b/Tokenizer/public/Tokenizer.hpp @@ -168,7 +168,7 @@ namespace tp { String extractVal() { auto crs = getCursorPrev(); String out; - out.resize(mLastTokLen + 1); + out.resize(mLastTokLen); memCopy(out.write(), crs.str(), mLastTokLen); return out; } From a543568e1d0a16436cc6ec205f9cb592c6ad53d0 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Wed, 19 Jul 2023 23:52:07 +0300 Subject: [PATCH 22/68] Restructure --- CommandLine/private/CommandLine.cpp | 2 +- Storage/CMakeLists.txt | 3 + Storage/applications/CMakeLists.txt | 12 +- Storage/applications/Client.cpp | 119 +++++++--------- Storage/applications/Server.cpp | 134 ++++++------------ Storage/private/LocalStorage.cpp | 2 +- Storage/private/RemoteStorage.cpp | 0 .../{SystemHandle.cpp => SystemAPIFile.cpp} | 2 +- Storage/private/SystemAPINet.cpp | 130 +++++++++++++++++ Storage/private/SystemHandle.hpp | 19 --- Storage/public/RemoteStorage.hpp | 5 +- Storage/public/SystemAPI.hpp | 51 +++++++ 12 files changed, 289 insertions(+), 190 deletions(-) create mode 100644 Storage/private/RemoteStorage.cpp rename Storage/private/{SystemHandle.cpp => SystemAPIFile.cpp} (97%) create mode 100644 Storage/private/SystemAPINet.cpp delete mode 100644 Storage/private/SystemHandle.hpp create mode 100644 Storage/public/SystemAPI.hpp diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index 77bfa2e..24d56cb 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -4,7 +4,7 @@ using namespace tp; static ModuleManifest* sModuleDependencies[] = { &gModuleTokenizer, &gModuleStorage, nullptr }; -ModuleManifest tp::gModuleStorage = ModuleManifest("CommandLine", nullptr, nullptr, sModuleDependencies); +ModuleManifest tp::gModuleCommandLine = ModuleManifest("CommandLine", nullptr, nullptr, sModuleDependencies); const char* regexSpace = "\n|\t| |\r"; const char* regexFalse = "N|n|(False)|(false)"; diff --git a/Storage/CMakeLists.txt b/Storage/CMakeLists.txt index 33f269a..0d982b1 100644 --- a/Storage/CMakeLists.txt +++ b/Storage/CMakeLists.txt @@ -5,11 +5,14 @@ set(CMAKE_CXX_STANDARD 23) project(Storage) +set(ASIO_INCLUDE ./../Externals/asio/asio/include) + ### ---------------------- Static Library --------------------- ### file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PRIVATE ${ASIO_INCLUDE}) target_link_libraries(${PROJECT_NAME} PUBLIC Strings) diff --git a/Storage/applications/CMakeLists.txt b/Storage/applications/CMakeLists.txt index b8f171f..dd0142d 100644 --- a/Storage/applications/CMakeLists.txt +++ b/Storage/applications/CMakeLists.txt @@ -3,15 +3,11 @@ cmake_minimum_required(VERSION 3.2) project(Applications) -file(GLOB SOURCES_CLIENT ./Client.cpp) -file(GLOB SOURCES_SERVER ./Server.cpp) - -set(ASIO_INCLUDE ./../../Externals/asio/asio/include) +file(GLOB SOURCES_CLIENT ./Client.cpp ./SystemAPI.cpp) +file(GLOB SOURCES_SERVER ./Server.cpp ./SystemAPI.cpp) add_executable(Client ${SOURCES_CLIENT}) -include_directories(Client ${ASIO_INCLUDE}) -#link_libraries(Client Storage CommandLine) +target_link_libraries(Client Storage CommandLine) add_executable(Server ${SOURCES_SERVER}) -include_directories(Server ${ASIO_INCLUDE}) -#link_libraries(Server Storage CommandLine) +target_link_libraries(Server Storage CommandLine) diff --git a/Storage/applications/Client.cpp b/Storage/applications/Client.cpp index 26409c6..35f1c26 100644 --- a/Storage/applications/Client.cpp +++ b/Storage/applications/Client.cpp @@ -1,81 +1,64 @@ -#include "asio.hpp" +#include "SystemAPI.hpp" -#include -#include -#include +#include "Strings.hpp" -// #include -// #include +#include -constexpr int PORT = 3333; -const char* SERVER_IP = "127.0.0.1"; +using namespace tp; -std::mutex mutex; +class CharClient { -void* readServerBroadcast(void* clientSocketPtr) { - auto socket = ((asio::ip::tcp::socket*)clientSocketPtr); + typedef void* (*ThreadFunction)(void *); - while (true) { + Client client; + pthread_mutex_t mutex; - short messageSize; - asio::read(*socket, asio::buffer(&messageSize, 2)); - - mutex.lock(); - - auto message = new char[messageSize + 1]; - message[messageSize] = 0; - - asio::read(*socket, asio::buffer(message, messageSize)); - - std::cerr << "Broadcast : " << message << std::endl; - - delete[] message; - - mutex.unlock(); +public: + CharClient(int port, const char* ip) { + pthread_mutex_unlock(&mutex); + client.connect(ip, port); } - return nullptr; -} + void start() { + // Create a new thread to handle the client + pthread_t threadId; + if (pthread_create(&threadId, nullptr, (ThreadFunction) readServerBroadcast, this)) { + printf("Failed to create thread for client\n"); + return; + } + + // Detach the thread so it can run independently + pthread_detach(threadId); + + while (true) { + const auto length = 1024; + static char message[length]; + + printf(" >> "); + fgets(message, length, stdin); + + if (String::Logic::isEqualLogic(message, "exit")) return; + + pthread_mutex_lock(&mutex); + client.write(message); + pthread_mutex_unlock(&mutex); + } + } + + static void* readServerBroadcast(CharClient* self) { + while (true) { + auto message = self->client.read(); + pthread_mutex_lock(&self->mutex); + printf("Broadcast : %s \n", message); + delete[] message; + pthread_mutex_unlock(&self->mutex); + } + return nullptr; + } +}; int main() { - asio::io_context ioContext; - - // Create a TCP socket - asio::ip::tcp::socket socket(ioContext); - - // Connect to a server - asio::ip::tcp::endpoint endpoint(asio::ip::address::from_string(SERVER_IP), PORT); - socket.connect(endpoint); - - // Create a new thread to handle the client - pthread_t threadId; - if (pthread_create(&threadId, nullptr, readServerBroadcast, (void*) &socket) != 0) { - std::cerr << "Failed to create thread for client" << std::endl; - return 1; - } - - // Detach the thread so it can run independently - pthread_detach(threadId); - - while (true) { - std::string message; - std::cout << " >> "; - std::cin >> message; - - mutex.lock(); - - // Send a message to the server - auto messageSize = (short) message.size(); - asio::write(socket, asio::buffer(&messageSize, 2)); - - // Send a message to the server - asio::write(socket, asio::buffer(message + "\n")); - - mutex.unlock(); - } - - // Close socket - // close(clientSocket); - + CharClient client(5555, "127.0.0.1"); + client.start(); return 0; } diff --git a/Storage/applications/Server.cpp b/Storage/applications/Server.cpp index 99d9fd3..eea79f1 100644 --- a/Storage/applications/Server.cpp +++ b/Storage/applications/Server.cpp @@ -1,140 +1,92 @@ -#include -#include -#include -#include -#include +#include "SystemAPI.hpp" +#include "Strings.hpp" +#include "List.hpp" + #include -class Server { +using namespace tp; + +class ChatServer { struct SharedData { - std::list clients; - std::mutex mutex; + List clients; + pthread_mutex_t mutex; }; SharedData mSharedData; - - //int serverSocket; - int port; + Server server; public: - Server(int port) : port(port) {} - ~Server() { assert(0); } + explicit ChatServer(int port) { + server.start(port); + } + + ~ChatServer() { + DEBUG_ASSERT(false) + } bool start() { - // Create socket - asio::io_context io_context; - asio::ip::tcp::acceptor serverSocket(io_context); - - // Bind socket to port - serverSocket.open(asio::ip::tcp::v4()); - // serverSocket.set_option(asio::ip::tcp::acceptor::reuse_address(true)); - serverSocket.bind(asio::ip::tcp::endpoint(asio::ip::tcp::v4(), port)); - - // Listen for connections - serverSocket.listen(); - - std::cout << "Server listening on port " << port << std::endl; - - // Start accepting clients while (true) { - // Accept client connection - auto clientSocket = new asio::ip::tcp::socket(io_context); - serverSocket.accept(*clientSocket); + auto clientSocket = server.accept(); // add client - mSharedData.mutex.lock(); - mSharedData.clients.push_back(clientSocket); - mSharedData.mutex.unlock(); + pthread_mutex_lock(&mSharedData.mutex); + mSharedData.clients.pushBack(clientSocket); + pthread_mutex_unlock(&mSharedData.mutex); // Create a new thread to handle the client pthread_t threadId; - if (pthread_create(&threadId, nullptr, handleClient, this) != 0) { - std::cerr << "Failed to create thread for client" << std::endl; + if (pthread_create(&threadId, nullptr, (void* (*)(void*)) handleClient, this)) { + printf("Failed to create thread for client\n"); return false; } // Detach the thread so it can run independently pthread_detach(threadId); } - - // Close server socket - serverSocket.close(); - return true; } - static void* handleClient(void* in) { - auto self = (Server*) in; - + static void* handleClient(ChatServer* self) { // read shared data - current client id - self->mSharedData.mutex.lock(); - auto clientSocket = self->mSharedData.clients.back(); - self->mSharedData.mutex.unlock(); + pthread_mutex_lock(&self->mSharedData.mutex); + auto clientSocket = self->mSharedData.clients.last(); + pthread_mutex_unlock(&self->mSharedData.mutex); MESSAGE: - // wait for a message request1 - short messageSize; - { - auto bytesRead = asio::read(*clientSocket, asio::buffer(&messageSize, 2)); - if (bytesRead == -1) { - std::cerr << "Failed to read from socket" << std::endl; - (*clientSocket).close(); - return nullptr; - } - } - - self->mSharedData.mutex.lock(); - - // Receive client message - auto message = new char[messageSize + 1]; - message[messageSize] = '\0'; - { - auto bytesRead = asio::read(*clientSocket, asio::buffer(message, messageSize)); - if (bytesRead == -1) { - std::cerr << "Failed to read from socket" << std::endl; - memcpy(message, "Cant wanna say something but i cant read", 100); - } - } + // wait for a message request + auto message = Server::read(clientSocket); // Broadcast to all clients - for (auto client: self->mSharedData.clients) { - auto bytesWritten = asio::write(*client, asio::buffer(&messageSize, 2)); - if (bytesWritten == -1) { - std::cerr << "Failed to write to socket" << std::endl; - } - - bytesWritten = write(*client, asio::buffer(message, messageSize)); - if (bytesWritten == -1) { - std::cerr << "Failed to write to socket" << std::endl; - } + for (auto client : self->mSharedData.clients) { + Server::write(client.data(), message); } - auto exit = memcmp(message, "exit", strlen("exit")) == 0; + auto exit = memCompare(message, "exit", 5) == 0; - // Close socket delete[] message; - if (exit) { - (*clientSocket).close(); - self->mSharedData.clients.remove(clientSocket); + // TODO : disconnect + for (auto iter : self->mSharedData.clients) { + if (clientSocket == iter.data()) { + self->mSharedData.clients.removeNode(iter.node()); + break; + } + } } - self->mSharedData.mutex.unlock(); + pthread_mutex_unlock(&self->mSharedData.mutex); - if (exit) { - return nullptr; - } + if (exit) return nullptr; goto MESSAGE; } }; int main() { - Server server(3333); + ChatServer server(5555); server.start(); - return 0; -} \ No newline at end of file +} diff --git a/Storage/private/LocalStorage.cpp b/Storage/private/LocalStorage.cpp index 3410854..b3cfb8b 100644 --- a/Storage/private/LocalStorage.cpp +++ b/Storage/private/LocalStorage.cpp @@ -1,6 +1,6 @@ #include "LocalStorage.hpp" -#include "SystemHandle.hpp" +#include "SystemAPI.hpp" #include diff --git a/Storage/private/RemoteStorage.cpp b/Storage/private/RemoteStorage.cpp new file mode 100644 index 0000000..e69de29 diff --git a/Storage/private/SystemHandle.cpp b/Storage/private/SystemAPIFile.cpp similarity index 97% rename from Storage/private/SystemHandle.cpp rename to Storage/private/SystemAPIFile.cpp index 0c0b664..5278d2f 100644 --- a/Storage/private/SystemHandle.cpp +++ b/Storage/private/SystemAPIFile.cpp @@ -1,4 +1,4 @@ -#include "SystemHandle.hpp" +#include "SystemAPI.hpp" #include diff --git a/Storage/private/SystemAPINet.cpp b/Storage/private/SystemAPINet.cpp new file mode 100644 index 0000000..3106571 --- /dev/null +++ b/Storage/private/SystemAPINet.cpp @@ -0,0 +1,130 @@ +#include "SystemAPI.hpp" + +#include "asio.hpp" + +#include + +using namespace tp; + +class tp::ServerContext { + friend class Server; + + asio::io_context context; + asio::ip::tcp::acceptor socket; + typedef asio::ip::tcp::socket Socket; + + ServerContext() : socket(context) {} + + ~ServerContext() { + context.stop(); + socket.close(); + } +}; + +class tp::ClientContext { + friend Client; + + asio::io_context context; + asio::ip::tcp::socket socket; + +public: + ClientContext() : socket(context) {} + + ~ClientContext() { + context.stop(); + socket.close(); + } +}; + +// --------------------------------------------------------------------------------------- // + +Server::Server() { + mContext = new ServerContext(); +} + +Server::~Server() { + delete mContext; + assert(0); +} + +void Server::start(ualni port) { + mContext->socket.open(asio::ip::tcp::v4()); + mContext->socket.bind(asio::ip::tcp::endpoint(asio::ip::tcp::v4(), port)); + mContext->socket.listen(); + std::cout << "Server listening on port " << port << std::endl; +} + +Server::Socket Server::accept() { + auto clientSocket = new asio::ip::tcp::socket(mContext->context); + mContext->socket.accept(*clientSocket); + std::cout << "New client accepted "<< std::endl; + return clientSocket; +} + +int1* Server::read(Socket client) { + short messageSize; + if (asio::read(*(ServerContext::Socket*)client, asio::buffer(&messageSize, 2)) == -1) { + std::cerr << "Failed to read from socket" << std::endl; + ((ServerContext::Socket*)client)->close(); + return nullptr; + } + auto message = new char[messageSize + 1]; + message[messageSize] = '\0'; + if (asio::read(*(ServerContext::Socket*)client, asio::buffer(message, messageSize)) == -1) { + std::cerr << "Failed to read from socket" << std::endl; + memcpy(message, "Client wanna say something but i cant read", 100); + } + return message; +} + +void Server::write(Socket client, const char* message) { + auto messageSize = (short) strlen(message); + if (asio::write(*(ServerContext::Socket*)client, asio::buffer(&messageSize, 2)) == -1) { + std::cerr << "Failed to write to socket" << std::endl; + } + if (asio::write(*(ServerContext::Socket*)client, asio::buffer(message, messageSize)) == -1) { + std::cerr << "Failed to write to socket" << std::endl; + } +} + +// --------------------------------------------------------------------------------------- // + +Client::Client() { + mContext = new ClientContext(); +} + +Client::~Client() { + delete mContext; + assert(0); +} + +void Client::connect(const char* IP, ualni PORT) { + asio::ip::tcp::endpoint endpoint(asio::ip::address::from_string(IP), PORT); + mContext->socket.connect(endpoint); +} + +char* Client::read() { + short messageSize; + if (asio::read(mContext->socket, asio::buffer(&messageSize, 2)) == -1) { + std::cerr << "Failed to read from socket" << std::endl; + return nullptr; + } + auto message = new char[messageSize + 1]; + message[messageSize] = '\0'; + if (asio::read(mContext->socket, asio::buffer(message, messageSize)) == -1) { + std::cerr << "Failed to read from socket" << std::endl; + memcpy(message, "Cant wanna say something but i cant read", 100); + } + return message; +} + +void Client::write( const char* message ) { + auto messageSize = (short) strlen(message); + if (asio::write(mContext->socket, asio::buffer(&messageSize, 2)) == -1) { + std::cerr << "Failed to write to socket" << std::endl; + } + if (asio::write(mContext->socket, asio::buffer(message, messageSize)) == -1) { + std::cerr << "Failed to write to socket" << std::endl; + } +} + diff --git a/Storage/private/SystemHandle.hpp b/Storage/private/SystemHandle.hpp deleted file mode 100644 index 17d85c7..0000000 --- a/Storage/private/SystemHandle.hpp +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include "Common.hpp" - -namespace tp { - class FileSystemHandle { - void* stream; - public: - FileSystemHandle(); - ~FileSystemHandle(); - void open(const char*, bool); - bool isOpen(); - void close(); - void seekp(ualni); - void read(int1*, ualni); - void write(const int1*, ualni); - ualni size(); - }; -} \ No newline at end of file diff --git a/Storage/public/RemoteStorage.hpp b/Storage/public/RemoteStorage.hpp index 7f525be..4a1d13c 100644 --- a/Storage/public/RemoteStorage.hpp +++ b/Storage/public/RemoteStorage.hpp @@ -1,8 +1,10 @@ #pragma once -#include "Storage.hpp" +#include "SystemAPI.hpp" namespace tp { + + /* class Client : public Storage { // same as local storage file but transfers all commands to server }; @@ -11,4 +13,5 @@ namespace tp { // opens local storage and transfers all client command to it // manages multiple clients }; + */ } \ No newline at end of file diff --git a/Storage/public/SystemAPI.hpp b/Storage/public/SystemAPI.hpp new file mode 100644 index 0000000..ff1e681 --- /dev/null +++ b/Storage/public/SystemAPI.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include "Common.hpp" + +namespace tp { + class FileSystemHandle { + void* stream; + public: + FileSystemHandle(); + ~FileSystemHandle(); + void open(const char*, bool); + bool isOpen(); + void close(); + void seekp(ualni); + void read(int1*, ualni); + void write(const int1*, ualni); + ualni size(); + }; + + + class ServerContext; + class ClientContext; + + class Server { + ServerContext* mContext; + + public: + typedef void* Socket; + + public: + Server(); + ~Server(); + + void start(ualni port); + Socket accept(); + static int1* read(Socket client); + static void write(Socket client, const int1* message); + }; + + class Client { + ClientContext* mContext; + + public: + Client(); + ~Client(); + + void connect(const int1* IP, ualni PORT); + int1* read(); + void write(const int1* message); + }; +} \ No newline at end of file From 0301f608bd7b93e9c068a01099e22aaec7e47f5b Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Thu, 20 Jul 2023 22:31:36 +0300 Subject: [PATCH 23/68] Fixed bug in map --- Containers/public/Map.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Containers/public/Map.hpp b/Containers/public/Map.hpp index ae91a37..cac899e 100644 --- a/Containers/public/Map.hpp +++ b/Containers/public/Map.hpp @@ -247,7 +247,7 @@ namespace tp { const tVal& getSlotVal(Idx slot) const { DEBUG_ASSERT(slot.idx < mNSlots && (mTable[slot.idx] && !isDeletedNode(mTable[slot.idx])) && "Key Error") - return mTable[slot]->val; + return mTable[slot.idx]->val; } tVal& getSlotVal(Idx slot) { From e9dbee66672a4156709591e978a00931be30b6e0 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 21 Jul 2023 19:55:31 +0300 Subject: [PATCH 24/68] Restructure Storage Module -> Connection module --- CMakeLists.txt | 2 +- CommandLine/CMakeLists.txt | 2 +- CommandLine/private/CommandLine.cpp | 4 +- CommandLine/public/CommandLine.hpp | 8 +- {Storage => Connection}/CMakeLists.txt | 10 +- Connection/private/ConnectionCommon.cpp | 9 ++ .../private/LocalConnection.cpp | 31 +++---- Connection/private/RemoteConnection.cpp | 2 + .../private/bindings/Disk.cpp | 20 ++-- Connection/private/bindings/Disk.hpp | 17 ++++ .../private/bindings/Network.cpp | 2 +- .../private/bindings/Network.hpp | 15 --- Connection/public/ConnectionCommon.hpp | 7 ++ .../public/LocalConnection.hpp | 48 +++++----- .../public/RemoteConnection.hpp | 0 .../tests/TestLocal.cpp | 12 +-- Connection/tests/Tests.cpp | 19 ++++ Storage/applications/CMakeLists.txt | 13 --- Storage/applications/Client.cpp | 64 ------------- Storage/applications/Server.cpp | 92 ------------------- Storage/private/Storage.cpp | 9 -- Storage/public/RemoteStorage.hpp | 17 ---- Storage/public/Storage.hpp | 53 ----------- Storage/tests/Tests.cpp | 19 ---- 24 files changed, 121 insertions(+), 354 deletions(-) rename {Storage => Connection}/CMakeLists.txt (76%) create mode 100644 Connection/private/ConnectionCommon.cpp rename Storage/private/LocalStorage.cpp => Connection/private/LocalConnection.cpp (64%) create mode 100644 Connection/private/RemoteConnection.cpp rename Storage/private/SystemAPIFile.cpp => Connection/private/bindings/Disk.cpp (63%) create mode 100644 Connection/private/bindings/Disk.hpp rename Storage/private/SystemAPINet.cpp => Connection/private/bindings/Network.cpp (99%) rename Storage/public/SystemAPI.hpp => Connection/private/bindings/Network.hpp (66%) create mode 100644 Connection/public/ConnectionCommon.hpp rename Storage/public/LocalStorage.hpp => Connection/public/LocalConnection.hpp (51%) rename Storage/private/RemoteStorage.cpp => Connection/public/RemoteConnection.hpp (100%) rename Storage/tests/TestLocalStorage.cpp => Connection/tests/TestLocal.cpp (53%) create mode 100644 Connection/tests/Tests.cpp delete mode 100644 Storage/applications/CMakeLists.txt delete mode 100644 Storage/applications/Client.cpp delete mode 100644 Storage/applications/Server.cpp delete mode 100644 Storage/private/Storage.cpp delete mode 100644 Storage/public/RemoteStorage.hpp delete mode 100644 Storage/public/Storage.hpp delete mode 100644 Storage/tests/Tests.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d731dda..db1eb4e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,4 +18,4 @@ add_subdirectory(Allocators) add_subdirectory(Strings) add_subdirectory(Tokenizer) add_subdirectory(CommandLine) -add_subdirectory(Storage) +add_subdirectory(Connection) diff --git a/CommandLine/CMakeLists.txt b/CommandLine/CMakeLists.txt index 33cea0b..eaf3fc7 100644 --- a/CommandLine/CMakeLists.txt +++ b/CommandLine/CMakeLists.txt @@ -10,7 +10,7 @@ file(GLOB SOURCES "./private/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer Storage) +target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer Connection) ### -------------------------- Tests -------------------------- ### enable_testing() diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index 24d56cb..e5743ad 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -3,7 +3,7 @@ using namespace tp; -static ModuleManifest* sModuleDependencies[] = { &gModuleTokenizer, &gModuleStorage, nullptr }; +static ModuleManifest* sModuleDependencies[] = { &gModuleTokenizer, &gModuleConnection, nullptr }; ModuleManifest tp::gModuleCommandLine = ModuleManifest("CommandLine", nullptr, nullptr, sModuleDependencies); const char* regexSpace = "\n|\t| |\r"; @@ -219,7 +219,7 @@ alni CommandLine::getInt(const String& id) const { auto& arg = getArg(id, Arg::I alnf CommandLine::getFloat(const String& id) const { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } bool CommandLine::getBool(const String& id) const { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } const String& CommandLine::getString(const String& id) const { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } -const FileLocation& CommandLine::getFile(const String& id) const { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFileLocation; } +const LocalConnectionLocation& CommandLine::getFile(const String& id) const { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFileLocation; } CommandLine::Arg& CommandLine::getArg(const String& id, Arg::Type type) { diff --git a/CommandLine/public/CommandLine.hpp b/CommandLine/public/CommandLine.hpp index 51c98b6..edf049c 100644 --- a/CommandLine/public/CommandLine.hpp +++ b/CommandLine/public/CommandLine.hpp @@ -1,8 +1,8 @@ #pragma once -#include "Tokenizer.hpp" #include "Map.hpp" -#include "LocalStorage.hpp" +#include "LocalConnection.hpp" +#include "Tokenizer.hpp" namespace tp { @@ -33,7 +33,7 @@ namespace tp { }; struct FileInputArg { - FileLocation mFileLocation; + LocalConnectionLocation mFileLocation; }; struct Arg { @@ -81,7 +81,7 @@ namespace tp { [[nodiscard]] alnf getFloat(const String& id) const; [[nodiscard]] bool getBool(const String& id) const; [[nodiscard]] const String& getString(const String& id) const; - [[nodiscard]] const FileLocation& getFile(const String& id) const; + [[nodiscard]] const LocalConnectionLocation& getFile(const String& id) const; const CommandLine& operator=(const CommandLine&) = delete; diff --git a/Storage/CMakeLists.txt b/Connection/CMakeLists.txt similarity index 76% rename from Storage/CMakeLists.txt rename to Connection/CMakeLists.txt index 0d982b1..cd1102d 100644 --- a/Storage/CMakeLists.txt +++ b/Connection/CMakeLists.txt @@ -3,22 +3,18 @@ cmake_minimum_required(VERSION 3.2) set(CMAKE_CXX_STANDARD 23) -project(Storage) +project(Connection) -set(ASIO_INCLUDE ./../Externals/asio/asio/include) +set(BINDINGS_INCLUDE ./../Externals/asio/asio/include) ### ---------------------- Static Library --------------------- ### file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_include_directories(${PROJECT_NAME} PRIVATE ${ASIO_INCLUDE}) +target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) target_link_libraries(${PROJECT_NAME} PUBLIC Strings) - -### -------------------------- Applications -------------------------- ### -add_subdirectory(applications) - ### -------------------------- Tests -------------------------- ### enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") diff --git a/Connection/private/ConnectionCommon.cpp b/Connection/private/ConnectionCommon.cpp new file mode 100644 index 0000000..0592308 --- /dev/null +++ b/Connection/private/ConnectionCommon.cpp @@ -0,0 +1,9 @@ + +#include "ConnectionCommon.hpp" + +static tp::ModuleManifest* sModuleDependencies[] = { + &tp::gModuleStrings, + nullptr +}; + +tp::ModuleManifest tp::gModuleConnection = ModuleManifest("Storage", nullptr, nullptr, sModuleDependencies); \ No newline at end of file diff --git a/Storage/private/LocalStorage.cpp b/Connection/private/LocalConnection.cpp similarity index 64% rename from Storage/private/LocalStorage.cpp rename to Connection/private/LocalConnection.cpp index b3cfb8b..f12995b 100644 --- a/Storage/private/LocalStorage.cpp +++ b/Connection/private/LocalConnection.cpp @@ -1,13 +1,12 @@ -#include "LocalStorage.hpp" +#include "LocalConnection.hpp" -#include "SystemAPI.hpp" +#include "bindings/Disk.hpp" #include using namespace tp; - -bool FileLocation::exists() const { +bool LocalConnectionLocation::exists() const { FILE* file = fopen(mLocation.read(), "r"); if (file) { // File exists, close it and return 1 @@ -17,18 +16,18 @@ bool FileLocation::exists() const { return false; } -bool File::connect(const FileLocation& location, const FileConnectionType& connectionInfo) { +bool LocalConnection::connect(const LocalConnectionLocation& location, const LocalConnectionType& connectionInfo) { DEBUG_ASSERT(!mStatus.isOpened()); if (mStatus.isOpened()) return false; - auto handle = new FileSystemHandle(); + auto handle = new LocalConnectionContext(); switch (connectionInfo.getType()) { - case FileConnectionType::READ: + case LocalConnectionType::READ: handle->open(location.getLocation().read(), false); break; - case FileConnectionType::WRITE: + case LocalConnectionType::WRITE: handle->open(location.getLocation().read(), true); break; @@ -37,33 +36,33 @@ bool File::connect(const FileLocation& location, const FileConnectionType& conne }; if (!handle->isOpen()) { - mStatus.setStatus(FileConnectionStatus::DENIED); + mStatus.setStatus(LocalConnectionStatus::DENIED); delete handle; return false; } - mStatus.setStatus(FileConnectionStatus::OPENED); + mStatus.setStatus(LocalConnectionStatus::OPENED); mHandle = handle; mConnectionType = connectionInfo; return true; } -bool File::disconnect() { +bool LocalConnection::disconnect() { DEBUG_ASSERT(mStatus.isOpened()); if (!mStatus.isOpened() || !mHandle) return false; mHandle->close(); delete mHandle; - mStatus.setStatus(FileConnectionStatus::CLOSED); + mStatus.setStatus(LocalConnectionStatus::CLOSED); return true; } -bool File::setPointer(BytePointer pointer) { +bool LocalConnection::setPointer(BytePointer pointer) { DEBUG_ASSERT(mStatus.isOpened()); if (!mStatus.isOpened()) return false; return true; } -bool File::readBytes(Byte* bytes, SizeBytes size) { +bool LocalConnection::readBytes(Byte* bytes, SizeBytes size) { DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isWrite()); if (!mStatus.isOpened() || !mConnectionType.isWrite()) return false; @@ -73,7 +72,7 @@ bool File::readBytes(Byte* bytes, SizeBytes size) { return true; } -bool File::writeBytes(const Byte* bytes, SizeBytes size) { +bool LocalConnection::writeBytes(const Byte* bytes, SizeBytes size) { DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isRead()); if (!mStatus.isOpened() || !mConnectionType.isRead()) return false; @@ -83,7 +82,7 @@ bool File::writeBytes(const Byte* bytes, SizeBytes size) { return true; } -File::SizeBytes File::size() { +LocalConnection::SizeBytes LocalConnection::size() { DEBUG_ASSERT(mStatus.isOpened()); if (!mStatus.isOpened() || !mHandle) return 0; return mHandle->size(); diff --git a/Connection/private/RemoteConnection.cpp b/Connection/private/RemoteConnection.cpp new file mode 100644 index 0000000..9495b4f --- /dev/null +++ b/Connection/private/RemoteConnection.cpp @@ -0,0 +1,2 @@ + +#include "RemoteConnection.hpp" diff --git a/Storage/private/SystemAPIFile.cpp b/Connection/private/bindings/Disk.cpp similarity index 63% rename from Storage/private/SystemAPIFile.cpp rename to Connection/private/bindings/Disk.cpp index 5278d2f..caf6bdc 100644 --- a/Storage/private/SystemAPIFile.cpp +++ b/Connection/private/bindings/Disk.cpp @@ -1,10 +1,10 @@ -#include "SystemAPI.hpp" +#include "Disk.hpp" #include using namespace tp; -ualni tp::FileSystemHandle::size() { +ualni tp::LocalConnectionContext::size() { auto strm = (std::fstream*) stream; ualni out = 0; strm->seekg(0, std::ios::beg); @@ -14,41 +14,41 @@ ualni tp::FileSystemHandle::size() { return out; } -FileSystemHandle::FileSystemHandle() { +LocalConnectionContext::LocalConnectionContext() { stream = new std::fstream(); } -FileSystemHandle::~FileSystemHandle() { +LocalConnectionContext::~LocalConnectionContext() { auto strm = (std::fstream*) stream; delete strm; } -bool FileSystemHandle::isOpen() { +bool LocalConnectionContext::isOpen() { auto strm = (std::fstream*) stream; return strm->is_open(); } -void FileSystemHandle::close() { +void LocalConnectionContext::close() { auto strm = (std::fstream*) stream; strm->close(); } -void FileSystemHandle::seekp(ualni in) { +void LocalConnectionContext::seekp(ualni in) { auto strm = (std::fstream*) stream; strm->seekp(in); } -void FileSystemHandle::read(int1* in, ualni size) { +void LocalConnectionContext::read(int1* in, ualni size) { auto strm = (std::fstream*) stream; strm->read(in, size); } -void FileSystemHandle::write(const int1* in, ualni size) { +void LocalConnectionContext::write(const int1* in, ualni size) { auto strm = (std::fstream*) stream; strm->write(in, size); } -void FileSystemHandle::open(const char* path, bool read) { +void LocalConnectionContext::open(const char* path, bool read) { auto strm = (std::fstream*) stream; if (read) strm->open(path, std::ios::in | std::ios::binary | std::ios::app); diff --git a/Connection/private/bindings/Disk.hpp b/Connection/private/bindings/Disk.hpp new file mode 100644 index 0000000..02d247b --- /dev/null +++ b/Connection/private/bindings/Disk.hpp @@ -0,0 +1,17 @@ +#include "Common.hpp" + +namespace tp { + class LocalConnectionContext { + void* stream; + public: + LocalConnectionContext(); + ~LocalConnectionContext(); + void open(const char*, bool); + bool isOpen(); + void close(); + void seekp(ualni); + void read(int1*, ualni); + void write(const int1*, ualni); + ualni size(); + }; +} \ No newline at end of file diff --git a/Storage/private/SystemAPINet.cpp b/Connection/private/bindings/Network.cpp similarity index 99% rename from Storage/private/SystemAPINet.cpp rename to Connection/private/bindings/Network.cpp index 3106571..779de03 100644 --- a/Storage/private/SystemAPINet.cpp +++ b/Connection/private/bindings/Network.cpp @@ -1,4 +1,4 @@ -#include "SystemAPI.hpp" +#include "Network.hpp" #include "asio.hpp" diff --git a/Storage/public/SystemAPI.hpp b/Connection/private/bindings/Network.hpp similarity index 66% rename from Storage/public/SystemAPI.hpp rename to Connection/private/bindings/Network.hpp index ff1e681..9258c49 100644 --- a/Storage/public/SystemAPI.hpp +++ b/Connection/private/bindings/Network.hpp @@ -3,21 +3,6 @@ #include "Common.hpp" namespace tp { - class FileSystemHandle { - void* stream; - public: - FileSystemHandle(); - ~FileSystemHandle(); - void open(const char*, bool); - bool isOpen(); - void close(); - void seekp(ualni); - void read(int1*, ualni); - void write(const int1*, ualni); - ualni size(); - }; - - class ServerContext; class ClientContext; diff --git a/Connection/public/ConnectionCommon.hpp b/Connection/public/ConnectionCommon.hpp new file mode 100644 index 0000000..2e964bb --- /dev/null +++ b/Connection/public/ConnectionCommon.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include "Strings.hpp" + +namespace tp { + extern ModuleManifest gModuleConnection; +}; \ No newline at end of file diff --git a/Storage/public/LocalStorage.hpp b/Connection/public/LocalConnection.hpp similarity index 51% rename from Storage/public/LocalStorage.hpp rename to Connection/public/LocalConnection.hpp index f1cf805..552b707 100644 --- a/Storage/public/LocalStorage.hpp +++ b/Connection/public/LocalConnection.hpp @@ -1,22 +1,22 @@ #pragma once -#include "Storage.hpp" +#include "ConnectionCommon.hpp" namespace tp { - class FileSystemHandle; + class LocalConnectionContext; - class FileLocation { + class LocalConnectionLocation { String mLocation; public: - FileLocation() : mLocation("tmp") {}; - explicit FileLocation(const String& location) : mLocation(location) {} + LocalConnectionLocation() : mLocation("tmp") {}; + explicit LocalConnectionLocation(const String& location) : mLocation(location) {} void setLocation(const String& location) { mLocation = location; } [[nodiscard]] const String& getLocation() const { return mLocation; } [[nodiscard]] bool exists() const; }; - class FileConnectionType { + class LocalConnectionType { public: enum HandleType { READ, @@ -28,15 +28,15 @@ namespace tp { HandleType mHandleType; public: - FileConnectionType() : mHandleType(NONE) {} - explicit FileConnectionType(bool read) : mHandleType((HandleType) read) {} - explicit FileConnectionType(HandleType handleType) : mHandleType(handleType) {} + LocalConnectionType() : mHandleType(NONE) {} + explicit LocalConnectionType(bool read) : mHandleType((HandleType) read) {} + explicit LocalConnectionType(HandleType handleType) : mHandleType(handleType) {} [[nodiscard]] HandleType getType() const { return mHandleType; } [[nodiscard]] bool isRead() const { return mHandleType == READ; } [[nodiscard]] bool isWrite() const { return mHandleType == WRITE; } }; - class FileConnectionStatus { + class LocalConnectionStatus { public: enum Status { NONE, @@ -50,43 +50,43 @@ namespace tp { Status mStatus = NONE; public: - FileConnectionStatus() = default; + LocalConnectionStatus() = default; [[nodiscard]] Status getStatus() const { return mStatus; } void setStatus(Status status) { mStatus = status; } [[nodiscard]] bool isOpened() const { return mStatus == OPENED; } }; - class File { + class LocalConnection { typedef ualni SizeBytes; typedef ualni BytePointer; typedef int1 Byte; private: - FileSystemHandle* mHandle = nullptr; + LocalConnectionContext* mHandle = nullptr; - FileLocation mLocation; - FileConnectionType mConnectionType; - FileConnectionStatus mStatus; + LocalConnectionLocation mLocation; + LocalConnectionType mConnectionType; + LocalConnectionStatus mStatus; BytePointer mPointer = 0; public: - File() { - MODULE_SANITY_CHECK(gModuleStorage) + LocalConnection() { + MODULE_SANITY_CHECK(gModuleConnection) }; - virtual ~File() { - if (mStatus.isOpened()) File::disconnect(); + virtual ~LocalConnection() { + if (mStatus.isOpened()) LocalConnection::disconnect(); } public: - virtual bool connect(const FileLocation& location, const FileConnectionType& connectionInfo); + virtual bool connect(const LocalConnectionLocation& location, const LocalConnectionType& connectionInfo); virtual bool disconnect(); public: - virtual const FileConnectionStatus& getConnectionStatus() { return mStatus; } - virtual const FileConnectionType& getConnectionType() { return mConnectionType; } - virtual const FileLocation& getLocation() { return mLocation; } + virtual const LocalConnectionStatus& getConnectionStatus() { return mStatus; } + virtual const LocalConnectionType& getConnectionType() { return mConnectionType; } + virtual const LocalConnectionLocation& getLocation() { return mLocation; } public: virtual bool setPointer(BytePointer pointer); diff --git a/Storage/private/RemoteStorage.cpp b/Connection/public/RemoteConnection.hpp similarity index 100% rename from Storage/private/RemoteStorage.cpp rename to Connection/public/RemoteConnection.hpp diff --git a/Storage/tests/TestLocalStorage.cpp b/Connection/tests/TestLocal.cpp similarity index 53% rename from Storage/tests/TestLocalStorage.cpp rename to Connection/tests/TestLocal.cpp index b4c765d..028e9b9 100644 --- a/Storage/tests/TestLocalStorage.cpp +++ b/Connection/tests/TestLocal.cpp @@ -1,6 +1,6 @@ +#include "LocalConnection.hpp" #include "Testing.hpp" -#include "LocalStorage.hpp" using namespace tp; @@ -10,15 +10,15 @@ TEST_DEF_STATIC(Simple) { int1 dataRead[6]{}; { - File file; - file.connect(FileLocation(String("tmp2.txt")), FileConnectionType(false)); + LocalConnection file; + file.connect(LocalConnectionLocation(String("tmp2.txt")), LocalConnectionType(false)); file.writeBytes(data, 6); file.disconnect(); } { - File file; - file.connect(FileLocation(String("tmp2.txt")), FileConnectionType(true)); + LocalConnection file; + file.connect(LocalConnectionLocation(String("tmp2.txt")), LocalConnectionType(true)); file.readBytes(dataRead, 6); file.disconnect(); } @@ -28,6 +28,6 @@ TEST_DEF_STATIC(Simple) { } } -TEST_DEF(LocalStorage) { +TEST_DEF(LocalConnection) { testSimple(); } \ No newline at end of file diff --git a/Connection/tests/Tests.cpp b/Connection/tests/Tests.cpp new file mode 100644 index 0000000..6662ee9 --- /dev/null +++ b/Connection/tests/Tests.cpp @@ -0,0 +1,19 @@ + +#include "ConnectionCommon.hpp" +#include "Testing.hpp" + +void testLocalConnection(); + +int main() { + + tp::ModuleManifest* deps[] = { &tp::gModuleConnection, nullptr }; + tp::ModuleManifest testModule("ConnectionTest", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + testLocalConnection(); + + testModule.deinitialize(); +} \ No newline at end of file diff --git a/Storage/applications/CMakeLists.txt b/Storage/applications/CMakeLists.txt deleted file mode 100644 index dd0142d..0000000 --- a/Storage/applications/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ - -cmake_minimum_required(VERSION 3.2) - -project(Applications) - -file(GLOB SOURCES_CLIENT ./Client.cpp ./SystemAPI.cpp) -file(GLOB SOURCES_SERVER ./Server.cpp ./SystemAPI.cpp) - -add_executable(Client ${SOURCES_CLIENT}) -target_link_libraries(Client Storage CommandLine) - -add_executable(Server ${SOURCES_SERVER}) -target_link_libraries(Server Storage CommandLine) diff --git a/Storage/applications/Client.cpp b/Storage/applications/Client.cpp deleted file mode 100644 index 35f1c26..0000000 --- a/Storage/applications/Client.cpp +++ /dev/null @@ -1,64 +0,0 @@ -#include "SystemAPI.hpp" - -#include "Strings.hpp" - -#include - -using namespace tp; - -class CharClient { - - typedef void* (*ThreadFunction)(void *); - - Client client; - pthread_mutex_t mutex; - -public: - CharClient(int port, const char* ip) { - pthread_mutex_unlock(&mutex); - client.connect(ip, port); - } - - void start() { - // Create a new thread to handle the client - pthread_t threadId; - if (pthread_create(&threadId, nullptr, (ThreadFunction) readServerBroadcast, this)) { - printf("Failed to create thread for client\n"); - return; - } - - // Detach the thread so it can run independently - pthread_detach(threadId); - - while (true) { - const auto length = 1024; - static char message[length]; - - printf(" >> "); - fgets(message, length, stdin); - - if (String::Logic::isEqualLogic(message, "exit")) return; - - pthread_mutex_lock(&mutex); - client.write(message); - pthread_mutex_unlock(&mutex); - } - } - - static void* readServerBroadcast(CharClient* self) { - while (true) { - auto message = self->client.read(); - pthread_mutex_lock(&self->mutex); - printf("Broadcast : %s \n", message); - delete[] message; - pthread_mutex_unlock(&self->mutex); - } - return nullptr; - } -}; - -int main() { - CharClient client(5555, "127.0.0.1"); - client.start(); - return 0; -} diff --git a/Storage/applications/Server.cpp b/Storage/applications/Server.cpp deleted file mode 100644 index eea79f1..0000000 --- a/Storage/applications/Server.cpp +++ /dev/null @@ -1,92 +0,0 @@ - -#include "SystemAPI.hpp" -#include "Strings.hpp" -#include "List.hpp" - -#include - -using namespace tp; - -class ChatServer { - - struct SharedData { - List clients; - pthread_mutex_t mutex; - }; - - SharedData mSharedData; - Server server; - -public: - explicit ChatServer(int port) { - server.start(port); - } - - ~ChatServer() { - DEBUG_ASSERT(false) - } - - bool start() { - while (true) { - auto clientSocket = server.accept(); - - // add client - pthread_mutex_lock(&mSharedData.mutex); - mSharedData.clients.pushBack(clientSocket); - pthread_mutex_unlock(&mSharedData.mutex); - - // Create a new thread to handle the client - pthread_t threadId; - if (pthread_create(&threadId, nullptr, (void* (*)(void*)) handleClient, this)) { - printf("Failed to create thread for client\n"); - return false; - } - - // Detach the thread so it can run independently - pthread_detach(threadId); - } - return true; - } - - - static void* handleClient(ChatServer* self) { - // read shared data - current client id - pthread_mutex_lock(&self->mSharedData.mutex); - auto clientSocket = self->mSharedData.clients.last(); - pthread_mutex_unlock(&self->mSharedData.mutex); - - MESSAGE: - // wait for a message request - auto message = Server::read(clientSocket); - - // Broadcast to all clients - for (auto client : self->mSharedData.clients) { - Server::write(client.data(), message); - } - - auto exit = memCompare(message, "exit", 5) == 0; - - delete[] message; - - if (exit) { - // TODO : disconnect - for (auto iter : self->mSharedData.clients) { - if (clientSocket == iter.data()) { - self->mSharedData.clients.removeNode(iter.node()); - break; - } - } - } - - pthread_mutex_unlock(&self->mSharedData.mutex); - - if (exit) return nullptr; - goto MESSAGE; - } -}; - -int main() { - ChatServer server(5555); - server.start(); - return 0; -} diff --git a/Storage/private/Storage.cpp b/Storage/private/Storage.cpp deleted file mode 100644 index 197a710..0000000 --- a/Storage/private/Storage.cpp +++ /dev/null @@ -1,9 +0,0 @@ - -#include "Storage.hpp" - -static tp::ModuleManifest* sModuleDependencies[] = { - &tp::gModuleStrings, - nullptr -}; - -tp::ModuleManifest tp::gModuleStorage = ModuleManifest("Storage", nullptr, nullptr, sModuleDependencies); \ No newline at end of file diff --git a/Storage/public/RemoteStorage.hpp b/Storage/public/RemoteStorage.hpp deleted file mode 100644 index 4a1d13c..0000000 --- a/Storage/public/RemoteStorage.hpp +++ /dev/null @@ -1,17 +0,0 @@ -#pragma once - -#include "SystemAPI.hpp" - -namespace tp { - - /* - class Client : public Storage { - // same as local storage file but transfers all commands to server - }; - - class Server { - // opens local storage and transfers all client command to it - // manages multiple clients - }; - */ -} \ No newline at end of file diff --git a/Storage/public/Storage.hpp b/Storage/public/Storage.hpp deleted file mode 100644 index b2f2b87..0000000 --- a/Storage/public/Storage.hpp +++ /dev/null @@ -1,53 +0,0 @@ -#pragma once - -#include "Strings.hpp" - -namespace tp { - - extern ModuleManifest gModuleStorage; - - class StorageLocation { - public: - StorageLocation() = default; - virtual ~StorageLocation() = default; - }; - - class ConnectionType { - public: - ConnectionType() = default; - virtual ~ConnectionType() = default; - }; - - class ConnectionStatus { - public: - ConnectionStatus() = default; - virtual ~ConnectionStatus() = default; - }; - - class Storage { - typedef ualni SizeBytes; - typedef ualni BytePointer; - typedef int1 Byte; - - private: - StorageLocation mLocation; - ConnectionType mConnectionType; - ConnectionStatus mStatus; - - public: - Storage() = default; - virtual ~Storage() = default; - - public: - virtual bool connect(const StorageLocation& location, const ConnectionType& connectionInfo) = 0; - virtual bool disconnect() = 0; - virtual const ConnectionStatus& getConnectionStatus() = 0; - - public: - virtual bool readBytes(BytePointer pointer, Byte* bytes, SizeBytes size) = 0; - virtual bool writeBytes(BytePointer pointer, const Byte* bytes, SizeBytes size) = 0; - - public: - virtual SizeBytes size() = 0; - }; -}; \ No newline at end of file diff --git a/Storage/tests/Tests.cpp b/Storage/tests/Tests.cpp deleted file mode 100644 index 36f7fd5..0000000 --- a/Storage/tests/Tests.cpp +++ /dev/null @@ -1,19 +0,0 @@ - -#include "Testing.hpp" -#include "Storage.hpp" - -void testLocalStorage(); - -int main() { - - tp::ModuleManifest* deps[] = { &tp::gModuleStorage, nullptr }; - tp::ModuleManifest testModule("StorageTest", nullptr, nullptr, deps); - - if (!testModule.initialize()) { - return 1; - } - - testLocalStorage(); - - testModule.deinitialize(); -} \ No newline at end of file From 7595ae39262e9a6e2435d1ef47ab72a466d5c4a4 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 22 Jul 2023 20:32:03 +0300 Subject: [PATCH 25/68] Small changes --- CommandLine/private/CommandLine.cpp | 2 +- CommandLine/public/CommandLine.hpp | 4 +- Connection/private/LocalConnection.cpp | 14 ++--- Connection/public/ConnectionCommon.hpp | 60 +++++++++++++++++- Connection/public/LocalConnection.hpp | 84 ++++++-------------------- Connection/public/RemoteConnection.hpp | 42 +++++++++++++ Connection/tests/TestLocal.cpp | 4 +- 7 files changed, 131 insertions(+), 79 deletions(-) diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index e5743ad..d0bd51a 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -219,7 +219,7 @@ alni CommandLine::getInt(const String& id) const { auto& arg = getArg(id, Arg::I alnf CommandLine::getFloat(const String& id) const { auto& arg = getArg(id, Arg::FLOAT); return arg.mFloat.mVal; } bool CommandLine::getBool(const String& id) const { auto& arg = getArg(id, Arg::BOOL); return arg.mBool.mFlag; } const String& CommandLine::getString(const String& id) const { auto& arg = getArg(id, Arg::STR); return arg.mStr.mStr; } -const LocalConnectionLocation& CommandLine::getFile(const String& id) const { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFileLocation; } +const LocalConnection::Location& CommandLine::getFile(const String& id) const { auto& arg = getArg(id, Arg::FILE_IN); return arg.mFile.mFileLocation; } CommandLine::Arg& CommandLine::getArg(const String& id, Arg::Type type) { diff --git a/CommandLine/public/CommandLine.hpp b/CommandLine/public/CommandLine.hpp index edf049c..b0ad457 100644 --- a/CommandLine/public/CommandLine.hpp +++ b/CommandLine/public/CommandLine.hpp @@ -33,7 +33,7 @@ namespace tp { }; struct FileInputArg { - LocalConnectionLocation mFileLocation; + LocalConnection::Location mFileLocation; }; struct Arg { @@ -81,7 +81,7 @@ namespace tp { [[nodiscard]] alnf getFloat(const String& id) const; [[nodiscard]] bool getBool(const String& id) const; [[nodiscard]] const String& getString(const String& id) const; - [[nodiscard]] const LocalConnectionLocation& getFile(const String& id) const; + [[nodiscard]] const LocalConnection::Location& getFile(const String& id) const; const CommandLine& operator=(const CommandLine&) = delete; diff --git a/Connection/private/LocalConnection.cpp b/Connection/private/LocalConnection.cpp index f12995b..eb791ff 100644 --- a/Connection/private/LocalConnection.cpp +++ b/Connection/private/LocalConnection.cpp @@ -6,7 +6,7 @@ using namespace tp; -bool LocalConnectionLocation::exists() const { +bool LocalConnection::Location::exists() const { FILE* file = fopen(mLocation.read(), "r"); if (file) { // File exists, close it and return 1 @@ -16,18 +16,18 @@ bool LocalConnectionLocation::exists() const { return false; } -bool LocalConnection::connect(const LocalConnectionLocation& location, const LocalConnectionType& connectionInfo) { +bool LocalConnection::connect(const Location& location, const Type& connectionInfo) { DEBUG_ASSERT(!mStatus.isOpened()); if (mStatus.isOpened()) return false; auto handle = new LocalConnectionContext(); switch (connectionInfo.getType()) { - case LocalConnectionType::READ: + case Type::READ: handle->open(location.getLocation().read(), false); break; - case LocalConnectionType::WRITE: + case Type::WRITE: handle->open(location.getLocation().read(), true); break; @@ -36,12 +36,12 @@ bool LocalConnection::connect(const LocalConnectionLocation& location, const Loc }; if (!handle->isOpen()) { - mStatus.setStatus(LocalConnectionStatus::DENIED); + mStatus.setStatus(Status::DENIED); delete handle; return false; } - mStatus.setStatus(LocalConnectionStatus::OPENED); + mStatus.setStatus(Status::OPENED); mHandle = handle; mConnectionType = connectionInfo; return true; @@ -52,7 +52,7 @@ bool LocalConnection::disconnect() { if (!mStatus.isOpened() || !mHandle) return false; mHandle->close(); delete mHandle; - mStatus.setStatus(LocalConnectionStatus::CLOSED); + mStatus.setStatus(Status::CLOSED); return true; } diff --git a/Connection/public/ConnectionCommon.hpp b/Connection/public/ConnectionCommon.hpp index 2e964bb..ab70d62 100644 --- a/Connection/public/ConnectionCommon.hpp +++ b/Connection/public/ConnectionCommon.hpp @@ -4,4 +4,62 @@ namespace tp { extern ModuleManifest gModuleConnection; -}; \ No newline at end of file + + class Connection { + public: + typedef ualni SizeBytes; + typedef ualni BytePointer; + typedef int1 Byte; + + class Status { + public: + enum State { + NONE, + OPENED, + CLOSED, + DENIED, + INVALID, + }; + + private: + State mStatus = NONE; + + public: + Status() = default; + [[nodiscard]] State getStatus() const { return mStatus; } + void setStatus(State status) { mStatus = status; } + [[nodiscard]] bool isOpened() const { return mStatus == OPENED; } + }; + + class Type { + public: + enum State { + READ, + WRITE, + READ_WRITE, + NONE, + }; + + private: + State mHandleType = NONE; + + public: + Type() = default; + explicit Type(bool read) : mHandleType((State) read) {} + explicit Type(State handleType) : mHandleType(handleType) {} + [[nodiscard]] State getType() const { return mHandleType; } + [[nodiscard]] bool isRead() const { return mHandleType == READ; } + [[nodiscard]] bool isWrite() const { return mHandleType == WRITE; } + }; + + protected: + Status mStatus; + Type mConnectionType; + + public: + Connection() = default; + + virtual const Status& getConnectionStatus() { return mStatus; } + virtual const Type& getConnectionType() { return mConnectionType; } + }; +} \ No newline at end of file diff --git a/Connection/public/LocalConnection.hpp b/Connection/public/LocalConnection.hpp index 552b707..d8d84d1 100644 --- a/Connection/public/LocalConnection.hpp +++ b/Connection/public/LocalConnection.hpp @@ -3,73 +3,20 @@ #include "ConnectionCommon.hpp" namespace tp { - class LocalConnectionContext; - class LocalConnectionLocation { - String mLocation; + class LocalConnection : public Connection { public: - LocalConnectionLocation() : mLocation("tmp") {}; - explicit LocalConnectionLocation(const String& location) : mLocation(location) {} - void setLocation(const String& location) { mLocation = location; } - [[nodiscard]] const String& getLocation() const { return mLocation; } - [[nodiscard]] bool exists() const; - }; - - class LocalConnectionType { - public: - enum HandleType { - READ, - WRITE, - NONE, + class Location { + String mLocation; + public: + Location() : mLocation("tmp") {}; + explicit Location(const String& location) : mLocation(location) {} + void setLocation(const String& location) { mLocation = location; } + [[nodiscard]] const String& getLocation() const { return mLocation; } + [[nodiscard]] bool exists() const; }; - private: - HandleType mHandleType; - - public: - LocalConnectionType() : mHandleType(NONE) {} - explicit LocalConnectionType(bool read) : mHandleType((HandleType) read) {} - explicit LocalConnectionType(HandleType handleType) : mHandleType(handleType) {} - [[nodiscard]] HandleType getType() const { return mHandleType; } - [[nodiscard]] bool isRead() const { return mHandleType == READ; } - [[nodiscard]] bool isWrite() const { return mHandleType == WRITE; } - }; - - class LocalConnectionStatus { - public: - enum Status { - NONE, - OPENED, - CLOSED, - DENIED, - INVALID, - }; - - private: - Status mStatus = NONE; - - public: - LocalConnectionStatus() = default; - [[nodiscard]] Status getStatus() const { return mStatus; } - void setStatus(Status status) { mStatus = status; } - [[nodiscard]] bool isOpened() const { return mStatus == OPENED; } - }; - - class LocalConnection { - typedef ualni SizeBytes; - typedef ualni BytePointer; - typedef int1 Byte; - - private: - LocalConnectionContext* mHandle = nullptr; - - LocalConnectionLocation mLocation; - LocalConnectionType mConnectionType; - LocalConnectionStatus mStatus; - - BytePointer mPointer = 0; - public: LocalConnection() { MODULE_SANITY_CHECK(gModuleConnection) @@ -80,13 +27,13 @@ namespace tp { } public: - virtual bool connect(const LocalConnectionLocation& location, const LocalConnectionType& connectionInfo); + virtual bool connect(const Location& location, const Type& connectionInfo); virtual bool disconnect(); public: - virtual const LocalConnectionStatus& getConnectionStatus() { return mStatus; } - virtual const LocalConnectionType& getConnectionType() { return mConnectionType; } - virtual const LocalConnectionLocation& getLocation() { return mLocation; } + virtual const Status& getConnectionStatus() { return mStatus; } + virtual const Type& getConnectionType() { return mConnectionType; } + virtual const Location& getLocation() { return mLocation; } public: virtual bool setPointer(BytePointer pointer); @@ -95,5 +42,10 @@ namespace tp { public: virtual SizeBytes size(); + + private: + LocalConnectionContext* mHandle = nullptr; + Location mLocation; + BytePointer mPointer = 0; }; } \ No newline at end of file diff --git a/Connection/public/RemoteConnection.hpp b/Connection/public/RemoteConnection.hpp index e69de29..fd8f872 100644 --- a/Connection/public/RemoteConnection.hpp +++ b/Connection/public/RemoteConnection.hpp @@ -0,0 +1,42 @@ +#pragma once + +#include "ConnectionCommon.hpp" +#include "List.hpp" + +namespace tp { + + class RemoteConnectionContext; + + class RemoteConnection : public Connection { + public: + class Location { + ualni mId = 0; + public: + Location() = default; + }; + + public: + RemoteConnection() { + MODULE_SANITY_CHECK(gModuleConnection) + }; + + virtual ~RemoteConnection() { + if (mStatus.isOpened()) RemoteConnection::disconnect(); + } + + public: + virtual bool connect(const Location& location, const Type& connectionInfo); + virtual bool disconnect(); + + public: + virtual const Location& getLocation() { return mLocation; } + + public: + virtual bool readBytes(Byte* bytes, SizeBytes size); + virtual bool writeBytes(const Byte* bytes, SizeBytes size); + + private: + RemoteConnectionContext* mHandle = nullptr; + Location mLocation; + }; +} \ No newline at end of file diff --git a/Connection/tests/TestLocal.cpp b/Connection/tests/TestLocal.cpp index 028e9b9..0f004e6 100644 --- a/Connection/tests/TestLocal.cpp +++ b/Connection/tests/TestLocal.cpp @@ -11,14 +11,14 @@ TEST_DEF_STATIC(Simple) { { LocalConnection file; - file.connect(LocalConnectionLocation(String("tmp2.txt")), LocalConnectionType(false)); + file.connect(LocalConnection::Location(String("tmp2.txt")), LocalConnection::Type(false)); file.writeBytes(data, 6); file.disconnect(); } { LocalConnection file; - file.connect(LocalConnectionLocation(String("tmp2.txt")), LocalConnectionType(true)); + file.connect(LocalConnection::Location(String("tmp2.txt")), LocalConnection::Type(true)); file.readBytes(dataRead, 6); file.disconnect(); } From e81449eddf4f8b4648502a47f0089ebaa08dd54d Mon Sep 17 00:00:00 2001 From: Ilusha <63184036+IlyaShurupov@users.noreply.github.com> Date: Sat, 22 Jul 2023 20:36:06 +0300 Subject: [PATCH 26/68] Update cmake.yml - checkout submodules --- .github/workflows/cmake.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index b6b2020..9a2cd92 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -20,6 +20,15 @@ jobs: steps: - uses: actions/checkout@v3 + - name: Checkout submodules # checkout rest + shell: bash + run: | + # If your submodules are configured to use SSH instead of HTTPS please uncomment the following line + # git config --global url."https://github.com/".insteadOf "git@github.com:" + auth_header="$(git config --local --get http.https://github.com/.extraheader)" + git submodule sync --recursive + git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 + - name: Install LLVM run: sudo apt-get install -y llvm From 6db1406d6865278f65b7a3d3e71f6a9a8067d12d Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 23 Jul 2023 10:51:21 +0300 Subject: [PATCH 27/68] Graphics module Initial (And some more fixes embedded) --- .github/workflows/cmake.yml | 10 +- .gitmodules | 12 + Allocators/private/HeapAllocatorGlobal.cpp | 76 ++++-- Allocators/public/HeapAllocatorGlobal.hpp | 6 + CMakeLists.txt | 5 + CommandLine/tests/Tests.cpp | 1 - Externals/CMakeLists.txt | 28 +++ Externals/glew | 1 + Externals/glfw | 1 + Externals/imgui | 1 + Externals/nanovg | 1 + Graphics/CMakeLists.txt | 34 +++ Graphics/examples/Example.cpp | 274 +++++++++++++++++++++ Graphics/private/bindings/Window.cpp | 0 Graphics/public/Canvas.hpp | 0 Graphics/public/DebugGui.hpp | 0 Graphics/public/Window.hpp | 8 + Graphics/tests/tests.cpp | 3 + Strings/private/Logging.cpp | 1 - Tokenizer/public/AutomataGraph.h | 3 +- Tokenizer/tests/TestTokenizer.cpp | 1 - Utils/public/Debugging.hpp | 2 +- Utils/public/Multithreading.hpp | 19 ++ 23 files changed, 456 insertions(+), 31 deletions(-) create mode 100644 Externals/CMakeLists.txt create mode 160000 Externals/glew create mode 160000 Externals/glfw create mode 160000 Externals/imgui create mode 160000 Externals/nanovg create mode 100644 Graphics/CMakeLists.txt create mode 100644 Graphics/examples/Example.cpp create mode 100644 Graphics/private/bindings/Window.cpp create mode 100644 Graphics/public/Canvas.hpp create mode 100644 Graphics/public/DebugGui.hpp create mode 100644 Graphics/public/Window.hpp create mode 100644 Graphics/tests/tests.cpp create mode 100644 Utils/public/Multithreading.hpp diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 9a2cd92..329bff1 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -20,7 +20,7 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Checkout submodules # checkout rest + - name: Setup externals shell: bash run: | # If your submodules are configured to use SSH instead of HTTPS please uncomment the following line @@ -29,11 +29,15 @@ jobs: git submodule sync --recursive git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 - - name: Install LLVM - run: sudo apt-get install -y llvm + sudo apt-get install python3 python-is-python3 + sudo apt install libx11-dev + + cd Externals/glew/ + make extensions - name: Set LLVM Toolchain run: | + sudo apt-get install -y llvm sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 10 sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 20 diff --git a/.gitmodules b/.gitmodules index 3f056fd..7fd3b15 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,15 @@ [submodule "Externals/asio"] path = Externals/asio url = https://github.com/IlyaShurupov/asio.git +[submodule "Externals/glfw"] + path = Externals/glfw + url = https://github.com/IlyaShurupov/glfw.git +[submodule "Externals/imgui"] + path = Externals/imgui + url = https://github.com/IlyaShurupov/imgui.git +[submodule "Externals/glew"] + path = Externals/glew + url = https://github.com/IlyaShurupov/glew.git +[submodule "Externals/nanovg"] + path = Externals/nanovg + url = https://github.com/IlyaShurupov/nanovg.git diff --git a/Allocators/private/HeapAllocatorGlobal.cpp b/Allocators/private/HeapAllocatorGlobal.cpp index f74cd83..c2ea8a4 100644 --- a/Allocators/private/HeapAllocatorGlobal.cpp +++ b/Allocators/private/HeapAllocatorGlobal.cpp @@ -22,6 +22,8 @@ HeapAllocGlobal::~HeapAllocGlobal() = default; tp::MemHead* tp::HeapAllocGlobal::mEntry = nullptr; tp::ualni tp::HeapAllocGlobal::mNumAllocations = 0; +tp::Mutex tp::HeapAllocGlobal::mMutex; +bool tp::HeapAllocGlobal::mIgnore; // ----------------------- Debug Implementation ---------------------------- // // |----------------| @@ -38,7 +40,8 @@ namespace tp { struct MemHead { MemHead* mPrev; MemHead* mNext; - ualni mBlockSize; + uhalni mBlockSize; + uhalni mIgnored; #ifdef MEM_STACK_TRACE const CallStackCapture::CallStack* mCallStack; #endif @@ -69,12 +72,15 @@ void* HeapAllocGlobal::allocate(ualni aBlockSize) { auto wrap_bottom = data + aBlockSize; if (!head) { return nullptr; } + head->mBlockSize = aBlockSize; + head->mIgnored = mIgnore; // 2) Link with existing blocks + mMutex.lock(); mNumAllocations++; if (mEntry) { - DEBUG_ASSERT(!mEntry->mNext) + DEBUG_ASSERT(mEntry->mNext == nullptr) head->mNext = nullptr; head->mPrev = mEntry; mEntry->mNext = head; @@ -84,15 +90,18 @@ void* HeapAllocGlobal::allocate(ualni aBlockSize) { } mEntry = head; - // 3) Wrap fill - memSetVal(wrap_top, WRAP_SIZE, WRAP_VAL); - memSetVal(wrap_bottom, WRAP_SIZE, WRAP_VAL); - // 4) Trace the stack + // 3) Trace the stack #ifdef MEM_STACK_TRACE head->mCallStack = gCSCapture->getSnapshot(); #endif + mMutex.unlock(); + + // 4) Wrap fill + memSetVal(wrap_top, WRAP_SIZE, WRAP_VAL); + memSetVal(wrap_bottom, WRAP_SIZE, WRAP_VAL); + // 5) clear data #ifdef MEM_CLEAR_ON_ALLOC memSetVal(data, aBlockSize, CLEAR_ALLOC_VAL); @@ -102,6 +111,8 @@ void* HeapAllocGlobal::allocate(ualni aBlockSize) { } void HeapAllocGlobal::deallocate(void* aPtr) { + if (!aPtr) return; + // 1) Restore the pointers auto head = ((MemHead*)((int1*)aPtr - WRAP_SIZE)) - 1; auto wrap_top = (int1*)(head + 1); @@ -109,6 +120,7 @@ void HeapAllocGlobal::deallocate(void* aPtr) { auto wrap_bottom = data + head->mBlockSize; // 2) Unlink with blocks + mMutex.lock(); mNumAllocations--; DEBUG_ASSERT(!mEntry->mNext) if (head->mNext) head->mNext->mPrev = head->mPrev; @@ -116,34 +128,42 @@ void HeapAllocGlobal::deallocate(void* aPtr) { if (head == mEntry) { mEntry = head->mPrev; } + mMutex.unlock(); - // 3) Check the wrap - if (memCompareVal(wrap_top, WRAP_SIZE, WRAP_VAL)) { - CallStackCapture::printSnapshot(head->mCallStack); - ASSERT(!"Allocated Block Wrap Corrupted!") + if (!head->mIgnored) { + // 3) Check the wrap + if (memCompareVal(wrap_top, WRAP_SIZE, WRAP_VAL)) { + CallStackCapture::printSnapshot(head->mCallStack); + ASSERT(!"Allocated Block Wrap Corrupted!") + } + + if (memCompareVal(wrap_bottom, WRAP_SIZE, WRAP_VAL)) { + CallStackCapture::printSnapshot(head->mCallStack); + ASSERT(!"Allocated Block Wrap Corrupted!") + } + + // 4) clear data + #ifdef MEM_CLEAR_ON_ALLOC + memSetVal(data, head->mBlockSize, CLEAR_DEALLOC_VAL); + #endif } - if (memCompareVal(wrap_bottom, WRAP_SIZE, WRAP_VAL)) { - CallStackCapture::printSnapshot(head->mCallStack); - ASSERT(!"Allocated Block Wrap Corrupted!") - } - - // 4) clear data -#ifdef MEM_CLEAR_ON_ALLOC - memSetVal(data, head->mBlockSize, CLEAR_DEALLOC_VAL); -#endif - // 5) free the block free(head); } bool HeapAllocGlobal::checkLeaks() { + ualni ignoredCount = 0; + for (auto iter = mEntry; iter; iter = iter->mPrev) { + ignoredCount += iter->mIgnored; + } + // 1) Check for not deallocated memory - if (mNumAllocations) { + if (mNumAllocations && ignoredCount != mNumAllocations) { #ifdef MEM_STACK_TRACE for (auto iter = mEntry; iter; iter = iter->mPrev) { - CallStackCapture::printSnapshot(iter->mCallStack); + if (!iter->mIgnored) CallStackCapture::printSnapshot(iter->mCallStack); } #endif @@ -153,6 +173,18 @@ bool HeapAllocGlobal::checkLeaks() { return false; } +void HeapAllocGlobal::startIgnore() { + mMutex.lock(); + mIgnore = true; + mMutex.unlock(); +} + +void HeapAllocGlobal::stopIgnore() { + mMutex.lock(); + mIgnore = false; + mMutex.unlock(); +} + HeapAllocGlobal::~HeapAllocGlobal() = default; #endif diff --git a/Allocators/public/HeapAllocatorGlobal.hpp b/Allocators/public/HeapAllocatorGlobal.hpp index 18cae0e..7611531 100644 --- a/Allocators/public/HeapAllocatorGlobal.hpp +++ b/Allocators/public/HeapAllocatorGlobal.hpp @@ -1,6 +1,7 @@ #pragma once #include "Module.hpp" +#include "Multithreading.hpp" namespace tp { @@ -9,6 +10,8 @@ namespace tp { #ifdef MEM_DEBUG static ualni mNumAllocations; static struct MemHead* mEntry; + static Mutex mMutex; + static bool mIgnore; #endif public: @@ -20,6 +23,9 @@ namespace tp { static void deallocate(void* aPtr); static bool checkLeaks(); + static void startIgnore(); + static void stopIgnore(); + public: [[nodiscard]] bool checkWrap() const { return false; } void checkValid() {} diff --git a/CMakeLists.txt b/CMakeLists.txt index db1eb4e..9d883a0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,4 +18,9 @@ add_subdirectory(Allocators) add_subdirectory(Strings) add_subdirectory(Tokenizer) add_subdirectory(CommandLine) + +set(EXTERNALS ../Externals) +add_subdirectory(Externals) + add_subdirectory(Connection) +add_subdirectory(Graphics) diff --git a/CommandLine/tests/Tests.cpp b/CommandLine/tests/Tests.cpp index 89e1d0f..9322365 100644 --- a/CommandLine/tests/Tests.cpp +++ b/CommandLine/tests/Tests.cpp @@ -1,6 +1,5 @@ #include "Tests.hpp" -#include "Testing.hpp" int main() { diff --git a/Externals/CMakeLists.txt b/Externals/CMakeLists.txt new file mode 100644 index 0000000..39c80c3 --- /dev/null +++ b/Externals/CMakeLists.txt @@ -0,0 +1,28 @@ + +add_subdirectory(glew/build/cmake/) +target_compile_definitions(glew_s PUBLIC GLEW_NO_GLU) + +add_subdirectory(glfw) + +project(Imgui) +set(${PROJECT_NAME}_SOURCES + imgui/imgui.cpp + imgui/imgui_draw.cpp + imgui/imgui_tables.cpp + imgui/imgui_widgets.cpp + + imgui/backends/imgui_impl_glfw.cpp + imgui/backends/imgui_impl_opengl3.cpp + ) + +add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES}) +include_directories(${PROJECT_NAME} ./glfw/include) +target_include_directories(${PROJECT_NAME} PUBLIC ./imgui/ ./imgui/backends/) + +project(Nanovg) +set(${PROJECT_NAME}_SOURCES + nanovg/src/nanovg.c + ) + +add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_SOURCES}) +target_include_directories(${PROJECT_NAME} PUBLIC ./nanovg/src/ ./nanovg/obsolete/) diff --git a/Externals/glew b/Externals/glew new file mode 160000 index 0000000..a98195b --- /dev/null +++ b/Externals/glew @@ -0,0 +1 @@ +Subproject commit a98195b83df746202bdf5a6f92e9d4e86b497045 diff --git a/Externals/glfw b/Externals/glfw new file mode 160000 index 0000000..3eaf125 --- /dev/null +++ b/Externals/glfw @@ -0,0 +1 @@ +Subproject commit 3eaf1255b29fdf5c2895856c7be7d7185ef2b241 diff --git a/Externals/imgui b/Externals/imgui new file mode 160000 index 0000000..1109de3 --- /dev/null +++ b/Externals/imgui @@ -0,0 +1 @@ +Subproject commit 1109de38277fd2d14d4dca4c1cb8d4a2c4ff0f95 diff --git a/Externals/nanovg b/Externals/nanovg new file mode 160000 index 0000000..7544c11 --- /dev/null +++ b/Externals/nanovg @@ -0,0 +1 @@ +Subproject commit 7544c114e83db7cf67bd1c9e012349b70caacc2f diff --git a/Graphics/CMakeLists.txt b/Graphics/CMakeLists.txt new file mode 100644 index 0000000..5c7f33e --- /dev/null +++ b/Graphics/CMakeLists.txt @@ -0,0 +1,34 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Graphics) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ${EXTERNALS}/glfw/include ${EXTERNALS}/glew/include) +set(BINDINGS_LIBS glfw glew_s Imgui Nanovg) + + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings) +target_link_libraries(${PROJECT_NAME} PRIVATE ${BINDINGS_LIBS}) + +### -------------------------- Examples -------------------------- ### +add_executable(${PROJECT_NAME}Example ./examples/Example.cpp) +target_link_libraries(${PROJECT_NAME}Example ${PROJECT_NAME} ${BINDINGS_LIBS}) +target_include_directories(${PROJECT_NAME}Example PRIVATE ${BINDINGS_INCLUDE}) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp new file mode 100644 index 0000000..6b0802d --- /dev/null +++ b/Graphics/examples/Example.cpp @@ -0,0 +1,274 @@ +#include "Allocators.hpp" + +// -------- OpenGL -------- // +#include + +// -------- Window Context -------- // +#include + +// -------- Debug UI -------- // +#include +#include +#include + +// -------- Canvas -------- // +#define NANOVG_GL3_IMPLEMENTATION +//#include +//#include + +#include + +class Showoff { + class GL { + // Showoff data + GLuint vao{}; + GLuint vbo{}; + GLfloat vertices[9] = { + -0.5f, -0.5f, 0.0f, // Left vertex + 0.5f, -0.5f, 0.0f, // Right vertex + 0.0f, 0.5f, 0.0f // Top vertex + }; + + public: + GL() = default; + + void init() { + // Create a Vertex Array Object (VAO) + glGenVertexArrays(1, &vao); + glBindVertexArray(vao); + + // Create a Vertex Buffer Object (VBO) + glGenBuffers(1, &vbo); + glBindBuffer(GL_ARRAY_BUFFER, vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + + // Set up vertex attributes + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*) nullptr); + glEnableVertexAttribArray(0); + } + + void deinit() { + glDeleteBuffers(1, &vbo); + glDeleteVertexArrays(1, &vao); + } + + static void beginDraw() { + glClear(GL_COLOR_BUFFER_BIT); + glDrawArrays(GL_TRIANGLES, 0, 3); + } + + static void endDraw() { + } + }; + + class GUI { + ImGuiIO* io{}; + ImGuiContext* ctx{}; + public: + GUI() = default; + + void init(GLFWwindow* window) { + IMGUI_CHECKVERSION(); + ctx = ImGui::CreateContext(); + io = &ImGui::GetIO(); + + // Initialize ImGui with GLFW and OpenGL + ImGui_ImplGlfw_InitForOpenGL(window, true); + ImGui_ImplOpenGL3_Init("#version 330"); + } + + void deinit() { + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); + } + + void beginDraw() { + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + + // ImGui code goes here + ImGui::Begin("Window"); + ImGui::End(); + } + + void endDraw() { + ImGui::Render(); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + } + }; + + /* + class Canvas { + + NVGcontext* vg; + float width; + float height; + + public: + Canvas() = default; + + void init(int aWidth, int aHeight) { + width = aWidth; + height = aHeight; + + vg = nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES); + } + + void deinit() { + // Cleanup + nvgDeleteGL3(vg); + } + + void beginDraw() { + // Start NanoVG rendering + nvgBeginFrame(vg, width, height, 1.0); + + // Clear the screen + nvgBeginPath(vg); + nvgRect(vg, 0, 0, width, height); + nvgFillColor(vg, nvgRGBf(0.2f, 0.2f, 0.2f)); + nvgFill(vg); + + // Draw a rectangle + nvgBeginPath(vg); + nvgRect(vg, 200, 200, 300, 200); + nvgFillColor(vg, nvgRGBf(0.8f, 0.4f, 0.1f)); + nvgFill(vg); + + // End NanoVG rendering + nvgEndFrame(vg); + } + + void endDraw() { + // End NanoVG rendering + nvgEndFrame(vg); + } + }; + */ + +public: + Showoff() = default; + + void init(GLFWwindow* window, int aWidth, int aHeight) { + gui.init(window); + gl.init(); + // canvas.init(aWidth, aHeight); + } + + void deinit() { + gui.deinit(); + gl.deinit(); + // canvas.deinit(); + } + + void draw() { + gl.beginDraw(); + // canvas.beginDraw(); + gui.beginDraw(); + gui.endDraw(); + // canvas.endDraw(); + gl.endDraw(); + } + +private: + GUI gui{}; + GL gl{}; + // Canvas canvas{}; +}; + +class Window { + Window(int width, int height, const char* title) { + // Create a window and OpenGL context + window = glfwCreateWindow(width, height, title, nullptr, nullptr); + if (!window) { + printf("Failed to create GLFW window\n"); + return; + } + + glfwMakeContextCurrent(window); + + // Initialize GLEW + if (glewInit() != GLEW_OK) { + printf("Failed to initialize GLEW\n"); + return; + } + + showoff.init(window, width, height); + } + + ~Window() { + showoff.deinit(); + glfwDestroyWindow(window); + } + +public: + + static Window* createWindow(int width, int height, const char* title) { + static int count = 1; + if (!count) { + printf("Window class is a singleton\n"); + return nullptr; + } + count--; + + // Initialize GLFW + if (!glfwInit()) { + printf("Failed to initialize GLFW\n"); + return nullptr; + } + + // Set the GLFW error callback + glfwSetErrorCallback([] (int error, const char* description) { + printf("GLFW Error: %i %s\n", error, description); + }); + + return new Window(width, height, title); + } + + static void destroyWindow(Window* window) { + delete window; + glfwTerminate(); + } + +public: + void renderLoop() { + while (!glfwWindowShouldClose(window)) { + + showoff.draw(); + + // Swap buffers and poll events + glfwSwapBuffers(window); + glfwPollEvents(); + } + } + +private: + GLFWwindow* window; + Showoff showoff; +}; + + +int main() { + tp::ModuleManifest* deps[] = { &tp::gModuleAllocators, nullptr }; + tp::ModuleManifest testModule("Example", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + { + //tp::HeapAllocGlobal::startIgnore(); + auto window = Window::createWindow(800, 600, "Window 1"); + //tp::HeapAllocGlobal::stopIgnore(); + + if (window) { + window->renderLoop(); + } + + Window::destroyWindow(window); + } + + testModule.deinitialize(); +} diff --git a/Graphics/private/bindings/Window.cpp b/Graphics/private/bindings/Window.cpp new file mode 100644 index 0000000..e69de29 diff --git a/Graphics/public/Canvas.hpp b/Graphics/public/Canvas.hpp new file mode 100644 index 0000000..e69de29 diff --git a/Graphics/public/DebugGui.hpp b/Graphics/public/DebugGui.hpp new file mode 100644 index 0000000..e69de29 diff --git a/Graphics/public/Window.hpp b/Graphics/public/Window.hpp new file mode 100644 index 0000000..2645460 --- /dev/null +++ b/Graphics/public/Window.hpp @@ -0,0 +1,8 @@ +// +// Created by ilusha on 22.07.23. +// + +#ifndef TYPES_WINDOW_HPP +#define TYPES_WINDOW_HPP + +#endif//TYPES_WINDOW_HPP diff --git a/Graphics/tests/tests.cpp b/Graphics/tests/tests.cpp new file mode 100644 index 0000000..560e551 --- /dev/null +++ b/Graphics/tests/tests.cpp @@ -0,0 +1,3 @@ + int main() { + + } \ No newline at end of file diff --git a/Strings/private/Logging.cpp b/Strings/private/Logging.cpp index 17c3c21..f55f22b 100644 --- a/Strings/private/Logging.cpp +++ b/Strings/private/Logging.cpp @@ -1,6 +1,5 @@ #include "Logging.hpp" -#include "Allocators.hpp" #include diff --git a/Tokenizer/public/AutomataGraph.h b/Tokenizer/public/AutomataGraph.h index 23c4aec..3913535 100644 --- a/Tokenizer/public/AutomataGraph.h +++ b/Tokenizer/public/AutomataGraph.h @@ -222,7 +222,6 @@ namespace tp { // all NFA states that are reachable from initial DFA State for specific symbol in alphabet struct DState { - struct DTransition { DState* state = nullptr; tAlphabetType accepting_code; @@ -231,7 +230,7 @@ namespace tp { List nStates; List transitions; - Vertex* dVertex = nullptr; // relevant DFA vertex + Vertex* dVertex= nullptr; // relevant DFA vertex #ifdef ENV_BUILD_DEBUG ualni debug_idx = 0; diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp index d6b40a1..4fd38ae 100644 --- a/Tokenizer/tests/TestTokenizer.cpp +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -1,4 +1,3 @@ - #include "Testing.hpp" #include "Tokenizer.hpp" #include diff --git a/Utils/public/Debugging.hpp b/Utils/public/Debugging.hpp index 1378c58..5444ae6 100644 --- a/Utils/public/Debugging.hpp +++ b/Utils/public/Debugging.hpp @@ -3,7 +3,7 @@ #include "Environment.hpp" #include "Map.hpp" -#define MAX_CALL_DEPTH_CAPTURE 16 +#define MAX_CALL_DEPTH_CAPTURE 128 #define MAX_CALL_CAPTURES_MEM_SIZE_MB 16 #define MAX_DEBUG_INFO_LEN 63 #define FRAMES_TO_SKIP_START 2 diff --git a/Utils/public/Multithreading.hpp b/Utils/public/Multithreading.hpp new file mode 100644 index 0000000..779914d --- /dev/null +++ b/Utils/public/Multithreading.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include + +namespace tp { + class Mutex { + pthread_mutex_t mMutex {}; + public: + Mutex() = default; + + void lock() { + pthread_mutex_lock(&mMutex); + } + + void unlock() { + pthread_mutex_unlock(&mMutex); + } + }; +} \ No newline at end of file From c4a7f91d56d1ac851a704b57be52b255570396a2 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 23 Jul 2023 15:26:18 +0300 Subject: [PATCH 28/68] New placement header --- Allocators/public/Allocators.hpp | 3 --- Allocators/public/NewPlacement.hpp | 6 ++++++ CommandLine/private/CmdLineInterpreter.cpp | 2 ++ CommandLine/private/CommandLine.cpp | 1 + CommandLine/tests/TestCommandLine.cpp | 2 ++ CommandLine/tests/TestInterpreter.cpp | 2 ++ CommandLine/tests/Tests.cpp | 2 +- Connection/private/LocalConnection.cpp | 2 ++ Connection/tests/TestLocal.cpp | 2 ++ Containers/tests/Buffer2DTest.cpp | 1 + Containers/tests/BufferTest.cpp | 1 + Containers/tests/ListTest.cpp | 1 + Containers/tests/MapTest.cpp | 1 + Containers/tests/TreeTest.cpp | 1 + Strings/private/Logging.cpp | 1 + Strings/tests/TestsStrings.cpp | 1 + Strings/tests/TestsStringsLogic.cpp | 1 + Tokenizer/tests/TestTokenizer.cpp | 2 ++ 18 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 Allocators/public/NewPlacement.hpp diff --git a/Allocators/public/Allocators.hpp b/Allocators/public/Allocators.hpp index 9cb8b48..0283c52 100644 --- a/Allocators/public/Allocators.hpp +++ b/Allocators/public/Allocators.hpp @@ -11,9 +11,6 @@ namespace tp { extern ModuleManifest gModuleAllocators; } -inline void* operator new(std::size_t aSize, void* aWhere) noexcept { return aWhere; } -inline void* operator new[](std::size_t aSize, void* aWhere) noexcept { return aWhere; } - void* operator new(std::size_t aSize); void* operator new[](std::size_t aSize); void operator delete(void* aPtr) noexcept; diff --git a/Allocators/public/NewPlacement.hpp b/Allocators/public/NewPlacement.hpp new file mode 100644 index 0000000..c76af8f --- /dev/null +++ b/Allocators/public/NewPlacement.hpp @@ -0,0 +1,6 @@ +#pragma once + +#include "Common.hpp" + +inline void* operator new(std::size_t aSize, void* aWhere) noexcept { return aWhere; } +inline void* operator new[](std::size_t aSize, void* aWhere) noexcept { return aWhere; } diff --git a/CommandLine/private/CmdLineInterpreter.cpp b/CommandLine/private/CmdLineInterpreter.cpp index d3b0e40..e7b6cca 100644 --- a/CommandLine/private/CmdLineInterpreter.cpp +++ b/CommandLine/private/CmdLineInterpreter.cpp @@ -1,3 +1,5 @@ +#include "NewPlacement.hpp" + #include "CmdLineInterpreter.hpp" #define MAX_LINE_LENGTH 1024 diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index d0bd51a..f937e2a 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "CommandLine.hpp" diff --git a/CommandLine/tests/TestCommandLine.cpp b/CommandLine/tests/TestCommandLine.cpp index a6ccd55..bbc5ceb 100644 --- a/CommandLine/tests/TestCommandLine.cpp +++ b/CommandLine/tests/TestCommandLine.cpp @@ -1,3 +1,5 @@ +#include "NewPlacement.hpp" + #include "Tests.hpp" using namespace tp; diff --git a/CommandLine/tests/TestInterpreter.cpp b/CommandLine/tests/TestInterpreter.cpp index eb00474..c32777f 100644 --- a/CommandLine/tests/TestInterpreter.cpp +++ b/CommandLine/tests/TestInterpreter.cpp @@ -1,3 +1,5 @@ +#include "NewPlacement.hpp" + #include "Tests.hpp" #include "CmdLineInterpreter.hpp" diff --git a/CommandLine/tests/Tests.cpp b/CommandLine/tests/Tests.cpp index 9322365..81b3595 100644 --- a/CommandLine/tests/Tests.cpp +++ b/CommandLine/tests/Tests.cpp @@ -1,7 +1,7 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" - int main() { tp::ModuleManifest* deps[] = { &tp::gModuleUtils, &tp::gModuleTokenizer, nullptr }; diff --git a/Connection/private/LocalConnection.cpp b/Connection/private/LocalConnection.cpp index eb791ff..cd6f90c 100644 --- a/Connection/private/LocalConnection.cpp +++ b/Connection/private/LocalConnection.cpp @@ -1,3 +1,5 @@ +#include "NewPlacement.hpp" + #include "LocalConnection.hpp" #include "bindings/Disk.hpp" diff --git a/Connection/tests/TestLocal.cpp b/Connection/tests/TestLocal.cpp index 0f004e6..0732de4 100644 --- a/Connection/tests/TestLocal.cpp +++ b/Connection/tests/TestLocal.cpp @@ -1,4 +1,6 @@ +#include "NewPlacement.hpp" + #include "LocalConnection.hpp" #include "Testing.hpp" diff --git a/Containers/tests/Buffer2DTest.cpp b/Containers/tests/Buffer2DTest.cpp index 5a4804a..5afe95b 100644 --- a/Containers/tests/Buffer2DTest.cpp +++ b/Containers/tests/Buffer2DTest.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "Testing.hpp" diff --git a/Containers/tests/BufferTest.cpp b/Containers/tests/BufferTest.cpp index 9c485a2..a9f1adc 100644 --- a/Containers/tests/BufferTest.cpp +++ b/Containers/tests/BufferTest.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "Buffer.hpp" diff --git a/Containers/tests/ListTest.cpp b/Containers/tests/ListTest.cpp index 69dfc07..e23deb4 100644 --- a/Containers/tests/ListTest.cpp +++ b/Containers/tests/ListTest.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "Testing.hpp" diff --git a/Containers/tests/MapTest.cpp b/Containers/tests/MapTest.cpp index f0cccbb..d5ce1f7 100644 --- a/Containers/tests/MapTest.cpp +++ b/Containers/tests/MapTest.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "Testing.hpp" diff --git a/Containers/tests/TreeTest.cpp b/Containers/tests/TreeTest.cpp index 561e410..5665342 100644 --- a/Containers/tests/TreeTest.cpp +++ b/Containers/tests/TreeTest.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "Tree.hpp" diff --git a/Strings/private/Logging.cpp b/Strings/private/Logging.cpp index f55f22b..34ec6df 100644 --- a/Strings/private/Logging.cpp +++ b/Strings/private/Logging.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Logging.hpp" diff --git a/Strings/tests/TestsStrings.cpp b/Strings/tests/TestsStrings.cpp index 1e8db8d..70f29cb 100644 --- a/Strings/tests/TestsStrings.cpp +++ b/Strings/tests/TestsStrings.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "Strings.hpp" diff --git a/Strings/tests/TestsStringsLogic.cpp b/Strings/tests/TestsStringsLogic.cpp index 231a790..747f2ab 100644 --- a/Strings/tests/TestsStringsLogic.cpp +++ b/Strings/tests/TestsStringsLogic.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Tests.hpp" #include "StringLogic.hpp" diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp index 4fd38ae..fd53e5d 100644 --- a/Tokenizer/tests/TestTokenizer.cpp +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -1,3 +1,5 @@ +#include "NewPlacement.hpp" + #include "Testing.hpp" #include "Tokenizer.hpp" #include From 3770c72ec0bdaa308c287373d38eeab247ae0db3 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 23 Jul 2023 15:31:06 +0300 Subject: [PATCH 29/68] Adding nanovg --- Graphics/examples/Example.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp index 6b0802d..c151f86 100644 --- a/Graphics/examples/Example.cpp +++ b/Graphics/examples/Example.cpp @@ -13,8 +13,8 @@ // -------- Canvas -------- // #define NANOVG_GL3_IMPLEMENTATION -//#include -//#include +#include +#include #include @@ -99,7 +99,7 @@ class Showoff { } }; - /* + class Canvas { NVGcontext* vg; @@ -146,7 +146,7 @@ class Showoff { nvgEndFrame(vg); } }; - */ + public: Showoff() = default; @@ -154,28 +154,28 @@ public: void init(GLFWwindow* window, int aWidth, int aHeight) { gui.init(window); gl.init(); - // canvas.init(aWidth, aHeight); + canvas.init(aWidth, aHeight); } void deinit() { gui.deinit(); gl.deinit(); - // canvas.deinit(); + canvas.deinit(); } void draw() { gl.beginDraw(); - // canvas.beginDraw(); + canvas.beginDraw(); gui.beginDraw(); gui.endDraw(); - // canvas.endDraw(); + canvas.endDraw(); gl.endDraw(); } private: GUI gui{}; GL gl{}; - // Canvas canvas{}; + Canvas canvas{}; }; class Window { @@ -259,9 +259,9 @@ int main() { } { - //tp::HeapAllocGlobal::startIgnore(); + tp::HeapAllocGlobal::startIgnore(); auto window = Window::createWindow(800, 600, "Window 1"); - //tp::HeapAllocGlobal::stopIgnore(); + tp::HeapAllocGlobal::stopIgnore(); if (window) { window->renderLoop(); From e9c6a97a073cac7ec049e46ffafdadda072624c7 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 23 Jul 2023 16:50:51 +0300 Subject: [PATCH 30/68] Reorganize a little --- Graphics/examples/Example.cpp | 255 +----------------------- Graphics/private/bindings/Graphics.cpp | 262 +++++++++++++++++++++++++ Graphics/private/bindings/Window.cpp | 0 Graphics/public/Canvas.hpp | 0 Graphics/public/DebugGui.hpp | 0 Graphics/public/Graphics.hpp | 77 ++++++++ Graphics/public/Window.hpp | 8 - 7 files changed, 342 insertions(+), 260 deletions(-) create mode 100644 Graphics/private/bindings/Graphics.cpp delete mode 100644 Graphics/private/bindings/Window.cpp delete mode 100644 Graphics/public/Canvas.hpp delete mode 100644 Graphics/public/DebugGui.hpp create mode 100644 Graphics/public/Graphics.hpp delete mode 100644 Graphics/public/Window.hpp diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp index c151f86..9113156 100644 --- a/Graphics/examples/Example.cpp +++ b/Graphics/examples/Example.cpp @@ -1,254 +1,5 @@ -#include "Allocators.hpp" - -// -------- OpenGL -------- // -#include - -// -------- Window Context -------- // -#include - -// -------- Debug UI -------- // -#include -#include -#include - -// -------- Canvas -------- // -#define NANOVG_GL3_IMPLEMENTATION -#include -#include - -#include - -class Showoff { - class GL { - // Showoff data - GLuint vao{}; - GLuint vbo{}; - GLfloat vertices[9] = { - -0.5f, -0.5f, 0.0f, // Left vertex - 0.5f, -0.5f, 0.0f, // Right vertex - 0.0f, 0.5f, 0.0f // Top vertex - }; - - public: - GL() = default; - - void init() { - // Create a Vertex Array Object (VAO) - glGenVertexArrays(1, &vao); - glBindVertexArray(vao); - - // Create a Vertex Buffer Object (VBO) - glGenBuffers(1, &vbo); - glBindBuffer(GL_ARRAY_BUFFER, vbo); - glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - - // Set up vertex attributes - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*) nullptr); - glEnableVertexAttribArray(0); - } - - void deinit() { - glDeleteBuffers(1, &vbo); - glDeleteVertexArrays(1, &vao); - } - - static void beginDraw() { - glClear(GL_COLOR_BUFFER_BIT); - glDrawArrays(GL_TRIANGLES, 0, 3); - } - - static void endDraw() { - } - }; - - class GUI { - ImGuiIO* io{}; - ImGuiContext* ctx{}; - public: - GUI() = default; - - void init(GLFWwindow* window) { - IMGUI_CHECKVERSION(); - ctx = ImGui::CreateContext(); - io = &ImGui::GetIO(); - - // Initialize ImGui with GLFW and OpenGL - ImGui_ImplGlfw_InitForOpenGL(window, true); - ImGui_ImplOpenGL3_Init("#version 330"); - } - - void deinit() { - ImGui_ImplOpenGL3_Shutdown(); - ImGui_ImplGlfw_Shutdown(); - ImGui::DestroyContext(); - } - - void beginDraw() { - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplGlfw_NewFrame(); - ImGui::NewFrame(); - - // ImGui code goes here - ImGui::Begin("Window"); - ImGui::End(); - } - - void endDraw() { - ImGui::Render(); - ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); - } - }; - - - class Canvas { - - NVGcontext* vg; - float width; - float height; - - public: - Canvas() = default; - - void init(int aWidth, int aHeight) { - width = aWidth; - height = aHeight; - - vg = nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES); - } - - void deinit() { - // Cleanup - nvgDeleteGL3(vg); - } - - void beginDraw() { - // Start NanoVG rendering - nvgBeginFrame(vg, width, height, 1.0); - - // Clear the screen - nvgBeginPath(vg); - nvgRect(vg, 0, 0, width, height); - nvgFillColor(vg, nvgRGBf(0.2f, 0.2f, 0.2f)); - nvgFill(vg); - - // Draw a rectangle - nvgBeginPath(vg); - nvgRect(vg, 200, 200, 300, 200); - nvgFillColor(vg, nvgRGBf(0.8f, 0.4f, 0.1f)); - nvgFill(vg); - - // End NanoVG rendering - nvgEndFrame(vg); - } - - void endDraw() { - // End NanoVG rendering - nvgEndFrame(vg); - } - }; - - -public: - Showoff() = default; - - void init(GLFWwindow* window, int aWidth, int aHeight) { - gui.init(window); - gl.init(); - canvas.init(aWidth, aHeight); - } - - void deinit() { - gui.deinit(); - gl.deinit(); - canvas.deinit(); - } - - void draw() { - gl.beginDraw(); - canvas.beginDraw(); - gui.beginDraw(); - gui.endDraw(); - canvas.endDraw(); - gl.endDraw(); - } - -private: - GUI gui{}; - GL gl{}; - Canvas canvas{}; -}; - -class Window { - Window(int width, int height, const char* title) { - // Create a window and OpenGL context - window = glfwCreateWindow(width, height, title, nullptr, nullptr); - if (!window) { - printf("Failed to create GLFW window\n"); - return; - } - - glfwMakeContextCurrent(window); - - // Initialize GLEW - if (glewInit() != GLEW_OK) { - printf("Failed to initialize GLEW\n"); - return; - } - - showoff.init(window, width, height); - } - - ~Window() { - showoff.deinit(); - glfwDestroyWindow(window); - } - -public: - - static Window* createWindow(int width, int height, const char* title) { - static int count = 1; - if (!count) { - printf("Window class is a singleton\n"); - return nullptr; - } - count--; - - // Initialize GLFW - if (!glfwInit()) { - printf("Failed to initialize GLFW\n"); - return nullptr; - } - - // Set the GLFW error callback - glfwSetErrorCallback([] (int error, const char* description) { - printf("GLFW Error: %i %s\n", error, description); - }); - - return new Window(width, height, title); - } - - static void destroyWindow(Window* window) { - delete window; - glfwTerminate(); - } - -public: - void renderLoop() { - while (!glfwWindowShouldClose(window)) { - - showoff.draw(); - - // Swap buffers and poll events - glfwSwapBuffers(window); - glfwPollEvents(); - } - } - -private: - GLFWwindow* window; - Showoff showoff; -}; +#include "Graphics.hpp" int main() { tp::ModuleManifest* deps[] = { &tp::gModuleAllocators, nullptr }; @@ -260,14 +11,14 @@ int main() { { tp::HeapAllocGlobal::startIgnore(); - auto window = Window::createWindow(800, 600, "Window 1"); + auto window = tp::Window::createWindow(800, 600, "Window 1"); tp::HeapAllocGlobal::stopIgnore(); if (window) { window->renderLoop(); } - Window::destroyWindow(window); + tp::Window::destroyWindow(window); } testModule.deinitialize(); diff --git a/Graphics/private/bindings/Graphics.cpp b/Graphics/private/bindings/Graphics.cpp new file mode 100644 index 0000000..43dad69 --- /dev/null +++ b/Graphics/private/bindings/Graphics.cpp @@ -0,0 +1,262 @@ +#include "Graphics.hpp" + +#include "Allocators.hpp" + +// -------- OpenGL -------- // +#include + +// -------- Window Context -------- // +#include + +// -------- Debug UI -------- // +#include +#include +#include + +// -------- Canvas -------- // +#define NANOVG_GL3_IMPLEMENTATION +#include +#include + +#include + +namespace tp { + + class ShowoffGlContext { + public: + // Showoff data + GLuint vao{}; + GLuint vbo{}; + GLfloat vertices[9] = { + -0.0f, -0.0f, 0.0f, // Left vertex + 1.0f, 0.0f, 0.0f, // Right vertex + 0.5f, 1.0f, 0.0f // Top vertex + }; + }; + + class ShowoffGUIContext { + public: + ImGuiIO* io{}; + ImGuiContext* ctx{}; + }; + + class ShowoffCanvasContext { + public: + NVGcontext* vg; + }; + + class WindowContext { + friend Showoff::GL; + friend Showoff::GUI; + friend Showoff::Canvas; + public: + GLFWwindow* window; + }; +} + +using namespace tp; + +Showoff::GL::GL() { + mContext = new ShowoffGlContext(); +} + +Showoff::GL::~GL() { + delete mContext; +} + +void Showoff::GL::init() { + // Create a Vertex Array Object (VAO) + glGenVertexArrays(1, &mContext->vao); + glBindVertexArray(mContext->vao); + + // Create a Vertex Buffer Object (VBO) + glGenBuffers(1, &mContext->vbo); + glBindBuffer(GL_ARRAY_BUFFER, mContext->vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(mContext->vertices), mContext->vertices, GL_STATIC_DRAW); + + // Set up vertex attributes + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*) nullptr); + glEnableVertexAttribArray(0); +} + +void Showoff::GL::deinit() { + glDeleteBuffers(1, &mContext->vbo); + glDeleteVertexArrays(1, &mContext->vao); +} + +void Showoff::GL::beginDraw() { + glClear(GL_COLOR_BUFFER_BIT); +} + +void Showoff::GL::endDraw() { + glDrawArrays(GL_TRIANGLES, 0, 3); +} + +Showoff::GUI::GUI() { + mContext = new ShowoffGUIContext(); +} + +Showoff::GUI::~GUI() { + delete mContext; +} + +void Showoff::GUI::init(Window* window) { + IMGUI_CHECKVERSION(); + mContext->ctx = ImGui::CreateContext(); + mContext->io = &ImGui::GetIO(); + + // Initialize ImGui with GLFW and OpenGL + ImGui_ImplGlfw_InitForOpenGL(window->getContext()->window, true); + ImGui_ImplOpenGL3_Init("#version 330"); +} + +void Showoff::GUI::deinit() { + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); +} + +void Showoff::GUI::beginDraw() { + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + + // ImGui code goes here + ImGui::Begin("Window"); + ImGui::End(); +} + +void Showoff::GUI::endDraw() { + ImGui::Render(); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +} + +Showoff::Canvas::Canvas() { + mContext = new ShowoffCanvasContext(); +} + +Showoff::Canvas::~Canvas() { + delete mContext; +} + +void Showoff::Canvas::init() { + mContext->vg = nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES); +} + +void Showoff::Canvas::deinit() { + // Cleanup + nvgDeleteGL3(mContext->vg); +} + +void Showoff::Canvas::beginDraw() { + auto width = 600; + auto height = 600; + + // Start NanoVG rendering + nvgBeginFrame(mContext->vg, width, height, 1.0); + + // Draw a rectangle + nvgBeginPath(mContext->vg); + nvgRect(mContext->vg, 50, 50, 50, 50); + nvgFillColor(mContext->vg, nvgRGBf(0.8f, 0.4f, 0.1f)); + nvgFill(mContext->vg); + + // End NanoVG rendering + nvgEndFrame(mContext->vg); +} + +void Showoff::Canvas::endDraw() { + // End NanoVG rendering + nvgEndFrame(mContext->vg); +} + + +void Showoff::init(Window* window) { + gl.init(); + gui.init(window); + canvas.init(); +} + +void Showoff::deinit() { + canvas.deinit(); + gui.deinit(); + gl.deinit(); +} + +void Showoff::draw() { + gl.beginDraw(); + canvas.beginDraw(); + gui.beginDraw(); + + gl.endDraw(); + canvas.endDraw(); + gui.endDraw(); +} + +Window::Window(int width, int height, const char* title) { + mContext = new WindowContext(); + + // Create a window and OpenGL context + mContext->window = glfwCreateWindow(width, height, title, nullptr, nullptr); + if (!mContext->window) { + printf("Failed to create GLFW window\n"); + return; + } + + glfwMakeContextCurrent(mContext->window); + + // Initialize GLEW + if (glewInit() != GLEW_OK) { + printf("Failed to initialize GLEW\n"); + return; + } + + showoff.init(this); +} + +Window::~Window() { + showoff.deinit(); + glfwDestroyWindow(mContext->window); + delete mContext; +} + + +Window* Window::createWindow(int width, int height, const char* title) { + static int count = 1; + if (!count) { + printf("Window class is a singleton\n"); + return nullptr; + } + count--; + + // Initialize GLFW + if (!glfwInit()) { + printf("Failed to initialize GLFW\n"); + return nullptr; + } + + // Set the GLFW error callback + glfwSetErrorCallback([] (int error, const char* description) { + printf("GLFW Error: %i %s\n", error, description); + }); + + return new Window(width, height, title); +} + +void Window::destroyWindow(Window* window) { + delete window; + glfwTerminate(); +} + +void Window::renderLoop() { + while (!glfwWindowShouldClose(mContext->window)) { + + showoff.draw(); + + // Swap buffers and poll events + glfwSwapBuffers(mContext->window); + glfwPollEvents(); + } +} + +WindowContext* Window::getContext() { return mContext; } \ No newline at end of file diff --git a/Graphics/private/bindings/Window.cpp b/Graphics/private/bindings/Window.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Graphics/public/Canvas.hpp b/Graphics/public/Canvas.hpp deleted file mode 100644 index e69de29..0000000 diff --git a/Graphics/public/DebugGui.hpp b/Graphics/public/DebugGui.hpp deleted file mode 100644 index e69de29..0000000 diff --git a/Graphics/public/Graphics.hpp b/Graphics/public/Graphics.hpp new file mode 100644 index 0000000..8a4b294 --- /dev/null +++ b/Graphics/public/Graphics.hpp @@ -0,0 +1,77 @@ +#include "Strings.hpp" + +namespace tp { + + class ShowoffGlContext; + class ShowoffGUIContext; + class ShowoffCanvasContext; + + class Window; + class WindowContext; + + class Showoff { + public: + class GL { + ShowoffGlContext* mContext; + public: + GL(); + ~GL(); + + void init(); + void deinit(); + static void beginDraw(); + static void endDraw(); + }; + + class GUI { + ShowoffGUIContext* mContext; + public: + GUI(); + ~GUI(); + + void init(Window* window); + void deinit(); + void beginDraw(); + void endDraw(); + }; + + class Canvas { + ShowoffCanvasContext* mContext; + public: + Canvas(); + ~Canvas(); + + void init(); + void deinit(); + void beginDraw(); + void endDraw(); + }; + + public: + Showoff() = default; + void init(Window* window); + void deinit(); + void draw(); + + private: + GUI gui; + GL gl; + Canvas canvas; + }; + + class Window { + Window(int width, int height, const char* title); + ~Window(); + + public: + static Window* createWindow(int width, int height, const char* title); + static void destroyWindow(Window* window); + + public: + void renderLoop(); + WindowContext* getContext(); + private: + WindowContext* mContext; + Showoff showoff; + }; +} \ No newline at end of file diff --git a/Graphics/public/Window.hpp b/Graphics/public/Window.hpp deleted file mode 100644 index 2645460..0000000 --- a/Graphics/public/Window.hpp +++ /dev/null @@ -1,8 +0,0 @@ -// -// Created by ilusha on 22.07.23. -// - -#ifndef TYPES_WINDOW_HPP -#define TYPES_WINDOW_HPP - -#endif//TYPES_WINDOW_HPP From 3a68e70f03a61024f811a9d73b8f6eadc2478fa5 Mon Sep 17 00:00:00 2001 From: Ilusha <63184036+IlyaShurupov@users.noreply.github.com> Date: Sun, 23 Jul 2023 16:54:20 +0300 Subject: [PATCH 31/68] Update cmake.yml to build Graphics --- .github/workflows/cmake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 329bff1..23941d3 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -30,7 +30,7 @@ jobs: git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 sudo apt-get install python3 python-is-python3 - sudo apt install libx11-dev + sudo apt-get install -y libx11-dev libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev cd Externals/glew/ make extensions From 5f186164a08c71bbc299d0142558927ecda5658a Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 23 Jul 2023 22:11:14 +0300 Subject: [PATCH 32/68] Graphics Animations & Renaming --- Graphics/CMakeLists.txt | 2 +- Graphics/examples/Example.cpp | 4 +- Graphics/private/Animations.cpp | 104 ++++++++ Graphics/private/GraphicsCommon.cpp | 6 + Graphics/private/bindings/Canvas.cpp | 59 +++++ Graphics/private/bindings/DebugGUI.cpp | 57 +++++ Graphics/private/bindings/Graphics.cpp | 262 -------------------- Graphics/private/bindings/Window.cpp | 150 +++++++++++ Graphics/private/bindings/WindowContext.hpp | 16 ++ Graphics/public/Animations.hpp | 53 ++++ Graphics/public/Graphics.hpp | 81 +++--- Graphics/public/GraphicsCommon.hpp | 10 + Graphics/public/Keycodes.hpp | 166 +++++++++++++ Graphics/public/Window.hpp | 39 +++ TODO | 27 +- 15 files changed, 718 insertions(+), 318 deletions(-) create mode 100644 Graphics/private/Animations.cpp create mode 100644 Graphics/private/GraphicsCommon.cpp create mode 100644 Graphics/private/bindings/Canvas.cpp create mode 100644 Graphics/private/bindings/DebugGUI.cpp delete mode 100644 Graphics/private/bindings/Graphics.cpp create mode 100644 Graphics/private/bindings/Window.cpp create mode 100644 Graphics/private/bindings/WindowContext.hpp create mode 100644 Graphics/public/Animations.hpp create mode 100644 Graphics/public/GraphicsCommon.hpp create mode 100644 Graphics/public/Keycodes.hpp create mode 100644 Graphics/public/Window.hpp diff --git a/Graphics/CMakeLists.txt b/Graphics/CMakeLists.txt index 5c7f33e..73c6d45 100644 --- a/Graphics/CMakeLists.txt +++ b/Graphics/CMakeLists.txt @@ -16,7 +16,7 @@ file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) -target_link_libraries(${PROJECT_NAME} PUBLIC Strings) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math Utils) target_link_libraries(${PROJECT_NAME} PRIVATE ${BINDINGS_LIBS}) ### -------------------------- Examples -------------------------- ### diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp index 9113156..4505870 100644 --- a/Graphics/examples/Example.cpp +++ b/Graphics/examples/Example.cpp @@ -1,8 +1,8 @@ -#include "Graphics.hpp" +#include "Window.hpp" int main() { - tp::ModuleManifest* deps[] = { &tp::gModuleAllocators, nullptr }; + tp::ModuleManifest* deps[] = { &tp::gModuleGraphics, nullptr }; tp::ModuleManifest testModule("Example", nullptr, nullptr, deps); if (!testModule.initialize()) { diff --git a/Graphics/private/Animations.cpp b/Graphics/private/Animations.cpp new file mode 100644 index 0000000..20d4e92 --- /dev/null +++ b/Graphics/private/Animations.cpp @@ -0,0 +1,104 @@ + +#include "Animations.hpp" + +using namespace tp; + +bool AnimValue::gInTransition = false; + +halnf AnimValue::interpolate() const { + if (!mTimeAnim) { + return mVal; + } + + auto dt = gCurrentTime - mTimeStart; + if (dt > mTimeAnim) dt = mTimeAnim; + auto t = (halnf)dt / (halnf)mTimeAnim; + t = (halnf)(0.511 + atan((t - 0.36) * 28) / 2.9); + t = clamp(t, 0.f, 1.f); + auto out = mValPrev + (mVal - mValPrev) * t; + return out; +} + +AnimValue::AnimValue() = default; + +void AnimValue::setAnimTime(halni time) { + mTimeAnim = time; +} + +AnimValue::AnimValue(halnf val) { + mVal = val; + mValPrev = mVal; + mTimeStart = gCurrentTime; +} + +bool AnimValue::inTransition() const { + auto timePassed = gCurrentTime - mTimeStart >= mTimeAnim; + return !timePassed; +} + +void AnimValue::set(halnf val) { + if (!inTransition()) mValPrev = mVal; + if (val == mVal) return; + mValPrev = get(); + mVal = val; + if (!inTransition()) mTimeStart = (halni)gCurrentTime; +} + +halnf AnimValue::getTarget() const { + return mVal; +} + +void AnimValue::setNoTransition(halnf val) { + mValPrev = val; + mVal = val; + mTimeStart -= mTimeStart; +} + +halnf AnimValue::get() const { + if (inTransition()) { + gInTransition = true; + } + return interpolate(); +} + +AnimValue::operator halnf() const { + return get(); +} + +RectF AnimRect::get() const { + return { x.get(), y.get() , z.get(), w.get() }; +} + +RectF AnimRect::getTarget() const { + return { x.getTarget(), y.getTarget() , z.getTarget(), w.getTarget() }; +} + +void AnimRect::setNoTransition(RectF rec) { + x.setNoTransition(rec.x); + y.setNoTransition(rec.y); + z.setNoTransition(rec.z); + w.setNoTransition(rec.w); +} + +void AnimRect::setAnimTime(const halni time) { + x.setAnimTime(time); + y.setAnimTime(time); + z.setAnimTime(time); + w.setAnimTime(time); +} + +void AnimRect::set(const RectF& in) { + x.set(in.x); + y.set(in.y); + z.set(in.z); + w.set(in.w); +} + +RGBA AnimColor::get() const { + auto col = mColor.get(); + return {col.x, col.y, col.z, col.w}; +} + +void AnimColor::set(const RGBA& col) { + mColor.set(RectF(col.r, col.g, col.b, col.a)); +} \ No newline at end of file diff --git a/Graphics/private/GraphicsCommon.cpp b/Graphics/private/GraphicsCommon.cpp new file mode 100644 index 0000000..c9fa3ef --- /dev/null +++ b/Graphics/private/GraphicsCommon.cpp @@ -0,0 +1,6 @@ +#include "GraphicsCommon.hpp" + +namespace tp { + static ModuleManifest* deps[] = { &gModuleStrings, &gModuleMath, nullptr }; + ModuleManifest gModuleGraphics = ModuleManifest("Graphics", nullptr, nullptr, deps); +} \ No newline at end of file diff --git a/Graphics/private/bindings/Canvas.cpp b/Graphics/private/bindings/Canvas.cpp new file mode 100644 index 0000000..f917dc8 --- /dev/null +++ b/Graphics/private/bindings/Canvas.cpp @@ -0,0 +1,59 @@ +#include "Window.hpp" + +// -------- OpenGL -------- // +#include + +#include "WindowContext.hpp" + +// -------- Canvas -------- // +#define NANOVG_GL3_IMPLEMENTATION +#include +#include + +namespace tp { + class Graphics::Canvas::Context { + public: + NVGcontext* vg; + }; +} + +using namespace tp; + +Graphics::Canvas::Canvas() { + mContext = new Context(); +} + +Graphics::Canvas::~Canvas() { + delete mContext; +} + +void Graphics::Canvas::init() { + mContext->vg = nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES); +} + +void Graphics::Canvas::deinit() { + // Cleanup + nvgDeleteGL3(mContext->vg); +} + +void Graphics::Canvas::proc() { + auto width = 600; + auto height = 600; + + // Start NanoVG rendering + nvgBeginFrame(mContext->vg, width, height, 1.0); + + // Draw a rectangle + nvgBeginPath(mContext->vg); + nvgRect(mContext->vg, 50, 50, 50, 50); + nvgFillColor(mContext->vg, nvgRGBf(0.8f, 0.4f, 0.1f)); + nvgFill(mContext->vg); + + // End NanoVG rendering + nvgEndFrame(mContext->vg); +} + +void Graphics::Canvas::draw() { + // End NanoVG rendering + nvgEndFrame(mContext->vg); +} \ No newline at end of file diff --git a/Graphics/private/bindings/DebugGUI.cpp b/Graphics/private/bindings/DebugGUI.cpp new file mode 100644 index 0000000..fdf1e79 --- /dev/null +++ b/Graphics/private/bindings/DebugGUI.cpp @@ -0,0 +1,57 @@ +#include "Window.hpp" + +#include "WindowContext.hpp" + +// -------- Debug UI -------- // +#include +#include +#include + +namespace tp { + class Graphics::GUI::Context { + public: + ImGuiIO* io{}; + ImGuiContext* ctx{}; + }; +} + +using namespace tp; + +Graphics::GUI::GUI() { + mContext = new Context(); +} + +Graphics::GUI::~GUI() { + delete mContext; +} + +void Graphics::GUI::init(Window* window) { + IMGUI_CHECKVERSION(); + mContext->ctx = ImGui::CreateContext(); + mContext->io = &ImGui::GetIO(); + + // Initialize ImGui with GLFW and OpenGL + ImGui_ImplGlfw_InitForOpenGL(window->getContext()->window, true); + ImGui_ImplOpenGL3_Init("#version 330"); +} + +void Graphics::GUI::deinit() { + ImGui_ImplOpenGL3_Shutdown(); + ImGui_ImplGlfw_Shutdown(); + ImGui::DestroyContext(); +} + +void Graphics::GUI::proc() { + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); + ImGui::NewFrame(); + + // ImGui code goes here + ImGui::Begin("Window"); + ImGui::End(); +} + +void Graphics::GUI::draw() { + ImGui::Render(); + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +} \ No newline at end of file diff --git a/Graphics/private/bindings/Graphics.cpp b/Graphics/private/bindings/Graphics.cpp deleted file mode 100644 index 43dad69..0000000 --- a/Graphics/private/bindings/Graphics.cpp +++ /dev/null @@ -1,262 +0,0 @@ -#include "Graphics.hpp" - -#include "Allocators.hpp" - -// -------- OpenGL -------- // -#include - -// -------- Window Context -------- // -#include - -// -------- Debug UI -------- // -#include -#include -#include - -// -------- Canvas -------- // -#define NANOVG_GL3_IMPLEMENTATION -#include -#include - -#include - -namespace tp { - - class ShowoffGlContext { - public: - // Showoff data - GLuint vao{}; - GLuint vbo{}; - GLfloat vertices[9] = { - -0.0f, -0.0f, 0.0f, // Left vertex - 1.0f, 0.0f, 0.0f, // Right vertex - 0.5f, 1.0f, 0.0f // Top vertex - }; - }; - - class ShowoffGUIContext { - public: - ImGuiIO* io{}; - ImGuiContext* ctx{}; - }; - - class ShowoffCanvasContext { - public: - NVGcontext* vg; - }; - - class WindowContext { - friend Showoff::GL; - friend Showoff::GUI; - friend Showoff::Canvas; - public: - GLFWwindow* window; - }; -} - -using namespace tp; - -Showoff::GL::GL() { - mContext = new ShowoffGlContext(); -} - -Showoff::GL::~GL() { - delete mContext; -} - -void Showoff::GL::init() { - // Create a Vertex Array Object (VAO) - glGenVertexArrays(1, &mContext->vao); - glBindVertexArray(mContext->vao); - - // Create a Vertex Buffer Object (VBO) - glGenBuffers(1, &mContext->vbo); - glBindBuffer(GL_ARRAY_BUFFER, mContext->vbo); - glBufferData(GL_ARRAY_BUFFER, sizeof(mContext->vertices), mContext->vertices, GL_STATIC_DRAW); - - // Set up vertex attributes - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*) nullptr); - glEnableVertexAttribArray(0); -} - -void Showoff::GL::deinit() { - glDeleteBuffers(1, &mContext->vbo); - glDeleteVertexArrays(1, &mContext->vao); -} - -void Showoff::GL::beginDraw() { - glClear(GL_COLOR_BUFFER_BIT); -} - -void Showoff::GL::endDraw() { - glDrawArrays(GL_TRIANGLES, 0, 3); -} - -Showoff::GUI::GUI() { - mContext = new ShowoffGUIContext(); -} - -Showoff::GUI::~GUI() { - delete mContext; -} - -void Showoff::GUI::init(Window* window) { - IMGUI_CHECKVERSION(); - mContext->ctx = ImGui::CreateContext(); - mContext->io = &ImGui::GetIO(); - - // Initialize ImGui with GLFW and OpenGL - ImGui_ImplGlfw_InitForOpenGL(window->getContext()->window, true); - ImGui_ImplOpenGL3_Init("#version 330"); -} - -void Showoff::GUI::deinit() { - ImGui_ImplOpenGL3_Shutdown(); - ImGui_ImplGlfw_Shutdown(); - ImGui::DestroyContext(); -} - -void Showoff::GUI::beginDraw() { - ImGui_ImplOpenGL3_NewFrame(); - ImGui_ImplGlfw_NewFrame(); - ImGui::NewFrame(); - - // ImGui code goes here - ImGui::Begin("Window"); - ImGui::End(); -} - -void Showoff::GUI::endDraw() { - ImGui::Render(); - ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); -} - -Showoff::Canvas::Canvas() { - mContext = new ShowoffCanvasContext(); -} - -Showoff::Canvas::~Canvas() { - delete mContext; -} - -void Showoff::Canvas::init() { - mContext->vg = nvgCreateGL3(NVG_ANTIALIAS | NVG_STENCIL_STROKES); -} - -void Showoff::Canvas::deinit() { - // Cleanup - nvgDeleteGL3(mContext->vg); -} - -void Showoff::Canvas::beginDraw() { - auto width = 600; - auto height = 600; - - // Start NanoVG rendering - nvgBeginFrame(mContext->vg, width, height, 1.0); - - // Draw a rectangle - nvgBeginPath(mContext->vg); - nvgRect(mContext->vg, 50, 50, 50, 50); - nvgFillColor(mContext->vg, nvgRGBf(0.8f, 0.4f, 0.1f)); - nvgFill(mContext->vg); - - // End NanoVG rendering - nvgEndFrame(mContext->vg); -} - -void Showoff::Canvas::endDraw() { - // End NanoVG rendering - nvgEndFrame(mContext->vg); -} - - -void Showoff::init(Window* window) { - gl.init(); - gui.init(window); - canvas.init(); -} - -void Showoff::deinit() { - canvas.deinit(); - gui.deinit(); - gl.deinit(); -} - -void Showoff::draw() { - gl.beginDraw(); - canvas.beginDraw(); - gui.beginDraw(); - - gl.endDraw(); - canvas.endDraw(); - gui.endDraw(); -} - -Window::Window(int width, int height, const char* title) { - mContext = new WindowContext(); - - // Create a window and OpenGL context - mContext->window = glfwCreateWindow(width, height, title, nullptr, nullptr); - if (!mContext->window) { - printf("Failed to create GLFW window\n"); - return; - } - - glfwMakeContextCurrent(mContext->window); - - // Initialize GLEW - if (glewInit() != GLEW_OK) { - printf("Failed to initialize GLEW\n"); - return; - } - - showoff.init(this); -} - -Window::~Window() { - showoff.deinit(); - glfwDestroyWindow(mContext->window); - delete mContext; -} - - -Window* Window::createWindow(int width, int height, const char* title) { - static int count = 1; - if (!count) { - printf("Window class is a singleton\n"); - return nullptr; - } - count--; - - // Initialize GLFW - if (!glfwInit()) { - printf("Failed to initialize GLFW\n"); - return nullptr; - } - - // Set the GLFW error callback - glfwSetErrorCallback([] (int error, const char* description) { - printf("GLFW Error: %i %s\n", error, description); - }); - - return new Window(width, height, title); -} - -void Window::destroyWindow(Window* window) { - delete window; - glfwTerminate(); -} - -void Window::renderLoop() { - while (!glfwWindowShouldClose(mContext->window)) { - - showoff.draw(); - - // Swap buffers and poll events - glfwSwapBuffers(mContext->window); - glfwPollEvents(); - } -} - -WindowContext* Window::getContext() { return mContext; } \ No newline at end of file diff --git a/Graphics/private/bindings/Window.cpp b/Graphics/private/bindings/Window.cpp new file mode 100644 index 0000000..3cf251f --- /dev/null +++ b/Graphics/private/bindings/Window.cpp @@ -0,0 +1,150 @@ +#include "Window.hpp" + +// -------- OpenGL -------- // +#include + +#include "WindowContext.hpp" + +#include + +namespace tp { + class Graphics::GL::Context { + public: + // Showoff data + GLuint vao{}; + GLuint vbo{}; + GLfloat vertices[9] = { + -0.0f, -0.0f, 0.0f, // Left vertex + 1.0f, 0.0f, 0.0f, // Right vertex + 0.5f, 1.0f, 0.0f // Top vertex + }; + }; +} + +using namespace tp; + +Graphics::GL::GL() { + mContext = new Context(); +} + +Graphics::GL::~GL() { + delete mContext; +} + +void Graphics::GL::init() { + // Create a Vertex Array Object (VAO) + glGenVertexArrays(1, &mContext->vao); + glBindVertexArray(mContext->vao); + + // Create a Vertex Buffer Object (VBO) + glGenBuffers(1, &mContext->vbo); + glBindBuffer(GL_ARRAY_BUFFER, mContext->vbo); + glBufferData(GL_ARRAY_BUFFER, sizeof(mContext->vertices), mContext->vertices, GL_STATIC_DRAW); + + // Set up vertex attributes + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*) nullptr); + glEnableVertexAttribArray(0); +} + +void Graphics::GL::deinit() { + glDeleteBuffers(1, &mContext->vbo); + glDeleteVertexArrays(1, &mContext->vao); +} + +void Graphics::GL::proc() { + glClear(GL_COLOR_BUFFER_BIT); +} + +void Graphics::GL::draw() { + glDrawArrays(GL_TRIANGLES, 0, 3); +} + +void Graphics::init(Window* window) { + mGl.init(); + mGui.init(window); + mCanvas.init(); +} + +void Graphics::deinit() { + mCanvas.deinit(); + mGui.deinit(); + mGl.deinit(); +} + +void Graphics::draw() { + mGl.proc(); + mCanvas.proc(); + mGui.proc(); + + mGl.draw(); + mCanvas.draw(); + mGui.draw(); +} + +Window::Window(int width, int height, const char* title) { + mContext = new Context(); + + // Create a window and OpenGL context + mContext->window = glfwCreateWindow(width, height, title, nullptr, nullptr); + if (!mContext->window) { + printf("Failed to create GLFW window\n"); + return; + } + + glfwMakeContextCurrent(mContext->window); + + // Initialize GLEW + if (glewInit() != GLEW_OK) { + printf("Failed to initialize GLEW\n"); + return; + } + + mGraphics.init(this); +} + +Window::~Window() { + mGraphics.deinit(); + glfwDestroyWindow(mContext->window); + delete mContext; +} + + +Window* Window::createWindow(int width, int height, const char* title) { + static int count = 1; + if (!count) { + printf("Window class is a singleton\n"); + return nullptr; + } + count--; + + // Initialize GLFW + if (!glfwInit()) { + printf("Failed to initialize GLFW\n"); + return nullptr; + } + + // Set the GLFW error callback + glfwSetErrorCallback([] (int error, const char* description) { + printf("GLFW Error: %i %s\n", error, description); + }); + + return new Window(width, height, title); +} + +void Window::destroyWindow(Window* window) { + delete window; + glfwTerminate(); +} + +void Window::renderLoop() { + while (!glfwWindowShouldClose(mContext->window)) { + + mGraphics.draw(); + + // Swap buffers and poll events + glfwSwapBuffers(mContext->window); + glfwPollEvents(); + } +} + +auto Window::getContext() -> Context* { return mContext; } \ No newline at end of file diff --git a/Graphics/private/bindings/WindowContext.hpp b/Graphics/private/bindings/WindowContext.hpp new file mode 100644 index 0000000..1f7599a --- /dev/null +++ b/Graphics/private/bindings/WindowContext.hpp @@ -0,0 +1,16 @@ +#pragma once + +// -------- Window Context -------- // +#include + +namespace tp { + class Window; + + class Window::Context { + friend Graphics::GL; + friend Graphics::GUI; + friend Graphics::Canvas; + public: + GLFWwindow* window; + }; +} \ No newline at end of file diff --git a/Graphics/public/Animations.hpp b/Graphics/public/Animations.hpp new file mode 100644 index 0000000..f700383 --- /dev/null +++ b/Graphics/public/Animations.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "GraphicsCommon.hpp" + +namespace tp { + + class AnimValue { + halnf mValPrev = 0; + halnf mVal = 0; + time_ms mTimeStart = 0; + halni mTimeAnim = 250; + + static bool gInTransition; + + private: + [[nodiscard]] halnf interpolate() const; + + public: + AnimValue(); + explicit AnimValue(halnf val); + + [[nodiscard]] halnf prev() const { return mValPrev; } + void set(halnf val); + void setNoTransition(halnf); + void setAnimTime(halni time); + [[nodiscard]] halnf get() const; + [[nodiscard]] halnf getTarget() const; + [[nodiscard]] bool inTransition() const; + explicit operator halnf() const; + void operator=(halnf val); + }; + + class AnimRect : Rect { + public: + AnimRect() { + set({ 0, 0, 0, 0 }); + setAnimTime(450); + } + + [[nodiscard]] RectF get() const; + [[nodiscard]] RectF getTarget() const; + void setNoTransition(RectF); + void set(const RectF&); + void setAnimTime(halni time_ms); + }; + + class AnimColor { + AnimRect mColor; + public: + [[nodiscard]] RGBA get() const; + void set(const RGBA&); + }; +}; \ No newline at end of file diff --git a/Graphics/public/Graphics.hpp b/Graphics/public/Graphics.hpp index 8a4b294..b2e95d2 100644 --- a/Graphics/public/Graphics.hpp +++ b/Graphics/public/Graphics.hpp @@ -1,77 +1,76 @@ -#include "Strings.hpp" +#pragma once + +#include "GraphicsCommon.hpp" namespace tp { - - class ShowoffGlContext; - class ShowoffGUIContext; - class ShowoffCanvasContext; - class Window; - class WindowContext; - class Showoff { + class Graphics { public: class GL { - ShowoffGlContext* mContext; - public: + class Context; + Context* mContext; + private: + friend Graphics; + GL(); ~GL(); void init(); void deinit(); - static void beginDraw(); - static void endDraw(); + static void proc(); + static void draw(); + public: + // TODO : API }; class GUI { - ShowoffGUIContext* mContext; - public: + class Context; + Context* mContext; + private: + friend Graphics; + GUI(); ~GUI(); void init(Window* window); void deinit(); - void beginDraw(); - void endDraw(); + void proc(); + void draw(); + + public: + // TODO : API }; class Canvas { - ShowoffCanvasContext* mContext; - public: + class Context; + Context* mContext; + private: + friend Graphics; + Canvas(); ~Canvas(); void init(); void deinit(); - void beginDraw(); - void endDraw(); + void proc(); + void draw(); + + public: + // TODO : API }; - public: - Showoff() = default; + private: + friend Window; + + Graphics() = default; void init(Window* window); void deinit(); void draw(); private: - GUI gui; - GL gl; - Canvas canvas; - }; - - class Window { - Window(int width, int height, const char* title); - ~Window(); - - public: - static Window* createWindow(int width, int height, const char* title); - static void destroyWindow(Window* window); - - public: - void renderLoop(); - WindowContext* getContext(); - private: - WindowContext* mContext; - Showoff showoff; + GUI mGui; + GL mGl; + Canvas mCanvas; }; } \ No newline at end of file diff --git a/Graphics/public/GraphicsCommon.hpp b/Graphics/public/GraphicsCommon.hpp new file mode 100644 index 0000000..1ce1a09 --- /dev/null +++ b/Graphics/public/GraphicsCommon.hpp @@ -0,0 +1,10 @@ +#pragma once + +#include "Strings.hpp" +#include "Rect.hpp" +#include "Color.hpp" +#include "Timing.hpp" + +namespace tp { + extern ModuleManifest gModuleGraphics; +} \ No newline at end of file diff --git a/Graphics/public/Keycodes.hpp b/Graphics/public/Keycodes.hpp new file mode 100644 index 0000000..86f00db --- /dev/null +++ b/Graphics/public/Keycodes.hpp @@ -0,0 +1,166 @@ + +#pragma once + +namespace tp { + + // basically copy of glfw keys + enum class Keycode { + + /* Printable keys */ + SPACE = 32, + APOSTROPHE = 39, /* ' */ + COMMA = 44, /* , */ + MINUS = 45, /* - */ + PERIOD = 46, /* . */ + SLASH = 0xBF, /* \ */ + N0 = 48, + N1 = 49, + N2 = 50, + N3 = 51, + N4 = 52, + N5 = 53, + N6 = 54, + N7 = 55, + N8 = 56, + N9 = 57, + SEMICOLON = 59, /* ; */ + EQUAL = 61, /* = */ + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + LEFT_BRACKET = 91, /* [ */ + BACKSLASH = 92, /* \ */ + RIGHT_BRACKET = 93, /* ] */ + GRAVE_ACCENT = 96, /* ` */ + WORLD_1 = 161, /* non-US #1 */ + WORLD_2 = 162, /* non-US #2 */ + + /* function keys */ + + ESCAPE = 256, + ENTER = 257, + TAB = 258, + BACKSPACE = 259, + INSERT = 260, + DELETE = 261, + RIGHT = 262, + LEFT = 263, + DOWN = 264, + UP = 265, + PAGE_UP = 266, + PAGE_DOWN = 267, + HOME = 268, + END = 269, + CAPS_LOCK = 280, + SCROLL_LOCK = 281, + NUM_LOCK = 282, + PRINT_SCREEN = 283, + PAUSE = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + KP_0 = 320, + KP_1 = 321, + KP_2 = 322, + KP_3 = 323, + KP_4 = 324, + KP_5 = 325, + KP_6 = 326, + KP_7 = 327, + KP_8 = 328, + KP_9 = 329, + KP_DECIMAL = 330, + KP_DIVIDE = 331, + KP_MULTIPLY = 332, + KP_SUBTRACT = 333, + KP_ADD = 334, + KP_ENTER = 335, + KP_EQUAL = 336, + LEFT_SHIFT = 340, + LEFT_CONTROL = 341, + LEFT_ALT = 342, + LEFT_SUPER = 343, + RIGHT_SHIFT = 344, + RIGHT_CONTROL = 345, + RIGHT_ALT = 346, + RIGHT_SUPER = 347, + MENU = 348, + + INV_SLASH = 0xDC, + BRA = 0xDB, + KET = 0xDD, + TILDA = 0xC0, + DOUBLE_DOT = 0xBA, + QUOTES = 0xDE, + + MOUSE1 = 501, + MOUSE2 = 502, + MOUSE3 = 503, + MOUSE4 = 504, + MOUSE5 = 505, + MOUSE_UP = 506, + MOUSE_DOWN = 507, + }; + + enum class KeyState { + PRESSED, + RELEASED, + HOLD, + REPEAT, + NONE, + }; + + struct KeyEvent { + Keycode code; + enum class EventState { + RELEASED = 0, + PRESSED = 1, + REPEAT = 2, + } event_state; + }; +}; \ No newline at end of file diff --git a/Graphics/public/Window.hpp b/Graphics/public/Window.hpp new file mode 100644 index 0000000..1f6a762 --- /dev/null +++ b/Graphics/public/Window.hpp @@ -0,0 +1,39 @@ +#pragma once + +#include "Graphics.hpp" +#include "Buffer.hpp" +#include "Keycodes.hpp" + +namespace tp { + + class Window { + class Context; + + public: + struct Event { + enum Type { + KEY, + MOUSE, + + }; + }; + + private: + Window(int width, int height, const char* title); + ~Window(); + + public: + static Window* createWindow(int width, int height, const char* title); + static void destroyWindow(Window* window); + + public: + void renderLoop(); + auto getContext() -> Context*; + + private: + Context* mContext; + Graphics mGraphics; + + Buffer mEvents; + }; +} \ No newline at end of file diff --git a/TODO b/TODO index 304f02b..25baf47 100644 --- a/TODO +++ b/TODO @@ -1,24 +1,27 @@ - -Storage: - Implement - -CommandLineParser: - Implement +Testing ! +Serialization ! Objects: - Implement + Implement ! -TextEditor: - Implement +Storage: + Finish networking + Enable preloads + +Graphics: + Window event system + Graphics API + FPS count & Performance control Utils: Stack trace fixes Containers: + Add variant size buffer + Buffer improvements Add mem leakage tests Add check copy times AVL dont copy data just swap - -Testing ! -Serialization \ No newline at end of file +TextEditor: + Implement From 00bc8758462bece16da4af2bd64b1a935839cd11 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 24 Jul 2023 20:39:28 +0300 Subject: [PATCH 33/68] Freeze on no memory available --- Allocators/private/HeapAllocatorGlobal.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Allocators/private/HeapAllocatorGlobal.cpp b/Allocators/private/HeapAllocatorGlobal.cpp index c2ea8a4..7e41c6a 100644 --- a/Allocators/private/HeapAllocatorGlobal.cpp +++ b/Allocators/private/HeapAllocatorGlobal.cpp @@ -6,6 +6,7 @@ #include "Utils.hpp" #include "Debugging.hpp" +#include #include using namespace tp; @@ -66,13 +67,17 @@ void* HeapAllocGlobal::allocate(ualni aBlockSize) { } // 1) Allocate the block + ALLOCATE: auto head = (MemHead*)malloc(aBlockSize + WRAP_SIZE * 2 + HEAD_SIZE); + if (!head) { + printf("WARNING : Cant allocate memory. Trying again\n"); + goto ALLOCATE; // Just freeze if no memory is available + } + auto wrap_top = (int1*)(head + 1); auto data = wrap_top + WRAP_SIZE; auto wrap_bottom = data + aBlockSize; - if (!head) { return nullptr; } - head->mBlockSize = aBlockSize; head->mIgnored = mIgnore; From 803ce2316963e73f0b44eef84c18f6cc8e80013b Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 24 Jul 2023 21:55:19 +0300 Subject: [PATCH 34/68] Objects Initial --- CMakeLists.txt | 2 + Containers/public/Buffer.hpp | 154 ++- Objects/CMakeLists.txt | 31 + Objects/README.md | 20 + Objects/applications/Compiler.cpp | 49 + Objects/applications/Interpreter.cpp | 58 ++ Objects/private/compiler/constants.cpp | 148 +++ Objects/private/compiler/expression.cpp | 70 ++ Objects/private/compiler/function.cpp | 556 +++++++++++ Objects/private/compiler/instruction.cpp | 29 + Objects/private/compiler/statement.cpp | 116 +++ Objects/private/core/object.cpp | 250 +++++ Objects/private/core/objectsave.cpp | 411 ++++++++ Objects/private/core/scriptsection.cpp | 265 +++++ Objects/private/core/typegroups.cpp | 81 ++ Objects/private/core/typemethods.cpp | 138 +++ Objects/private/interpreter/callstack.cpp | 40 + Objects/private/interpreter/interpreter.cpp | 573 +++++++++++ Objects/private/interpreter/opcodes.cpp | 384 ++++++++ Objects/private/interpreter/operandsstack.cpp | 30 + Objects/private/interpreter/scopestack.cpp | 90 ++ Objects/private/parser/parser.cpp | 904 ++++++++++++++++++ Objects/private/primitives/boolobject.cpp | 78 ++ Objects/private/primitives/classobject.cpp | 81 ++ Objects/private/primitives/colorobject.cpp | 84 ++ Objects/private/primitives/dictobject.cpp | 232 +++++ Objects/private/primitives/enumobject.cpp | 182 ++++ Objects/private/primitives/floatobject.cpp | 102 ++ .../private/primitives/interpreterobject.cpp | 82 ++ Objects/private/primitives/intobject.cpp | 104 ++ Objects/private/primitives/linkobject.cpp | 132 +++ Objects/private/primitives/listobject.cpp | 135 +++ Objects/private/primitives/methodobject.cpp | 78 ++ Objects/private/primitives/nullobject.cpp | 60 ++ Objects/private/primitives/primitives.cpp | 83 ++ Objects/private/primitives/stringobject.cpp | 97 ++ Objects/private/primitives/typeobject.cpp | 80 ++ Objects/public/compiler/constants.h | 42 + Objects/public/compiler/expression.h | 126 +++ Objects/public/compiler/function.h | 47 + Objects/public/compiler/instruction.h | 52 + Objects/public/compiler/statement.h | 116 +++ Objects/public/core/object.h | 226 +++++ Objects/public/core/scriptsection.h | 36 + Objects/public/core/typegroups.h | 40 + Objects/public/core/typemethods.h | 63 ++ Objects/public/interpreter/bytecode.h | 28 + Objects/public/interpreter/callstack.h | 32 + Objects/public/interpreter/interpreter.h | 29 + Objects/public/interpreter/opcodes.h | 158 +++ Objects/public/interpreter/operandsstack.h | 39 + Objects/public/interpreter/scopestack.h | 46 + Objects/public/interpreter/script.h | 12 + Objects/public/parser/parser.h | 195 ++++ Objects/public/primitives/boolobject.h | 24 + Objects/public/primitives/classobject.h | 49 + Objects/public/primitives/colorobject.h | 24 + Objects/public/primitives/dictobject.h | 31 + Objects/public/primitives/enumobject.h | 34 + Objects/public/primitives/floatobject.h | 26 + Objects/public/primitives/interpreterobject.h | 19 + Objects/public/primitives/intobject.h | 25 + Objects/public/primitives/linkobject.h | 29 + Objects/public/primitives/listobject.h | 36 + Objects/public/primitives/methodobject.h | 28 + Objects/public/primitives/nullobject.h | 32 + Objects/public/primitives/primitives.h | 22 + Objects/public/primitives/stringobject.h | 24 + Objects/public/primitives/typeobject.h | 13 + Objects/rsc/script.osc | 15 + Objects/tests/TestEntry.cpp | 90 ++ Objects/tests/test.cpp | 75 ++ TODO | 14 +- Tokenizer/public/Tokenizer.hpp | 2 +- Utils/private/Utils.cpp | 3 + Utils/public/Utils.hpp | 1 + 76 files changed, 7895 insertions(+), 17 deletions(-) create mode 100644 Objects/CMakeLists.txt create mode 100644 Objects/README.md create mode 100644 Objects/applications/Compiler.cpp create mode 100644 Objects/applications/Interpreter.cpp create mode 100644 Objects/private/compiler/constants.cpp create mode 100644 Objects/private/compiler/expression.cpp create mode 100644 Objects/private/compiler/function.cpp create mode 100644 Objects/private/compiler/instruction.cpp create mode 100644 Objects/private/compiler/statement.cpp create mode 100644 Objects/private/core/object.cpp create mode 100644 Objects/private/core/objectsave.cpp create mode 100644 Objects/private/core/scriptsection.cpp create mode 100644 Objects/private/core/typegroups.cpp create mode 100644 Objects/private/core/typemethods.cpp create mode 100644 Objects/private/interpreter/callstack.cpp create mode 100644 Objects/private/interpreter/interpreter.cpp create mode 100644 Objects/private/interpreter/opcodes.cpp create mode 100644 Objects/private/interpreter/operandsstack.cpp create mode 100644 Objects/private/interpreter/scopestack.cpp create mode 100644 Objects/private/parser/parser.cpp create mode 100644 Objects/private/primitives/boolobject.cpp create mode 100644 Objects/private/primitives/classobject.cpp create mode 100644 Objects/private/primitives/colorobject.cpp create mode 100644 Objects/private/primitives/dictobject.cpp create mode 100644 Objects/private/primitives/enumobject.cpp create mode 100644 Objects/private/primitives/floatobject.cpp create mode 100644 Objects/private/primitives/interpreterobject.cpp create mode 100644 Objects/private/primitives/intobject.cpp create mode 100644 Objects/private/primitives/linkobject.cpp create mode 100644 Objects/private/primitives/listobject.cpp create mode 100644 Objects/private/primitives/methodobject.cpp create mode 100644 Objects/private/primitives/nullobject.cpp create mode 100644 Objects/private/primitives/primitives.cpp create mode 100644 Objects/private/primitives/stringobject.cpp create mode 100644 Objects/private/primitives/typeobject.cpp create mode 100644 Objects/public/compiler/constants.h create mode 100644 Objects/public/compiler/expression.h create mode 100644 Objects/public/compiler/function.h create mode 100644 Objects/public/compiler/instruction.h create mode 100644 Objects/public/compiler/statement.h create mode 100644 Objects/public/core/object.h create mode 100644 Objects/public/core/scriptsection.h create mode 100644 Objects/public/core/typegroups.h create mode 100644 Objects/public/core/typemethods.h create mode 100644 Objects/public/interpreter/bytecode.h create mode 100644 Objects/public/interpreter/callstack.h create mode 100644 Objects/public/interpreter/interpreter.h create mode 100644 Objects/public/interpreter/opcodes.h create mode 100644 Objects/public/interpreter/operandsstack.h create mode 100644 Objects/public/interpreter/scopestack.h create mode 100644 Objects/public/interpreter/script.h create mode 100644 Objects/public/parser/parser.h create mode 100644 Objects/public/primitives/boolobject.h create mode 100644 Objects/public/primitives/classobject.h create mode 100644 Objects/public/primitives/colorobject.h create mode 100644 Objects/public/primitives/dictobject.h create mode 100644 Objects/public/primitives/enumobject.h create mode 100644 Objects/public/primitives/floatobject.h create mode 100644 Objects/public/primitives/interpreterobject.h create mode 100644 Objects/public/primitives/intobject.h create mode 100644 Objects/public/primitives/linkobject.h create mode 100644 Objects/public/primitives/listobject.h create mode 100644 Objects/public/primitives/methodobject.h create mode 100644 Objects/public/primitives/nullobject.h create mode 100644 Objects/public/primitives/primitives.h create mode 100644 Objects/public/primitives/stringobject.h create mode 100644 Objects/public/primitives/typeobject.h create mode 100644 Objects/rsc/script.osc create mode 100644 Objects/tests/TestEntry.cpp create mode 100644 Objects/tests/test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d883a0..147af07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,3 +24,5 @@ add_subdirectory(Externals) add_subdirectory(Connection) add_subdirectory(Graphics) + +#add_subdirectory(Objects) diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 71af4b7..31ab348 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -20,42 +20,111 @@ namespace tp { template class ConstSizeBuffer { - SelCopyArg Arg; + typedef SelCopyArg Arg; private: tType mBuff[tSize]; + ualni mLoad = 0; public: ConstSizeBuffer() = default; public: - [[nodiscard]] ualni size() const { return tSize; } + [[nodiscard]] ualni size() const { return mLoad; } + [[nodiscard]] ualni getBuffSize() const { return tSize; } - tType& first() { - return *mBuff; - } - - const tType& first() const { - return *mBuff; + tType& first() { + DEBUG_ASSERT(mLoad) + return *mBuff; } - tType& last() { - return mBuff[tSize - 1]; + const tType& first() const { + DEBUG_ASSERT(mLoad) + return *mBuff; } - - const tType& last() const { - return mBuff[tSize - 1]; + + tType& last() { + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; + } + + const tType& last() const { + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; } tType& operator[](ualni aIdx) { - DEBUG_ASSERT(aIdx >= 0 && aIdx < tSize) + DEBUG_ASSERT(aIdx >= 0 && aIdx < mLoad) return mBuff[aIdx]; } const tType& operator[](ualni aIdx) const { - DEBUG_ASSERT(aIdx >= 0 && aIdx < tSize) + DEBUG_ASSERT(aIdx >= 0 && aIdx < mLoad) return mBuff[aIdx]; } + + void append(Arg data) { + ASSERT(mLoad != tSize) + new (&mBuff[mLoad]) tType(data); + mLoad++; + } + + void pop() { + DEBUG_ASSERT(mLoad) + mBuff[mLoad].~tType(); + mLoad--; + } + + ConstSizeBuffer& operator=(const tp::init_list& init) { + for (auto arg : init) { + append(arg); + } + return *this; + } + + public: + + class IteratorPointer { + protected: + tType* mIter; + public: + IteratorPointer() = default; + tType& operator->() { return *mIter; } + const tType& operator->() const { return *mIter; } + }; + + class IteratorReference { + protected: + tType* mIter; + public: + IteratorReference() = default; + tType* operator->() { return mIter; } + const tType* operator->() const { return mIter; } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + + explicit Iterator(tType* iter) { this->mIter = iter; } + + const Iterator& operator*() const { return *this; } + + Iterator& operator++() { + this->mIter++; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + [[nodiscard]] Iterator begin() const { + return Iterator(mBuff); + } + + [[nodiscard]] Iterator end() const { + return Iterator(mBuff + mLoad); + } }; template< @@ -150,6 +219,14 @@ namespace tp { } public: + Buffer& operator=(const tp::init_list& init) { + // TODO : optimize + for (auto arg : init) { + append(arg); + } + return *this; + } + void append(Arg data) { if (mLoad == mSize) resizeBuffer(tResizePolicy(mSize)); new (&mBuff[mLoad]) tType(data); @@ -183,6 +260,53 @@ namespace tp { for (ualni i = 0; i < mLoad; i++) new (mBuff + i) tType(); } + public: + class IteratorPointer { + protected: + tType* mIter; + public: + IteratorPointer() = default; + tType& operator->() { return *mIter; } + const tType& operator->() const { return *mIter; } + }; + + class IteratorReference { + protected: + tType* mIter; + public: + IteratorReference() = default; + tType* operator->() { return mIter; } + const tType* operator->() const { return mIter; } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + + explicit Iterator(tType* iter) { this->mIter = iter; } + + const Iterator& operator*() const { return *this; } + + tType& data() { + return *this->mIter; + } + + Iterator& operator++() { + this->mIter++; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + [[nodiscard]] Iterator begin() const { + return Iterator(mBuff); + } + + [[nodiscard]] Iterator end() const { + return Iterator(mBuff + mLoad); + } + private: void resizeBuffer(ualni newSize) { DEBUG_ASSERT(newSize >= mLoad) diff --git a/Objects/CMakeLists.txt b/Objects/CMakeLists.txt new file mode 100644 index 0000000..a8e81b5 --- /dev/null +++ b/Objects/CMakeLists.txt @@ -0,0 +1,31 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Objects) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math Tokenizer CommandLine Connection) + +### -------------------------- Applications -------------------------- ### +add_executable(osc ./applications/Compiler.cpp) +add_executable(osi ./applications/Interpreter.cpp) + +target_link_libraries(osc ${PROJECT_NAME}) +target_link_libraries(osi ${PROJECT_NAME}) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Objects/README.md b/Objects/README.md new file mode 100644 index 0000000..c2ebb0e --- /dev/null +++ b/Objects/README.md @@ -0,0 +1,20 @@ + Objects + +Objects are simple structures with run-time type information attached.
+ +## Features +- Encapsulates most of the basic [types](https://github.com/IlyaShurupov/types.git) into primitives. +- Has its own scripting language to manipulate those objects at run-time. +- Can save and load any object at any point in execution. + +## TODO +- Dubug information support +- Run-time error handling +- Dead code elimination & optimization + +## Building +1. [Types](https://github.com/IlyaShurupov/types.git) repository must be in the same directory. +2. Export the parent path to the system variables. +``` +setx SRC_DIR "parent path" +``` diff --git a/Objects/applications/Compiler.cpp b/Objects/applications/Compiler.cpp new file mode 100644 index 0000000..93ef9c8 --- /dev/null +++ b/Objects/applications/Compiler.cpp @@ -0,0 +1,49 @@ + +#include "Compiler/Compiler.h" + +#include "primitives/primitives.h" +#include "MethodObject/MethodObject.h" +#include "log.h" + +using namespace osc; +using namespace tp; +using namespace obj; + +int main(int argc, char* argv[]) { + + tp::alloc_init(); + string::Initialize(); + Logger::init(); + + objects_init(); + primitives_define_types(); + MethodObject::Initialize(); + + { + Compiler compiler; + + tp::string script; + + RelAssert(argc == 2 && "Invalid Arguments"); + + script.loadFile(argv[1]); + + compiler.compile(script); + + GLog->write("oscc : compilation finished", 1); + } + + try { + MethodObject::UnInitialize(); + objects_finalize(); + primitives_uninitialize(); + + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); + + } + catch (...) { + tp::terminate(); + } +} \ No newline at end of file diff --git a/Objects/applications/Interpreter.cpp b/Objects/applications/Interpreter.cpp new file mode 100644 index 0000000..d9b38da --- /dev/null +++ b/Objects/applications/Interpreter.cpp @@ -0,0 +1,58 @@ + + +#include "MethodObject/methodobject.h" +#include "primitives/primitives.h" + +#include "Interpreter/Interpreter.h" + +#include "log.h" + +using namespace osc; +using namespace tp; +using namespace obj; + +int main(int argc, char* argv[]) { + tp::alloc_init(); + string::Initialize(); + Logger::init(); + + objects_init(); + primitives_define_types(); + MethodObject::Initialize(); + + { + time_ms load_start = get_time(); + RelAssert(argc == 2 && "Invalid Arguments"); + auto obj = NDO->load(argv[1]); + RelAssert(obj && "Failed to Load the File"); + RelAssert(obj->type == &MethodObject::TypeData && "Innvalid file content"); + + Interpreter interp; + NDO_CASTV(MethodObject, obj, method); + + RelAssert(method->mScript && "Innvalid file content"); + time_ms load_end = get_time(); + + GLog->write("\noscvm - execution started\n"); + time_ms exec_start = get_time(); + interp.exec(&method->mScript->mBytecode); + time_ms exec_end = get_time(); + + auto exec_time = (exec_end - exec_start); + auto load_time = (load_end - load_start); + GLog->write(sfmt("\noscvm - execution finished (Load : %f Exec : %f)", load_time, exec_time)); + } + + try { + MethodObject::UnInitialize(); + objects_finalize(); + primitives_uninitialize(); + + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); + + } catch (...) { + tp::terminate(); + } +} \ No newline at end of file diff --git a/Objects/private/compiler/constants.cpp b/Objects/private/compiler/constants.cpp new file mode 100644 index 0000000..3208eaa --- /dev/null +++ b/Objects/private/compiler/constants.cpp @@ -0,0 +1,148 @@ +#include "NewPlacement.hpp" +#include "compiler/constants.h" +#include "primitives/primitives.h" +#include "primitives/methodobject.h" + +using namespace obj; +using namespace tp; +using namespace BCgen; + +ConstObject::ConstObject() {} +ConstObject::ConstObject(obj::Object* mObj) : mObj(mObj) {} + +ConstObjectsPool::~ConstObjectsPool() { + if (mDelete) { + for (auto obj : mStrings) { + obj::NDO->destroy(obj->val->mObj); + } + for (auto obj : mIntegers) { + obj::NDO->destroy(obj->val->mObj); + } + for (auto obj : mFloats) { + obj::NDO->destroy(obj->val->mObj); + } + for (auto obj : mMethods) { + obj::NDO->destroy(obj->val->mObj); + } + if (mBoolFalse.mObj) { + obj::NDO->destroy(mBoolFalse.mObj); + } + if (mBoolTrue.mObj) { + obj::NDO->destroy(mBoolTrue.mObj); + } + } + for (auto obj : mStrings) { + delete obj->val; + } + for (auto obj : mIntegers) { + delete obj->val; + } + for (auto obj : mFloats) { + delete obj->val; + } +} + +ConstObject* ConstObjectsPool::registerObject(obj::Object* obj) { + ConstObject* out = new ConstObject(obj); + mTotalObjects++; + return out; +} + +ConstObject* ConstObjectsPool::get(tp::alni val) { + auto idx = mIntegers.presents(val); + ConstObject* const_obj = NULL; + if (idx) { + const_obj = mIntegers.getSlotVal(idx); + } + else { + const_obj = registerObject(IntObject::create(val)); + mIntegers.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(tp::String val) { + auto idx = mStrings.presents(val); + ConstObject* const_obj = NULL; + if (idx) { + const_obj = mStrings.getSlotVal(idx); + } + else { + const_obj = registerObject(StringObject::create(val)); + mStrings.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(tp::alnf val) { + auto idx = mFloats.presents(val); + ConstObject* const_obj = NULL; + if (idx) { + const_obj = mFloats.getSlotVal(idx); + } + else { + const_obj = registerObject(FloatObject::create(val)); + mFloats.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(bool val) { + if (val) { + if (!mBoolTrue.mObj) { + mBoolTrue.mObj = BoolObject::create(val); + mTotalObjects++; + } + return &mBoolTrue; + } + else { + if (!mBoolFalse.mObj) { + mBoolFalse.mObj = BoolObject::create(val); + mTotalObjects++; + } + return &mBoolFalse; + } +} + +ConstObject* ConstObjectsPool::addMethod(tp::String method_id, obj::Object* method) { + ASSERT(NDO_CAST(MethodObject, method) && "Object is not a method object"); + ASSERT(!mMethods.presents(method_id) && "Method Redefinition"); + auto out = registerObject(method); + mMethods.put(method_id, out); + return out; +} + +void ConstObjectsPool::save(tp::Buffer& out) { + out.reserve(mTotalObjects); + tp::alni data_idx = 0; + for (auto obj : mMethods) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mStrings) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mIntegers) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mFloats) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + if (mBoolFalse.mObj) { + out[data_idx] = mBoolFalse.mObj; + mBoolFalse.mConstIdx = data_idx; + data_idx++; + } + if (mBoolTrue.mObj) { + out[data_idx] = mBoolTrue.mObj; + mBoolTrue.mConstIdx = data_idx; + } + mDelete = false; +} \ No newline at end of file diff --git a/Objects/private/compiler/expression.cpp b/Objects/private/compiler/expression.cpp new file mode 100644 index 0000000..48a8390 --- /dev/null +++ b/Objects/private/compiler/expression.cpp @@ -0,0 +1,70 @@ +#include "NewPlacement.hpp" +#include "compiler/expression.h" + +using namespace obj; +using namespace BCgen; + +Expression::Expression() {} +Expression::Expression(Type type) : mType(type) {} + +ExpressionChild* Expression::ExprChild(tp::String id) { + return new ExpressionChild(this, id); +} + +ExpressionCall* Expression::ExprCall(tp::init_list args) { + return new ExpressionCall(this, args); +} + +ExpressionLocal* obj::BCgen::ExprLocal(tp::String id) { + return new ExpressionLocal(id); +} + +ExpressionSelf* obj::BCgen::ExprSelf() { + return new ExpressionSelf(); +} + +ExpressionNew* obj::BCgen::ExprNew(tp::String type) { + return new ExpressionNew(type); +} + +ExpressionAriphm* obj::BCgen::ExprAriphm(Expression* left, Expression* right, OpCode type) { + return new ExpressionAriphm(left, right, type); +} + +ExpressionFunc* obj::BCgen::ExprFunc(tp::String id) { + return new ExpressionFunc(id); +} + +ExpressionBoolean* obj::BCgen::ExprBool(Expression* left, Expression* right, obj::OpCode type) { + return new ExpressionBoolean(left, right, ExpressionBoolean::BoolType(type)); +} + +ExpressionBoolean* obj::BCgen::ExprBoolNot(Expression* invert) { + return new ExpressionBoolean(invert); +} + +ExpressionBoolean::ExpressionBoolean(Expression* left, Expression* right, BoolType type) +: Expression(Type::BOOLEAN), mLeft(left), mRight(right), mBoolType(type) { +} + +ExpressionBoolean::ExpressionBoolean(Expression* invert) + : Expression(Type::BOOLEAN), mLeft(invert), mBoolType(BoolType::NOT){ +} + +ExpressionCall::ExpressionCall(Expression * mParent, tp::init_list args) : Expression(Type::CALL), mParent(mParent) { + mArgs = args; +} + +ExpressionNew::ExpressionNew(tp::String type) : Expression(Type::NEW), mNewType(type) {} +ExpressionLocal::ExpressionLocal(tp::String id) : Expression(Type::LOCAL), mLocalId(id) {} +ExpressionSelf::ExpressionSelf() : Expression(Type::SELF) {} +ExpressionChild::ExpressionChild(Expression* mParent, tp::String id) : Expression(Type::CHILD), mParent(mParent), mLocalId(id) {} +ExpressionAriphm::ExpressionAriphm(Expression* left, Expression* right, OpCode type) : Expression(Type::ARIPHM), mLeft(left), mRight(right), mOpType(type) {} +ExpressionFunc::ExpressionFunc(tp::String id) : Expression(Type::FUNC), mFuncId(id) {} +ExpressionConst::ExpressionConst(tp::String val) : Expression(Type::CONST), mConstType(STR), str(val) {} +ExpressionConst::ExpressionConst(const char* val) : Expression(Type::CONST), mConstType(STR), str(val) {} +ExpressionConst::ExpressionConst(tp::int4 val) : Expression(Type::CONST), mConstType(INT), integer(val) {} +ExpressionConst::ExpressionConst(tp::flt4 val) : Expression(Type::CONST), mConstType(FLT), floating(val) {} +ExpressionConst::ExpressionConst(tp::alni val) : Expression(Type::CONST), mConstType(INT), integer(val) {} +ExpressionConst::ExpressionConst(tp::alnf val) : Expression(Type::CONST), mConstType(FLT), floating(val) {} +ExpressionConst::ExpressionConst(bool val) : Expression(Type::CONST), mConstType(BOOL), boolean(val) {} diff --git a/Objects/private/compiler/function.cpp b/Objects/private/compiler/function.cpp new file mode 100644 index 0000000..014da8f --- /dev/null +++ b/Objects/private/compiler/function.cpp @@ -0,0 +1,556 @@ + +#include "NewPlacement.hpp" + +#include "compiler/function.h" + +#include "primitives/primitives.h" +#include "primitives/methodobject.h" + +#include "Logging.hpp" + +#include "parser/parser.h" + +using namespace obj; +using namespace tp; +using namespace obj; +using namespace BCgen; + +void obj::BCgen::Genereate(ByteCode& out, StatementScope* body) { + auto root = FunctionDefinition(); + + root.inst(Instruction(OpCode::SCOPE_IN)); + + for (auto child_stm : body->mStatements) { + root.EvalStatement(child_stm.data()); + } + + root.inst(Instruction(OpCode::SCOPE_OUT)); + + root.generateByteCode(out); +} + +ConstObject* FunctionDefinition::defineLocal(tp::String id) { + auto idx = mLocals.presents(id); + //RelAssert(!idx && "Local Redefinition"); + auto const_str_id = mConstants.get(id); + mLocals.put(id, const_str_id); + return const_str_id; +} + +FunctionDefinition::FunctionDefinition(tp::String function_id, tp::Buffer args, FunctionDefinition* prnt) { + mFunctionId = function_id; + inst(Instruction(OpCode::SAVE_ARGS, args.size(), 1)); + for (auto id : args) { + ASSERT(!mLocals.presents(id.data()) && "Argument Redefinition"); + auto const_data = mConstants.get(id.data()); + mArgsOrder.pushBack(const_data); + mLocals.put(id.data(), const_data); + inst(Instruction(const_data)); + } +} + +void FunctionDefinition::EvalStatement(Statement* stm) { + switch (stm->mType) { + case Statement::Type::IGNORE: { + auto stm_ignore = (StatementIgnore*)stm; + EvalExpr(stm_ignore->mExpr); + inst(OpCode::IGNORE); + break; + } + case Statement::Type::WHILE: { + auto stm_while = (StatementWhile*)stm; + + auto check_mark = inst(Instruction()); + + EvalExpr(stm_while->mCondition); + + auto jump_if_inst = inst(Instruction(NULL, Instruction::InstType::JUMP_IF_NOT)); + + if (stm_while->mScope) { + EvalStatement(stm_while->mScope); + } + + auto jump_inst = inst(Instruction(NULL, Instruction::InstType::JUMP)); + auto end_mark = inst(Instruction()); + + jump_if_inst->data.mInstTarget = end_mark; + jump_inst->data.mInstTarget = check_mark; + + break; + } + case Statement::Type::IF: { + auto stm_if = (StatementIf*)stm; + + EvalExpr(stm_if->mCondition); + + auto jump_if_inst = inst(Instruction(NULL, Instruction::InstType::JUMP_IF_NOT)); + + if (stm_if->mOnTrue) { + EvalStatement(stm_if->mOnTrue); + } + + auto jump_inst = inst(Instruction(NULL, Instruction::InstType::JUMP)); + auto else_mark = inst(Instruction()); + + if (stm_if->mOnFalse) { + EvalStatement(stm_if->mOnFalse); + } + + auto end_mark = inst(Instruction()); + + jump_if_inst->data.mInstTarget = else_mark; + jump_inst->data.mInstTarget = end_mark; + + break; + } + case Statement::Type::SCOPE: { + auto stm_scope = (StatementScope*)stm; + if (stm_scope->mPushToScopeStack) { + inst(Instruction(OpCode::SCOPE_IN)); + } + for (auto child_stm : stm_scope->mStatements) { + EvalStatement(child_stm.data()); + } + if (stm_scope->mPushToScopeStack) { + inst(Instruction(OpCode::SCOPE_OUT)); + } + break; + } + case Statement::Type::DEF_FUNC: { + auto stm_func_def = (StatementFuncDef*) stm; + + FunctionDefinition func(stm_func_def->mFunctionId, stm_func_def->mArgs, this); + + // define method as local + auto idx = mLocals.presents(func.mFunctionId); + ASSERT(!idx && "Local Redefinition with function name"); + mLocals.put(func.mFunctionId, mConstants.get(func.mFunctionId)); + + // create and register const func object + auto function_obj = NDO_CAST(MethodObject, NDO->create("method")); + auto method_const_obj = mConstants.addMethod(func.mFunctionId, function_obj); + + for (auto child_stm : stm_func_def->mStatements) { + func.EvalStatement(child_stm.data()); + } + + func.generateByteCode(function_obj->mScript->mBytecode); + + inst(Instruction(OpCode::LOAD_CONST, method_const_obj)); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(func.mFunctionId))); + inst(Instruction(OpCode::DEF_LOCAL)); + break; + } + case Statement::Type::CLASS_DEF: { + + // do the function definition + auto stm_class_def = (StatementClassDef*)stm; + + FunctionDefinition func(stm_class_def->mClassId, {}, this); + + // define method as local + auto idx = mLocals.presents(func.mFunctionId); + ASSERT(!idx && "Local Redefinition with function name"); + mLocals.put(func.mFunctionId, mConstants.get(func.mFunctionId)); + + // create and register const func object + auto function_obj = NDO_CAST(MethodObject, NDO->create("method")); + auto method_const_obj = mConstants.addMethod(func.mFunctionId, function_obj); + + // compile function + for (auto child_stm : stm_class_def->mScope->mStatements) { + // check for return statements + ASSERT(child_stm.data()->mType != Statement::Type::RET && "return statements are not allowed in class definition"); + func.EvalStatement(child_stm.data()); + } + // create one last instruction - constructing class from function execution state + func.inst(Instruction(OpCode::CLASS_CONSTRUCT)); + func.generateByteCode(function_obj->mScript->mBytecode); + + inst(Instruction(OpCode::LOAD_CONST, method_const_obj)); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(func.mFunctionId))); + inst(Instruction(OpCode::DEF_LOCAL)); + break; + } + case Statement::Type::DEF_LOCAL: { + auto stm_local_def = (StatementLocalDef*)stm; + + if (!stm_local_def->mIsConstExpr) { + auto const_id = defineLocal(stm_local_def->mLocalId); + EvalExpr(stm_local_def->mNewExpr); + inst(Instruction(OpCode::LOAD_CONST, const_id)); + inst(Instruction(OpCode::DEF_LOCAL)); + + } else { + + tp::String type; + switch (stm_local_def->mConstExpr->mConstType) { + case ExpressionConst::BOOL: { + type = "bool"; + break; + } + case ExpressionConst::INT: { + type = "int"; + break; + } + case ExpressionConst::FLT: { + type = "float"; + break; + } + case ExpressionConst::STR: { + type = "str"; + break; + } + default: { + ASSERT(0 && "Cantbe"); + } + } + + auto new_expr = new ExpressionNew(type); + + EvalStatement(StmDefLocal(stm_local_def->mLocalId, new_expr)); + EvalExpr(stm_local_def->mConstExpr); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(stm_local_def->mLocalId))); + inst(Instruction(OpCode::OBJ_COPY)); + } + break; + } + case Statement::Type::COPY: { + auto stm_cp = (StatementCopy*)stm; + EvalExpr(stm_cp->mRight); + EvalExpr(stm_cp->mLeft); + inst(Instruction(OpCode::OBJ_COPY)); + break; + } + case Statement::Type::PRINT: { + auto stm_prnt = (StatementPrint*)stm; + EvalExpr(stm_prnt->mTarget); + inst(Instruction(OpCode::PRINT)); + break; + } + case Statement::Type::RET: { + auto stm_ret = (StatementReturn*)stm; + if (stm_ret->mRet) { + EvalExpr(stm_ret->mRet); + inst(Instruction(OpCode::RETURN_OBJ)); + } else { + inst(Instruction(OpCode::RETURN)); + } + break; + } + + default: + ASSERT(0) + } + + delete stm; +} + + +void FunctionDefinition::EvalExpr(Expression* expr) { + switch (expr->mType) { + case Expression::Type::BOOLEAN: { + auto boolean = (ExpressionBoolean*)expr; + if (boolean->mBoolType == ExpressionBoolean::BoolType::NOT) { + EvalExpr(boolean->mLeft); + inst(OpCode::NOT); + } else { + EvalExpr(boolean->mRight); + EvalExpr(boolean->mLeft); + inst(OpCode(boolean->mBoolType)); + } + break; + } + case Expression::Type::FUNC: { + auto func = (ExpressionFunc*)expr; + + //RelAssert(mConstants.mMethods.presents(func->mFuncId) && "No such function"); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(func->mFuncId))); + break; + } + case Expression::Type::ARIPHM: { + auto ariphm = (ExpressionAriphm*)expr; + EvalExpr(ariphm->mRight); + EvalExpr(ariphm->mLeft); + inst(Instruction(ariphm->mOpType)); + break; + } + case Expression::Type::NEW: { + auto create_new = (ExpressionNew*)expr; + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(create_new->mNewType))); + inst(Instruction(OpCode::OBJ_CREATE)); + break; + } + case Expression::Type::LOCAL: { + auto local = (ExpressionLocal*)expr; + // RelAssert(mLocals.presents(local->mLocalId) && "undefined local"); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(local->mLocalId))); + break; + } + case Expression::Type::CONST: { + auto constobj = (ExpressionConst*)expr; + switch (constobj->mConstType) { + case ExpressionConst::STR: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->str))); + break; + } + case ExpressionConst::INT: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->integer))); + break; + } + case ExpressionConst::FLT: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->floating))); + break; + } + case ExpressionConst::BOOL: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->boolean))); + break; + } + }; + break; + } + case Expression::Type::CHILD: { + auto child = (ExpressionChild*)expr; + EvalExpr(child->mParent); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(child->mLocalId))); + inst(Instruction(OpCode::CHILD, child->mMethod, 1)); + break; + } + case Expression::Type::SELF: { + inst(Instruction(OpCode::SELF)); + break; + } + case Expression::Type::CALL: { + auto call = (ExpressionCall*)expr; + inst(Instruction(OpCode::PUSH_ARGS, call->mArgs.size(), 1)); + for (auto arg : call->mArgs) { + EvalExpr(arg.data()); + } + EvalExpr(call->mParent); + inst(Instruction(OpCode::CALL)); + break; + } + + default: + ASSERT(0) + } + delete expr; +} + +tp::alni instSize(const Instruction& inst) { + switch (inst.mInstType) { + case Instruction::InstType::JUMP: + case Instruction::InstType::JUMP_IF_NOT: + case Instruction::InstType::JUMP_IF: { + // 2 bytes for offset 1 byte for instrtuction + return 3; + } + case Instruction::InstType::PURE_CONST: { + return 2; + } + case Instruction::InstType::EXEC: { + tp::alni out = 1; + switch (inst.mArgType) { + case Instruction::ArgType::PARAM: { + out += inst.mParamBytes; + return out; + } + case Instruction::ArgType::CONST: { + out += 2; + if (inst.mConstData2) { + out += 2; + } + return out; + } + case Instruction::ArgType::NO_ARG: { + return out; + } + default: { + ASSERT(0); + } + } + } + case Instruction::InstType::NONE: { + return 0; + } + default: { + ASSERT(0); + } + } + + ASSERT(0); + return 0; +} + +void writeConst(ByteCode& out, tp::alni& idx, tp::uint2 data) { + for (auto byte : tp::Range(sizeof(tp::uint2))) { + out.mInstructions[idx] = OpCode((tp::int1)(data >> byte * 8)); + idx++; + } +} + +void writeParam(ByteCode& out, tp::alni& idx, tp::int1* data, tp::alni size) { + for (auto byte : tp::Range(size)) { + out.mInstructions[idx] = OpCode(data[byte]); + idx++; + } +} + +tp::alni calcOffset(tp::List::Node* jump_inst, tp::List::Node* to) { + tp::alni offset = 0; + bool reversed = jump_inst->data.mInstIdx > to->data.mInstIdx; + auto iter_node = reversed ? jump_inst : jump_inst->next; + while (iter_node != to) { + offset += instSize(iter_node->data); + iter_node = reversed ? iter_node->prev : iter_node->next; + } + if (reversed) { + offset += instSize(iter_node->data); + } + return reversed ? -offset : offset; +} + +void FunctionDefinition::generateByteCode(ByteCode& out) { + + out.~ByteCode(); + new (&out) ByteCode(); + + mConstants.save(out.mConstants); + + tp::alni inst_len = 0; + for (auto inst_iter : mInstructions) { + inst_len += instSize(inst_iter.data()); + } + out.mInstructions.reserve(inst_len); + + tp::alni idx = 0; + for (auto inst_iter : mInstructions) { + auto inst = inst_iter.data(); + + switch (inst.mInstType) { + case Instruction::InstType::JUMP_IF: + case Instruction::InstType::JUMP_IF_NOT: + case Instruction::InstType::JUMP: { + tp::alni offset = calcOffset(inst_iter.node(), inst.mInstTarget); + + if (offset == 0) { + out.mInstructions[idx] = OpCode::NONE; + idx += 3; + break; + } + + if (inst.mInstType == Instruction::InstType::JUMP_IF) { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP_IF; + } + else { + out.mInstructions[idx] = OpCode::JUMP_IF_R; + } + } + else if (inst.mInstType == Instruction::InstType::JUMP_IF_NOT) { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP_IF_NOT; + } + else { + out.mInstructions[idx] = OpCode::JUMP_IF_NOT_R; + } + } + else { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP; + } + else { + out.mInstructions[idx] = OpCode::JUMP_R; + } + } + + idx++; + + tp::alni offset_mod = abs(offset); + tp::uint2 offset_param = (tp::uint2)offset_mod; + writeParam(out, idx, (tp::int1*)&offset_param, 2); + break; + } + case Instruction::InstType::PURE_CONST: { + writeConst(out, idx, (tp::uint2)inst.mConstData->mConstIdx); + break; + } + case Instruction::InstType::EXEC: { + out.mInstructions[idx] = inst.mOp; + idx++; + switch (inst.mArgType) { + case Instruction::ArgType::PARAM: { + writeParam(out, idx, (tp::int1*) &inst.mParam, inst.mParamBytes); + break; + } + case Instruction::ArgType::CONST: { + writeConst(out, idx, (tp::uint2)inst.mConstData->mConstIdx); + if (inst.mConstData2) { + writeConst(out, idx, (tp::uint2)inst.mConstData2->mConstIdx); + } + break; + } + case Instruction::ArgType::NO_ARG: { + break; + } + default:{ + ASSERT(0); + } + } + break; + } + default: { + ASSERT(0); + } + case Instruction::InstType::NONE: {} + } + } +} + +tp::List::Node* FunctionDefinition::inst(Instruction inst) { + mInstructions.pushBack(inst); + auto out = &mInstructions.last()->data; + out->mInstIdx = mInstructions.length() - 1; + return mInstructions.last(); +} + +static Parser* sParger = NULL; + +void obj::BCgen::init() { + ASSERT(!sParger); + if (!sParger) { + sParger = new Parser(); + } +} + +void obj::BCgen::deinit() { + ASSERT(sParger); + if (sParger) { + delete sParger; + } +} + +bool obj::BCgen::Compile(obj::MethodObject* method) { + + ASSERT(method); + ASSERT(sParger); + + if (!sParger) return false; + + auto script = method->mScript->mReadable->val; + auto res = sParger->parse(script); + + if (res.err) { + auto loc = res.err->get_err_location(script.read()); + // TODO : print parse error + // tp::gLogeer->write(tp::sfmt("Parser Error (%i,%i): \n", loc.head, loc.tail), true, tp::Logger::LogEntry::ERR); + // tp::GLog->write(res.err->mDescr, true, tp::Logger::LogEntry::ERR); + return false; + } + + BCgen::Genereate(method->mScript->mBytecode, res.scope); + + delete res.scope; + + return true; +} \ No newline at end of file diff --git a/Objects/private/compiler/instruction.cpp b/Objects/private/compiler/instruction.cpp new file mode 100644 index 0000000..90e2705 --- /dev/null +++ b/Objects/private/compiler/instruction.cpp @@ -0,0 +1,29 @@ + +#include "compiler/instruction.h" + +using namespace obj; +using namespace tp; +using namespace BCgen; + +Instruction::Instruction(OpCode op) : mOp(op), mArgType(ArgType::NO_ARG), mInstType(InstType::EXEC) {} + +Instruction::Instruction() : mInstType(InstType::NONE) {} + +Instruction::Instruction(ConstObject* constData) + : mConstData(constData), mInstType(InstType::PURE_CONST) {} + +Instruction::Instruction(OpCode op, ConstObject* constData) + : mOp(op), mConstData(constData), mArgType(ArgType::CONST), mInstType(InstType::EXEC) { +} + +Instruction::Instruction(OpCode op, ConstObject* constData, ConstObject* constData2) + : mOp(op), mConstData(constData), mConstData2(constData2), mArgType(ArgType::CONST), mInstType(InstType::EXEC) { +} + +Instruction::Instruction(OpCode op, tp::alni param, tp::alni nBytes) + : mOp(op), mParam(param), mArgType(ArgType::PARAM), mParamBytes(nBytes), mInstType(InstType::EXEC) { +} + +Instruction::Instruction(tp::List::Node* inst, InstType jump_type): mInstTarget(inst) { + mInstType = jump_type; +} \ No newline at end of file diff --git a/Objects/private/compiler/statement.cpp b/Objects/private/compiler/statement.cpp new file mode 100644 index 0000000..4d7e671 --- /dev/null +++ b/Objects/private/compiler/statement.cpp @@ -0,0 +1,116 @@ +#include "NewPlacement.hpp" +#include "compiler/statement.h" + +using namespace obj; +using namespace BCgen; + + +StatementFuncDef::StatementFuncDef(tp::String function_id, tp::init_list args, tp::init_list statements) { + mType = Type::DEF_FUNC; + mArgs = args; + mStatements = statements; + mFunctionId = function_id; +} + +StatementLocalDef::StatementLocalDef(tp::String id, Expression* value) : mLocalId(id), mNewExpr(value) { + mType = Type::DEF_LOCAL; +} + +StatementLocalDef::StatementLocalDef(tp::String id, ExpressionConst* value) : mLocalId(id), mConstExpr(value), mIsConstExpr(true) { + mType = Type::DEF_LOCAL; +} + +StatementCopy::StatementCopy(Expression* left, Expression* right) : mLeft(left), mRight(right) { + mType = Type::COPY; +} + +StatementReturn::StatementReturn() { + mType = Type::RET; +} + +StatementReturn::StatementReturn(Expression* ret) : mRet(ret) { + mType = Type::RET; +} + +StatementPrint::StatementPrint(Expression* target) : mTarget(target) { + mType = Type::PRINT; +} + +StatementScope::StatementScope(tp::init_list statements, bool aPushToScopeStack) { + mType = Type::SCOPE; + mStatements = statements; + mPushToScopeStack = aPushToScopeStack; +} + +StatementIf::StatementIf(Expression* condition, StatementScope* on_true, StatementScope* on_false) { + mType = Type::IF; + mOnFalse = on_false; + mOnTrue = on_true; + mCondition = condition; +} + +StatementWhile::StatementWhile(Expression* condition, StatementScope* scope) { + mType = Type::WHILE; + mScope = scope; + mCondition = condition; +} + +StatementIgnore::StatementIgnore(Expression* expr) { + mType = Type::IGNORE; + mExpr = expr; +} + +StatementClassDef::StatementClassDef(tp::String class_id, StatementScope* scope) { + mClassId = class_id; + mScope = scope; + mType = Type::CLASS_DEF; +} +// helpers + +StatementFuncDef* obj::BCgen::StmDefFunc(tp::String id, tp::init_list args, tp::init_list stms) { + return new StatementFuncDef(id, args, stms); +} + +StatementLocalDef* obj::BCgen::StmDefLocal(tp::String id, Expression* value) { + if (value->mType == Expression::Type::CONST) { + return new StatementLocalDef(id, (ExpressionConst*)value); + } + + return new StatementLocalDef(id, value); +} + +StatementCopy* obj::BCgen::StmCopy(Expression* left, Expression* right) { + return new StatementCopy(left, right); +} + +StatementPrint* obj::BCgen::StmPrint(Expression* target) { + return new StatementPrint(target); +} + +StatementReturn* obj::BCgen::StmReturn() { + return new StatementReturn(); +} + +StatementReturn* obj::BCgen::StmReturn(Expression* obj) { + return new StatementReturn(obj); +} + +StatementIf* obj::BCgen::StmIf(Expression* condition, StatementScope* on_true, StatementScope* on_false) { + return new StatementIf(condition, on_true, on_false); +} + +StatementScope* obj::BCgen::StmScope(tp::init_list statements, bool aPushToScopeStack = false) { + return new StatementScope(statements, aPushToScopeStack); +} + +StatementWhile* obj::BCgen::StmWhile(Expression* condition, StatementScope* scope) { + return new StatementWhile(condition, scope); +} + +StatementIgnore* obj::BCgen::StmIgnore(Expression* expr) { + return new StatementIgnore(expr); +} + +StatementClassDef* obj::BCgen::StmClassDef(tp::String id, StatementScope* scope) { + return new StatementClassDef(id, scope); +} \ No newline at end of file diff --git a/Objects/private/core/object.cpp b/Objects/private/core/object.cpp new file mode 100644 index 0000000..c121ddb --- /dev/null +++ b/Objects/private/core/object.cpp @@ -0,0 +1,250 @@ + + +#include "NewPlacement.hpp" + +#include "core/object.h" + +#include "primitives/nullobject.h" +#include "primitives/classobject.h" +#include "primitives/methodobject.h" + +#include "interpreter/interpreter.h" +#include "compiler/function.h" + +namespace obj { + + Object* ObjectMemAllocate(const ObjectType* type); + void ObjectMemDeallocate(Object* in); + + objects_api* NDO = NULL; + + void hierarchy_copy(Object* self, const Object* in, const ObjectType* type); + void hierarchy_construct(Object* self, const ObjectType* type); + + objects_api::objects_api() { + tp::memSetVal(sl_callbacks, SAVE_LOAD_MAX_CALLBACK_SLOTS * sizeof(save_load_callbacks*), 0); + interp = new Interpreter(); + } + + objects_api::~objects_api() { + delete interp; + } + + void objects_api::define(ObjectType* type) { + MODULE_SANITY_CHECK(gModuleObjects); + + DEBUG_ASSERT(NDO && "using uninitialize objects api"); + DEBUG_ASSERT(!types.presents(type->name) && "Type Redefinition"); + types.put(type->name, type); + + type->type_methods.init(); + } + + Object* objects_api::create(const tp::String& name) { + MODULE_SANITY_CHECK(gModuleObjects); + + const ObjectType* type = types.get(name); + + Object* obj_instance = ObjectMemAllocate(type); + + if (!obj_instance) { + return NULL; + } + + hierarchy_construct(obj_instance, obj_instance->type); + + setrefc(obj_instance, 0); + + NDO_CASTV(ClassObject, obj_instance, classobj); + if (classobj) { + auto idx = classobj->members->presents("__init__"); + DEBUG_ASSERT(idx); + if (idx) { + auto constructor_obj = classobj->members->getSlotVal(idx); + NDO_CASTV(MethodObject, constructor_obj, constructor_method); + if (constructor_method) { + interp->execAll(constructor_method, classobj); + } + } + } + + return obj_instance; + } + + Object* objects_api::copy(Object* self, const Object* in) { + if (self->type != in->type) { + return NULL; + } + + hierarchy_copy(self, in, self->type); + + return self; + } + + bool objects_api::compare(Object* first, Object* second) { + if (first->type == second->type) { + if (first->type->comparison) { + return first->type->comparison(first, second); + } + + // raw data comparison + return tp::memCompare(first, second, first->type->size) == 0; + } + + return false; + } + + Object* objects_api::instatiate(Object* in) { + obj::Object* obj = NDO->create(in->type->name); + NDO->copy(obj, in); + return obj; + } + + void objects_api::set(Object* self, tp::alni val) { + if (self->type->convesions && self->type->convesions->from_int) { + self->type->convesions->from_int(self, val); + return; + } + } + + void objects_api::set(Object* self, tp::alnf val) { + if (self->type->convesions && self->type->convesions->from_float) { + self->type->convesions->from_float(self, val); + return; + } + } + + void objects_api::set(Object* self, tp::String val) { + if (self->type->convesions && self->type->convesions->from_string) { + self->type->convesions->from_string(self, val); + return; + } + } + + tp::alni objects_api::toInt(Object* self) { + DEBUG_ASSERT(self->type->convesions && self->type->convesions->to_int); + return self->type->convesions->to_int(self); + } + + tp::alnf objects_api::toFloat(Object* self) { + DEBUG_ASSERT(self->type->convesions && self->type->convesions->to_float); + return self->type->convesions->to_float(self); + } + + bool objects_api::toBool(Object* self) { + if (self->type->convesions && self->type->convesions->to_int) { + return (bool) self->type->convesions->to_int(self); + } + return true; + } + + tp::String objects_api::toString(Object* self) { + DEBUG_ASSERT(self->type->convesions && self->type->convesions->to_string); + return self->type->convesions->to_string(self); + } + + void objects_api::destroy(Object* in) { + + if (!in) { + return; + } + + #ifdef OBJECT_REF_COUNT + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + if (mh->refc > 1) { + mh->refc--; + return; + } + #endif + + NDO_CASTV(ClassObject, in, classobj); + if (classobj) { + auto idx = classobj->members->presents("__del__"); + DEBUG_ASSERT(idx); + if (idx) { + auto constructor_obj = classobj->members->getSlotVal(idx); + NDO_CASTV(MethodObject, constructor_obj, constructor_method); + if (constructor_method) { + interp->execAll(constructor_method, classobj); + } + } + } + + for (const ObjectType* iter = in->type; iter; iter = iter->base) { + if (iter->destructor) { + iter->destructor(in); + } + } + + ObjectMemDeallocate(in); + } + + #ifdef OBJECT_REF_COUNT + tp::halni objects_api::getrefc(Object* in) { + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + return (tp::halni)mh->refc; + } + + void objects_api::refinc(Object* in) { + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + mh->refc++; + } + + void objects_api::setrefc(Object* in, tp::halni refc) { + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + mh->refc = refc; + } + #endif + + + void hierarchy_copy(Object* self, const Object* in, const ObjectType* type) { + if (type->base) { + hierarchy_copy(self, in, type->base); + } + + if (type->copy) { + type->copy(self, in); + } + } + + void hierarchy_construct(Object* self, const ObjectType* type) { + if (type->base) { + hierarchy_construct(self, type->base); + } + + if (type->constructor) { + type->constructor(self); + } + } + + Object* ndo_cast(const Object* in, const ObjectType* to_type) { + const ObjectType* typeiter = in->type; + while (typeiter) { + if (typeiter == to_type) { + return (Object*) in; + } + typeiter = typeiter->base; + } + return NULL; + } + + objects_api* objects_init() { + if (!NDO) { + NDO = new objects_api(); + } + + obj::BCgen::init(); + + return NDO; + } + + void objects_finalize() { + + if (NDO) { + delete NDO; + } + + obj::BCgen::deinit(); + } + +}; \ No newline at end of file diff --git a/Objects/private/core/objectsave.cpp b/Objects/private/core/objectsave.cpp new file mode 100644 index 0000000..138f741 --- /dev/null +++ b/Objects/private/core/objectsave.cpp @@ -0,0 +1,411 @@ + + +#include "core/object.h" + +#include "HeapAllocatorGlobal.hpp" + +#include + +namespace obj { + + ObjectMemHead* bottom = nullptr; + + struct ObjectsFileHeader { + char name[10] = {0}; + char version[10] = {0}; + + ObjectsFileHeader(bool default_val = true) { + if (default_val) { + tp::memCopy(&name, "objects", tp::String::Logic::calcLength("objects") + 1); + tp::memCopy(&version, "0", tp::String::Logic::calcLength("0") + 1); + } + } + }; + + + Object* ObjectMemAllocate(const ObjectType* type) { + ObjectMemHead* memh = (ObjectMemHead*) tp::HeapAllocGlobal::allocate(type->size + sizeof(ObjectMemHead)); + if (!memh) { + return NULL; + } + + memh->down = NULL; + memh->flags = NULL; + + #ifdef OBJECT_REF_COUNT + memh->refc = (tp::alni) 1; + #endif + + if (bottom) { + bottom->down = memh; + } + memh->up = bottom; + bottom = memh; + + NDO_FROM_MEMH(memh)->type = type; + return NDO_FROM_MEMH(memh); + } + + void ObjectMemDeallocate(Object* in) { + ObjectMemHead* memh = ((ObjectMemHead*) in) - 1; + + if (memh->up) { + memh->up->down = memh->down; + } + + if (memh->down) { + memh->down->up = memh->up; + } else { + bottom = memh->up; + } + + tp::HeapAllocGlobal::deallocate(memh); + } + + struct ObjectFileHead { + Object* load_head_adress = 0; + tp::halni refc = 0; + }; + + tp::int1* loaded_file = nullptr; + + + void objects_api::clear_object_flags() { + // clear all object flags + for (ObjectMemHead* iter = bottom; iter; iter = iter->up) { + iter->flags = -1; + } + } + + tp::alni& getObjectFlags(Object* in) { + return NDO_MEMH_FROM_NDO(in)->flags; + } + + tp::alni objsize_ram_util(Object* self, const ObjectType* type) { + tp::alni out = 0; + + if (type->allocated_size) { + out += type->allocated_size(self); + } else { + out += type->size - sizeof(ObjectType*); + } + + if (type->base) { + out += objsize_ram_util(self, type->base); + } else { + out += sizeof(ObjectType*); + } + + return out; + } + + tp::alni objects_api::objsize_ram(Object* self) { + return objsize_ram_util(self, self->type); + } + + tp::alni objects_api::objsize_ram_recursive_util(Object* self, const ObjectType* type, bool different_object) { + tp::alni out = 0; + + if (different_object) { + if (getObjectFlags(self) == 1) { + return 0; + } + + getObjectFlags(self) = 1; + } + + if (type->allocated_size_recursive) { + out += type->allocated_size_recursive(self); + } else { + if (type->allocated_size) { + out += type->allocated_size(self); + } else { + out += type->size - sizeof(ObjectType*); + } + } + + if (type->base) { + out += objsize_ram_recursive_util(self, type->base, false); + } else { + out += sizeof(ObjectType*); + } + + return out; + } + + tp::alni objects_api::objsize_ram_recursive(Object* self) { + clear_object_flags(); + return objsize_ram_recursive_util(self, self->type); + } + + tp::alni objsize_file_util(Object* self, const ObjectType* type) { + tp::alni out = 0; + + if (type->save_size) { + out += type->save_size(self); + } + + if (type->base) { + out += objsize_file_util(self, type->base); + } + return out; + } + + tp::alni objects_api::objsize_file(Object* self) { + return objsize_file_util(self, self->type); + } + + tp::alni objsize_file_recursive_util(Object* self, const ObjectType* type) { + tp::alni out = 0; + + getObjectFlags(self) = 1; + + if (type->save_size) { + out += type->save_size(self); + } + + if (type->childs_retrival) { + tp::Buffer childs = type->childs_retrival(self); + for (auto child : childs) { + if (getObjectFlags(child.data()) != 1) { + out += objsize_file_recursive_util(child.data(), child.data()->type); + } + } + } + + if (type->base) { + out += objsize_file_recursive_util(self, type->base); + } + + return out; + } + + tp::alni objects_api::objsize_file_recursive(Object* self) { + clear_object_flags(); + return objsize_file_recursive_util(self, self->type); + } + + void object_recursive_save(Archiver& ndf, Object* self, const ObjectType* type) { + if (type->base) { + object_recursive_save(ndf, self, type->base); + } + + // automatically offsets for parent type to write + if (type->save) { + type->save(self, ndf); + } + } + + tp::alni objects_api::save(Archiver& ndf, Object* in) { + // if already saved return file_adress + if (NDO_MEMH_FROM_NDO(in)->flags != -1) { + return NDO_MEMH_FROM_NDO(in)->flags; + } + + // save write adress for parent save function call + tp::alni tmp_adress = ndf.adress; + + // save requested object to first available adress + tp::alni save_adress = ndf.avl_adress; + + // save file_adress in memhead + NDO_MEMH_FROM_NDO(in)->flags = save_adress; + + // update write adress + ndf.adress = save_adress; + + // save file object header + ObjectFileHead ofh = { 0, getrefc(in) }; + ndf.write(&ofh); + tp::String(in->type->name).save(&ndf); + + // allocate for object file header + ndf.avl_adress += sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1; + + // calc max size needed for saving all hierarchy of types + tp::alni file_alloc_size = objsize_file_util(in, in->type); + + // offes first available adress + ndf.avl_adress += file_alloc_size; + + object_recursive_save(ndf, in, in->type); + + // restore adress for parent save function + ndf.adress = tmp_adress; + + // return addres of saved object in file space + return save_adress; + } + + void object_recursive_load(Archiver& ndf, Object* out, const ObjectType* type) { + if (type->base) { + object_recursive_load(ndf, out, type->base); + } + + // automatically offsets for parent type to read + if (type->load) { + type->load(ndf, out); + } + } + + Object* objects_api::load(Archiver& ndf, tp::alni file_adress) { + // check if already saved + if (((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress) { + return ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress; + } + + // save read adress + tp::alni parent_file_adress = ndf.adress; + + // set read adress + ndf.adress = file_adress; + + ObjectFileHead ofh; + ndf.read(&ofh); + tp::String type_name; + type_name.load(&ndf); + + const ObjectType* object_type = NDO->types.get(type_name); + Object* out = ObjectMemAllocate(object_type); + + if (!out) { + return NULL; + } + + setrefc(out, ofh.refc); + + // save heap adress in "loaded_file" + ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress = out; + + // loads recursivelly + object_recursive_load(ndf, out, object_type); + + // restore read adress for parent call to continue + ndf.adress = parent_file_adress; + + // return heap memory adress + return out; + } + + bool objects_api::save(Object* in, tp::String path, bool compressed) { + Archiver ndf(path.read(), Archiver::SAVE); + + if (!ndf.opened) { + return false; + } + + clear_object_flags(); + + // save vesion info + ObjectsFileHeader header; + ndf.write(&header); + + ndf.avl_adress = ndf.adress; + + // pre allocate + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i]) { + DEBUG_ASSERT(sl_callbacks[i]->size); + ndf.avl_adress += sl_callbacks[i]->size(sl_callbacks[i]->self, ndf); + } + } + + // presave + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->pre_save) { + sl_callbacks[i]->pre_save(sl_callbacks[i]->self, ndf); + } + } + + save(ndf, in); + + // postsave + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->post_save) { + sl_callbacks[i]->post_save(sl_callbacks[i]->self, ndf); + } + } + + ndf.disconnect(); + + // TODO : add compression + /* + if (compressed) { + auto temp = path + ".bz2"; + tp::compressF2F(path.read(), temp.cstr()); + + File::remove(path.read()); + File::rename(temp.cstr(), path.read()); + } + */ + + return true; + } + + Object* objects_api::load(tp::String path) { + /* + auto temp_file_name = path + ".unz"; + bool unz_res = tp::decompressF2F(path.cstr(), temp_file_name.cstr()); + + if (!unz_res) { + return NULL; + } + + File ndf(temp_file_name.cstr(), tp::osfile_openflags::LOAD); + */ + + Archiver ndf(path.read(), Archiver::LOAD); + + if (!ndf.opened) { + return NULL; + } + + // check for compability + ObjectsFileHeader current_header; + ObjectsFileHeader loaded_header(false); + ndf.read(&loaded_header); + if (!tp::memEqual(¤t_header, &loaded_header, sizeof(ObjectsFileHeader))) { + return NULL; + } + + ndf.adress = 0; + loaded_file = (tp::int1*) malloc(ndf.size()); + ndf.read_bytes(loaded_file, ndf.size()); + ndf.adress = sizeof(ObjectsFileHeader); + + // preload + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->pre_load) { + sl_callbacks[i]->pre_load(sl_callbacks[i]->self, ndf); + } + } + + Object* out = load(ndf, ndf.adress); + + // post + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->post_save) { + sl_callbacks[i]->post_load(sl_callbacks[i]->self, ndf); + } + } + + free(loaded_file); + + /* + ndf.close(); + + if (unz_res == NULL) { + File::remove(temp_file_name.cstr()); + } + */ + + setrefc(out, 0); + + return out; + } + + void objects_api::add_sl_callbacks(save_load_callbacks* in) { + sl_callbacks[sl_callbacks_load_idx] = in; + sl_callbacks_load_idx++; + } +}; \ No newline at end of file diff --git a/Objects/private/core/scriptsection.cpp b/Objects/private/core/scriptsection.cpp new file mode 100644 index 0000000..6af3c54 --- /dev/null +++ b/Objects/private/core/scriptsection.cpp @@ -0,0 +1,265 @@ + +#include "NewPlacement.hpp" +#include "HeapAllocatorGlobal.hpp" + +#include "core/scriptsection.h" + +using namespace obj; + +ScriptSection* gScriptSection = NULL; + +struct script_data_head { + tp::alni refc = 0; + tp::alni store_adress = 0; +}; + +void set_script_head_store_adress(Script* in, tp::alni address) { + ((script_data_head*)in - 1)->store_adress = address; +} + +tp::alni get_script_head_store_adress(Script* in) { + return ((script_data_head*)in - 1)->store_adress; +} + +Script* ScriptSection::createScript() { + auto sdhead = (script_data_head*)tp::HeapAllocGlobal::allocate(sizeof(script_data_head) + sizeof(Script)); + auto out = (Script*)(sdhead + 1); + + if (!sdhead) { + return NULL; + } + + sdhead->refc = 1; + sdhead->store_adress = -1; + + mScripts.pushBack(out); + + new (out) Script(); + out->mReadable = obj::StringObject::create(""); + obj::NDO->refinc(out->mReadable); + return out; +} + +void ScriptSection::delete_script(Script* script) { + script->~Script(); + obj::NDO->destroy(script->mReadable); + + tp::HeapAllocGlobal::deallocate((((script_data_head*)script) - 1)); +} + +void ScriptSection::reference_script(Script* script) { + (((script_data_head*)script) - 1)->refc++; +} + +void ScriptSection::abandonScript(Script* script) { + if ((((script_data_head*)script) - 1)->refc > 1) { + (((script_data_head*)script) - 1)->refc--; + } + else { + // ISSUE : on delete list structure is outdated + // FIXME : use pool alloc with ref count + // forwarding to global destruction + //delete_script(script); + } +} + +void ScriptSection::changeScript(Script** current_script, Script** new_script) { + abandonScript(*current_script); + reference_script(*new_script); + + *current_script = *new_script; +} + +tp::alni ScriptSection::get_script_file_adress(Script* in) { + return get_script_head_store_adress(in); +} + +tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, Archiver& file) { + tp::alni size = 0; + size += 5; // header + size += sizeof(tp::alni); // scripts length + + for (auto iter : self->mScripts) { + + set_script_head_store_adress(iter.data(), file.adress + size); + + size += sizeof(tp::alni); // scripts string obj ref + size += sizeof(tp::alni); // constants length + + for (auto const_obj : iter->mBytecode.mConstants) { + size += sizeof(tp::alni); // constant object addres + } + + // instructions + size += iter->mBytecode.mInstructions.saveSize(); + } + + size += sizeof(tp::alni); // objects mem offset + size += 5; // header + return size; +} + +void ScriptSection::save_script_table_to_file(ScriptSection* self, Archiver& file) { + // header + file.write_bytes("/scr/", 5); + + // scripts length + tp::alni scripts_count = self->mScripts.length(); + file.write(&scripts_count); + + for (auto iter : self->mScripts) { + + // scripts string obj ref + auto obj_addres = obj::NDO->save(file, iter->mReadable); + file.write(&obj_addres); + + // constants length + tp::alni consts_count = iter->mBytecode.mConstants.size(); + file.write(&consts_count); + + for (auto const_obj : iter->mBytecode.mConstants) { + // constant object addres + auto obj_addres = obj::NDO->save(file, const_obj.data()); + file.write(&obj_addres); + } + + // mInstructions + iter->mBytecode.mInstructions.save(file); + } + + // header + file.write_bytes("/scr/", 5); + + tp::alni objects_mem_offset = file.avl_adress; + file.write(&objects_mem_offset); +} + +void load_constants(ScriptSection* self, Archiver& file, tp::alni start_addr) { + auto addres = file.adress; + + file.adress = start_addr; + file.adress += 5; // header + + tp::alni scripts_count; + file.read(&scripts_count); + + for (tp::alni i = 0; i < scripts_count; i++) { + + auto script = self->get_scritp_from_file_adress(file.adress); + + // script text + tp::alni str_addr; + file.read(&str_addr); + script->mReadable = NDO_CAST(obj::StringObject, obj::NDO->load(file, str_addr)); + + file.adress += sizeof(tp::alni); // constants length + + for (auto const_obj : script->mBytecode.mConstants) { + tp::alni consts_addr; + file.read(&consts_addr); + const_obj.data() = obj::NDO->load(file, consts_addr); + } + + // instructions + file.adress += script->mBytecode.mInstructions.saveSize(); + } + + file.adress = addres; +} + +void ScriptSection::load_script_table_from_file(ScriptSection* self, Archiver& file) { + for (auto iter : self->mScripts) { + set_script_head_store_adress(iter.data(), -1); + } + + auto section_start_addr = file.adress; + + // header + file.adress += 5; + + // scripts length + tp::alni scripts_count; + file.read(&scripts_count); + + for (tp::alni i = 0; i < scripts_count; i++) { + + auto new_script = self->createScript(); + set_script_head_store_adress(new_script, file.adress); + + // scripts text + file.adress += sizeof(tp::alni); + + // constants length + tp::alni consts_count; + file.read(&consts_count); + + new_script->mBytecode.mConstants.reserve(consts_count); + + for (tp::alni j = 0; j < consts_count; j++) { + // constant object addres + tp::alni consts_addr; + file.read(&consts_addr); + + // skiping + //new_script->mBytecode.mConstants[j] = obj::NDO->load(file, consts_addr); + } + + // mInstructions + new_script->mBytecode.mInstructions.load(file); + } + + load_constants(self, file, section_start_addr); + + // header + file.adress += 5; + + tp::alni objects_mem_offset; + file.read(&objects_mem_offset); + + file.adress = objects_mem_offset; +} + +Script* ScriptSection::get_scritp_from_file_adress(tp::alni file_adress) { + for (auto iter : mScripts) { + if (get_script_head_store_adress(iter.data()) == file_adress) { + return iter.data(); + } + } + return NULL; +} + +ScriptSection::~ScriptSection() { + for (auto iter : mScripts) { + delete_script(iter.data()); + } +} + +obj::save_load_callbacks ScriptSection::slcb_script_section = { + .self = gScriptSection, + .pre_save = (obj::pre_save_callback*)ScriptSection::save_script_table_to_file, + .size = (obj::slcb_size_callback*)ScriptSection::save_script_table_to_file_size, + .pre_load = (obj::pre_load_callback*)ScriptSection::load_script_table_from_file, + .post_save = NULL, + .post_load = NULL, +}; + + +void ScriptSection::initialize() { + ASSERT(!gScriptSection); + gScriptSection = new ScriptSection(); + + ASSERT(obj::NDO && "Forgot to initialize objects?"); + + slcb_script_section.self = gScriptSection; + obj::NDO->add_sl_callbacks(&slcb_script_section); +} + +void ScriptSection::uninitialize() { + ASSERT(gScriptSection); + delete gScriptSection; +} + +ScriptSection* ScriptSection::globalHandle() { + return gScriptSection; +} + diff --git a/Objects/private/core/typegroups.cpp b/Objects/private/core/typegroups.cpp new file mode 100644 index 0000000..e98af62 --- /dev/null +++ b/Objects/private/core/typegroups.cpp @@ -0,0 +1,81 @@ + +#include "NewPlacement.hpp" + +#include "core/typegroups.h" + +#include "core/object.h" + +using namespace obj; + +obj::TypeGroups::TypeGroups() : is_group(true) { + new (&childs) Dict(); +} + +obj::TypeGroups::TypeGroups(bool is_group) : is_group(is_group) { + if (is_group) { + new (&childs) Dict(); + } else { + type = NULL; + } +} + +bool obj::TypeGroups::isGroup() { return is_group; } + +obj::TypeGroups::Dict* obj::TypeGroups::getChilds() { + DEBUG_ASSERT(is_group); + return &childs; +} + +void obj::TypeGroups::setType(ObjectType* type) { + DEBUG_ASSERT(!is_group); + this->type = type; +} + +void obj::TypeGroups::addType(ObjectType* type, tp::init_list path, tp::alni cur_dir_idx) { + DEBUG_ASSERT(is_group); + + tp::alni dir_len = (tp::alni) path.size(); + + if (dir_len == cur_dir_idx) { + TypeGroups* type_ref = new TypeGroups(false); + type_ref->setType(type); + childs.put(type->name, type_ref); + return; + } + + TypeGroups* group = NULL; + tp::alni index = 0; + + for (auto dir : path) { + if (index != cur_dir_idx) { + index++; + continue; + } + + auto child_idx = childs.presents(dir); + if (child_idx) { + group = childs.getSlotVal(child_idx); + } else { + group = new TypeGroups(true); + childs.put(dir, group); + } + + group->addType(type, path, cur_dir_idx + 1); + + break; + } +} + +const obj::ObjectType* obj::TypeGroups::getType() { + DEBUG_ASSERT(!is_group); + return type; +} + +obj::TypeGroups::~TypeGroups() { + if (is_group) { + for (auto& child : childs) { + delete child->val; + } + childs.~Map(); + } +} \ No newline at end of file diff --git a/Objects/private/core/typemethods.cpp b/Objects/private/core/typemethods.cpp new file mode 100644 index 0000000..d756d2a --- /dev/null +++ b/Objects/private/core/typemethods.cpp @@ -0,0 +1,138 @@ + +#include "NewPlacement.hpp" + +#include "core/typemethods.h" + +#include "primitives/nullobject.h" +#include "primitives/typeobject.h" +#include "primitives/floatobject.h" + +#include "interpreter/interpreter.h" + + +using namespace obj; + +TypeMethod obj::gDefaultTypeMethods[] = { + { + .nameid = "type", + .descr = "retrieves typeobject", + .exec = [](const TypeMethod* tm) { + tm->ret.obj = TypeObject::create(tm->self->type); + }, + .ret = { "typeobject", NULL }, + }, + { + .nameid = "to_str", + .descr = "converts to string", + .exec = [](const TypeMethod* tm) { + if (tm->self->type->convesions && tm->self->type->convesions->to_string) { + tm->ret.obj = StringObject::create(NDO->toString(tm->self)); + } + }, + .ret = { "string object", NULL }, + }, + { + .nameid = "to_float", + .descr = "converts to float", + .exec = [](const TypeMethod* tm) { + if (tm->self->type->convesions && tm->self->type->convesions->to_float) { + tm->ret.obj = FloatObject::create(NDO->toFloat(tm->self)); + } + }, + .ret = { "string object", NULL }, + }, +}; + +tp::int2 TypeMethods::presents(tp::String id) const { + for (tp::int2 idx = 0; idx < mNMethods; idx++) { + if (id == methods[idx]->nameid) { + return idx; + } + } + + tp::int2 idx = 0; + for (auto& tm : gDefaultTypeMethods) { + if (id == tm.nameid) { + return { tp::int2(idx + MAX_TYPE_METHODS) }; + } + idx++; + } + + return -1; +} + +TypeMethods::LookupKey TypeMethods::presents(const ObjectType* type, tp::string id) { + + tp::int2 depth = 0; + tp::int2 idx = 0; + + for (auto iter_type = type; iter_type; iter_type = iter_type->base) { + idx = iter_type->type_methods.presents(id); + if (idx != -1) { + break; + } + depth++; + } + + return { idx, depth}; +} + +const TypeMethod* TypeMethods::getMethod(tp::int2 key) const { + if (key < MAX_TYPE_METHODS) { + return methods[key]; + } + return &gDefaultTypeMethods[key - MAX_TYPE_METHODS]; +} + +const TypeMethod* TypeMethods::getMethod(const ObjectType* type, LookupKey key) { + auto type_iter = type; + for (auto idx = 0; idx < key.type_depth; idx++) { + type_iter = type_iter->base; + } + return type_iter->type_methods.getMethod(key.key); +} + +void TypeMethods::init() { + while (methods[mNMethods]) { + mNMethods++; + } + + for (tp::int1 i = 0; i < mNMethods; i++) { + methods[i]->init(); + } + + // initialize and use finate state automata to lookup methods +} + +tp::halni TypeMethods::nMethods() const { + return mNMethods; +} + +void TypeMethod::operator()(Interpreter* interp) const{ + for (auto i = 1; i <= mNargs; i++) { + args[mNargs - i].obj = interp->mOperandsStack.getOperand(); + //NDO->refinc(args[i].obj); + ASSERT(args[mNargs - i].obj && "expected an argument"); + } + + ASSERT(!interp->mOperandsStack.getOperand() && "args remained"); + interp->mOperandsStack.getOperand(); + + self = interp->mLastParent; + + exec(this); + + if (ret.obj) { + interp->mOperandsStack.push(ret.obj); + interp->mScopeStack.addTempReturn(ret.obj); + } + else { + interp->mOperandsStack.push(NDO_NULL_REF); + } +} + +void TypeMethod::init() { + while (args[mNargs].descr) { + mNargs++; + } +} \ No newline at end of file diff --git a/Objects/private/interpreter/callstack.cpp b/Objects/private/interpreter/callstack.cpp new file mode 100644 index 0000000..ccf37aa --- /dev/null +++ b/Objects/private/interpreter/callstack.cpp @@ -0,0 +1,40 @@ + +#include "NewPlacement.hpp" + +#include "interpreter/callstack.h" + +#include "interpreter/bytecode.h" +#include "primitives/methodobject.h" + +using namespace obj; + +void CallStack::enter(const CallStack::CallFrame& frame) { + if (mStack.size()) { + auto& last_frame = mStack.last(); + last_frame.mIp = last_frame.mMethod->mScript->mBytecode.mInstructionIdx; + } + + frame.mMethod->mScript->mBytecode.mArgumentsLoaded = 0; + frame.mMethod->mScript->mBytecode.mInstructionIdx = 0; + obj::NDO->refinc(frame.mMethod); + mStack.append(frame); +} + +void CallStack::leave() { + auto frame = mStack.last(); + obj::NDO->destroy(frame.mMethod); + mStack.pop(); + + if (mStack.size()) { + auto& last_frame = mStack.last(); + last_frame.mMethod->mScript->mBytecode.mInstructionIdx = last_frame.mIp; + } +} + +ByteCode* CallStack::getBytecode() { + return &mStack.last().mMethod->mScript->mBytecode; +} + +tp::halni CallStack::len() const { + return mStack.size(); +} \ No newline at end of file diff --git a/Objects/private/interpreter/interpreter.cpp b/Objects/private/interpreter/interpreter.cpp new file mode 100644 index 0000000..7978c18 --- /dev/null +++ b/Objects/private/interpreter/interpreter.cpp @@ -0,0 +1,573 @@ + +#include "NewPlacement.hpp" + +#include "interpreter/interpreter.h" + +#include "primitives/primitives.h" + +#include "Logging.hpp" + +#include "Timing.hpp" + +using namespace obj; + +inline tp::uint1 read_byte(ByteCode* bytecode) { + auto out = (tp::uint1)bytecode->mInstructions[bytecode->mInstructionIdx]; + bytecode->mInstructionIdx++; + return out; +} + +// exeption for opcodes +// reads 2 bytes from instructions in order to load constant onto operands stack +tp::uint2 loadConstDataIdx(ByteCode* bytecode) { + tp::uint2 out = 0; + out |= ((tp::uint2) read_byte(bytecode)); + out |= ((tp::uint2) read_byte(bytecode) << 8); + return out; +} + +// exeption for opcodes +// reads 2 bytes from instructions in order to load constant onto operands stack +void skip_param(ByteCode* bytecode) { + bytecode->mInstructionIdx += 2; +} + +tp::uint2 param(ByteCode* bytecode) { + return loadConstDataIdx(bytecode); +} + +void Interpreter::exec(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::init_list globals2) { + if (!method->mScript->mBytecode.mInstructions.size()) { + return; + } + + mCallStack.enter({ NULL, method, 0 }); + mCallStack.mStack.last().mSelf = self; + + stepBytecodeIn(); + + if (globals) { + for (auto glb : globals->getItems()) { + mScopeStack.addLocal(glb->val, glb->key); + } + } + + for (auto global_def : globals2) { + mScopeStack.addLocal(global_def.obj, global_def.id); + } +} + +bool Interpreter::finished() { + return !mCallStack.len(); +} + +void Interpreter::stepBytecode() { + tp::halni call_depth = mCallStack.len(); + do { + stepBytecodeIn(); + if (finished()) { + return; + } + } while (call_depth != mCallStack.len()); +} + +void Interpreter::stepBytecodeOut() { + if (finished()) { + return; + } + + tp::halni call_depth = mCallStack.len(); + if (!call_depth) { + return; + } + + do { + stepBytecodeIn(); + if (finished()) { + return; + } + } while (call_depth - 1 != mCallStack.len()); +} + +void Interpreter::stepBytecodeIn() { + using namespace obj; + using namespace tp; + + DEBUG_BREAK(finished()); + + auto bytecode = mCallStack.getBytecode(); + + if (bytecode->mInstructionIdx >= (tp::ualni) bytecode->mInstructions.size()) { + // just return + if (mScopeStack.mIdx) { + mScopeStack.leaveScope(); + } + + mCallStack.leave(); + + if (mCallStack.len()) { + mOperandsStack.push(NDO_NULL_REF); + } + return; + } + + auto opcode = bytecode->mInstructions[bytecode->mInstructionIdx]; + bytecode->mInstructionIdx++; + + switch (opcode) { + + case OpCode::NONE: { + break; + } + + case OpCode::HALT: { + while (true) { + tp::sleep(3); + } + break; + } + + case OpCode::TERMINATE: { + //tp::terminate(0); + } + + case OpCode::IGNORE: { + NDO->destroy(mOperandsStack.getOperand()); + break; + } + + case OpCode::LOAD_CONST: { + auto idx = loadConstDataIdx(bytecode); + auto const_obj = bytecode->mConstants[idx]; + mOperandsStack.push(const_obj); + break; + } + + case OpCode::LOAD_LOCAL: { + auto idx = loadConstDataIdx(bytecode); + auto const_obj = bytecode->mConstants[idx]; + NDO_CASTV(StringObject, const_obj, local_id); + ASSERT(local_id && "Invalid Object Type"); + auto local = mScopeStack.getLocal(local_id->val); + mOperandsStack.push(local); + break; + } + + case OpCode::SCOPE_IN: { + mScopeStack.enterScope(true); + break; + } + + case OpCode::JUMP: { + bytecode->mInstructionIdx += param(bytecode); + break; + } + + case OpCode::JUMP_IF: { + auto cond = mOperandsStack.getOperand(); + if (NDO->toBool(cond)) { + bytecode->mInstructionIdx += param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_IF_NOT: { + auto cond = mOperandsStack.getOperand(); + if (!NDO->toBool(cond)) { + bytecode->mInstructionIdx += param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_R: { + bytecode->mInstructionIdx -= param(bytecode); + break; + } + + case OpCode::JUMP_IF_R: { + auto cond = mOperandsStack.getOperand(); + if (NDO->toBool(cond)) { + bytecode->mInstructionIdx -= param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_IF_NOT_R: { + auto cond = mOperandsStack.getOperand(); + if (!NDO->toBool(cond)) { + bytecode->mInstructionIdx -= param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::SCOPE_OUT: { + mScopeStack.leaveScope(); + break; + } + + case OpCode::PRINT: { + auto obj = mOperandsStack.getOperand(); + if (obj->type->convesions && obj->type->convesions->to_string) { + auto str = NDO->toString(obj); + gLogger->write(str, true); + } else { + gLogger->write(String(obj->type->name), true); + } + break; + } + + case OpCode::OBJ_CREATE_LOCAL: { + auto type = mOperandsStack.getOperand(); + auto id = mOperandsStack.getOperand(); + mScopeStack.addLocal(NDO->create(type->val), id->val); + break; + } + + case OpCode::DEF_LOCAL: { + auto id = mOperandsStack.getOperand(); + auto obj = mOperandsStack.getOperand(); + mScopeStack.addLocal(obj, id->val); + NDO->refinc(obj); + //mScopeStack.popTemp(); + break; + } + + case OpCode::OBJ_CREATE: { + auto type = mOperandsStack.getOperand(); + Object* new_obj = NULL; + + // basic types + auto idx = NDO->types.presents(type->val); + if (idx) { + auto new_obj = NDO->create(type->val); + + mOperandsStack.push(new_obj); + mScopeStack.addTemp(new_obj); + break; + } + + + // class creation + auto local_class = mScopeStack.getLocal(type->val); + NDO_CASTV(MethodObject, local_class, method); + ASSERT(method); + + // class is a function - execute it as a constructor + + // PUSH_ARGS protocol + tp::uint2 len = 0; + mOperandsStack.push((Object*)len); + mOperandsStack.push(NULL); + + // CALL protocol + mScopeStack.enterScope(false); + mCallStack.enter({ NULL, method, 0 }); + break; + } + + case OpCode::CLASS_CONSTRUCT: { + auto class_obj = (ClassObject*)NDO->create("class"); + + for (auto local : mScopeStack.getCurrentScope()->mLocals) { + class_obj->addMember(local->val, local->key); + } + + mOperandsStack.push(class_obj); + mScopeStack.addTempReturn(class_obj); + + mScopeStack.leaveScope(); + mCallStack.leave(); + return; + } + + case OpCode::RETURN: { + //mScopeStack.addTempReturn(NDO_NULL_REF); + mScopeStack.leaveScope(); + mCallStack.leave(); + if (mCallStack.len()) { + mOperandsStack.push(NDO_NULL_REF); + } + break; + } + + case OpCode::PUSH_ARGS: { + + // Layout of OperandsStack: + // .... + // +1) length : to chech number of args + // +2) NULL : stop saving args + // +3) object1 + // +4) object2 + // ... + + tp::uint2 len = read_byte(bytecode); + mOperandsStack.push((Object*) len); + mOperandsStack.push(NULL); + break; + } + + case OpCode::SAVE_ARGS: { + tp::uint2 args_len = read_byte(bytecode); + auto argument = mOperandsStack.getOperand(); + + while (argument) { + NDO->refinc(argument); + + auto argument_id = bytecode->mConstants[loadConstDataIdx(bytecode)]; + NDO_CASTV(StringObject, argument_id, id); + DEBUG_ASSERT(id); + mScopeStack.addLocal(argument, id->val); + bytecode->mArgumentsLoaded++; + argument = mOperandsStack.getOperand(); + } + + tp::uint2 saved_len = tp::uint2 (tp::ualni (mOperandsStack.getOperand())); + ASSERT(args_len == saved_len && "invalid number of arguments passefd"); + + break; + } + + case OpCode::RETURN_OBJ: { + if (mCallStack.len() > 1) { + auto ret = mOperandsStack.getOperand(); + mOperandsStack.push(ret); + mScopeStack.addTempReturn(ret); + } + + mScopeStack.leaveScope(); + mCallStack.leave(); + break; + } + + case OpCode::CALL: { + auto obj = mOperandsStack.getOperand(); + + if (!mIsTypeMethod) { + NDO_CASTV(MethodObject, obj, method); + + mScopeStack.enterScope(false); + mCallStack.enter({ NULL, method, 0 }); + + // push self + mCallStack.mStack.last().mSelf = mLastParent; + break; + } + + (*mTypeMethod)(this); + mIsTypeMethod = false; + mTypeMethod = NULL; + break; + } + + case OpCode::OBJ_ADD: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->add(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_SUB: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->sub(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_MUL: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->mul(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_DIV: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->div(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + + case OpCode::OBJ_COPY: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + NDO->copy(left, right); + break; + } + + case OpCode::CHILD: { + auto child_id = mOperandsStack.getOperand(); + auto parent = mOperandsStack.getOperand(); + bool is_method = read_byte(bytecode); + + Object* child = NULL; + TypeMethods::LookupKey tm_key; + + if (is_method) { + tm_key = TypeMethods::presents(parent->type, child_id->val); + } + + if (tm_key) { + mTypeMethod = TypeMethods::getMethod(parent->type, tm_key); + mIsTypeMethod = true; + + } else { + NDO_CASTV(ClassObject, parent, class_obj); + ASSERT(class_obj && "not a class object"); + auto idx = class_obj->members->presents(child_id->val); + ASSERT(idx && "No child with such id"); + child = class_obj->members->getSlotVal(idx); + } + + //mScopeStack.addTemp(obj); + mOperandsStack.push(child); + mLastParent = parent; + break; + } + + case OpCode::SELF: { + //mScopeStack.addTemp(obj); + ASSERT(mCallStack.mStack.last().mSelf); + mOperandsStack.push(mCallStack.mStack.last().mSelf); + break; + } + + case OpCode::OBJ_LOAD: { + auto path = mOperandsStack.getOperand(); + auto obj = NDO->load(path->val); + mScopeStack.addTemp(obj); + mOperandsStack.push(obj); + break; + } + case OpCode::OBJ_SAVE: { + auto path = mOperandsStack.getOperand(); + auto target = mOperandsStack.getOperand(); + NDO->save(target, path->val); + break; + } + + case OpCode::AND: { + auto left = NDO->toBool(mOperandsStack.getOperand()); + auto right = NDO->toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(left && right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::OR: { + auto left = NDO->toBool(mOperandsStack.getOperand()); + auto right = NDO->toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(left || right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::NOT: { + auto inv = NDO->toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(!inv); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::NOT_EQUAL: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + auto out = BoolObject::create(!NDO->compare(left, right)); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + auto out = BoolObject::create(NDO->compare(left, right)); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + + case OpCode::MORE: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left > right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::LESS: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left < right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL_OR_MORE: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left >= right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL_OR_LESS: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left <= right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + + default: { + ASSERT("Invalid OpCode"); + } + } +} + +void Interpreter::execAll(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::init_list globals2) { + if (!method->mScript->mBytecode.mInstructions.size()) { + return; + } + + exec(method, self, globals, globals2); + while (!finished()) { + stepBytecodeIn(); + } +} \ No newline at end of file diff --git a/Objects/private/interpreter/opcodes.cpp b/Objects/private/interpreter/opcodes.cpp new file mode 100644 index 0000000..b630b9e --- /dev/null +++ b/Objects/private/interpreter/opcodes.cpp @@ -0,0 +1,384 @@ + +#include "Utils.hpp" + +#include "interpreter/opcodes.h" + +namespace obj { + OpcodeInfos gOpcodeInfos; +}; + +using namespace obj; + +#define CONST_IDX_BYTES 2 + +#define OP(opcode, name, desc, ops, params) \ + add(opcode, { #name, #desc, ops, params } ); + +OpcodeInfos::OperandsInfo::OperandsInfo() {} +OpcodeInfos::OperandsInfo::OperandsInfo(tp::init_list list) { + DEBUG_ASSERT(MAX_OPERANDS >= list.size()); + for (auto item : list) { + buff[len] = item; + len++; + } +} + +OpcodeInfos::ParamsInfo::ParamsInfo() {} +OpcodeInfos::ParamsInfo::ParamsInfo(tp::init_list list) { + DEBUG_ASSERT(MAX_PARAMS >= list.size()); + for (auto item : list) { + buff[len] = item; + len++; + } +} + +tp::uint1 OpcodeInfos::OpInfo::opsize() { + tp::uint1 out = 1; + for (auto i = 0; i < params.len; i++) { + out += params.buff[i].bytes; + } + return out; +} + +OpcodeInfos::OpcodeInfos() { + + add(OpCode::NONE, { "NONE", "Does Nothing" }); + add(OpCode::HALT, { "HALT", "Halts for 3 sec" }); + add(OpCode::TERMINATE, { "TERMINATE", "Terminates the process" }); + add(OpCode::DEF_LOCAL, { + .name = "DEF LOCAL", + .desc = "Adds object to the locals", + .operands = { + { "str", "local id" }, + { "any", "object to be local" } + } + } + ); + add(OpCode::LOAD_CONST, { + .name = "LOAD CONST", + .desc = "Loads const object from the const pool", + .params = { + { "const obj idx", CONST_IDX_BYTES }, + } + } + ); + add(OpCode::LOAD_LOCAL, { + .name = "LOAD LOCAL", + .desc = "Loads local object from the locals", + .params = { + { "idx of const StringObject - represents name id", CONST_IDX_BYTES }, + } + } + ); + add(OpCode::IGNORE, { + .name = "IGNORE", + .desc = "Ignores returned object by destroying it", + } + ); + add(OpCode::SCOPE_IN, { + .name = "SCOPE IN", + .desc = "Enters new scope", + } + ); + add(OpCode::SCOPE_OUT, { + .name = "SCOPE OUT", + .desc = "Leaves current scope", + } + ); + add(OpCode::CALL, { + .name = "CALL", + .desc = "Leaves current scope", + .operands = { + { "method", "method object" }, + } + } + ); + add(OpCode::RETURN_OBJ, { + .name = "RETURN OBJ", + .desc = "Returns Operand", + .operands = { + { "any", "object to be returned" }, + } + } + ); + add(OpCode::RETURN, { + .name = "RETURN", + .desc = "Returns Null Object", + } + ); + add(OpCode::CHILD, { + .name = "CHILD", + .desc = "Retrieves child from class", + .operands = { + { "str", "child id" }, + { "class", "parent class" }, + }, + .params = { + { "is method ?", 1 } + } + } + ); + add(OpCode::PUSH_ARGS, { + .name = "PUSH ARGS", + .desc = "Pushes Separator on the OperandsStack", + .params = { + { "length to chech number of args", 1 } + } + } + ); + add(OpCode::SAVE_ARGS, { + .name = "SAVE ARGS", + .desc = "Pushes operands to locals", + .params = { + { "number of arguments in function defenition", 1 } + } + } + ); + add(OpCode::OBJ_CREATE_LOCAL, { + .name = "CREATE LOCAL OBJ", + .desc = "creates object of given type and adds it to the locals", + .operands = { + { "str", "types" }, + { "str", "name id" }, + } + } + ); + add(OpCode::OBJ_CREATE, { + .name = "CREATE OBJ", + .desc = "creates object of given type", + .operands = { + { "str", "types" }, + } + } + ); + add(OpCode::OBJ_COPY, { + .name = "COPY", + .desc = "Copies objects", + .operands = { + { "any", "self" }, + { "any", "target" }, + } + } + ); + add(OpCode::OBJ_SAVE, { + .name = "SAVE", + .desc = "Saves object to a file", + .operands = { + { "str", "path" }, + { "any", "self" }, + } + } + ); + add(OpCode::OBJ_LOAD, { + .name = "LOAD", + .desc = "loads object from a file", + .operands = { + { "str", "path" }, + { "any", "self" }, + } + } + ); + add(OpCode::OBJ_ADD, { + .name = "ADD", + .desc = "Adds objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_SUB, { + .name = "SUB", + .desc = "Subtruts objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_MUL, { + .name = "MUL", + .desc = "Multiplies objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_DIV, { + .name = "DIV", + .desc = "Divides objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::AND, { + .name = "AND", + .desc = "Logical AND of objects of the same type that supports boolean ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OR, { + .name = "OR", + .desc = "Logical OR of objects of the same type that supports boolean ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL, { + .name = "EQUAL", + .desc = "Compares objects", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::NOT_EQUAL, { + .name = "NOT EQUAL", + .desc = "Compares objects and inverts the resault", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::MORE, { + .name = "MORE", + .desc = " > ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::LESS, { + .name = "LESS", + .desc = " < ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL_OR_MORE, { + .name = "GRATER OR EQUAL", + .desc = " >= ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL_OR_LESS, { + .name = "LESS OR EQUAL", + .desc = " <= ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::NOT, { + .name = "NOT", + .desc = "Inverts the object bolean representation", + .operands = { + { "any", "self" }, + } + } + ); + add(OpCode::JUMP, { + .name = "JUMP", + .desc = "Offsets the instruction pointer", + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_R, { + .name = "JUMP R", + .desc = "Offsets the instruction pointer in reversed direction", + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF, { + .name = "JUMP IF", + .desc = "Offsets the instruction pointer if condition is met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_R, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer in reversed direction if condition is met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_NOT, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer if condition is NOT met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_NOT_R, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer in reversed direction if condition is NOT met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::PRINT, { + .name = "PRINT", + .desc = "Prints the object string representation", + .operands = { + { "any", "self" }, + } + } + ); + add(OpCode::CLASS_CONSTRUCT, { + .name = "CLASS CONSTRUCT", + .desc = "Creates class from the function execution state", + } + ); + add(OpCode::SELF, { + .name = "SELF", + .desc = "retrieves parent class of the current method", + } + ); +} + +OpcodeInfos::OpInfo OpcodeInfos::fetch(OpCode code) { + DEBUG_ASSERT((tp::alni)code >= 0 && (tp::alni)code < (tp::alni)OpCode::END_OPCODES); + return buff[(tp::alni)code]; +} + +void OpcodeInfos::add(OpCode code, const OpInfo& info) { + buff[(tp::alni)code] = info; +} \ No newline at end of file diff --git a/Objects/private/interpreter/operandsstack.cpp b/Objects/private/interpreter/operandsstack.cpp new file mode 100644 index 0000000..e037360 --- /dev/null +++ b/Objects/private/interpreter/operandsstack.cpp @@ -0,0 +1,30 @@ + +#include "interpreter/operandsstack.h" + +using namespace obj; + +OperandStack::OperandStack() { + mBuff = new Operand[MAX_STACK_SIZE]; + mIdx = 0; +} + +void OperandStack::push(Operand operand) { + ASSERT(MAX_STACK_SIZE - 1 > mIdx && "stack overflow"); + mBuff[mIdx] = operand; + mIdx++; +} + +void OperandStack::pop() { + ASSERT(mIdx != NULL && "stack overflow"); + mIdx--; +} + +Operand OperandStack::getOperand() { + auto ret = mBuff[mIdx - 1]; + mIdx--; + return ret; +} + +OperandStack::~OperandStack() { + delete[] mBuff; +} diff --git a/Objects/private/interpreter/scopestack.cpp b/Objects/private/interpreter/scopestack.cpp new file mode 100644 index 0000000..f00e408 --- /dev/null +++ b/Objects/private/interpreter/scopestack.cpp @@ -0,0 +1,90 @@ + +#include "NewPlacement.hpp" + +#include "interpreter/scopestack.h" + +using namespace obj; + +Scope::~Scope() { + for (auto local : mLocals) { + obj::NDO->destroy(local->val); + } + for (auto tmp : mTemps) { + obj::NDO->destroy(tmp.data()); + } +} + +obj::Object* ScopeStack::getLocalUtil(Scope& scope, tp::String* id) { + + auto idx = scope.mLocals.presents(*id); + + if (idx) { + return scope.mLocals.getSlotVal(idx); + } + else { + mIterIdx--; + Scope& parent_scope = mBuff[mIterIdx]; + ASSERT(parent_scope.mChildReachable && "Undefined Local Reference"); + return getLocalUtil(parent_scope, id); + } +} + +ScopeStack::ScopeStack() { + mBuff = (Scope*) tp::HeapAllocGlobal::allocate(sizeof(Scope) * MAX_STACK_SIZE); + mIdx = 0; + mIterIdx = 0; +} + +void ScopeStack::enterScope(bool aChildReachable) { + ASSERT(MAX_STACK_SIZE - 1 > mIdx && "stack overflow"); + new (&mBuff[mIdx]) Scope(); + mBuff[mIdx].mChildReachable = aChildReachable; + mIdx++; +} + +void ScopeStack::leaveScope() { + ASSERT(mIdx != NULL && "stack overflow"); + mBuff[mIdx - 1].~Scope(); + mIdx--; +} + +void ScopeStack::addTemp(obj::Object* tmp) { + obj::NDO->refinc(tmp); + mBuff[mIdx - 1].mTemps.pushBack(tmp); +} + +void ScopeStack::popTemp() { + obj::NDO->destroy(mBuff[mIdx - 1].mTemps.last()->data); + mBuff[mIdx - 1].mTemps.popBack(); +} + +void ScopeStack::addTempReturn(obj::Object* ret) { + if (mIdx >= 2) { + obj::NDO->refinc(ret); + mBuff[mIdx - 2].mTemps.pushBack(ret); + } +} + +void ScopeStack::addLocal(obj::Object* local, tp::String id) { + DEBUG_ASSERT(mIdx != 0 && "No scope given"); + Scope::ObjDict& locals = mBuff[mIdx - 1].mLocals; + auto idx = locals.presents(id); + if (idx) { + obj::NDO->destroy(locals.getSlotVal(idx)); + } + obj::NDO->refinc(local); + locals.put(id, local); +} + +obj::Object* ScopeStack::getLocal(tp::String& str) { + mIterIdx = mIdx - 1; + return getLocalUtil(mBuff[mIdx - 1], &str); +} + +Scope* ScopeStack::getCurrentScope() { + return &mBuff[mIdx - 1]; +} + +ScopeStack::~ScopeStack() { + tp::HeapAllocGlobal::deallocate(mBuff); +} diff --git a/Objects/private/parser/parser.cpp b/Objects/private/parser/parser.cpp new file mode 100644 index 0000000..dacd225 --- /dev/null +++ b/Objects/private/parser/parser.cpp @@ -0,0 +1,904 @@ + +#include "Logging.hpp" +#include "List.hpp" + +#include "parser/parser.h" +#include "compiler/function.h" + +#include + +#define MAX_STREAM_LENGTH 1024 * 8 * 200 + +#define REQUIRE(expr, desc, on_catch) DEBUG_BREAK(mRes.err); if (!(expr)) { mRes.err = new Error(desc, mTok.getCursorPrev().mAdvancedOffset); on_catch; return NULL; } +#define CHECK(expr, on_catch) if (!(expr)) { on_catch; return NULL; } +#define CHECK_ERROR(value, on_catch) if (mRes.err || !value) { on_catch; return NULL; } + +using namespace tp; +using namespace obj; +using namespace BCgen; + +bool Parser::Token::isAriphm() { + switch (type) { + case Token::ADD: + case Token::SUB: + case Token::DIV: + case Token::MUL: + return true; + default: + return false; + } +} + +bool Parser::Token::isBoolean() { + switch (type) { + case Token::EQUAL: + case Token::NOT_EQUAL: + case Token::BOOL_AND: + case Token::BOOL_OR: + case Token::MORE: + case Token::LESS: + case Token::QE_OR_MORE: + case Token::QE_OR_LESS: + return true; + default: + return false; + } +} + +Parser::Parser() { + mTok.build({ + { "\n|\t| |\r", Token::SPACE }, + { "var", Token::VAR }, + { "class", Token::CLASS_DEF }, + { "self", Token::SELF }, + { "\\{", Token::SCOPE_IN }, + { "\\}", Token::SCOPE_OUT }, + { "=", Token::ASSIGN }, + { "def", Token::DEF_FUNC }, + { "<<", Token::PRINT }, + { "if", Token::IF }, + { "else", Token::ELSE }, + { "while", Token::WHILE }, + { "\\(", Token::BRACKET_IN }, + { "\\)", Token::BRACKET_OUT }, + { ",", Token::COMMA }, + { "new", Token::NEW }, + { "\\.", Token::CHILD }, + { "return", Token::RETURN }, + { "==", Token::EQUAL }, + { "!=", Token::NOT_EQUAL }, + { ">", Token::MORE }, + { "<", Token::LESS }, + { ">=", Token::QE_OR_MORE }, + { "<=", Token::QE_OR_LESS }, + { "!", Token::BOOL_NOT }, + { "&&", Token::BOOL_AND }, + { "\\|\\|", Token::BOOL_OR }, + { "\\+", Token::ADD }, + { "\\*", Token::MUL }, + { "\\-", Token::SUB }, + { "/", Token::DIV }, + { ";", Token::STM_END }, + { "true", Token::CONST_TRUE }, + { "false", Token::CONST_FALSE }, + { "((\\-)|(\\+))?[0-9]+i?", Token::CONST_INT }, + { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?f?", Token::CONST_FLOAT }, + { "(/\\*){\\*-\\*}*(\\*/)", Token::COMMENT_BLOCK }, + { "\"{\"-\"}*\"", Token::CONST_STRING }, + { "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*", Token::ID }, + }); +} + +tp::String to_string(const char* stream, tp::alni len) { + tp::String out; + out.reserve(len + 1); + tp::memcp(out.get_writable(), stream, len); + out.get_writable()[len] = '\0'; + return out; +} + +Parser::Token Parser::tokRead() { + Token out; + + if (!tokInputLeft()) { + Token out; + out.type = Token::NO_TOKEN; + return out; + } + + auto crs_start = mTok.getCursor(); + out.type = mTok.readTok(); + out.token = to_string(crs_start.str(), mTok.lastTokLEn()); + + switch (out.type) { + case Token::CONST_FALSE: + out.boolean = false; + break; + case Token::CONST_TRUE: + out.boolean = true; + break; + case Token::CONST_INT: { + char* p_end; + out.integer = std::strtol(out.token.read(), &p_end, 10); + DEBUG_ASSERT(out.token.read() != p_end); + break; + } + case Token::CONST_FLOAT: { + char* p_end; + out.floating = std::strtod(out.token.read(), &p_end); + DEBUG_ASSERT(out.token.read() != p_end); + break; + } + case Token::CONST_STRING: { + out.str = to_string(crs_start.str() + 1, mTok.lastTokLEn() - 2); + break; + } + } + + return out; +} + +Parser::Token Parser::tokLookup() { + auto crs = mTok.getCursor(); + auto out = tokRead(); + mTok.setCursor(crs); + return out; +} + +bool Parser::tokInputLeft() { + auto type = mTok.lookupTok(); + + while (mTok.isInputLeft() && type == Token::SPACE || (type >= Token::__END__ && type <= Token::__START__)) { + mTok.skipTok(); + type = mTok.lookupTok(); + } + + return type != Token::SOURCE_END_TOKEN; +} + +void Parser::tokSkip() { + if (!tokInputLeft()) { + return; + } + mTok.skipTok(); +} + +Parser::Tokenizer::Cursor Parser::tokGetCursor() { return mTok.getCursor();} +void Parser::tokSetCursor(Tokenizer::Cursor crs) { mTok.setCursor(crs); } + +Expression* Parser::parseExprCompound() { + CHECK(tokRead() == Token::BRACKET_IN, {}); + auto ret = parseExpr(); + CHECK_ERROR(ret, {}); + REQUIRE(tokRead() == Token::BRACKET_OUT, "Expected Closing Bracket", {}); + return ret; +} + +Expression* Parser::parseExprNEW() { + CHECK(tokRead() == Token::NEW, {}); + auto name = tokRead(); + REQUIRE(name == Token::ID, "Expected Identifier", {}); + + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected opening brackets", {}); + REQUIRE(tokRead() == Token::BRACKET_OUT, "Expected closing brackets", {}); + + return ExprNew(name.token); +} + +Expression* Parser::parseExprLOCAL() { + auto local_id_tok = tokRead(); + if (local_id_tok == Token::ID) { + return ExprLocal(local_id_tok.token); + } + else if (local_id_tok == Token::SELF) { + return ExprSelf(); + } + return NULL; +} + +Expression* Parser::parseExprCONST() { + auto tok = tokRead(); + switch (tok) { + case Token::CONST_FALSE: + return ExprConst(false); + case Token::CONST_TRUE: + return ExprConst(true); + case Token::CONST_INT: + return ExprConst(tok.integer); + case Token::CONST_FLOAT: + return ExprConst(tok.floating); + case Token::CONST_STRING: + return ExprConst(tok.str); + default: + REQUIRE(0, "not a const Expr", {}); + } +} + +Expression* Parser::parseExprCHILD(Expression* prnt) { + CHECK(tokRead() == Token::CHILD, {}); + auto id = tokRead(); + REQUIRE(id == Token::ID, "Exprected Identifier", {}); + return prnt->ExprChild(id.str); +} + +Expression* Parser::parseExprCALL(Expression* prnt) { + CHECK(tokRead() == Token::BRACKET_IN, {}); + + List args; + +READ_ARG: + Expression* expr = NULL; + auto tok = tokLookup(); + REQUIRE(tok != Token::NO_TOKEN, "Missing Closing Bracket", {}); + + if (tok != Token::BRACKET_OUT) { + + expr = parseExpr(); + CHECK_ERROR(expr, { + for (auto arg : args) { + delete arg.data(); + } + }); + + args.pushBack(expr); + + tok = tokLookup(); + if (tok == Token::COMMA) { + tokSkip(); + goto READ_ARG; + } + else if (tok != Token::BRACKET_OUT) { + for (auto arg : args) { + delete arg.data(); + } + REQUIRE(0, "Expected A Closing Bracket", {}); + } + } + tokSkip(); + + auto out = prnt->ExprCall({}); + out->mArgs.reserve(args.length()); + + for (auto arg : args) { + out->mArgs[arg.idx()] = arg.data(); + } + + return out; +} + +Expression* Parser::parseExprAriphm() { + + tp::init_list expessions = { + ExprType::Compound, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + }; + + Expression* left = parseExpr(expessions); + CHECK_ERROR(left, {}); + + Expression* ret = NULL; + +PARSE: + + Expression* right = NULL; + + auto tok = tokLookup(); + if (tok.isAriphm()) { + tokSkip(); + + + right = parseExpr(expessions); + + if (mRes.err) { + if (ret) { + goto PRECEDENCE; + } + + delete left; + return NULL; + } + + } + else { + CHECK(ret, { + delete left; + }); + goto PRECEDENCE; + } + + switch (tok) { + case Token::ADD: + ret = ExprAriphm(left, right, OpCode::OBJ_ADD); + break; + case Token::SUB: + ret = ExprAriphm(left, right, OpCode::OBJ_SUB); + break; + case Token::DIV: + ret = ExprAriphm(left, right, OpCode::OBJ_DIV); + break; + case Token::MUL: + ret = ExprAriphm(left, right, OpCode::OBJ_MUL); + } + + left = ret; + goto PARSE; + +PRECEDENCE: + // FIXME: Not Implemented + + return ret; +} + +Expression* Parser::parseExprBOOLEAN() { + + tp::init_list expessions = { + ExprType::Compound, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + ExprType::BOOLEAN_NOT, + }; + + + Expression* left = parseExpr(expessions); + CHECK_ERROR(left, {}); + + Expression* ret = NULL; + +PARSE: + + Expression* right = NULL; + + auto tok = tokLookup(); + if (tok.isBoolean()) { + tokSkip(); + + right = parseExpr(expessions); + + if (mRes.err) { + if (ret) { + goto PRECEDENCE; + } + + delete left; + return NULL; + } + + } + else { + CHECK(ret, { + delete left; + }); + goto PRECEDENCE; + } + + switch (tok) { + case Token::EQUAL: + ret = ExprBool(left, right, OpCode::EQUAL); + break; + case Token::NOT_EQUAL: + ret = ExprBool(left, right, OpCode::NOT_EQUAL); + break; + case Token::BOOL_AND: + ret = ExprBool(left, right, OpCode::AND); + break; + case Token::BOOL_OR: + ret = ExprBool(left, right, OpCode::OR); + break; + case Token::MORE: + ret = ExprBool(left, right, OpCode::MORE); + break; + case Token::LESS: + ret = ExprBool(left, right, OpCode::LESS); + break; + case Token::QE_OR_MORE: + ret = ExprBool(left, right, OpCode::EQUAL_OR_MORE); + break; + case Token::QE_OR_LESS: + ret = ExprBool(left, right, OpCode::EQUAL_OR_LESS); + } + + left = ret; + goto PARSE; + +PRECEDENCE: + // FIXME: Not Implemented + + return ret; +} + +Expression* Parser::parseExprBOOLEAN_NOT() { + CHECK(tokRead() == Token::BOOL_NOT, {}); + + tp::init_list exprs = { + ExprType::Compound, + ExprType::BOOLEAN, + ExprType::Ariphm, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + }; + + auto out = parseExpr(exprs); + CHECK_ERROR(out, {}); + + return ExprBoolNot(out); +} + +Expression* Parser::parseExprFUNC() { + auto op_tok = tokRead(); + CHECK(op_tok == Token::ID, {}); + return ExprFunc(op_tok.token); +} + +// passed prnt isno longer responsability of callee +// suc : returns top level parent +// err : returns NULL +Expression* Parser::parseExprChain(Expression* prnt) { + + PARSE_CHAIN: + auto tok = tokLookup(); + + switch (tok) { + case Token::CHILD: { + tokRead(); + + auto child_id = tokRead(); + REQUIRE(child_id == Token::ID, "expected an id", { + delete prnt; + }); + + prnt = prnt->ExprChild(child_id.token); + goto PARSE_CHAIN; + } + + case Token::BRACKET_IN: { + + auto new_prnt = parseExprCALL(prnt); + CHECK_ERROR(new_prnt, { + delete prnt; + }); + + if (prnt->mType == Expression::Type::CHILD) { + ((ExpressionChild*)prnt)->mMethod = true; + } + + prnt = new_prnt; + goto PARSE_CHAIN; + } + } + + return prnt; +} + +Expression* Parser::parseExpr(tp::init_list expressions) { + + Expression* out = NULL; + + List errors; + + for (auto expr_type : expressions) { + auto crs = tokGetCursor(); + switch (expr_type) { + case Parser::ExprType::BOOLEAN_NOT: + out = parseExprBOOLEAN_NOT(); + break; + case Parser::ExprType::BOOLEAN: + out = parseExprBOOLEAN(); + break; + case Parser::ExprType::Ariphm: + out = parseExprAriphm(); + break; + case Parser::ExprType::NEW: + out = parseExprNEW(); + break; + case Parser::ExprType::LOCAL: + out = parseExprLOCAL(); + break; + case Parser::ExprType::CONST: + out = parseExprCONST(); + break; + case Parser::ExprType::Compound: + out = parseExprCompound(); + break; + } + + if (out) { + break; + } + + tokSetCursor(crs); + if (mRes.err) { + errors.pushBack(mRes.err); + mRes.err = NULL; + } + } + + if (out) { + // check for child expression and calls + out = parseExprChain(out); + + // check errors + if (mRes.err) { + errors.pushBack(mRes.err); + mRes.err = NULL; + goto ERRORS; + } + + for (auto err : errors) { + delete err.data(); + } + + return out; + } + + ERRORS: + Error* error = NULL; + tp::alni max_advanced = 0; + for (auto err : errors) { + if (err.data()->mAdvanecedIdx && err.data()->mAdvanecedIdx > max_advanced) { + max_advanced = err.data()->mAdvanecedIdx; + error = err.data(); + } + } + + if (error) { + mRes.err = new Error(*error); + + for (auto err : errors) { + delete err.data(); + } + + return NULL; + } + REQUIRE(0, "Expected and expression", {}); +} + +Statement* Parser::parseStmCall() { + + Expression* expr = parseExpr(); + CHECK_ERROR(expr, {}); + + REQUIRE(expr->mType == Expression::Type::CALL, + "expression statement can only be function call", { + delete expr; + }); + + if (tokRead() != Token::STM_END) { + delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return StmIgnore(expr); +} + +Statement* Parser::parseStmDefFunc() { + CHECK(tokRead() == Token::DEF_FUNC, {}); + List args; + auto name = tokRead(); + REQUIRE(name == Token::ID, "Expected an Identifier", {}); + + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected Opening Bracket", {}); + +READ_ARG: + auto tok = tokLookup(); + + REQUIRE(tok != Token::NO_TOKEN, "Missing Closing Bracket", {}); + + if (tok == Token::ID) { + args.pushBack(tok.token); + tokSkip(); + tok = tokLookup(); + } + + if (tok == Token::COMMA) { + tokSkip(); + goto READ_ARG; + } + + REQUIRE(tok == Token::BRACKET_OUT, "Expected Closing Bracket", {}); + tokSkip(); + + auto func_def = StmDefFunc(name.token, {}, {}); + + func_def->mArgs.reserve(args.length()); + for (auto iter : args) { + func_def->mArgs[iter.idx()] = iter.data(); + } + + StatementScope* scope = parseScope(true); + CHECK_ERROR(scope, { + delete func_def; + }); + + func_def->mStatements.reserve(scope->mStatements.size()); + for (auto stm : scope->mStatements) { + func_def->mStatements[stm.idx()] = stm.data(); + } + + delete scope; + return func_def; +} + +Statement* Parser::parseStmDefLocal() { + CHECK(tokRead() == Token::VAR, {}); + + auto tok = tokRead(); + REQUIRE(tok == Token::ID, "Expected an Identifier", {}); + REQUIRE(tokRead() == Token::ASSIGN, "Expected an assigment", {}); + + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::STM_END) { + delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return StmDefLocal(tok.token, expr); +} + +Statement* Parser::parseStmReturn() { + CHECK(tokRead() == Token::RETURN, {}); + auto crs = tokGetCursor(); + + auto expr = parseExpr(); + if (mRes.err) { + tokSetCursor(crs); + delete mRes.err; + mRes.err = NULL; + } + + if (tokRead() != Token::STM_END) { + if (expr) delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return expr ? StmReturn(expr) : StmReturn(); +} + +Statement* Parser::parseStmPrint() { + CHECK(tokRead() == Token::PRINT, {}); + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::STM_END) { + delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + return StmPrint(expr); +} + +Statement* Parser::parseStmIf() { + CHECK(tokRead() == Token::IF, {}); + + // single if + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected Opening Bracket", {}); + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::BRACKET_OUT) { + delete expr; + REQUIRE(0, "Expected Closing Bracket", {}); + } + + auto ontrue = parseScope(false); + CHECK_ERROR(ontrue, {}); + + // if-else + auto crs = tokGetCursor(); + if (tokRead() == Token::ELSE) { + StatementScope* onfalse = parseScope(false); + CHECK_ERROR(onfalse, { + delete ontrue; + delete expr; + }); + + return StmIf(expr, ontrue, onfalse); + } + tokSetCursor(crs); + + return StmIf(expr, ontrue, NULL); +} + +Statement* Parser::parseStmWhile() { + CHECK(tokRead() == Token::WHILE, {}); + + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected Opening Bracket", {}); + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::BRACKET_OUT) { + delete expr; + REQUIRE(0, "Expected Closing Bracket", {}); + } + + auto scope = parseScope(false); + CHECK_ERROR(scope, {}); + + return StmWhile(expr, scope); +} + +Statement* Parser::parseStmCopy() { + auto left = parseExpr(); + CHECK_ERROR(left, {}); + + CHECK(tokRead() == Token::ASSIGN, {}); + + auto right = parseExpr(); + CHECK_ERROR(right, { + delete left; + }); + + if (tokRead() != Token::STM_END) { + delete left; + delete right; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return StmCopy(left, right); +} + +Statement* Parser::parseStmClassDef() { + CHECK(tokRead() == Token::CLASS_DEF, {}); + + auto id = tokRead(); + REQUIRE(id == Token::ID, "Expected an Identifier", {}); + + auto scope = parseScope(true); + CHECK_ERROR(scope, {}); + + return StmClassDef(id.token, scope); +} + +Statement* Parser::parseStm(tp::init_list stm_types) { + Statement* out = NULL; + + List errors; + + for (auto stm_type : stm_types) { + auto crs = tokGetCursor(); + switch (stm_type) { + case StmType::DefFunc: + out = parseStmDefFunc(); + break; + case StmType::DefLocal: + out = parseStmDefLocal(); + break; + case StmType::Return: + out = parseStmReturn(); + break; + case StmType::Print: + out = parseStmPrint(); + break; + case StmType::If: + out = parseStmIf(); + break; + case StmType::While: + out = parseStmWhile(); + break; + case StmType::Copy: + out = parseStmCopy(); + break; + case StmType::Call: + out = parseStmCall(); + break; + case StmType::CLASS_DEF: + out = parseStmClassDef(); + break; + } + + if (out) { + break; + } + + tokSetCursor(crs); + if (mRes.err) { + errors.pushBack(mRes.err); + mRes.err = NULL; + } + } + + if (out) { + for (auto err : errors) { + delete err.data(); + } + return out; + } + + Error* error = NULL; + tp::alni max_advanced = 0; + for (auto err : errors) { + if (err.data()->mAdvanecedIdx && max_advanced < err.data()->mAdvanecedIdx) { + max_advanced = err.data()->mAdvanecedIdx; + error = err.data(); + } + } + + if (error) { + mRes.err = new Error(*error); + + for (auto err : errors) { + delete err.data(); + } + + return NULL; + } + + REQUIRE(0, "Exprected A Statement", {}); +} + +StatementScope* Parser::parseScope(bool aPushToScopeStack) { + CHECK(tokRead() == Token::SCOPE_IN, {}); + + auto out = new StatementScope({}, aPushToScopeStack); + List stms; + +READ_STM: + auto crs = tokGetCursor(); + auto tok = tokRead(); + + if (tok == Token::NO_TOKEN) { + delete out; + for (auto stm : stms) { + delete stm.data(); + } + REQUIRE(0, "Missing Scope Closing Bracket", {}); + } + + if (tok != Token::SCOPE_OUT) { + tokSetCursor(crs); + + auto stm = parseStm(); + CHECK_ERROR(stm, { + delete out; + for (auto stm : stms) { + delete stm.data(); + } + }); + + stms.pushBack(stm); + + goto READ_STM; + } + + out->mStatements.reserve(stms.length()); + for (auto stm : stms) { + out->mStatements[stm.idx()] = stm.data(); + } + + return out; +} + +Parser::Resault Parser::parse(const tp::String& oscript) { + mTok.bindSource(oscript.read()); + + mRes.scope = new StatementScope({}, true); + + List stms; + do { + auto stm = parseStm(); + + if (mRes.err || !stm) { // catch + delete mRes.scope; + mRes.scope = NULL; + for (auto stm : stms) { + delete stm.data(); + } + + return mRes; + } + + stms.pushBack(stm); + + } while (tokInputLeft()); + + mRes.scope->mStatements.reserve(stms.length()); + for (auto stm : stms) { + mRes.scope->mStatements[stm.idx()] = stm.data(); + } + + return mRes; +} diff --git a/Objects/private/primitives/boolobject.cpp b/Objects/private/primitives/boolobject.cpp new file mode 100644 index 0000000..8d1bd3a --- /dev/null +++ b/Objects/private/primitives/boolobject.cpp @@ -0,0 +1,78 @@ + + +#include "NewPlacement.hpp" +#include "primitives/boolobject.h" + +using namespace obj; +using namespace tp; + +void BoolObject::constructor(BoolObject* self) { + self->val = false; +} + +void BoolObject::copy(BoolObject* self, const BoolObject* in) { + self->val = in->val; +} + +BoolObject* BoolObject::create(bool in) { + NDO_CASTV(BoolObject, NDO->create("bool"), out)->val = alni(in); + return out; +} + +void BoolObject::from_int(BoolObject* self, alni in) { + self->val = in; +} + +void BoolObject::from_float(BoolObject* self, alnf in) { + self->val = alni(bool(in)); +} + +void BoolObject::from_string(BoolObject* self, String in) { + self->val = alni(bool(in)); +} + +String BoolObject::to_string(BoolObject* self) { + return String(bool(self->val)); +} + +alni BoolObject::to_int(BoolObject* self) { + return self->val; +} + +alnf BoolObject::to_float(BoolObject* self) { + return alnf(bool(self->val)); +} + +static alni save_size(BoolObject* self) { + return sizeof(alni); +} + +static void save(BoolObject* self, Archiver& file_self) { + file_self.write(&self->val); +} + +static void load(Archiver& file_self, BoolObject* self) { + file_self.read(&self->val); +} + +struct ObjectTypeConversions BoolObjectTypeConversions = { + .from_int = (object_from_int) BoolObject::from_int, + .from_float = (object_from_float) BoolObject::from_float, + .from_string = (object_from_string) BoolObject::from_string, + .to_string = (object_to_string) BoolObject::to_string, + .to_int = (object_to_int) BoolObject::to_int, + .to_float = (object_to_float) BoolObject::to_float, +}; + +struct obj::ObjectType obj::BoolObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) BoolObject::constructor, + .destructor = NULL, + .copy = (object_copy) BoolObject::copy, + .size = sizeof(BoolObject), + .name = "bool", + .convesions = &BoolObjectTypeConversions, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/classobject.cpp b/Objects/private/primitives/classobject.cpp new file mode 100644 index 0000000..2bfad9d --- /dev/null +++ b/Objects/private/primitives/classobject.cpp @@ -0,0 +1,81 @@ +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/classobject.h" +#include "primitives/dictobject.h" +#include "primitives/nullobject.h" + +using namespace obj; +using namespace tp; + +void ClassObject::constructor(ClassObject* self) { + self->members = NDO_CAST(DictObject, NDO->create("dict")); + + self->addMember(NDO_NULL, "__init__"); + self->addMember(NDO_NULL, "__del__"); +} + +void ClassObject::copy(ClassObject* self, const ClassObject* blueprint) { + NDO->copy(self->members, blueprint->members); +} + +void ClassObject::destructor(ClassObject* self) { + NDO->destroy(self->members); +} + +void ClassObject::addMember(Object* obj, tp::String id) { + members->put(id, obj); +} + +void ClassObject::createMember(tp::String type, tp::String id) { + auto newo = NDO->create(type); + members->put(id, newo); +} + +alni ClassObject::save_size(ClassObject* self) { + return sizeof(alni); // dict object adress +} + +void ClassObject::save(ClassObject* self, Archiver& file_self) { + // save dictobject + alni ndo_object_adress = NDO->save(file_self, self->members); + file_self.write(&ndo_object_adress); +} + +void ClassObject::load(Archiver& file_self, ClassObject* self) { + alni ndo_object_adress; + file_self.read(&ndo_object_adress); + self->members = NDO_CAST(DictObject, NDO->load(file_self, ndo_object_adress)); +} + +tp::Buffer childs_retrival(ClassObject* self) { + tp::Buffer out; + out.append(self->members); + return out; +} + +alni allocated_size(ClassObject* self) { + return sizeof(DictObject*); +} + +alni allocated_size_recursive(ClassObject* self) { + alni out = sizeof(DictObject*); + out += NDO->objsize_ram_recursive_util(self->members, self->members->type); + return out; +} + +struct ObjectType ClassObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) ClassObject::constructor, + .destructor = (object_destructor) ClassObject::destructor, + .copy = (object_copy) ClassObject::copy, + .size = sizeof(ClassObject), + .name = "class", + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .childs_retrival = (object_debug_all_childs_retrival) childs_retrival, + .allocated_size = (object_allocated_size) allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive +}; diff --git a/Objects/private/primitives/colorobject.cpp b/Objects/private/primitives/colorobject.cpp new file mode 100644 index 0000000..587c663 --- /dev/null +++ b/Objects/private/primitives/colorobject.cpp @@ -0,0 +1,84 @@ + +#include "NewPlacement.hpp" +#include "primitives/colorobject.h" + +using namespace obj; +using namespace tp; + +void ColorObject::constructor(Object* self) { + NDO_CAST(ColorObject, self)->mCol = tp::RGBA(1.f); +} + +void ColorObject::copy(ColorObject* self, const ColorObject* in) { + self->mCol = in->mCol; +} + +ColorObject* ColorObject::create(tp::RGBA in) { + NDO_CASTV(ColorObject, NDO->create("RGBA"), out)->mCol = in; + return out; +} + +void ColorObject::from_int(ColorObject* self, alni in) { + self->mCol = tp::RGBA((tp::halnf)tp::clamp(in, (tp::alni) 0, (tp::alni) 1)); +} + +void ColorObject::from_float(ColorObject* self, alnf in) { + NDO_CAST(ColorObject, self)->mCol = tp::RGBA(tp::clamp((tp::halnf)in, 0.f, 1.f)); +} + +String ColorObject::to_string(ColorObject* self) { + // auto &col = NDO_CAST(ColorObject, self)->mCol; + // return tp::sfmt("%i:%i:%i:%i", (tp::alni) (col.r * 255), (tp::alni)(col.g * 255), (tp::alni)(col.b * 255), (tp::alni)(col.a * 255)); + // TODO : implement + return {}; +} + +static alni save_size(ColorObject* self) { + return sizeof(tp::RGBA); +} + +static void save(ColorObject* self, Archiver& file_self) { + file_self.write(&self->mCol); +} + +static void load(Archiver& file_self, ColorObject* self) { + file_self.read(&self->mCol); +} + +struct ObjectTypeConversions ColorObjectTypeConversions = { + .from_int = (object_from_int) ColorObject::from_int, + .from_float = (object_from_float) ColorObject::from_float, + .from_string = NULL, + .to_string = (object_to_string) ColorObject::to_string, + .to_int = NULL, + .to_float = NULL, +}; + +void sub(ColorObject* self, ColorObject* in) { + self->mCol = in->mCol - self->mCol; +} + +void add(ColorObject* self, ColorObject* in) { + self->mCol = in->mCol + self->mCol; +} + +struct ObjectTypeAriphmetics ColorObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) NULL, + .div = (object_div) NULL, +}; + +struct obj::ObjectType obj::ColorObject::TypeData = { + .base = NULL, + .constructor = ColorObject::constructor, + .destructor = NULL, + .copy = (object_copy) ColorObject::copy, + .size = sizeof(ColorObject), + .name = "RGBA", + .convesions = &ColorObjectTypeConversions, + .ariphmetics = &ColorObject::TypeAriphm, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/dictobject.cpp b/Objects/private/primitives/dictobject.cpp new file mode 100644 index 0000000..483c625 --- /dev/null +++ b/Objects/private/primitives/dictobject.cpp @@ -0,0 +1,232 @@ +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/dictobject.h" +#include "primitives/stringobject.h" + +using namespace obj; +using namespace tp; + +void DictObject::constructor(Object* self) { + NDO_CASTV(DictObject, self, dict); + + new (&dict->items) Map(); +} + +void DictObject::copy(Object* in, const Object* target) { + NDO_CASTV(DictObject, in, self); + NDO_CASTV(DictObject, target, src); + + destructor(self); + constructor(self); + + for (auto item : src->items) { + auto instance = NDO->instatiate(item->val); + self->items.put(item->key, instance); + } +} + +void DictObject::destructor(Object* self) { + NDO_CASTV(DictObject, self, dict); + for (auto item : dict->items) { + NDO->destroy(item->val); + } + dict->items.~Map(); +} + +alni DictObject::save_size(DictObject* self) { + // calculate size needed + alni save_size = 0; + + // number on entries + save_size += sizeof(alni); + + for (auto item : self->items) { + // string length + save_size += (item->key.size() + 1) * sizeof(*item->key.read()); + // object file adress + save_size += sizeof(alni); + } + + return save_size; +} + +void DictObject::save(DictObject* self, Archiver& file_self) { + + // write size + alni len = self->items.size(); + file_self.write(&len); + + // save hashmap pairs + for (auto item : self->items) { + // item val + alni ndo_object_adress = NDO->save(file_self, item->val); + file_self.write(&ndo_object_adress); + + // item key + item->key.save(&file_self); + } +} + +void DictObject::load(Archiver& file_self, DictObject* self) { + new (&self->items) tp::Map(); + + alni len; + file_self.read(&len); + + for (alni i = 0; i < len; i++) { + + // read val + alni ndo_object_adress; + file_self.read(&ndo_object_adress); + Object* val = NDO->load(file_self, ndo_object_adress); + + // read key value + String key; + key.load(&file_self); + + // add to dictinary + self->items.put(key, val); + } +} + +tp::Buffer DictObject::childs_retrival(DictObject* self) { + tp::Buffer out; + out.reserve(self->items.size()); + ualni i = 0; + for (auto item : self->items) { + out[i] = item->val; + i++; + } + return out; +} + +alni DictObject::allocated_size(DictObject* self) { + alni out = self->items.sizeAllocatedMem(); + for (auto item : self->items) { + out += item->key.sizeAllocatedMem(); + } + return out; + return 0; +} + +alni DictObject::allocated_size_recursive(DictObject* self) { + alni out = allocated_size(self); + for (auto item : self->items) { + out += NDO->objsize_ram_recursive_util(item->val, item->val->type); + } + return out; +} + +void DictObject::put(tp::String str, Object* obj) { + DEBUG_ASSERT(obj); + NDO->refinc(obj); + items.put(str, obj); +} + +void DictObject::remove(tp::String str) { + auto idx = items.presents(str); + if (idx) { + NDO->destroy(items.getSlotVal(idx)); + items.remove(str); + } +} + +Object* DictObject::get(tp::String str) { + return items.get(str); +} + +tp::Map::Idx DictObject::presents(tp::String str) { + return items.presents(str); +} + +Object* DictObject::getSlotVal(tp::alni idx) { + return items.getSlotVal(idx); +} + +const tp::Map& DictObject::getItems() const { + return items; +} + +static auto tm_get = TypeMethod{ + .nameid = "get", + .descr = "gets the object", + .args = { + { "str key", NULL } + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + auto str_key = tm->args[0].obj; + + NDO_CASTV(StringObject, str_key, key); + ASSERT(key); + + auto idx = self->presents(key->val); + if (idx) { + tm->ret.obj = self->getSlotVal(idx); + } + }, + .ret = { "object", NULL } +}; + +static auto tm_put = TypeMethod{ + .nameid = "put", + .descr = "puts the object into the dictinary", + .args = { + { "key", NULL }, + { "object", NULL } + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + + auto str_key = tm->args[0].obj; + auto obj = tm->args[1].obj; + + NDO_CASTV(StringObject, str_key, key); + ASSERT(key); + + self->put(key->val, obj); + }, +}; + +static auto tm_remove = TypeMethod{ + .nameid = "remove", + .descr = "remove the object from the dictinary", + .args = { + { "key", NULL }, + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + + auto str_key = tm->args[0].obj; + + NDO_CASTV(StringObject, str_key, key); + ASSERT(key); + + self->remove(key->val); + }, +}; + +struct obj::ObjectType DictObject::TypeData = { + .base = NULL, + .constructor = DictObject::constructor, + .destructor = DictObject::destructor, + .copy = DictObject::copy, + .size = sizeof(DictObject), + .name = "dict", + .save_size = (object_save_size)DictObject::save_size, + .save = (object_save)DictObject::save, + .load = (object_load)DictObject::load, + .childs_retrival = (object_debug_all_childs_retrival)DictObject::childs_retrival, + .allocated_size = (object_allocated_size)DictObject::allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive)DictObject::allocated_size_recursive, + + .type_methods = { + .methods = { + &tm_put, + &tm_remove, + &tm_get, + } + } +}; diff --git a/Objects/private/primitives/enumobject.cpp b/Objects/private/primitives/enumobject.cpp new file mode 100644 index 0000000..bc6523e --- /dev/null +++ b/Objects/private/primitives/enumobject.cpp @@ -0,0 +1,182 @@ + +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/enumobject.h" + +#include + +using namespace obj; +using namespace tp; + +void EnumObject::constructor(EnumObject* self) { + self->active = 0; + self->nentries = 0; + self->entries = NULL; +} + +void obj::EnumObject::destructor(EnumObject* self) { + if (self->entries) free(self->entries); +} + +void EnumObject::copy(EnumObject* self, const EnumObject* in) { + if (self->entries) free(self->entries); + self->active = in->active; + self->nentries = in->nentries; + + self->entries = (alni*)malloc(self->nentries * ENV_ALNI_SIZE_B); + tp::memCopy(self->entries, in->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +void obj::EnumObject::init(tp::init_list list) { + + if (entries) free(entries); + + active = 0; + nentries = (uhalni) list.size(); + entries = (alni*) malloc(nentries * ENV_ALNI_SIZE_B); + tp::memSetVal(entries, nentries * ENV_ALNI_SIZE_B, 0); + + alni* entry = entries; + for (auto elem : list) { + + alni len = tp::String::Logic::calcLength(elem); + if (len > ENV_ALNI_SIZE_B - 1) len = ENV_ALNI_SIZE_B - 1; + + tp::memCopy(entry, elem, len); + + for (alni* chech_entry = entries; chech_entry != entry; chech_entry++) { + DEBUG_ASSERT(tp::memCompare(chech_entry, entry, ENV_ALNI_SIZE_B) != 0); + } + + entry++; + } +} + +const char* obj::EnumObject::getActiveName() { + return getItemName(active); +} + +const char* obj::EnumObject::getItemName(tp::uhalni idx) { + DEBUG_ASSERT(entries && idx >= 0 && idx < nentries); + return (const char*) (entries + idx); +} + + +void EnumObject::from_int(EnumObject* self, alni in) { + if (self->entries && in >= 0 && in < self->nentries) { + self->active = uhalni(in); + } +} + +void EnumObject::from_float(EnumObject* self, alnf in) { + if (self->entries && in >= 0 && in < self->nentries) { + self->active = uhalni(in); + } +} + +void EnumObject::from_string(EnumObject* self, String in) { + if (self->entries) { + alni* entry = self->entries; + for (uhalni i = 0; i < self->nentries; i++) { + if (tp::String::Logic::isEqualLogic((const char*)entry, in.read())) { + self->active = i; + } + entry += 1; + } + } +} + +String EnumObject::to_string(EnumObject* self) { + if (!self->entries) { + return tp::String(); + } + auto val = (const char*)(&self->entries[self->active]); + return String(val); +} + +alni EnumObject::to_int(EnumObject* self) { + if (!self->entries) { + return -1; + } + return alni(self->active); +} + +alnf EnumObject::to_float(EnumObject* self) { + if (!self->entries) { + return -1; + } + return alnf(self->active); +} + +static alni save_size(EnumObject* self) { + if (!self->entries) { + return sizeof(uhalni); + } + return sizeof(uhalni) + sizeof(uhalni) + sizeof(alni) * self->nentries; +} + +static void save(EnumObject* self, Archiver& file_self) { + if (!self->entries) { + uhalni empty_code = -1; + file_self.write(&empty_code); + return; + } + file_self.write(&self->active); + file_self.write(&self->nentries); + file_self.write_bytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +static void load(Archiver& file_self, EnumObject* self) { + file_self.read(&self->active); + if (self->active == -1) { + self->nentries = 0; + self->entries = NULL; + return; + } + file_self.read(&self->nentries); + self->entries = (alni*) malloc(self->nentries * ENV_ALNI_SIZE_B); + file_self.read_bytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +bool obj::EnumObject::compare(EnumObject* first, EnumObject* second) { + return first->entries != NULL && second->entries != NULL && first->active == second->active; +} + +EnumObject* obj::EnumObject::create(tp::init_list list) { + auto enum_object = (EnumObject*)obj::NDO->create("enum"); + enum_object->init(list); + return enum_object; +} + +alni allocated_size(EnumObject* self) { + alni out = sizeof(uhalni) * 2 + sizeof(tp::alni*); + if (self->entries) { + out += self->nentries * sizeof(alni) * 2; + } + return out; +} + +struct ObjectTypeConversions EnumObjectTypeConversions = { + .from_int = (object_from_int) EnumObject::from_int, + .from_float = (object_from_float) EnumObject::from_float, + .from_string = (object_from_string) EnumObject::from_string, + .to_string = (object_to_string) EnumObject::to_string, + .to_int = (object_to_int) EnumObject::to_int, + .to_float = (object_to_float) EnumObject::to_float, +}; + +struct obj::ObjectType obj::EnumObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) EnumObject::constructor, + .destructor = (object_destructor) EnumObject::destructor, + .copy = (object_copy) EnumObject::copy, + .size = sizeof(EnumObject), + .name = "enum", + .convesions = &EnumObjectTypeConversions, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .comparison = (object_compare) EnumObject::compare, + .allocated_size = (object_allocated_size) allocated_size, +}; \ No newline at end of file diff --git a/Objects/private/primitives/floatobject.cpp b/Objects/private/primitives/floatobject.cpp new file mode 100644 index 0000000..470273f --- /dev/null +++ b/Objects/private/primitives/floatobject.cpp @@ -0,0 +1,102 @@ +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/floatobject.h" + +using namespace obj; +using namespace tp; + +void FloatObject::constructor(FloatObject* self) { + self->val = 0; +} + +void FloatObject::copy(FloatObject* self, const FloatObject* in) { + self->val = in->val; +} + +FloatObject* FloatObject::create(alnf in) { + NDO_CASTV(FloatObject, NDO->create("float"), out)->val = alnf(in); + return out; +} + +void FloatObject::from_int(FloatObject* self, alni in) { + self->val = alnf(in); +} + +void FloatObject::from_float(FloatObject* self, alnf in) { + self->val = in; +} + +void FloatObject::from_string(FloatObject* self, String in) { + self->val = alnf(in); +} + +String FloatObject::to_string(FloatObject* self) { + return String(self->val); +} + +alni FloatObject::to_int(FloatObject* self) { + return alni(self->val); +} + +alnf FloatObject::to_float(FloatObject* self) { + return self->val; +} + +static alni save_size(FloatObject* self) { + return sizeof(alnf); +} + +static void save(FloatObject* self, Archiver& file_self) { + file_self.write(&self->val); +} + +static void load(Archiver& file_self, FloatObject* self) { + file_self.read(&self->val); +} + +struct ObjectTypeConversions FloatObjectTypeConversions = { + .from_int = (object_from_int) FloatObject::from_int, + .from_float = (object_from_float) FloatObject::from_float, + .from_string = (object_from_string) FloatObject::from_string, + .to_string = (object_to_string) FloatObject::to_string, + .to_int = (object_to_int) FloatObject::to_int, + .to_float = (object_to_float) FloatObject::to_float, +}; + +static void mul(FloatObject* self, FloatObject* in) { + self->val *= in->val; +} + +static void sub(FloatObject* self, FloatObject* in) { + self->val -= in->val; +} + +static void add(FloatObject* self, FloatObject* in) { + self->val += in->val; +} + +static void divide(FloatObject* self, FloatObject* in) { + self->val /= in->val; +} + +struct ObjectTypeAriphmetics FloatObject::TypeAriphm = { + .add = (object_add)add, + .sub = (object_sub)sub, + .mul = (object_mul)mul, + .div = (object_div)divide, +}; + +struct obj::ObjectType obj::FloatObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) FloatObject::constructor, + .destructor = NULL, + .copy = (object_copy) FloatObject::copy, + .size = sizeof(FloatObject), + .name = "float", + .convesions = &FloatObjectTypeConversions, + .ariphmetics = &FloatObject::TypeAriphm, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/interpreterobject.cpp b/Objects/private/primitives/interpreterobject.cpp new file mode 100644 index 0000000..8732922 --- /dev/null +++ b/Objects/private/primitives/interpreterobject.cpp @@ -0,0 +1,82 @@ + +#include "NewPlacement.hpp" + +#include "primitives/interpreterobject.h" +#include "primitives/linkobject.h" +#include "primitives/methodobject.h" + +using namespace obj; +using namespace tp; + +void InterpreterObject::constructor(InterpreterObject* self) { + new (&self->mInterpreter) Interpreter(); + + self->createMember("dict", "globals"); + self->createMember("link", "target method"); +} + +void InterpreterObject::destructor(InterpreterObject* self) { + self->mInterpreter.~Interpreter(); +} + +void InterpreterObject::load(Archiver& file_self, InterpreterObject* self) { + new (&self->mInterpreter) Interpreter(); +} + +bool InterpreterObject::running() { return !mInterpreter.finished(); } + +void InterpreterObject::exec(obj::ClassObject* self, tp::init_list globals) { + + if (running()) { + return; + } + + auto link_target = getMember("target method"); + if (!link_target) { + return; + } + + auto target = link_target->getLink(); + if (!target) { + return; + } + + NDO_CASTV(obj::MethodObject, target, method); + if (!method || !method->mScript->mBytecode.mInstructions.size()) { + return; + } + + mInterpreter.execAll(method, self, getMember("globals"), globals); +} + +void InterpreterObject::debug() { + if (running()) { + return; + } + + auto link_target = getMember("target method"); + if (!link_target) { + return; + } + + auto target = link_target->getLink(); + if (!target) { + return; + } + + NDO_CASTV(obj::MethodObject, target, method); + if (!method || !method->mScript->mBytecode.mInstructions.size()) { + return; + } + + mInterpreter.exec(method, this, getMember("globals")); +} + +struct obj::ObjectType InterpreterObject::TypeData = { + .base = &ClassObject::TypeData, + .constructor = (object_constructor)InterpreterObject::constructor, + .destructor = (object_destructor)InterpreterObject::destructor, + .size = sizeof(InterpreterObject), + .name = "interpreter", + .load = (object_load)InterpreterObject::load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/intobject.cpp b/Objects/private/primitives/intobject.cpp new file mode 100644 index 0000000..06de36a --- /dev/null +++ b/Objects/private/primitives/intobject.cpp @@ -0,0 +1,104 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/intobject.h" + +using namespace obj; +using namespace tp; + +void IntObject::constructor(Object* self) { + NDO_CAST(IntObject, self)->val = 0; +} + +void IntObject::copy(IntObject* self, const IntObject* in) { + self->val = in->val; +} + +IntObject* IntObject::create(alni in) { + NDO_CASTV(IntObject, NDO->create("int"), out)->val = in; + return out; +} + +void IntObject::from_int(Object* self, alni in) { + NDO_CAST(IntObject, self)->val = in; +} + +void IntObject::from_float(Object* self, alnf in) { + NDO_CAST(IntObject, self)->val = (alni)in; +} + +void IntObject::from_string(Object* self, String in) { + NDO_CAST(IntObject, self)->val = alni(in); +} + +String IntObject::to_string(Object* self) { + return String(NDO_CAST(IntObject, self)->val); +} + +alni IntObject::to_int(Object* self) { + return alni(NDO_CAST(IntObject, self)->val); +} + +alnf IntObject::to_float(Object* self) { + return alnf(NDO_CAST(IntObject, self)->val); +} + +static alni save_size(IntObject* self) { + return sizeof(alni); +} + +static void save(IntObject* self, Archiver& file_self) { + file_self.write(&self->val); +} + +static void load(Archiver& file_self, IntObject* self) { + file_self.read(&self->val); +} + +struct ObjectTypeConversions IntObjectTypeConversions = { + .from_int = IntObject::from_int, + .from_float = IntObject::from_float, + .from_string = IntObject::from_string, + .to_string = IntObject::to_string, + .to_int = IntObject::to_int, + .to_float = IntObject::to_float, +}; + +void divide(IntObject* self, IntObject* in) { + self->val /= in->val; +} + +void mul(IntObject* self, IntObject* in) { + self->val *= in->val; +} + +void sub(IntObject* self, IntObject* in) { + self->val -= in->val; +} + +void add(IntObject* self, IntObject* in) { + self->val += in->val; +} + +struct ObjectTypeAriphmetics IntObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) mul, + .div = (object_div) divide, +}; + +struct obj::ObjectType obj::IntObject::TypeData = { + .base = NULL, + .constructor = IntObject::constructor, + .destructor = NULL, + .copy = (object_copy) IntObject::copy, + .size = sizeof(IntObject), + .name = "int", + .convesions = &IntObjectTypeConversions, + .ariphmetics = &IntObject::TypeAriphm, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/linkobject.cpp b/Objects/private/primitives/linkobject.cpp new file mode 100644 index 0000000..fb10d8b --- /dev/null +++ b/Objects/private/primitives/linkobject.cpp @@ -0,0 +1,132 @@ + +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/linkobject.h" + +using namespace obj; +using namespace tp; + +void LinkObject::constructor(Object* self) { + NDO_CAST(LinkObject, self)->link = 0; +} + +void LinkObject::destructor(LinkObject* self) { + if (self->link) NDO->destroy(self->link); +} + +void LinkObject::copy(Object* self, const Object* in) { + NDO_CAST(LinkObject, self)->setLink(NDO_CAST(LinkObject, in)->link); +} + +LinkObject* LinkObject::create(Object* in) { + NDO_CASTV(LinkObject, NDO->create("link"), out)->link = in; + return out; +} + +alni LinkObject::save_size(LinkObject* self) { + return sizeof(alni); +} + +void LinkObject::save(LinkObject* self, Archiver& file_self) { + if (self->link != NULL) { + alni link_object_save_adress = NDO->save(file_self, self->link); + file_self.write(&link_object_save_adress); + } + else { + alni null = -1; + file_self.write(&null); + } +} + +void LinkObject::load(Archiver& file_self, LinkObject* self) { + + alni saved_object_adress; + file_self.read(&saved_object_adress); + + if (saved_object_adress == -1) { + self->link = NULL; + } + else { + self->link = NDO->load(file_self, saved_object_adress); + } +} + +tp::Buffer LinkObject::childs_retrival(LinkObject* self) { + tp::Buffer out; + if (self->link) out.append(self->link); + return out; +} + +alni LinkObject::allocated_size(LinkObject* self) { + return sizeof(Object*); +} + +alni LinkObject::allocated_size_recursive(LinkObject* self) { + alni out = sizeof(Object*); + if (self->link) { + out += NDO->objsize_ram_recursive_util(self->link, self->link->type); + } + return out; +} + +Object* LinkObject::getLink() { + return link; +} + +void LinkObject::setLink(Object* obj) { +#ifdef OBJECT_REF_COUNT + if (link) NDO->destroy(link); + if (obj) NDO->refinc(obj); +#endif // OBJECT_REF_COUNT + link = obj; +} + +static auto tm_set = TypeMethod{ + .nameid = "set", + .descr = "sets the link", + .args = { + { "target", NULL } + }, + .exec = [](const TypeMethod* tm) { + auto const self = (LinkObject*)tm->self; + auto const target = tm->args[0].obj; + self->setLink(target); + } +}; + +static auto tm_get = TypeMethod{ + .nameid = "get", + .descr = "gets the link", + .exec = [](const TypeMethod* tm) { + auto const self = (LinkObject*)tm->self; + auto link = self->getLink(); + if (link) { + tm->ret.obj = link; + } + }, + .ret = { "the link", NULL } +}; + +struct obj::ObjectType LinkObject::TypeData = { + .base = NULL, + .constructor = LinkObject::constructor, + .destructor = (object_destructor)LinkObject::destructor, + .copy = LinkObject::copy, + .size = sizeof(LinkObject), + .name = "link", + .convesions = NULL, + .save_size = (object_save_size)LinkObject::save_size, + .save = (object_save)LinkObject::save, + .load = (object_load)LinkObject::load, + .childs_retrival = (object_debug_all_childs_retrival)LinkObject::childs_retrival, + .allocated_size = (object_allocated_size)LinkObject::allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive)LinkObject::allocated_size_recursive, + + .type_methods = { + .methods = { + &tm_set, + &tm_get, + } + } +}; \ No newline at end of file diff --git a/Objects/private/primitives/listobject.cpp b/Objects/private/primitives/listobject.cpp new file mode 100644 index 0000000..cd6b3f5 --- /dev/null +++ b/Objects/private/primitives/listobject.cpp @@ -0,0 +1,135 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/listobject.h" +#include "primitives/intobject.h" + +using namespace obj; +using namespace tp; + +void ListObject::constructor(Object* in) { + NDO_CASTV(ListObject, in, self); + new (&self->items) List(); +} + +void ListObject::copy(Object* in, const Object* target) { + NDO_CASTV(ListObject, in, self); + NDO_CASTV(ListObject, target, src); + + destructor(in); + + for (auto item : src->items) { + self->pushBack(NDO->instatiate(item.data())); + } +} + +void ListObject::destructor(Object* in) { + NDO_CASTV(ListObject, in, self); + for (auto item : self->items) { + NDO->destroy(item.data()); + } + self->items.removeAll(); +} + +alni ListObject::save_size(ListObject* self) { + alni len = self->items.length(); + return (len + 1) * sizeof(alni); +} + +void ListObject::save(ListObject* self, Archiver& file_self) { + alni len = self->items.length(); + file_self.write(&len); + + for (auto item : self->items) { + alni ndo_object_adress = NDO->save(file_self, item.data()); + file_self.write(&ndo_object_adress); + } +} + +void ListObject::load(Archiver& file_self, ListObject* self) { + new (&self->items) tp::List(); + + alni len; + file_self.read(&len); + + for (alni i = 0; i < len; i++) { + alni ndo_object_adress; + file_self.read(&ndo_object_adress); + self->items.pushBack(NDO->load(file_self, ndo_object_adress)); + } +} + +tp::Buffer ListObject::childs_retrival(ListObject* self) { + tp::Buffer out; + out.reserve(self->items.length()); + ualni i = 0; + for (auto item : self->items) { + out[i] = item.data(); + i++; + } + return out; +} + +alni ListObject::allocated_size(ListObject* self) { + // return self->items.sizeAllocatedMem(); + return {}; +} + +alni ListObject::allocated_size_recursive(ListObject* self) { + alni out = self->items.sizeAllocatedMem(); + for (auto item : self->items) { + out += NDO->objsize_ram_recursive_util(item.data(), item->type); + } + return out; +} + +void ListObject::pushBack(Object* obj) { +#ifdef OBJECT_REF_COUNT + obj::NDO->refinc(obj); +#endif // OBJECT_REF_COUNT + items.pushBack(obj); +} + +void ListObject::pushFront(Object* obj) { +#ifdef OBJECT_REF_COUNT + obj::NDO->refinc(obj); +#endif // OBJECT_REF_COUNT + items.pushFront(obj); +} + +void ListObject::delNode(tp::List::Node* node) { +#ifdef OBJECT_REF_COUNT + obj::NDO->destroy(node->data); +#endif // OBJECT_REF_COUNT + items.deleteNode(node); +} + +void ListObject::popBack() { +#ifdef OBJECT_REF_COUNT + auto obj = items.last(); + if (obj) obj::NDO->destroy(obj->data); +#endif // OBJECT_REF_COUNT + items.popBack(); +} + +const tp::List& ListObject::getItems() const { + return items; +} + +struct obj::ObjectType obj::ListObject::TypeData = { + .base = NULL, + .constructor = ListObject::constructor, + .destructor = ListObject::destructor, + .copy = ListObject::copy, + .size = sizeof(ListObject), + .name = "list", + .convesions = NULL, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .childs_retrival = (object_debug_all_childs_retrival) childs_retrival, + .allocated_size = (object_allocated_size) allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive +}; \ No newline at end of file diff --git a/Objects/private/primitives/methodobject.cpp b/Objects/private/primitives/methodobject.cpp new file mode 100644 index 0000000..876c3f3 --- /dev/null +++ b/Objects/private/primitives/methodobject.cpp @@ -0,0 +1,78 @@ +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/methodobject.h" +#include "core/scriptsection.h" +#include "compiler/function.h" + +using namespace obj; + +struct ObjectType MethodObject::TypeData = { + .base = NULL, + .constructor = (object_constructor)MethodObject::constructor, + .destructor = (object_destructor)MethodObject::destructor, + .copy = (object_copy)MethodObject::copy, + .size = sizeof(MethodObject), + .name = "method", + .convesions = NULL, + .save_size = (object_save_size)MethodObject::save_size, + .save = (object_save)MethodObject::save, + .load = (object_load)MethodObject::load, +}; + +void MethodObject::constructor(MethodObject* self) { + self->mScript = obj::ScriptSection::globalHandle()->createScript(); +} + +void MethodObject::copy(MethodObject* self, MethodObject* in) { + obj::ScriptSection::globalHandle()->changeScript(&self->mScript, &in->mScript); +} + +void MethodObject::destructor(MethodObject* self) { + obj::ScriptSection::globalHandle()->abandonScript(self->mScript); +} + +tp::alni MethodObject::save_size(MethodObject* self) { + // script_table_file_address & script string object address + return sizeof(tp::alni); +} + +void MethodObject::save(MethodObject* self, Archiver& file_self) { + auto script_section = obj::ScriptSection::globalHandle(); + + // script_table_file_address + tp::alni script_table_file_address = script_section->get_script_file_adress(self->mScript); + file_self.write(&script_table_file_address); +} + +void MethodObject::load(Archiver& file_self, obj::MethodObject* self) { + auto script_section = obj::ScriptSection::globalHandle(); + + // script_table_file_address + tp::alni script_table_file_address; + file_self.read(&script_table_file_address); + self->mScript = script_section->get_scritp_from_file_adress(script_table_file_address); +} + + +void MethodObject::Initialize() { + obj::ScriptSection::initialize(); + NDO->define(&MethodObject::TypeData); + obj::NDO->type_groups.addType(&MethodObject::TypeData, { "Primitives" }); +} + +void MethodObject::UnInitialize() { + obj::ScriptSection::uninitialize(); +} + +void MethodObject::compile() { + BCgen::Compile(this); +} + +MethodObject* MethodObject::create(tp::String script) { + auto out = (MethodObject*)NDO->create(MethodObject::TypeData.name); + out->mScript->mReadable->val = script; + out->compile(); + return out; +} \ No newline at end of file diff --git a/Objects/private/primitives/nullobject.cpp b/Objects/private/primitives/nullobject.cpp new file mode 100644 index 0000000..846c842 --- /dev/null +++ b/Objects/private/primitives/nullobject.cpp @@ -0,0 +1,60 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/nullobject.h" + +using namespace obj; +using namespace tp; + +obj::NullObject* obj::NdoNull_globalInstance = NULL; +bool uninit_flag = false; + +void NullObject::uninit() { + uninit_flag = true; + NDO->destroy(NdoNull_globalInstance); +} + +void NullObject::destructor(Object* self) { + DEBUG_ASSERT(uninit_flag && "Only one the instance of NullObject exists and thus it can't be destroyed"); +} + + +String to_string(NullObject* self) { + return "NULL"; +} + +alni to_int(NullObject* self) { + return 0; +} + +alnf to_float(NullObject* self) { + return 0; +} + +obj::TypeMethods* tm_construct() { + auto out = new obj::TypeMethods(); + + return out; +} + +struct ObjectTypeConversions NullObjectTypeConversions = { + .from_int = NULL, + .from_float = NULL, + .from_string = NULL, + .to_string = (object_to_string) to_string, + .to_int = (object_to_int) to_int, + .to_float = (object_to_float) to_float, +}; + + +struct ObjectType NullObject::TypeData = { + .base = NULL, + .constructor = NULL, + .destructor = NullObject::destructor, + .copy = NULL, + .size = sizeof(NullObject), + .name = "null", + .convesions = &NullObjectTypeConversions, +}; \ No newline at end of file diff --git a/Objects/private/primitives/primitives.cpp b/Objects/private/primitives/primitives.cpp new file mode 100644 index 0000000..5591845 --- /dev/null +++ b/Objects/private/primitives/primitives.cpp @@ -0,0 +1,83 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/primitives.h" + +#include "Tokenizer.hpp" + +void obj::primitives_uninitialize() { + obj::NullObject::uninit(); + obj::MethodObject::UnInitialize(); +} + +void obj::primitives_define_types() { + + using namespace obj; + using namespace tp; + + static bool initialized = false; + if (initialized) { + return; + } + + DEBUG_ASSERT(NDO && "Objects library is not initialized"); + + NDO->define(&DictObject::TypeData); + NDO->define(&IntObject::TypeData); + NDO->define(&LinkObject::TypeData); + NDO->define(&ListObject::TypeData); + NDO->define(&NullObject::TypeData); + NDO->define(&StringObject::TypeData); + NDO->define(&BoolObject::TypeData); + NDO->define(&FloatObject::TypeData); + NDO->define(&EnumObject::TypeData); + NDO->define(&ClassObject::TypeData); + NDO->define(&ColorObject::TypeData); + NDO->define(&InterpreterObject::TypeData); + NDO->define(&TypeObject::TypeData); + + NDO->type_groups.addType(&DictObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&IntObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&LinkObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&ListObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&NullObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&StringObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&BoolObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&FloatObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&EnumObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&ClassObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&ColorObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&InterpreterObject::TypeData, { "scripting" }); + + obj::MethodObject::Initialize(); + + initialized = true; +} + +namespace obj { + objects_api* objects_init(); + void objects_finalize(); +}; + +static bool objInit() { + obj::objects_init(); + obj::primitives_define_types(); + return true; +} + +static void objDeinit() { + obj::primitives_uninitialize(); + obj::objects_finalize(); +} + +static tp::ModuleManifest* sModuleDependencies[] = { + // &tp::gModuleCompressor, + &tp::gModuleMath, + &tp::gModuleStrings, + &tp::gModuleTokenizer, + NULL +}; + +tp::ModuleManifest obj::gModuleObjects = tp::ModuleManifest("Objects", objInit, objDeinit, sModuleDependencies); \ No newline at end of file diff --git a/Objects/private/primitives/stringobject.cpp b/Objects/private/primitives/stringobject.cpp new file mode 100644 index 0000000..678a956 --- /dev/null +++ b/Objects/private/primitives/stringobject.cpp @@ -0,0 +1,97 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/stringobject.h" + +using namespace obj; +using namespace tp; + +void StringObject::constructor(Object* self) { + new (&NDO_CAST(StringObject, self)->val) String(); +} + +void StringObject::destructor(StringObject* self) { + self->val.~String(); +} + +void StringObject::copy(Object* self, const Object* in) { + NDO_CAST(StringObject, self)->val = NDO_CAST(StringObject, in)->val; +} + +StringObject* StringObject::create(String in) { + NDO_CASTV(StringObject, NDO->create("str"), out)->val = in; + return out; +} + +void StringObject::from_int(StringObject* self, alni in) { + // self->val = in; +} + +void StringObject::from_float(StringObject* self, alnf in) { + // self->val = in; +} + +void StringObject::from_string(StringObject* self, String in) { + // self->val = in; +} + +String StringObject::to_string(StringObject* self) { + return self->val; +} + +alni StringObject::to_int(StringObject* self) { + return alni(self->val); +} + +alnf StringObject::to_float(StringObject* self) { + return alnf(self->val); +} + +static alni save_size(StringObject* self) { + // return self->val.save_size(); + return {}; +} + +static void save(StringObject* self, Archiver& file_self) { + self->val.save(&file_self); +} + +static void load(Archiver& file_self, StringObject* self) { + new (&self->val) tp::String(); + self->val.load(&file_self); +} + +alni allocated_size(StringObject* self) { + // return self->val.sizeAllocatedMem(); + return 0; +} + +static bool compare_strings(StringObject* left, StringObject* right) { + return left->val == right->val; +} + +struct ObjectTypeConversions StringObjectTypeConversions = { + .from_int = (object_from_int)StringObject::from_int, + .from_float = (object_from_float)StringObject::from_float, + .from_string = (object_from_string)StringObject::from_string, + .to_string = (object_to_string)StringObject::to_string, + .to_int = (object_to_int)StringObject::to_int, + .to_float = (object_to_float)StringObject::to_float, +}; + +struct obj::ObjectType StringObject::TypeData = { + .base = NULL, + .constructor = StringObject::constructor, + .destructor = (object_destructor)StringObject::destructor, + .copy = StringObject::copy, + .size = sizeof(StringObject), + .name = "str", + .convesions = &StringObjectTypeConversions, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .comparison = (object_compare) compare_strings, + .allocated_size = (object_allocated_size) allocated_size, +}; \ No newline at end of file diff --git a/Objects/private/primitives/typeobject.cpp b/Objects/private/primitives/typeobject.cpp new file mode 100644 index 0000000..3ce305c --- /dev/null +++ b/Objects/private/primitives/typeobject.cpp @@ -0,0 +1,80 @@ + +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/typeobject.h" +#include "primitives/nullobject.h" + +using namespace obj; +using namespace tp; + +TypeObject* TypeObject::create(const ObjectType* type) { + NDO_CASTV(TypeObject, NDO->create("typeobject"), out); + out->mTypeRef = type; + return out; +} + +static alni save_size(TypeObject* self) { + tp::String const nameid(self->mTypeRef->name); + return nameid.save_size(); +} + +static void save(TypeObject* self, Archiver& file_self) { + tp::String const nameid(self->mTypeRef->name); + nameid.save(&file_self); +} + +static void load(Archiver& file_self, TypeObject* self) { + tp::String nameid; + nameid.load(&file_self); + + auto idx = NDO->types.presents(nameid); + + if (idx) { + self->mTypeRef = NDO->types.getSlotVal(idx); + } + else { + self->mTypeRef = &NullObject::TypeData; + } +} + +static alni allocated_size(TypeObject* self) { + return sizeof(alni); +} + +static void from_string(TypeObject* self, tp::String in) { + auto idx = NDO->types.presents(in); + + if (idx) { + self->mTypeRef = NDO->types.getSlotVal(idx); + } + else { + self->mTypeRef = &NullObject::TypeData; + } +} + +static String to_string(TypeObject* self) { + return self->mTypeRef->name; +} + +bool comparator(TypeObject* left, TypeObject* right) { + return left->mTypeRef == right->mTypeRef; +} + +static struct ObjectTypeConversions conversions = { + .from_string = (object_from_string) from_string, + .to_string = (object_to_string) to_string, +}; + +struct obj::ObjectType TypeObject::TypeData = { + .base = NULL, + //.constructor = (object_constructor) TypeObject::constructor, + .size = sizeof(TypeObject), + .name = "typeobject", + .convesions = &conversions, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + .comparison = (object_compare) comparator, + .allocated_size = (object_allocated_size) allocated_size, +}; \ No newline at end of file diff --git a/Objects/public/compiler/constants.h b/Objects/public/compiler/constants.h new file mode 100644 index 0000000..5a95697 --- /dev/null +++ b/Objects/public/compiler/constants.h @@ -0,0 +1,42 @@ + +#pragma once + +#include "interpreter/bytecode.h" +#include "core/object.h" + +namespace obj { + namespace BCgen { + + struct ConstObject { + obj::Object* mObj = NULL; + tp::alni mConstIdx = 0; + + ConstObject(); + ConstObject(obj::Object* mObj); + }; + + + struct ConstObjectsPool { + tp::Map mMethods; + tp::Map mStrings; + tp::Map mIntegers; + tp::Map mFloats; + ConstObject mBoolTrue; + ConstObject mBoolFalse; + + bool mDelete = true; + tp::alni mTotalObjects = 0; + + ConstObject* get(tp::alni val); + ConstObject* get(tp::String val); + ConstObject* get(tp::alnf val); + ConstObject* get(bool val); + + ConstObject* addMethod(tp::String method_id, obj::Object* method); + ConstObject* registerObject(obj::Object* obj); + void save(tp::Buffer& out); + + ~ConstObjectsPool(); + }; + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/expression.h b/Objects/public/compiler/expression.h new file mode 100644 index 0000000..c297b99 --- /dev/null +++ b/Objects/public/compiler/expression.h @@ -0,0 +1,126 @@ + +#pragma once + +#include "Strings.hpp" +#include "Buffer.hpp" + +#include "interpreter/opcodes.h" + +namespace obj { + namespace BCgen { + + struct ExpressionChild; + struct ExpressionCall; + + struct Expression { + + enum class Type { + NONE, + NEW, + LOCAL, + CONST, + CHILD, + CALL, + ARIPHM, + FUNC, + BOOLEAN, + SELF, + } mType = Type::NONE; + + bool mValueUsed = false; + + Expression(); + Expression(Type type); + + ExpressionChild* ExprChild(tp::String id); + ExpressionCall* ExprCall(tp::init_list args); + }; + + struct ExpressionNew : public Expression { + tp::String mNewType; + ExpressionNew(tp::String type); + }; + + struct ExpressionLocal : public Expression { + tp::String mLocalId; + ExpressionLocal(tp::String id); + }; + + struct ExpressionFunc : public Expression { + tp::String mFuncId; + ExpressionFunc(tp::String id); + }; + + struct ExpressionChild : public Expression { + Expression* mParent = NULL; + tp::String mLocalId; + bool mMethod = false; + ExpressionChild(Expression* mParent, tp::String id); + }; + + struct ExpressionCall : public Expression { + Expression* mParent = NULL; + tp::Buffer mArgs; + ExpressionCall(Expression* mParent, tp::init_list args); + }; + + struct ExpressionAriphm : public Expression { + Expression* mLeft = NULL; + Expression* mRight = NULL; + OpCode mOpType; + ExpressionAriphm(Expression* left, Expression* right, OpCode type); + }; + + struct ExpressionBoolean : public Expression { + Expression* mLeft = NULL; + Expression* mRight = NULL; + + enum class BoolType : tp::uint1 { + AND = 24U, + OR, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + EQUAL_OR_MORE, + EQUAL_OR_LESS, + NOT, + } mBoolType; + + ExpressionBoolean(Expression* left, Expression* right, BoolType type); + ExpressionBoolean(Expression* invert); + }; + + struct ExpressionConst : public Expression { + enum ConstType { STR, INT, BOOL, FLT } mConstType; + tp::String str; + tp::alni integer = 0; + tp::alnf floating = 0; + bool boolean = 0; + + ExpressionConst(tp::String val); + ExpressionConst(const char* val); + ExpressionConst(tp::alni val); + ExpressionConst(tp::int4 val); + ExpressionConst(tp::flt4 val); + ExpressionConst(tp::alnf val); + ExpressionConst(bool val); + }; + + struct ExpressionSelf : public Expression { + ExpressionSelf(); + }; + + ExpressionLocal* ExprLocal(tp::String id); + ExpressionSelf* ExprSelf(); + ExpressionFunc* ExprFunc(tp::String id); + ExpressionNew* ExprNew(tp::String id); + ExpressionAriphm* ExprAriphm(Expression* left, Expression* right, OpCode type); + ExpressionBoolean* ExprBool(Expression* left, Expression* right, OpCode type); + ExpressionBoolean* ExprBoolNot(Expression* invert); + template + ExpressionConst* ExprConst(ConstType val) { + return new ExpressionConst(val); + } + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/function.h b/Objects/public/compiler/function.h new file mode 100644 index 0000000..a54df26 --- /dev/null +++ b/Objects/public/compiler/function.h @@ -0,0 +1,47 @@ + +#pragma once + +#include "Strings.hpp" +#include "List.hpp" +#include "Map.hpp" + +#include "instruction.h" +#include "statement.h" +#include "constants.h" + +namespace obj { + struct MethodObject; + + namespace BCgen { + + struct FunctionDefinition { + + FunctionDefinition* mPrnt = NULL; + + // signature + tp::String mFunctionId; + tp::List mArgsOrder; + + ConstObjectsPool mConstants; + tp::Map mLocals; + tp::List mInstructions; + + FunctionDefinition(tp::String function_id, tp::Buffer args, FunctionDefinition* prnt); + FunctionDefinition() {} + + void generateByteCode(ByteCode& out); + + tp::List::Node* inst(Instruction inst); + + void EvalExpr(Expression* expr); + void EvalStatement(Statement* expr); + + ConstObject* defineLocal(tp::String id); + }; + + void init(); + void deinit(); + void Genereate(ByteCode& out, StatementScope* body); + bool Compile(MethodObject* obj); + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/instruction.h b/Objects/public/compiler/instruction.h new file mode 100644 index 0000000..d0047a8 --- /dev/null +++ b/Objects/public/compiler/instruction.h @@ -0,0 +1,52 @@ + +#pragma once + +#include "interpreter/opcodes.h" + +#include "core/object.h" + +#include "List.hpp" + +namespace obj { + namespace BCgen { + + struct ConstObject; + + struct Instruction { + + OpCode mOp = OpCode::NONE; + + enum class ArgType { + NO_ARG, + PARAM, + CONST, + } mArgType = ArgType::NO_ARG; + + enum class InstType { + NONE, + JUMP, + JUMP_IF, + JUMP_IF_NOT, + EXEC, + PURE_CONST, + } mInstType = InstType::NONE; + + tp::alni mParam = 0; + tp::alni mParamBytes = 1; + + ConstObject* mConstData = NULL; + ConstObject* mConstData2 = NULL; + + tp::alni mInstIdx = 0; + tp::List::Node* mInstTarget = NULL; + + Instruction(); + Instruction(ConstObject* constData); + Instruction(OpCode op); + Instruction(OpCode op, ConstObject* constData); + Instruction(OpCode op, ConstObject* constData, ConstObject* constData2); + Instruction(OpCode op, tp::alni param, tp::alni nBytes); + Instruction(tp::List::Node* inst, InstType jump_type); + }; + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/statement.h b/Objects/public/compiler/statement.h new file mode 100644 index 0000000..0e53a3c --- /dev/null +++ b/Objects/public/compiler/statement.h @@ -0,0 +1,116 @@ + +#pragma once + +#include "expression.h" + +namespace obj { + namespace BCgen { + struct Statement { + enum class Type { + NONE, + SCOPE, + DEF_FUNC, + DEF_LOCAL, + RET, + PRINT, + COPY, + IF, + WHILE, + IGNORE, + CALL, + CLASS_DEF, + } mType = Type::NONE; + + bool mValueUsed = false; + + Statement() {} + Statement(Type type); + }; + + struct StatementScope : public Statement { + tp::Buffer mStatements; + bool mPushToScopeStack = false; + + StatementScope(tp::init_list statements, bool aPushToScopeStack); + }; + + struct StatementFuncDef : public Statement { + tp::Buffer mArgs; + tp::String mFunctionId; + tp::Buffer mStatements; + + StatementFuncDef(tp::String function_id, tp::init_list args, tp::init_list statements); + }; + + struct StatementLocalDef : public Statement { + tp::String mLocalId; + Expression* mNewExpr = NULL; + ExpressionConst* mConstExpr = NULL; + bool mIsConstExpr = false; + + StatementLocalDef(tp::String id, Expression* value); + StatementLocalDef(tp::String id, ExpressionConst* value); + }; + + struct StatementCopy : public Statement { + Expression* mLeft = NULL; + Expression* mRight = NULL; + + StatementCopy(Expression* left, Expression* right); + }; + + struct StatementReturn : public Statement { + Expression* mRet = NULL; + + StatementReturn(Expression* ret); + StatementReturn(); + }; + + struct StatementPrint : public Statement { + Expression* mTarget = NULL; + + StatementPrint(Expression* mTarget); + }; + + struct StatementIgnore : public Statement { + Expression* mExpr = NULL; + + StatementIgnore(Expression* expr); + }; + + struct StatementIf : public Statement { + Expression* mCondition = NULL; + StatementScope* mOnTrue = NULL; + StatementScope* mOnFalse = NULL; + + StatementIf(Expression* condition, StatementScope* on_true, StatementScope* on_false); + }; + + struct StatementWhile : public Statement { + Expression* mCondition = NULL; + StatementScope* mScope = NULL; + + StatementWhile(Expression* condition, StatementScope* scope); + }; + + struct StatementClassDef : public Statement { + tp::String mClassId; + StatementScope* mScope = NULL; + + StatementClassDef(tp::String class_id, StatementScope* scope); + }; + + // Helpers + StatementFuncDef* StmDefFunc(tp::String id, tp::init_list args, tp::init_list stms); + StatementLocalDef* StmDefLocal(tp::String id, Expression* value); + StatementCopy* StmCopy(Expression* left, Expression* right); + StatementPrint* StmPrint(Expression* target); + StatementReturn* StmReturn(Expression* obj); + StatementReturn* StmReturn(); + StatementIf* StmIf(Expression* condition, StatementScope* on_true, StatementScope* on_false); + StatementScope* StmScope(tp::init_list statements, bool aPushToScopeStack); + StatementWhile* StmWhile(Expression* condition, StatementScope* scope); + StatementIgnore* StmIgnore(Expression* expr); + StatementClassDef* StmClassDef(tp::String id, StatementScope* scope); + }; +}; \ No newline at end of file diff --git a/Objects/public/core/object.h b/Objects/public/core/object.h new file mode 100644 index 0000000..9feeef6 --- /dev/null +++ b/Objects/public/core/object.h @@ -0,0 +1,226 @@ + +#pragma once + +#include "Common.hpp" +#include "Map.hpp" +#include "List.hpp" +#include "Buffer.hpp" +#include "Strings.hpp" +#include "LocalConnection.hpp" + +#include "core/typegroups.h" +#include "core/typemethods.h" + +//#include "interpreter/interpreter.h" + +/* Steps to create custom Object: +define name of object +define base type +define struct members +implement construct, destruct and copy methods */ + +#define OBJECT_REF_COUNT + +#ifdef _DEBUG +#define NDO_CAST(cast_type, ptr) ((cast_type*)ndo_cast(ptr, &cast_type::TypeData)) +#define NDO_CAST_ASSERT(cast_type, ptr) {assert(ndo_cast(ptr, &cast_type::TypeData))} +#else +#define NDO_CAST_ASSERT(cast_type, ptr) {assert(ndo_cast(ptr, &cast_type::TypeData))} +#define NDO_CAST(cast_type, ptr) ((cast_type*)ndo_cast(ptr, &cast_type::TypeData)) +#endif + +#define NDO_CASTV(cast_type, ptr, var_name) cast_type* var_name = NDO_CAST(cast_type, ptr); var_name + +#define NDO_MEMH_FROM_NDO(ndo_ptr) (((ObjectMemHead*)ndo_ptr) - 1) +#define NDO_FROM_MEMH(ndo_ptr) ((Object*)(ndo_ptr + 1)) + +namespace obj { + + class Archiver : public tp::LocalConnection { + public: + enum Type { SAVE, LOAD }; + + Archiver() = default; + Archiver(const char*, Type) {}; + + bool opened; + + tp::ualni adress{}; + + // not yet writen address + // always offsets on write without specific address + tp::ualni avl_adress{}; + + void write_bytes(const tp::int1* in, tp::alni size, tp::alni adress = -1) {} + + template + void write(Type* in, tp::alni adress = -1) { + write_bytes((tp::int1*) in, sizeof(Type), adress); + } + + void read_bytes(tp::int1* in, tp::alni size, tp::alni adress = -1) {} + + template + void read(Type* in, tp::alni adress = -1) { + read_bytes((tp::int1*) in, sizeof(Type), adress); + } + }; + + extern tp::ModuleManifest gModuleObjects; + + extern struct objects_api* NDO; + + struct ObjectMemHead { + ObjectMemHead* up; + ObjectMemHead* down; + tp::alni flags; + #ifdef OBJECT_REF_COUNT + tp::alni refc; + #endif + }; + + struct Object { + const struct ObjectType* type; + }; + + typedef void (*object_from_int)(Object* self, tp::alni in); + typedef void (*object_from_float)(Object* self, tp::alnf in); + typedef void (*object_from_string)(Object* self, tp::String in); + typedef tp::String(*object_to_string)(Object* self); + typedef tp::alni(*object_to_int)(Object* self); + typedef tp::alnf(*object_to_float)(Object* self); + + struct ObjectTypeConversions { + object_from_int from_int; + object_from_float from_float; + object_from_string from_string; + object_to_string to_string; + object_to_int to_int; + object_to_float to_float; + }; + + typedef void (*object_add)(Object* self, Object* operand); + typedef void (*object_sub)(Object* self, Object* operand); + typedef void (*object_mul)(Object* self, Object* operand); + typedef void (*object_div)(Object* self, Object* operand); + + struct ObjectTypeAriphmetics { + object_add add; + object_sub sub; + object_mul mul; + object_div div; + }; + + typedef void (*object_constructor)(Object* self); + typedef void (*object_destructor)(Object* self); + typedef void (*object_copy)(Object* self, const Object* target); + + typedef tp::alni(*object_save_size)(Object* self); + typedef void (*object_save)(Object*, Archiver&); + typedef void (*object_load)(Archiver&, Object*); + + typedef bool (*object_compare)(Object*, Object*); + + typedef tp::Buffer (*object_debug_all_childs_retrival)(Object*); + typedef tp::alni (*object_allocated_size)(Object*); // default value = type->size - sizeof(ObjectType*) + typedef tp::alni (*object_allocated_size_recursive)(Object*); // default value = object_allocated_size + + struct ObjectType { + const ObjectType* base = NULL; + object_constructor constructor = NULL; + object_destructor destructor = NULL; + object_copy copy = NULL; + tp::alni size = NULL; + const char* name; + const ObjectTypeConversions* convesions = NULL; + const ObjectTypeAriphmetics* ariphmetics = NULL; + object_save_size save_size = NULL; + object_save save = NULL; + object_load load = NULL; + object_compare comparison = NULL; + void* vtable = NULL; + const char* description = NULL; + object_debug_all_childs_retrival childs_retrival = NULL; + object_allocated_size allocated_size = NULL; + object_allocated_size_recursive allocated_size_recursive = NULL; + TypeMethods type_methods; + }; + + + #define SAVE_LOAD_MAX_CALLBACK_SLOTS 100 + typedef void (pre_save_callback)(void* self, Archiver&); + typedef void (pre_load_callback)(void* self, Archiver&); + typedef void (post_save_callback)(void* self, Archiver&); + typedef void (post_load_callback)(void* self, Archiver&); + typedef tp::alni (slcb_size_callback)(void* self, Archiver&); + + struct save_load_callbacks { + void* self; + pre_save_callback* pre_save; + slcb_size_callback* size; + pre_load_callback* pre_load; + post_save_callback* post_save; + post_load_callback* post_load; + }; + + + struct objects_api { + + tp::Map types; + obj::TypeGroups type_groups; + Interpreter* interp = NULL; + + objects_api(); + ~objects_api(); + + void define(ObjectType* type); + Object* create(const tp::String& name); + Object* copy(Object* self, const Object* in); + bool compare(Object* first, Object* second); + Object* instatiate(Object*); + void set(Object* self, tp::alni val); + void set(Object* self, tp::alnf val); + void set(Object* self, tp::String val); + + tp::alni toInt(Object* self); + tp::alnf toFloat(Object* self); + bool toBool(Object* self); + tp::String toString(Object* self); + + void clear_object_flags(); + + void destroy(Object* in); + + #ifdef OBJECT_REF_COUNT + void refinc(Object* in); + tp::halni getrefc(Object* in); + private: + void setrefc(Object* in, tp::halni refc); + public: + #endif + + save_load_callbacks* sl_callbacks[SAVE_LOAD_MAX_CALLBACK_SLOTS]; + tp::alni sl_callbacks_load_idx = 0; + + void add_sl_callbacks(save_load_callbacks*); + + tp::alni objsize_file(Object* self); + tp::alni objsize_file_recursive(Object* self); + + tp::alni objsize_ram(Object* self); + tp::alni objsize_ram_recursive_util(Object* self, const ObjectType* type, bool different_object = true); + tp::alni objsize_ram_recursive(Object* self); + + bool save(Object*, tp::String path, bool compressed = true); + Object* load(tp::String path); + tp::alni save(Archiver&, Object*); + Object* load(Archiver&, tp::alni file_adress); + }; + + Object* ndo_cast(const Object* in, const ObjectType* to_type); + + template + Type* create() { + return (Type*)obj::NDO->create(Type::TypeData.name); + } +}; \ No newline at end of file diff --git a/Objects/public/core/scriptsection.h b/Objects/public/core/scriptsection.h new file mode 100644 index 0000000..56efcf7 --- /dev/null +++ b/Objects/public/core/scriptsection.h @@ -0,0 +1,36 @@ +#pragma once + +#include "primitives/methodobject.h" + +namespace obj { + + // global singleton API for method object to manage the script + struct ScriptSection { + + tp::List mScripts; + + Script* createScript(); + void changeScript(Script** current_script, Script** new_script); + void abandonScript(Script* script); + + tp::alni get_script_file_adress(Script* in); + Script* get_scritp_from_file_adress(tp::alni file_adress); + + ~ScriptSection(); + + static void initialize(); + static void uninitialize(); + static ScriptSection* globalHandle(); + + private: + + static obj::save_load_callbacks slcb_script_section; + + void delete_script(Script* script); + void reference_script(Script* script); + + static void save_script_table_to_file(ScriptSection* self, Archiver& file); + static void load_script_table_from_file(ScriptSection* self, Archiver& file); + static tp::alni save_script_table_to_file_size(ScriptSection* self, Archiver& file); + }; +}; \ No newline at end of file diff --git a/Objects/public/core/typegroups.h b/Objects/public/core/typegroups.h new file mode 100644 index 0000000..1dcb138 --- /dev/null +++ b/Objects/public/core/typegroups.h @@ -0,0 +1,40 @@ + +#pragma once + +#include "Map.hpp" +#include "Strings.hpp" + +namespace obj { + + struct ObjectType; + struct objects_api; + + class TypeGroups { + + public: + + typedef tp::Map Dict; + + TypeGroups(); + + friend struct obj::objects_api; + + TypeGroups(bool is_group); + + void addType(ObjectType* type, tp::init_list path, tp::alni cur_arg = 0); + void setType(ObjectType* type); + bool isGroup(); + Dict* getChilds(); + const obj::ObjectType* getType(); + ~TypeGroups(); + + private: + + bool is_group; + union { + Dict childs; + const obj::ObjectType* type; + }; + }; + +}; \ No newline at end of file diff --git a/Objects/public/core/typemethods.h b/Objects/public/core/typemethods.h new file mode 100644 index 0000000..d485aa4 --- /dev/null +++ b/Objects/public/core/typemethods.h @@ -0,0 +1,63 @@ + +#pragma once + +#include "Buffer.hpp" +#include "Strings.hpp" + +namespace obj { + + struct Interpreter; + struct Object; + struct ObjectType; + + struct TypeMethod { + enum { MAX_ARGS = 8 }; + struct Arg { + const char* descr = NULL; + mutable Object* obj = NULL; + }; + + const char* nameid = NULL; + const char* descr = NULL; + + mutable Object* self = NULL; + Arg args[MAX_ARGS]; + + tp::int1 mNargs = NULL; + + void (*exec)(const TypeMethod* tm) = NULL; + + mutable Arg ret; + + void operator()(Interpreter* interp) const; + + void init(); + }; + + extern TypeMethod gDefaultTypeMethods[3]; + + struct TypeMethods { + enum : tp::int2 { MAX_TYPE_METHODS = 128 }; + + TypeMethod* methods[MAX_TYPE_METHODS]; + tp::halni mNMethods = NULL; + + struct LookupKey { + tp::int2 key = -1; + tp::int2 type_depth = -1; + operator bool() { return key != -1; } + }; + + static LookupKey presents(const ObjectType*, tp::String); + static const TypeMethod* getMethod(const ObjectType*, LookupKey); + + void init(); + + tp::halni nMethods() const; + + private: + tp::int2 presents(tp::String) const; + const TypeMethod* getMethod(tp::int2) const; + }; + +}; \ No newline at end of file diff --git a/Objects/public/interpreter/bytecode.h b/Objects/public/interpreter/bytecode.h new file mode 100644 index 0000000..6453959 --- /dev/null +++ b/Objects/public/interpreter/bytecode.h @@ -0,0 +1,28 @@ + +#pragma once + +#include "opcodes.h" + +#include "primitives/intobject.h" +#include "primitives/stringobject.h" + +#include "Buffer.hpp" +#include "Strings.hpp" + +namespace obj { + + typedef Object* ConstData; + + struct ByteCode { + tp::Buffer mConstants; + tp::Buffer mInstructions; + tp::ualni mInstructionIdx = 0; + tp::ualni mArgumentsLoaded = 0; + + ~ByteCode() { + for (auto const_obj : mConstants) { + NDO->destroy(const_obj.data()); + } + } + }; +}; \ No newline at end of file diff --git a/Objects/public/interpreter/callstack.h b/Objects/public/interpreter/callstack.h new file mode 100644 index 0000000..afb97df --- /dev/null +++ b/Objects/public/interpreter/callstack.h @@ -0,0 +1,32 @@ +#pragma once + +#include "core/object.h" +#include "primitives/classobject.h" + +#include "Map.hpp" + +namespace obj { + struct MethodObject; +}; + +namespace obj { + + struct ByteCode; + + struct CallStack { + + struct CallFrame { + enum { CALL_DEPTH = 1024 }; + obj::Object* mSelf = NULL; + obj::MethodObject* mMethod = NULL; + tp::ualni mIp = 0; + }; + + void enter(const CallFrame& frame); + void leave(); + ByteCode* getBytecode(); + tp::halni len() const; + + tp::ConstSizeBuffer mStack; + }; +}; \ No newline at end of file diff --git a/Objects/public/interpreter/interpreter.h b/Objects/public/interpreter/interpreter.h new file mode 100644 index 0000000..eeab2cd --- /dev/null +++ b/Objects/public/interpreter/interpreter.h @@ -0,0 +1,29 @@ +#pragma once + +#include "operandsstack.h" +#include "scopestack.h" +#include "callstack.h" + +namespace obj { + struct Interpreter { + OperandStack mOperandsStack; + ScopeStack mScopeStack; + CallStack mCallStack; + + obj::Object* mLastParent = NULL; + bool mIsTypeMethod = false; + const TypeMethod* mTypeMethod = NULL; + + typedef struct { obj::Object* obj; tp::String id; } GlobalDef; + + void exec(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::init_list globals2 = {}); + + void stepBytecode(); + void stepBytecodeIn(); + void stepBytecodeOut(); + + bool finished(); + + void execAll(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::init_list globals2 = {}); + }; +}; \ No newline at end of file diff --git a/Objects/public/interpreter/opcodes.h b/Objects/public/interpreter/opcodes.h new file mode 100644 index 0000000..54fe22e --- /dev/null +++ b/Objects/public/interpreter/opcodes.h @@ -0,0 +1,158 @@ + +#pragma once + +#include "Common.hpp" + +// No Nested Scopes + +// Opcodes: +// Opcode input can be: +// 0) No Input +// 1) operands from OperandsStack (Operand) +// 2) Index of bytecode->ConstData from bytecode->Instruction (ConstData) +// 3) Raw Bytes from bytecode->Instruction (Param) + +namespace obj { + + extern struct OpcodeInfos gOpcodeInfos; + + enum class OpCode : tp::uint1 { + + NONE = 0x00, + HALT, + TERMINATE, + + DEF_LOCAL, + // Operand : String : local_id + // Operand : Any : object to be local + + LOAD_CONST, + LOAD_LOCAL, + // ConstData : idx of const object + + IGNORE, + + SCOPE_IN, + SCOPE_OUT, + + CALL, + RETURN_OBJ, + // Operand : Base : returned object + + RETURN, + + CHILD, + // Operand : String : child_id + // Operand : Base : parent + // Param : 1 bytes : is method? + + PUSH_ARGS, + SAVE_ARGS, + // Param : nubber of args + + OBJ_CREATE_LOCAL, + // Operand : String : type + // Operand : String : id + + OBJ_CREATE, + // Operand : String : type + + OBJ_COPY, + // Operand : Base: target + // Operand : Base: blueprint + + OBJ_SAVE, + OBJ_LOAD, + // Operand : String : path + // Operand : Base : target + + OBJ_ADD, + OBJ_SUB, + OBJ_MUL, + OBJ_DIV, + + AND, + OR, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + EQUAL_OR_MORE, + EQUAL_OR_LESS, + // Operand : Base: left + // Operand : Base: right + + NOT, + // Operand : Base: inv + + JUMP, + JUMP_R, + // Param : 2 bytes : offset + + JUMP_IF, + JUMP_IF_R, + JUMP_IF_NOT, + JUMP_IF_NOT_R, + // Operand : Base: condition + // Param : 2 bytes : offset + + + PRINT, + // Operand : Base: target + + CLASS_CONSTRUCT, + SELF, + + // ... + + END_OPCODES + }; + + struct OpcodeInfos { + + struct OperandsInfo { + struct Operand { + const char* obj_type = nullptr; + const char* desc = nullptr; + }; + + enum { MAX_OPERANDS = 5 }; + Operand buff[MAX_OPERANDS]; + tp::halni len = 0; + + OperandsInfo(); + OperandsInfo(tp::init_list list); + }; + + struct ParamsInfo { + struct Param { + const char* desc = nullptr; + tp::halni bytes = 1; + }; + + enum { MAX_PARAMS = 5 }; + Param buff[MAX_PARAMS]; + tp::halni len = 0; + + ParamsInfo(); + ParamsInfo(tp::init_list list); + }; + + struct OpInfo { + const char* name = nullptr; + const char* desc = nullptr; + OperandsInfo operands; + ParamsInfo params; + + tp::uint1 opsize(); + }; + + OpcodeInfos(); + OpInfo fetch(OpCode code); + + private: + OpInfo buff[(tp::alni)OpCode::END_OPCODES]; + + void add(OpCode code, const OpInfo& info); + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/operandsstack.h b/Objects/public/interpreter/operandsstack.h new file mode 100644 index 0000000..7300f21 --- /dev/null +++ b/Objects/public/interpreter/operandsstack.h @@ -0,0 +1,39 @@ +#pragma once + +#include "bytecode.h" +#include "core/object.h" + +namespace obj { + + // can be other aligned value as well + typedef obj::Object* Operand; + + class OperandStack { + + enum : tp::alni { + MAX_STACK_SIZE = 512 + }; + + public: + + Operand* mBuff; + tp::ualni mIdx; + + OperandStack(); + void push(Operand operand); + void pop(); + + Operand getOperand(); + + template + ObjectType* getOperand() { + auto operand = getOperand(); + auto ret = NDO_CAST(ObjectType, operand); + ASSERT(ret && "Operand Has Invalid Object Type"); + return ret; + } + + ~OperandStack(); + }; + +}; \ No newline at end of file diff --git a/Objects/public/interpreter/scopestack.h b/Objects/public/interpreter/scopestack.h new file mode 100644 index 0000000..9e1aae9 --- /dev/null +++ b/Objects/public/interpreter/scopestack.h @@ -0,0 +1,46 @@ +#pragma once + +#include "core/object.h" +#include "Map.hpp" + +namespace obj { + + struct Scope { + typedef tp::Map ObjDict; + typedef tp::List ObjList; + + ObjDict mLocals; + ObjList mTemps; + bool mChildReachable = true; + + ~Scope(); + }; + + class ScopeStack { + + enum : tp::alni { + MAX_STACK_SIZE = 1024 * 4 + }; + + public: + + Scope* mBuff; + tp::ualni mIdx; + tp::ualni mIterIdx; + + ScopeStack(); + void enterScope(bool aChildReachable); + void leaveScope(); + void addLocal(obj::Object* local, tp::String id); + void addTemp(obj::Object* tmp); + void popTemp(); + void addTempReturn(obj::Object* ret); + obj::Object* getLocal(tp::String& str); + Scope* getCurrentScope(); + ~ScopeStack(); + + private: + obj::Object* getLocalUtil(Scope& scope, tp::String* id); + }; + +}; \ No newline at end of file diff --git a/Objects/public/interpreter/script.h b/Objects/public/interpreter/script.h new file mode 100644 index 0000000..e89474e --- /dev/null +++ b/Objects/public/interpreter/script.h @@ -0,0 +1,12 @@ +#pragma once + +#include "interpreter/bytecode.h" + +namespace obj { + struct Script { + obj::StringObject* mReadable; + ByteCode mBytecode; + + void compile(); + }; +}; \ No newline at end of file diff --git a/Objects/public/parser/parser.h b/Objects/public/parser/parser.h new file mode 100644 index 0000000..7e53411 --- /dev/null +++ b/Objects/public/parser/parser.h @@ -0,0 +1,195 @@ +#pragma once +#include "NewPlacement.hpp" +#include "compiler/statement.h" +#include "compiler/expression.h" + +#include "Tokenizer.hpp" + +namespace obj { + + class Parser { + + struct Token { + + tp::String token; + + tp::alni integer; + tp::alnf floating; + bool boolean; + tp::String str; + + enum TokType : tp::alni { + __START__ = 0, + ID, + CONST_INT, + CONST_FLOAT, + CONST_STRING, + SCOPE_IN, + SCOPE_OUT, + ASSIGN, + DEF_FUNC, + PRINT, + IF, + ELSE, + WHILE, + BRACKET_IN, + BRACKET_OUT, + COMMA, + NEW, + CHILD, + RETURN, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + QE_OR_MORE, + QE_OR_LESS, + BOOL_NOT, + BOOL_AND, + BOOL_OR, + ADD, + MUL, + SUB, + DIV, + QUOTES, + CONST_TRUE, + CONST_FALSE, + STM_END, + SPACE, + VAR, + CLASS_DEF, + SELF, + COMMENT_BLOCK, + __END__, + NO_TOKEN, + FAILED, + SOURCE_END_TOKEN, + } type; + + operator TokType() { + return type; + } + + bool isAriphm(); + bool isBoolean(); + }; + + typedef tp::SimpleTokenizer Tokenizer; + Tokenizer mTok; + + enum class ExprType { + BOOLEAN_NOT = 0, + BOOLEAN, + Ariphm, + NEW, + LOCAL, + CONST, + Compound + }; + + enum class StmType { + DefFunc = 0, + DefLocal, + Return, + Print, + If, + While, + Copy, + Call, + CLASS_DEF + }; + + public: + + Parser(); + + struct Error { + tp::String mDescr = "No Description"; + tp::alni mAdvanecedIdx = NULL; + + Error() {} + Error(tp::String descr, tp::alni idx) { + mDescr = descr; + mAdvanecedIdx = idx; + } + + tp::Pair get_err_location(const char* stream) { + tp::alni line = 1; + tp::alni colomn = 1; + + //assert(mAdvanecedIdx); + + for (auto i : tp::Range(mAdvanecedIdx)) { + if (stream[i] == '\n') { + colomn = 0; + line++; + } + colomn++; + } + + return { line, colomn }; + } + }; + + struct Resault { + Error* err = NULL; + obj::BCgen::StatementScope* scope = NULL; + } mRes; + + Resault parse(const tp::String& stream); + + private: + + Token tokRead(); + Token tokLookup(); + void tokSkip(); + bool tokInputLeft(); + Tokenizer::Cursor tokGetCursor(); + void tokSetCursor(Tokenizer::Cursor); + + BCgen::Expression* parseExprCompound(); + BCgen::Expression* parseExprNEW(); + BCgen::Expression* parseExprLOCAL(); + BCgen::Expression* parseExprCONST(); + BCgen::Expression* parseExprCHILD(BCgen::Expression* prnt); + BCgen::Expression* parseExprCALL(BCgen::Expression* prnt); + BCgen::Expression* parseExprAriphm(); + BCgen::Expression* parseExprBOOLEAN(); + BCgen::Expression* parseExprBOOLEAN_NOT(); + BCgen::Expression* parseExprFUNC(); + BCgen::Expression* parseExprChain(BCgen::Expression* prnt); + + BCgen::Expression* parseExpr(tp::init_list expressions = { + ExprType::BOOLEAN_NOT, + ExprType::BOOLEAN, + ExprType::Ariphm, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + }); + + BCgen::Statement* parseStmCall(); + BCgen::Statement* parseStmDefFunc(); + BCgen::Statement* parseStmDefLocal(); + BCgen::Statement* parseStmReturn(); + BCgen::Statement* parseStmPrint(); + BCgen::Statement* parseStmIf(); + BCgen::Statement* parseStmWhile(); + BCgen::Statement* parseStmCopy(); + BCgen::Statement* parseStmClassDef(); + + BCgen::Statement* parseStm(tp::init_list stm_types = { + StmType::DefFunc, + StmType::DefLocal, + StmType::Return, + StmType::Print, + StmType::If, + StmType::While, + StmType::Copy, + StmType::Call, + StmType::CLASS_DEF + }); + + BCgen::StatementScope* parseScope(bool aPushToScopeStack); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/boolobject.h b/Objects/public/primitives/boolobject.h new file mode 100644 index 0000000..f669d6d --- /dev/null +++ b/Objects/public/primitives/boolobject.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct BoolObject : Object { + tp::alni val; + + static ObjectType TypeData; + static void constructor(BoolObject* self); + static void copy(BoolObject* self, const BoolObject* in); + + static BoolObject* create(bool in); + + static void from_int(BoolObject* self, tp::alni in); + static void from_float(BoolObject* self, tp::alnf in); + static void from_string(BoolObject* self, tp::String in); + static tp::String to_string(BoolObject* self); + static tp::alni to_int(BoolObject* self); + static tp::alnf to_float(BoolObject* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/classobject.h b/Objects/public/primitives/classobject.h new file mode 100644 index 0000000..2778972 --- /dev/null +++ b/Objects/public/primitives/classobject.h @@ -0,0 +1,49 @@ +#pragma once + +#include "primitives/dictobject.h" + +namespace obj { + + struct ClassObject : Object { + + static ObjectType TypeData; + static void copy(ClassObject* self, const ClassObject* in); + static void destructor(ClassObject* self); + static void constructor(ClassObject* self); + static tp::alni save_size(ClassObject* self); + static void save(ClassObject* self, Archiver& file_self); + static void load(Archiver& file_self, ClassObject* self); + + DictObject* members; + + void addMember(Object* obj, tp::String id); + void createMember(tp::String type, tp::String id); + + template + Type* createMember(tp::String id) { + auto out = NDO->create(Type::TypeData.name); + addMember(out, id); +#ifdef OBJECT_REF_COUNT + NDO->destroy(out); +#endif // OBJECT_REF_COUNT + + return (Type*) out; + } + + template + Type* getMember(const tp::String& id) { + auto idx = members->presents(id); + if (idx) { + return ((Type*)obj::ndo_cast(members->getSlotVal(idx), &Type::TypeData)); + } + return NULL; + } + + template + Type* getMemberAssert(const tp::String& id) { + auto out = getMember(id); + assert(out && "invalid member access"); + return out; + } + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/colorobject.h b/Objects/public/primitives/colorobject.h new file mode 100644 index 0000000..831c761 --- /dev/null +++ b/Objects/public/primitives/colorobject.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/object.h" +#include "Color.hpp" + +namespace obj { + + struct ColorObject : Object { + tp::RGBA mCol; + + static ObjectType TypeData; + static ObjectTypeAriphmetics TypeAriphm; + + static void constructor(Object* self); + static void copy(ColorObject* self, const ColorObject* in); + + static void from_int(ColorObject* self, tp::alni in); + static void from_float(ColorObject* self, tp::alnf in); + static tp::String to_string(ColorObject* self); + + static ColorObject* create(tp::RGBA in); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/dictobject.h b/Objects/public/primitives/dictobject.h new file mode 100644 index 0000000..6445196 --- /dev/null +++ b/Objects/public/primitives/dictobject.h @@ -0,0 +1,31 @@ +#pragma once + +#include "core/object.h" + +namespace obj { + + struct DictObject : Object { + static ObjectType TypeData; + static void copy(Object* self, const Object* in); + static void destructor(Object* self); + static void constructor(Object* self); + + static tp::alni save_size(DictObject* self); + static void save(DictObject* self, Archiver& file_self); + static void load(Archiver& file_self, DictObject* self); + static tp::Buffer childs_retrival(DictObject* self); + static tp::alni allocated_size(DictObject* self); + static tp::alni allocated_size_recursive(DictObject* self); + + void put(tp::String, Object*); + void remove(tp::String); + Object* get(tp::String); + tp::Map::Idx presents(tp::String); + Object* getSlotVal(tp::alni); + + const tp::Map& getItems() const; + + private: + tp::Map items; + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/enumobject.h b/Objects/public/primitives/enumobject.h new file mode 100644 index 0000000..13aebef --- /dev/null +++ b/Objects/public/primitives/enumobject.h @@ -0,0 +1,34 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct EnumObject : Object { + + // one entry is 2 * sizeof(alni) in size + tp::uhalni active; + tp::uhalni nentries; + tp::alni* entries; + + static ObjectType TypeData; + static void constructor(EnumObject* self); + static void destructor(EnumObject* self); + static void copy(EnumObject* self, const EnumObject* in); + + void init(tp::init_list list); + const char* getActiveName(); + const char* getItemName(tp::uhalni idx); + + static void from_int(EnumObject* self, tp::alni in); + static void from_float(EnumObject* self, tp::alnf in); + static void from_string(EnumObject* self, tp::String in); + static tp::String to_string(EnumObject* self); + static tp::alni to_int(EnumObject* self); + static tp::alnf to_float(EnumObject* self); + + static bool compare(EnumObject* first, EnumObject* second); + static EnumObject* create(tp::init_list list); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/floatobject.h b/Objects/public/primitives/floatobject.h new file mode 100644 index 0000000..5013383 --- /dev/null +++ b/Objects/public/primitives/floatobject.h @@ -0,0 +1,26 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct FloatObject : Object { + tp::alnf val; + + static ObjectType TypeData; + static ObjectTypeAriphmetics TypeAriphm; + + + static void constructor(FloatObject* self); + static void copy(FloatObject* self, const FloatObject* in); + static FloatObject* create(tp::alnf in); + + static void from_int(FloatObject* self, tp::alni in); + static void from_float(FloatObject* self, tp::alnf in); + static void from_string(FloatObject* self, tp::String in); + static tp::String to_string(FloatObject* self); + static tp::alni to_int(FloatObject* self); + static tp::alnf to_float(FloatObject* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/interpreterobject.h b/Objects/public/primitives/interpreterobject.h new file mode 100644 index 0000000..5710924 --- /dev/null +++ b/Objects/public/primitives/interpreterobject.h @@ -0,0 +1,19 @@ +#pragma once + +#include "interpreter/interpreter.h" +#include "primitives/classobject.h" + +namespace obj { + struct InterpreterObject : ClassObject { + static ObjectType TypeData; + Interpreter mInterpreter; + + static void destructor(InterpreterObject* self); + static void constructor(InterpreterObject* self); + static void load(Archiver& file_self, InterpreterObject* self); + + void exec(obj::ClassObject* self = NULL, tp::init_list globals = {}); + void debug(); + bool running(); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/intobject.h b/Objects/public/primitives/intobject.h new file mode 100644 index 0000000..0f26799 --- /dev/null +++ b/Objects/public/primitives/intobject.h @@ -0,0 +1,25 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct IntObject : Object { + tp::alni val; + + static ObjectType TypeData; + static ObjectTypeAriphmetics TypeAriphm; + + static void constructor(Object* self); + static void copy(IntObject* self, const IntObject* in); + static IntObject* create(tp::alni in); + + static void from_int(Object* self, tp::alni in); + static void from_float(Object* self, tp::alnf in); + static void from_string(Object* self, tp::String in); + static tp::String to_string(Object* self); + static tp::alni to_int(Object* self); + static tp::alnf to_float(Object* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/linkobject.h b/Objects/public/primitives/linkobject.h new file mode 100644 index 0000000..52b7129 --- /dev/null +++ b/Objects/public/primitives/linkobject.h @@ -0,0 +1,29 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct LinkObject : Object { + static ObjectType TypeData; + static void constructor(Object* self); + static void destructor(LinkObject* self); + static void copy(Object* self, const Object* in); + static LinkObject* create(Object* in); + + static tp::alni save_size(LinkObject* self); + static void save(LinkObject* self, Archiver& file_self); + static void load(Archiver& file_self, LinkObject* self); + static tp::alni allocated_size(LinkObject* self); + static tp::alni allocated_size_recursive(LinkObject* self); + static tp::Buffer childs_retrival(LinkObject* self); + + Object* getLink(); + void setLink(Object* obj); + + private: + Object* link; + }; + +}; \ No newline at end of file diff --git a/Objects/public/primitives/listobject.h b/Objects/public/primitives/listobject.h new file mode 100644 index 0000000..bd17841 --- /dev/null +++ b/Objects/public/primitives/listobject.h @@ -0,0 +1,36 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + enum ListMethods { + LISTOBJECT_PUSH_BACK, + LISTOBJECT_GET_LENGTH, + }; + + struct ListObject : Object { + static ObjectType TypeData; + static void constructor(Object* self); + static void copy(Object* self, const Object* in); + static void destructor(Object* self); + + static tp::alni allocated_size_recursive(ListObject* self); + static tp::alni allocated_size(ListObject* self); + static tp::Buffer childs_retrival(ListObject* self); + static void load(Archiver& file_self, ListObject* self); + static void save(ListObject* self, Archiver& file_self); + static tp::alni save_size(ListObject* self); + + const tp::List& getItems() const; + + void pushBack(Object* obj); + void pushFront(Object* obj); + void popBack(); + void delNode(tp::List::Node*); + + private: + tp::List items; + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/methodobject.h b/Objects/public/primitives/methodobject.h new file mode 100644 index 0000000..e4aedf3 --- /dev/null +++ b/Objects/public/primitives/methodobject.h @@ -0,0 +1,28 @@ +#pragma once + +#include "primitives/stringobject.h" +#include "interpreter/script.h" + +namespace obj { + + struct MethodObject : Object { + + static ObjectType TypeData; + + Script* mScript; + + static void constructor(MethodObject* self); + static void copy(MethodObject* self, MethodObject* in); + static void destructor(MethodObject* self); + static tp::alni save_size(MethodObject* self); + static void save(MethodObject* self,Archiver& file_self); + static void load(Archiver& file_self, obj::MethodObject* self); + + static void Initialize(); + static void UnInitialize(); + + void compile(); + + static MethodObject* create(tp::String script); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/nullobject.h b/Objects/public/primitives/nullobject.h new file mode 100644 index 0000000..0d71524 --- /dev/null +++ b/Objects/public/primitives/nullobject.h @@ -0,0 +1,32 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + extern struct NullObject* NdoNull_globalInstance; + + struct NullObject : Object { + + static void destructor(Object* self); + static ObjectType TypeData; + static void uninit(); + static Object* null_return() { + if (!NdoNull_globalInstance) { + NdoNull_globalInstance = (NullObject*) NDO->create("null"); + obj::NDO->refinc(NdoNull_globalInstance); + } + return (Object*) NdoNull_globalInstance; + } + + static Object* null_return_ref() { + obj::NDO->refinc(null_return()); + return NdoNull_globalInstance; + } + }; + + #define NDO_NULL obj::NullObject::null_return() + #define NDO_NULL_REF obj::NullObject::null_return_ref() + +}; \ No newline at end of file diff --git a/Objects/public/primitives/primitives.h b/Objects/public/primitives/primitives.h new file mode 100644 index 0000000..e659765 --- /dev/null +++ b/Objects/public/primitives/primitives.h @@ -0,0 +1,22 @@ + +#pragma once + +#include "primitives/dictobject.h" +#include "primitives/intobject.h" +#include "primitives/linkobject.h" +#include "primitives/listobject.h" +#include "primitives/nullobject.h" +#include "primitives/stringobject.h" +#include "primitives/boolobject.h" +#include "primitives/floatobject.h" +#include "primitives/enumobject.h" +#include "primitives/classobject.h" +#include "primitives/colorobject.h" +#include "primitives/methodobject.h" +#include "primitives/interpreterobject.h" +#include "primitives/typeobject.h" + +namespace obj { + void primitives_define_types(); + void primitives_uninitialize(); +}; \ No newline at end of file diff --git a/Objects/public/primitives/stringobject.h b/Objects/public/primitives/stringobject.h new file mode 100644 index 0000000..6f0b841 --- /dev/null +++ b/Objects/public/primitives/stringobject.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct StringObject : Object { + tp::String val; + + static ObjectType TypeData; + static void constructor(Object* self); + static void destructor(StringObject* self); + static void copy(Object* self, const Object* in); + static StringObject* create(tp::String in); + + static void from_int(StringObject* self, tp::alni in); + static void from_float(StringObject* self, tp::alnf in); + static void from_string(StringObject* self, tp::String in); + static tp::String to_string(StringObject* self); + static tp::alni to_int(StringObject* self); + static tp::alnf to_float(StringObject* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/typeobject.h b/Objects/public/primitives/typeobject.h new file mode 100644 index 0000000..53b1f5a --- /dev/null +++ b/Objects/public/primitives/typeobject.h @@ -0,0 +1,13 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct TypeObject : Object { + static ObjectType TypeData; + const ObjectType* mTypeRef; + static TypeObject* create(const ObjectType* type); + }; +}; \ No newline at end of file diff --git a/Objects/rsc/script.osc b/Objects/rsc/script.osc new file mode 100644 index 0000000..da04039 --- /dev/null +++ b/Objects/rsc/script.osc @@ -0,0 +1,15 @@ + +class A { + var string = "hello"; + def log(name) { + << self.string; + << name; + } +} + +def main() { + var a = new A(); + a.log("user"); +} + +main(); \ No newline at end of file diff --git a/Objects/tests/TestEntry.cpp b/Objects/tests/TestEntry.cpp new file mode 100644 index 0000000..c625e7e --- /dev/null +++ b/Objects/tests/TestEntry.cpp @@ -0,0 +1,90 @@ + + +#include "MethodObject/methodobject.h" +#include "primitives/primitives.h" + +#include "Interpreter/Interpreter.h" + +#include "log.h" + +#include "ByteCodeGen/Function.h" + +using namespace osc; +using namespace tp; +using namespace obj; + +void TestCompile(ByteCode& bytecode) { + using namespace BCgen; + + Genereate(bytecode, + StmScope({ + + StmDefFunc("main", {}, { + StmDefLocal("i1", ExprConst(1)), + StmDefLocal("i2", ExprConst(2)), + + StmDefFunc("add", {"first", "second"}, { + StmReturn(ExprAdd(ExprLocal("first"), ExprLocal("second"))) + }), + + StmPrint(ExprLocal("i1")), + StmPrint(ExprConst(" + ")), + StmPrint(ExprLocal("i2")), + StmPrint(ExprConst(" = ")), + + StmPrint(ExprFunc("add")->ExprCall({ ExprLocal("i1"), ExprLocal("i2") })), + + StmPrint(ExprConst("\n")), + }), + + StmPrint(ExprBoolNot(ExprConst(0))), + + StmWhile(ExprConst(false), StmScope({ + StmIgnore(ExprFunc("main")->ExprCall({})) + }) + ), + + StmIf(ExprConst(true), + StmScope({ + //StmIgnore(ExprFunc("main")->ExprCall({})), + //StmPrint(ExprConst("true")), + }), + StmScope({ + //StmPrint(ExprConst("false")), + }) + ) + }) + ); +} + +int main(int argc, char* argv[]) { + + tp::alloc_init(); + string::Initialize(); + Logger::init(); + + objects_init(); + primitives_define_types(); + MethodObject::Initialize(); + + { + Interpreter interp; + + ByteCode bytecode; + TestCompile(bytecode); + + GLog->write(" >> Exec: start \n"); + auto start = get_time(); + interp.exec(&bytecode); + auto end = get_time(); + GLog->write(sfmt("\n >> Exec time %i ms", end - start)); + } + + MethodObject::UnInitialize(); + objects_finalize(); + primitives_uninitialize(); + + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); +} \ No newline at end of file diff --git a/Objects/tests/test.cpp b/Objects/tests/test.cpp new file mode 100644 index 0000000..6ed1c96 --- /dev/null +++ b/Objects/tests/test.cpp @@ -0,0 +1,75 @@ + +#include "primitives/primitives.h" + +#include "compiler/function.h" +#include "interpreter/interpreter.h" + +#include "CmdArgParser.h" + +void compile(char argc, const char* argv[]) { + tp::CmdArgParser args = { + { "script", tp::CmdArgParser::Arg::FILE_IN }, + { "out", "out.mo" } + }; + + if (!args.parse(argc, argv, true)) { + return; + } + + auto& script_file = args.getFile("script"); + auto outpath = args.getString("out"); + + tp::string script; + script.loadFile(&script_file); + + auto method = obj::MethodObject::create(script); + + obj::NDO->save(method, outpath); +} + +void execute(char argc, const char* argv[]) { + tp::CmdArgParser args = { + { "object_path", tp::CmdArgParser::Arg::STR }, + { "debug", false } + }; + + if (!args.parse(argc, argv, true)) { + return; + } + + auto object_path = args.getString("object_path"); + auto debug = args.getBool("debug"); + + auto obj = obj::NDO->load(object_path); + if (!obj) { + printf("Invalid Object File\n"); + return; + } + + NDO_CASTV(obj::MethodObject, obj, method); + if (!method) { + printf("Object Is Not A Method\n"); + return; + } + + obj::Interpreter interpreter; + interpreter.execAll(method); +} + + +int main(char argc, const char* argv[]) { + + tp::ModuleManifest* ModuleDependencies[] = { &obj::gModuleObjects, NULL }; + tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies); + if (!TestModule.initialize()) { + return 1; + } + +#ifdef OBC + compile(argc, argv); +#elif OBVM + execute(argc, argv); +#endif // OBC + + TestModule.deinitialize(); +} \ No newline at end of file diff --git a/TODO b/TODO index 25baf47..cf4062f 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,19 @@ Testing ! Serialization ! Objects: - Implement ! + Serialization + Alloc Size queries + Compile !! + parser print error + write tests before refactor !! + remove obj_ref_count macro + fix all clang-tidy notices + write archiver + replace all strings with const string ref + replace all type usages with typedefs + remove tp:: + rename classes + move functions around Storage: Finish networking diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp index 3a041c5..cdee460 100644 --- a/Tokenizer/public/Tokenizer.hpp +++ b/Tokenizer/public/Tokenizer.hpp @@ -111,7 +111,7 @@ namespace tp { if (!mSource) { return false; } - if (mSource[mAdvancedOffset] == nullptr) { + if (mSource[mAdvancedOffset] == 0) { return false; } return true; diff --git a/Utils/private/Utils.cpp b/Utils/private/Utils.cpp index 48e351b..11f2011 100644 --- a/Utils/private/Utils.cpp +++ b/Utils/private/Utils.cpp @@ -87,6 +87,9 @@ namespace tp { return 0; } + bool memEqual(const void* left, const void* right, uhalni len) { + return memCompare(left, right, len) == 0; + } int1 memCompareVal(const void* left, uhalni len, uint1 val) { MODULE_SANITY_CHECK(gModuleBase) diff --git a/Utils/public/Utils.hpp b/Utils/public/Utils.hpp index 740f4d0..0cef950 100644 --- a/Utils/public/Utils.hpp +++ b/Utils/public/Utils.hpp @@ -12,6 +12,7 @@ namespace tp { void memSetVal(void* p, uhalni byteSize, uint1 val); void memCopy(void* left, const void* right, uhalni len); int1 memCompare(const void* left, const void* right, uhalni len); + bool memEqual(const void* left, const void* right, uhalni len); int1 memCompareVal(const void* left, uhalni len, uint1 val); } From 939e365a4f6aacfbcf8d9b9ab3774088574e5029 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 24 Jul 2023 21:55:19 +0300 Subject: [PATCH 35/68] Objects Initial --- CMakeLists.txt | 2 + Containers/public/Buffer.hpp | 154 ++- Objects/CMakeLists.txt | 31 + Objects/README.md | 20 + Objects/applications/Compiler.cpp | 49 + Objects/applications/Interpreter.cpp | 58 ++ Objects/private/compiler/constants.cpp | 148 +++ Objects/private/compiler/expression.cpp | 70 ++ Objects/private/compiler/function.cpp | 556 +++++++++++ Objects/private/compiler/instruction.cpp | 29 + Objects/private/compiler/statement.cpp | 116 +++ Objects/private/core/object.cpp | 250 +++++ Objects/private/core/objectsave.cpp | 411 ++++++++ Objects/private/core/scriptsection.cpp | 265 +++++ Objects/private/core/typegroups.cpp | 81 ++ Objects/private/core/typemethods.cpp | 138 +++ Objects/private/interpreter/callstack.cpp | 40 + Objects/private/interpreter/interpreter.cpp | 573 +++++++++++ Objects/private/interpreter/opcodes.cpp | 384 ++++++++ Objects/private/interpreter/operandsstack.cpp | 30 + Objects/private/interpreter/scopestack.cpp | 90 ++ Objects/private/parser/parser.cpp | 904 ++++++++++++++++++ Objects/private/primitives/boolobject.cpp | 78 ++ Objects/private/primitives/classobject.cpp | 81 ++ Objects/private/primitives/colorobject.cpp | 84 ++ Objects/private/primitives/dictobject.cpp | 232 +++++ Objects/private/primitives/enumobject.cpp | 182 ++++ Objects/private/primitives/floatobject.cpp | 102 ++ .../private/primitives/interpreterobject.cpp | 82 ++ Objects/private/primitives/intobject.cpp | 104 ++ Objects/private/primitives/linkobject.cpp | 132 +++ Objects/private/primitives/listobject.cpp | 135 +++ Objects/private/primitives/methodobject.cpp | 78 ++ Objects/private/primitives/nullobject.cpp | 60 ++ Objects/private/primitives/primitives.cpp | 83 ++ Objects/private/primitives/stringobject.cpp | 97 ++ Objects/private/primitives/typeobject.cpp | 80 ++ Objects/public/compiler/constants.h | 42 + Objects/public/compiler/expression.h | 126 +++ Objects/public/compiler/function.h | 47 + Objects/public/compiler/instruction.h | 52 + Objects/public/compiler/statement.h | 116 +++ Objects/public/core/object.h | 226 +++++ Objects/public/core/scriptsection.h | 36 + Objects/public/core/typegroups.h | 40 + Objects/public/core/typemethods.h | 63 ++ Objects/public/interpreter/bytecode.h | 28 + Objects/public/interpreter/callstack.h | 32 + Objects/public/interpreter/interpreter.h | 29 + Objects/public/interpreter/opcodes.h | 158 +++ Objects/public/interpreter/operandsstack.h | 39 + Objects/public/interpreter/scopestack.h | 46 + Objects/public/interpreter/script.h | 12 + Objects/public/parser/parser.h | 195 ++++ Objects/public/primitives/boolobject.h | 24 + Objects/public/primitives/classobject.h | 49 + Objects/public/primitives/colorobject.h | 24 + Objects/public/primitives/dictobject.h | 31 + Objects/public/primitives/enumobject.h | 34 + Objects/public/primitives/floatobject.h | 26 + Objects/public/primitives/interpreterobject.h | 19 + Objects/public/primitives/intobject.h | 25 + Objects/public/primitives/linkobject.h | 29 + Objects/public/primitives/listobject.h | 36 + Objects/public/primitives/methodobject.h | 28 + Objects/public/primitives/nullobject.h | 32 + Objects/public/primitives/primitives.h | 22 + Objects/public/primitives/stringobject.h | 24 + Objects/public/primitives/typeobject.h | 13 + Objects/rsc/script.osc | 15 + Objects/tests/TestEntry.cpp | 90 ++ Objects/tests/test.cpp | 75 ++ TODO | 14 +- Tokenizer/public/Tokenizer.hpp | 2 +- Utils/private/Utils.cpp | 3 + Utils/public/Utils.hpp | 1 + 76 files changed, 7895 insertions(+), 17 deletions(-) create mode 100644 Objects/CMakeLists.txt create mode 100644 Objects/README.md create mode 100644 Objects/applications/Compiler.cpp create mode 100644 Objects/applications/Interpreter.cpp create mode 100644 Objects/private/compiler/constants.cpp create mode 100644 Objects/private/compiler/expression.cpp create mode 100644 Objects/private/compiler/function.cpp create mode 100644 Objects/private/compiler/instruction.cpp create mode 100644 Objects/private/compiler/statement.cpp create mode 100644 Objects/private/core/object.cpp create mode 100644 Objects/private/core/objectsave.cpp create mode 100644 Objects/private/core/scriptsection.cpp create mode 100644 Objects/private/core/typegroups.cpp create mode 100644 Objects/private/core/typemethods.cpp create mode 100644 Objects/private/interpreter/callstack.cpp create mode 100644 Objects/private/interpreter/interpreter.cpp create mode 100644 Objects/private/interpreter/opcodes.cpp create mode 100644 Objects/private/interpreter/operandsstack.cpp create mode 100644 Objects/private/interpreter/scopestack.cpp create mode 100644 Objects/private/parser/parser.cpp create mode 100644 Objects/private/primitives/boolobject.cpp create mode 100644 Objects/private/primitives/classobject.cpp create mode 100644 Objects/private/primitives/colorobject.cpp create mode 100644 Objects/private/primitives/dictobject.cpp create mode 100644 Objects/private/primitives/enumobject.cpp create mode 100644 Objects/private/primitives/floatobject.cpp create mode 100644 Objects/private/primitives/interpreterobject.cpp create mode 100644 Objects/private/primitives/intobject.cpp create mode 100644 Objects/private/primitives/linkobject.cpp create mode 100644 Objects/private/primitives/listobject.cpp create mode 100644 Objects/private/primitives/methodobject.cpp create mode 100644 Objects/private/primitives/nullobject.cpp create mode 100644 Objects/private/primitives/primitives.cpp create mode 100644 Objects/private/primitives/stringobject.cpp create mode 100644 Objects/private/primitives/typeobject.cpp create mode 100644 Objects/public/compiler/constants.h create mode 100644 Objects/public/compiler/expression.h create mode 100644 Objects/public/compiler/function.h create mode 100644 Objects/public/compiler/instruction.h create mode 100644 Objects/public/compiler/statement.h create mode 100644 Objects/public/core/object.h create mode 100644 Objects/public/core/scriptsection.h create mode 100644 Objects/public/core/typegroups.h create mode 100644 Objects/public/core/typemethods.h create mode 100644 Objects/public/interpreter/bytecode.h create mode 100644 Objects/public/interpreter/callstack.h create mode 100644 Objects/public/interpreter/interpreter.h create mode 100644 Objects/public/interpreter/opcodes.h create mode 100644 Objects/public/interpreter/operandsstack.h create mode 100644 Objects/public/interpreter/scopestack.h create mode 100644 Objects/public/interpreter/script.h create mode 100644 Objects/public/parser/parser.h create mode 100644 Objects/public/primitives/boolobject.h create mode 100644 Objects/public/primitives/classobject.h create mode 100644 Objects/public/primitives/colorobject.h create mode 100644 Objects/public/primitives/dictobject.h create mode 100644 Objects/public/primitives/enumobject.h create mode 100644 Objects/public/primitives/floatobject.h create mode 100644 Objects/public/primitives/interpreterobject.h create mode 100644 Objects/public/primitives/intobject.h create mode 100644 Objects/public/primitives/linkobject.h create mode 100644 Objects/public/primitives/listobject.h create mode 100644 Objects/public/primitives/methodobject.h create mode 100644 Objects/public/primitives/nullobject.h create mode 100644 Objects/public/primitives/primitives.h create mode 100644 Objects/public/primitives/stringobject.h create mode 100644 Objects/public/primitives/typeobject.h create mode 100644 Objects/rsc/script.osc create mode 100644 Objects/tests/TestEntry.cpp create mode 100644 Objects/tests/test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d883a0..d0d6658 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,3 +24,5 @@ add_subdirectory(Externals) add_subdirectory(Connection) add_subdirectory(Graphics) + +add_subdirectory(Objects) diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 71af4b7..31ab348 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -20,42 +20,111 @@ namespace tp { template class ConstSizeBuffer { - SelCopyArg Arg; + typedef SelCopyArg Arg; private: tType mBuff[tSize]; + ualni mLoad = 0; public: ConstSizeBuffer() = default; public: - [[nodiscard]] ualni size() const { return tSize; } + [[nodiscard]] ualni size() const { return mLoad; } + [[nodiscard]] ualni getBuffSize() const { return tSize; } - tType& first() { - return *mBuff; - } - - const tType& first() const { - return *mBuff; + tType& first() { + DEBUG_ASSERT(mLoad) + return *mBuff; } - tType& last() { - return mBuff[tSize - 1]; + const tType& first() const { + DEBUG_ASSERT(mLoad) + return *mBuff; } - - const tType& last() const { - return mBuff[tSize - 1]; + + tType& last() { + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; + } + + const tType& last() const { + DEBUG_ASSERT(mLoad) + return mBuff[mLoad - 1]; } tType& operator[](ualni aIdx) { - DEBUG_ASSERT(aIdx >= 0 && aIdx < tSize) + DEBUG_ASSERT(aIdx >= 0 && aIdx < mLoad) return mBuff[aIdx]; } const tType& operator[](ualni aIdx) const { - DEBUG_ASSERT(aIdx >= 0 && aIdx < tSize) + DEBUG_ASSERT(aIdx >= 0 && aIdx < mLoad) return mBuff[aIdx]; } + + void append(Arg data) { + ASSERT(mLoad != tSize) + new (&mBuff[mLoad]) tType(data); + mLoad++; + } + + void pop() { + DEBUG_ASSERT(mLoad) + mBuff[mLoad].~tType(); + mLoad--; + } + + ConstSizeBuffer& operator=(const tp::init_list& init) { + for (auto arg : init) { + append(arg); + } + return *this; + } + + public: + + class IteratorPointer { + protected: + tType* mIter; + public: + IteratorPointer() = default; + tType& operator->() { return *mIter; } + const tType& operator->() const { return *mIter; } + }; + + class IteratorReference { + protected: + tType* mIter; + public: + IteratorReference() = default; + tType* operator->() { return mIter; } + const tType* operator->() const { return mIter; } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + + explicit Iterator(tType* iter) { this->mIter = iter; } + + const Iterator& operator*() const { return *this; } + + Iterator& operator++() { + this->mIter++; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + [[nodiscard]] Iterator begin() const { + return Iterator(mBuff); + } + + [[nodiscard]] Iterator end() const { + return Iterator(mBuff + mLoad); + } }; template< @@ -150,6 +219,14 @@ namespace tp { } public: + Buffer& operator=(const tp::init_list& init) { + // TODO : optimize + for (auto arg : init) { + append(arg); + } + return *this; + } + void append(Arg data) { if (mLoad == mSize) resizeBuffer(tResizePolicy(mSize)); new (&mBuff[mLoad]) tType(data); @@ -183,6 +260,53 @@ namespace tp { for (ualni i = 0; i < mLoad; i++) new (mBuff + i) tType(); } + public: + class IteratorPointer { + protected: + tType* mIter; + public: + IteratorPointer() = default; + tType& operator->() { return *mIter; } + const tType& operator->() const { return *mIter; } + }; + + class IteratorReference { + protected: + tType* mIter; + public: + IteratorReference() = default; + tType* operator->() { return mIter; } + const tType* operator->() const { return mIter; } + }; + + class Iterator : public TypeSelect::isPointer, IteratorPointer, IteratorReference>::Result { + public: + + explicit Iterator(tType* iter) { this->mIter = iter; } + + const Iterator& operator*() const { return *this; } + + tType& data() { + return *this->mIter; + } + + Iterator& operator++() { + this->mIter++; + return *this; + } + + bool operator==(const Iterator& left) const { return left.mIter == this->mIter; } + bool operator!=(const Iterator& left) const { return left.mIter != this->mIter; } + }; + + [[nodiscard]] Iterator begin() const { + return Iterator(mBuff); + } + + [[nodiscard]] Iterator end() const { + return Iterator(mBuff + mLoad); + } + private: void resizeBuffer(ualni newSize) { DEBUG_ASSERT(newSize >= mLoad) diff --git a/Objects/CMakeLists.txt b/Objects/CMakeLists.txt new file mode 100644 index 0000000..a8e81b5 --- /dev/null +++ b/Objects/CMakeLists.txt @@ -0,0 +1,31 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Objects) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") + +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) + +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math Tokenizer CommandLine Connection) + +### -------------------------- Applications -------------------------- ### +add_executable(osc ./applications/Compiler.cpp) +add_executable(osi ./applications/Interpreter.cpp) + +target_link_libraries(osc ${PROJECT_NAME}) +target_link_libraries(osi ${PROJECT_NAME}) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Objects/README.md b/Objects/README.md new file mode 100644 index 0000000..c2ebb0e --- /dev/null +++ b/Objects/README.md @@ -0,0 +1,20 @@ + Objects + +Objects are simple structures with run-time type information attached.
+ +## Features +- Encapsulates most of the basic [types](https://github.com/IlyaShurupov/types.git) into primitives. +- Has its own scripting language to manipulate those objects at run-time. +- Can save and load any object at any point in execution. + +## TODO +- Dubug information support +- Run-time error handling +- Dead code elimination & optimization + +## Building +1. [Types](https://github.com/IlyaShurupov/types.git) repository must be in the same directory. +2. Export the parent path to the system variables. +``` +setx SRC_DIR "parent path" +``` diff --git a/Objects/applications/Compiler.cpp b/Objects/applications/Compiler.cpp new file mode 100644 index 0000000..93ef9c8 --- /dev/null +++ b/Objects/applications/Compiler.cpp @@ -0,0 +1,49 @@ + +#include "Compiler/Compiler.h" + +#include "primitives/primitives.h" +#include "MethodObject/MethodObject.h" +#include "log.h" + +using namespace osc; +using namespace tp; +using namespace obj; + +int main(int argc, char* argv[]) { + + tp::alloc_init(); + string::Initialize(); + Logger::init(); + + objects_init(); + primitives_define_types(); + MethodObject::Initialize(); + + { + Compiler compiler; + + tp::string script; + + RelAssert(argc == 2 && "Invalid Arguments"); + + script.loadFile(argv[1]); + + compiler.compile(script); + + GLog->write("oscc : compilation finished", 1); + } + + try { + MethodObject::UnInitialize(); + objects_finalize(); + primitives_uninitialize(); + + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); + + } + catch (...) { + tp::terminate(); + } +} \ No newline at end of file diff --git a/Objects/applications/Interpreter.cpp b/Objects/applications/Interpreter.cpp new file mode 100644 index 0000000..d9b38da --- /dev/null +++ b/Objects/applications/Interpreter.cpp @@ -0,0 +1,58 @@ + + +#include "MethodObject/methodobject.h" +#include "primitives/primitives.h" + +#include "Interpreter/Interpreter.h" + +#include "log.h" + +using namespace osc; +using namespace tp; +using namespace obj; + +int main(int argc, char* argv[]) { + tp::alloc_init(); + string::Initialize(); + Logger::init(); + + objects_init(); + primitives_define_types(); + MethodObject::Initialize(); + + { + time_ms load_start = get_time(); + RelAssert(argc == 2 && "Invalid Arguments"); + auto obj = NDO->load(argv[1]); + RelAssert(obj && "Failed to Load the File"); + RelAssert(obj->type == &MethodObject::TypeData && "Innvalid file content"); + + Interpreter interp; + NDO_CASTV(MethodObject, obj, method); + + RelAssert(method->mScript && "Innvalid file content"); + time_ms load_end = get_time(); + + GLog->write("\noscvm - execution started\n"); + time_ms exec_start = get_time(); + interp.exec(&method->mScript->mBytecode); + time_ms exec_end = get_time(); + + auto exec_time = (exec_end - exec_start); + auto load_time = (load_end - load_start); + GLog->write(sfmt("\noscvm - execution finished (Load : %f Exec : %f)", load_time, exec_time)); + } + + try { + MethodObject::UnInitialize(); + objects_finalize(); + primitives_uninitialize(); + + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); + + } catch (...) { + tp::terminate(); + } +} \ No newline at end of file diff --git a/Objects/private/compiler/constants.cpp b/Objects/private/compiler/constants.cpp new file mode 100644 index 0000000..3208eaa --- /dev/null +++ b/Objects/private/compiler/constants.cpp @@ -0,0 +1,148 @@ +#include "NewPlacement.hpp" +#include "compiler/constants.h" +#include "primitives/primitives.h" +#include "primitives/methodobject.h" + +using namespace obj; +using namespace tp; +using namespace BCgen; + +ConstObject::ConstObject() {} +ConstObject::ConstObject(obj::Object* mObj) : mObj(mObj) {} + +ConstObjectsPool::~ConstObjectsPool() { + if (mDelete) { + for (auto obj : mStrings) { + obj::NDO->destroy(obj->val->mObj); + } + for (auto obj : mIntegers) { + obj::NDO->destroy(obj->val->mObj); + } + for (auto obj : mFloats) { + obj::NDO->destroy(obj->val->mObj); + } + for (auto obj : mMethods) { + obj::NDO->destroy(obj->val->mObj); + } + if (mBoolFalse.mObj) { + obj::NDO->destroy(mBoolFalse.mObj); + } + if (mBoolTrue.mObj) { + obj::NDO->destroy(mBoolTrue.mObj); + } + } + for (auto obj : mStrings) { + delete obj->val; + } + for (auto obj : mIntegers) { + delete obj->val; + } + for (auto obj : mFloats) { + delete obj->val; + } +} + +ConstObject* ConstObjectsPool::registerObject(obj::Object* obj) { + ConstObject* out = new ConstObject(obj); + mTotalObjects++; + return out; +} + +ConstObject* ConstObjectsPool::get(tp::alni val) { + auto idx = mIntegers.presents(val); + ConstObject* const_obj = NULL; + if (idx) { + const_obj = mIntegers.getSlotVal(idx); + } + else { + const_obj = registerObject(IntObject::create(val)); + mIntegers.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(tp::String val) { + auto idx = mStrings.presents(val); + ConstObject* const_obj = NULL; + if (idx) { + const_obj = mStrings.getSlotVal(idx); + } + else { + const_obj = registerObject(StringObject::create(val)); + mStrings.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(tp::alnf val) { + auto idx = mFloats.presents(val); + ConstObject* const_obj = NULL; + if (idx) { + const_obj = mFloats.getSlotVal(idx); + } + else { + const_obj = registerObject(FloatObject::create(val)); + mFloats.put(val, const_obj); + } + return const_obj; +} + +ConstObject* ConstObjectsPool::get(bool val) { + if (val) { + if (!mBoolTrue.mObj) { + mBoolTrue.mObj = BoolObject::create(val); + mTotalObjects++; + } + return &mBoolTrue; + } + else { + if (!mBoolFalse.mObj) { + mBoolFalse.mObj = BoolObject::create(val); + mTotalObjects++; + } + return &mBoolFalse; + } +} + +ConstObject* ConstObjectsPool::addMethod(tp::String method_id, obj::Object* method) { + ASSERT(NDO_CAST(MethodObject, method) && "Object is not a method object"); + ASSERT(!mMethods.presents(method_id) && "Method Redefinition"); + auto out = registerObject(method); + mMethods.put(method_id, out); + return out; +} + +void ConstObjectsPool::save(tp::Buffer& out) { + out.reserve(mTotalObjects); + tp::alni data_idx = 0; + for (auto obj : mMethods) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mStrings) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mIntegers) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + for (auto obj : mFloats) { + out[data_idx] = obj->val->mObj; + obj->val->mConstIdx = data_idx; + data_idx++; + } + if (mBoolFalse.mObj) { + out[data_idx] = mBoolFalse.mObj; + mBoolFalse.mConstIdx = data_idx; + data_idx++; + } + if (mBoolTrue.mObj) { + out[data_idx] = mBoolTrue.mObj; + mBoolTrue.mConstIdx = data_idx; + } + mDelete = false; +} \ No newline at end of file diff --git a/Objects/private/compiler/expression.cpp b/Objects/private/compiler/expression.cpp new file mode 100644 index 0000000..48a8390 --- /dev/null +++ b/Objects/private/compiler/expression.cpp @@ -0,0 +1,70 @@ +#include "NewPlacement.hpp" +#include "compiler/expression.h" + +using namespace obj; +using namespace BCgen; + +Expression::Expression() {} +Expression::Expression(Type type) : mType(type) {} + +ExpressionChild* Expression::ExprChild(tp::String id) { + return new ExpressionChild(this, id); +} + +ExpressionCall* Expression::ExprCall(tp::init_list args) { + return new ExpressionCall(this, args); +} + +ExpressionLocal* obj::BCgen::ExprLocal(tp::String id) { + return new ExpressionLocal(id); +} + +ExpressionSelf* obj::BCgen::ExprSelf() { + return new ExpressionSelf(); +} + +ExpressionNew* obj::BCgen::ExprNew(tp::String type) { + return new ExpressionNew(type); +} + +ExpressionAriphm* obj::BCgen::ExprAriphm(Expression* left, Expression* right, OpCode type) { + return new ExpressionAriphm(left, right, type); +} + +ExpressionFunc* obj::BCgen::ExprFunc(tp::String id) { + return new ExpressionFunc(id); +} + +ExpressionBoolean* obj::BCgen::ExprBool(Expression* left, Expression* right, obj::OpCode type) { + return new ExpressionBoolean(left, right, ExpressionBoolean::BoolType(type)); +} + +ExpressionBoolean* obj::BCgen::ExprBoolNot(Expression* invert) { + return new ExpressionBoolean(invert); +} + +ExpressionBoolean::ExpressionBoolean(Expression* left, Expression* right, BoolType type) +: Expression(Type::BOOLEAN), mLeft(left), mRight(right), mBoolType(type) { +} + +ExpressionBoolean::ExpressionBoolean(Expression* invert) + : Expression(Type::BOOLEAN), mLeft(invert), mBoolType(BoolType::NOT){ +} + +ExpressionCall::ExpressionCall(Expression * mParent, tp::init_list args) : Expression(Type::CALL), mParent(mParent) { + mArgs = args; +} + +ExpressionNew::ExpressionNew(tp::String type) : Expression(Type::NEW), mNewType(type) {} +ExpressionLocal::ExpressionLocal(tp::String id) : Expression(Type::LOCAL), mLocalId(id) {} +ExpressionSelf::ExpressionSelf() : Expression(Type::SELF) {} +ExpressionChild::ExpressionChild(Expression* mParent, tp::String id) : Expression(Type::CHILD), mParent(mParent), mLocalId(id) {} +ExpressionAriphm::ExpressionAriphm(Expression* left, Expression* right, OpCode type) : Expression(Type::ARIPHM), mLeft(left), mRight(right), mOpType(type) {} +ExpressionFunc::ExpressionFunc(tp::String id) : Expression(Type::FUNC), mFuncId(id) {} +ExpressionConst::ExpressionConst(tp::String val) : Expression(Type::CONST), mConstType(STR), str(val) {} +ExpressionConst::ExpressionConst(const char* val) : Expression(Type::CONST), mConstType(STR), str(val) {} +ExpressionConst::ExpressionConst(tp::int4 val) : Expression(Type::CONST), mConstType(INT), integer(val) {} +ExpressionConst::ExpressionConst(tp::flt4 val) : Expression(Type::CONST), mConstType(FLT), floating(val) {} +ExpressionConst::ExpressionConst(tp::alni val) : Expression(Type::CONST), mConstType(INT), integer(val) {} +ExpressionConst::ExpressionConst(tp::alnf val) : Expression(Type::CONST), mConstType(FLT), floating(val) {} +ExpressionConst::ExpressionConst(bool val) : Expression(Type::CONST), mConstType(BOOL), boolean(val) {} diff --git a/Objects/private/compiler/function.cpp b/Objects/private/compiler/function.cpp new file mode 100644 index 0000000..014da8f --- /dev/null +++ b/Objects/private/compiler/function.cpp @@ -0,0 +1,556 @@ + +#include "NewPlacement.hpp" + +#include "compiler/function.h" + +#include "primitives/primitives.h" +#include "primitives/methodobject.h" + +#include "Logging.hpp" + +#include "parser/parser.h" + +using namespace obj; +using namespace tp; +using namespace obj; +using namespace BCgen; + +void obj::BCgen::Genereate(ByteCode& out, StatementScope* body) { + auto root = FunctionDefinition(); + + root.inst(Instruction(OpCode::SCOPE_IN)); + + for (auto child_stm : body->mStatements) { + root.EvalStatement(child_stm.data()); + } + + root.inst(Instruction(OpCode::SCOPE_OUT)); + + root.generateByteCode(out); +} + +ConstObject* FunctionDefinition::defineLocal(tp::String id) { + auto idx = mLocals.presents(id); + //RelAssert(!idx && "Local Redefinition"); + auto const_str_id = mConstants.get(id); + mLocals.put(id, const_str_id); + return const_str_id; +} + +FunctionDefinition::FunctionDefinition(tp::String function_id, tp::Buffer args, FunctionDefinition* prnt) { + mFunctionId = function_id; + inst(Instruction(OpCode::SAVE_ARGS, args.size(), 1)); + for (auto id : args) { + ASSERT(!mLocals.presents(id.data()) && "Argument Redefinition"); + auto const_data = mConstants.get(id.data()); + mArgsOrder.pushBack(const_data); + mLocals.put(id.data(), const_data); + inst(Instruction(const_data)); + } +} + +void FunctionDefinition::EvalStatement(Statement* stm) { + switch (stm->mType) { + case Statement::Type::IGNORE: { + auto stm_ignore = (StatementIgnore*)stm; + EvalExpr(stm_ignore->mExpr); + inst(OpCode::IGNORE); + break; + } + case Statement::Type::WHILE: { + auto stm_while = (StatementWhile*)stm; + + auto check_mark = inst(Instruction()); + + EvalExpr(stm_while->mCondition); + + auto jump_if_inst = inst(Instruction(NULL, Instruction::InstType::JUMP_IF_NOT)); + + if (stm_while->mScope) { + EvalStatement(stm_while->mScope); + } + + auto jump_inst = inst(Instruction(NULL, Instruction::InstType::JUMP)); + auto end_mark = inst(Instruction()); + + jump_if_inst->data.mInstTarget = end_mark; + jump_inst->data.mInstTarget = check_mark; + + break; + } + case Statement::Type::IF: { + auto stm_if = (StatementIf*)stm; + + EvalExpr(stm_if->mCondition); + + auto jump_if_inst = inst(Instruction(NULL, Instruction::InstType::JUMP_IF_NOT)); + + if (stm_if->mOnTrue) { + EvalStatement(stm_if->mOnTrue); + } + + auto jump_inst = inst(Instruction(NULL, Instruction::InstType::JUMP)); + auto else_mark = inst(Instruction()); + + if (stm_if->mOnFalse) { + EvalStatement(stm_if->mOnFalse); + } + + auto end_mark = inst(Instruction()); + + jump_if_inst->data.mInstTarget = else_mark; + jump_inst->data.mInstTarget = end_mark; + + break; + } + case Statement::Type::SCOPE: { + auto stm_scope = (StatementScope*)stm; + if (stm_scope->mPushToScopeStack) { + inst(Instruction(OpCode::SCOPE_IN)); + } + for (auto child_stm : stm_scope->mStatements) { + EvalStatement(child_stm.data()); + } + if (stm_scope->mPushToScopeStack) { + inst(Instruction(OpCode::SCOPE_OUT)); + } + break; + } + case Statement::Type::DEF_FUNC: { + auto stm_func_def = (StatementFuncDef*) stm; + + FunctionDefinition func(stm_func_def->mFunctionId, stm_func_def->mArgs, this); + + // define method as local + auto idx = mLocals.presents(func.mFunctionId); + ASSERT(!idx && "Local Redefinition with function name"); + mLocals.put(func.mFunctionId, mConstants.get(func.mFunctionId)); + + // create and register const func object + auto function_obj = NDO_CAST(MethodObject, NDO->create("method")); + auto method_const_obj = mConstants.addMethod(func.mFunctionId, function_obj); + + for (auto child_stm : stm_func_def->mStatements) { + func.EvalStatement(child_stm.data()); + } + + func.generateByteCode(function_obj->mScript->mBytecode); + + inst(Instruction(OpCode::LOAD_CONST, method_const_obj)); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(func.mFunctionId))); + inst(Instruction(OpCode::DEF_LOCAL)); + break; + } + case Statement::Type::CLASS_DEF: { + + // do the function definition + auto stm_class_def = (StatementClassDef*)stm; + + FunctionDefinition func(stm_class_def->mClassId, {}, this); + + // define method as local + auto idx = mLocals.presents(func.mFunctionId); + ASSERT(!idx && "Local Redefinition with function name"); + mLocals.put(func.mFunctionId, mConstants.get(func.mFunctionId)); + + // create and register const func object + auto function_obj = NDO_CAST(MethodObject, NDO->create("method")); + auto method_const_obj = mConstants.addMethod(func.mFunctionId, function_obj); + + // compile function + for (auto child_stm : stm_class_def->mScope->mStatements) { + // check for return statements + ASSERT(child_stm.data()->mType != Statement::Type::RET && "return statements are not allowed in class definition"); + func.EvalStatement(child_stm.data()); + } + // create one last instruction - constructing class from function execution state + func.inst(Instruction(OpCode::CLASS_CONSTRUCT)); + func.generateByteCode(function_obj->mScript->mBytecode); + + inst(Instruction(OpCode::LOAD_CONST, method_const_obj)); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(func.mFunctionId))); + inst(Instruction(OpCode::DEF_LOCAL)); + break; + } + case Statement::Type::DEF_LOCAL: { + auto stm_local_def = (StatementLocalDef*)stm; + + if (!stm_local_def->mIsConstExpr) { + auto const_id = defineLocal(stm_local_def->mLocalId); + EvalExpr(stm_local_def->mNewExpr); + inst(Instruction(OpCode::LOAD_CONST, const_id)); + inst(Instruction(OpCode::DEF_LOCAL)); + + } else { + + tp::String type; + switch (stm_local_def->mConstExpr->mConstType) { + case ExpressionConst::BOOL: { + type = "bool"; + break; + } + case ExpressionConst::INT: { + type = "int"; + break; + } + case ExpressionConst::FLT: { + type = "float"; + break; + } + case ExpressionConst::STR: { + type = "str"; + break; + } + default: { + ASSERT(0 && "Cantbe"); + } + } + + auto new_expr = new ExpressionNew(type); + + EvalStatement(StmDefLocal(stm_local_def->mLocalId, new_expr)); + EvalExpr(stm_local_def->mConstExpr); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(stm_local_def->mLocalId))); + inst(Instruction(OpCode::OBJ_COPY)); + } + break; + } + case Statement::Type::COPY: { + auto stm_cp = (StatementCopy*)stm; + EvalExpr(stm_cp->mRight); + EvalExpr(stm_cp->mLeft); + inst(Instruction(OpCode::OBJ_COPY)); + break; + } + case Statement::Type::PRINT: { + auto stm_prnt = (StatementPrint*)stm; + EvalExpr(stm_prnt->mTarget); + inst(Instruction(OpCode::PRINT)); + break; + } + case Statement::Type::RET: { + auto stm_ret = (StatementReturn*)stm; + if (stm_ret->mRet) { + EvalExpr(stm_ret->mRet); + inst(Instruction(OpCode::RETURN_OBJ)); + } else { + inst(Instruction(OpCode::RETURN)); + } + break; + } + + default: + ASSERT(0) + } + + delete stm; +} + + +void FunctionDefinition::EvalExpr(Expression* expr) { + switch (expr->mType) { + case Expression::Type::BOOLEAN: { + auto boolean = (ExpressionBoolean*)expr; + if (boolean->mBoolType == ExpressionBoolean::BoolType::NOT) { + EvalExpr(boolean->mLeft); + inst(OpCode::NOT); + } else { + EvalExpr(boolean->mRight); + EvalExpr(boolean->mLeft); + inst(OpCode(boolean->mBoolType)); + } + break; + } + case Expression::Type::FUNC: { + auto func = (ExpressionFunc*)expr; + + //RelAssert(mConstants.mMethods.presents(func->mFuncId) && "No such function"); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(func->mFuncId))); + break; + } + case Expression::Type::ARIPHM: { + auto ariphm = (ExpressionAriphm*)expr; + EvalExpr(ariphm->mRight); + EvalExpr(ariphm->mLeft); + inst(Instruction(ariphm->mOpType)); + break; + } + case Expression::Type::NEW: { + auto create_new = (ExpressionNew*)expr; + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(create_new->mNewType))); + inst(Instruction(OpCode::OBJ_CREATE)); + break; + } + case Expression::Type::LOCAL: { + auto local = (ExpressionLocal*)expr; + // RelAssert(mLocals.presents(local->mLocalId) && "undefined local"); + inst(Instruction(OpCode::LOAD_LOCAL, mConstants.get(local->mLocalId))); + break; + } + case Expression::Type::CONST: { + auto constobj = (ExpressionConst*)expr; + switch (constobj->mConstType) { + case ExpressionConst::STR: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->str))); + break; + } + case ExpressionConst::INT: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->integer))); + break; + } + case ExpressionConst::FLT: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->floating))); + break; + } + case ExpressionConst::BOOL: { + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(constobj->boolean))); + break; + } + }; + break; + } + case Expression::Type::CHILD: { + auto child = (ExpressionChild*)expr; + EvalExpr(child->mParent); + inst(Instruction(OpCode::LOAD_CONST, mConstants.get(child->mLocalId))); + inst(Instruction(OpCode::CHILD, child->mMethod, 1)); + break; + } + case Expression::Type::SELF: { + inst(Instruction(OpCode::SELF)); + break; + } + case Expression::Type::CALL: { + auto call = (ExpressionCall*)expr; + inst(Instruction(OpCode::PUSH_ARGS, call->mArgs.size(), 1)); + for (auto arg : call->mArgs) { + EvalExpr(arg.data()); + } + EvalExpr(call->mParent); + inst(Instruction(OpCode::CALL)); + break; + } + + default: + ASSERT(0) + } + delete expr; +} + +tp::alni instSize(const Instruction& inst) { + switch (inst.mInstType) { + case Instruction::InstType::JUMP: + case Instruction::InstType::JUMP_IF_NOT: + case Instruction::InstType::JUMP_IF: { + // 2 bytes for offset 1 byte for instrtuction + return 3; + } + case Instruction::InstType::PURE_CONST: { + return 2; + } + case Instruction::InstType::EXEC: { + tp::alni out = 1; + switch (inst.mArgType) { + case Instruction::ArgType::PARAM: { + out += inst.mParamBytes; + return out; + } + case Instruction::ArgType::CONST: { + out += 2; + if (inst.mConstData2) { + out += 2; + } + return out; + } + case Instruction::ArgType::NO_ARG: { + return out; + } + default: { + ASSERT(0); + } + } + } + case Instruction::InstType::NONE: { + return 0; + } + default: { + ASSERT(0); + } + } + + ASSERT(0); + return 0; +} + +void writeConst(ByteCode& out, tp::alni& idx, tp::uint2 data) { + for (auto byte : tp::Range(sizeof(tp::uint2))) { + out.mInstructions[idx] = OpCode((tp::int1)(data >> byte * 8)); + idx++; + } +} + +void writeParam(ByteCode& out, tp::alni& idx, tp::int1* data, tp::alni size) { + for (auto byte : tp::Range(size)) { + out.mInstructions[idx] = OpCode(data[byte]); + idx++; + } +} + +tp::alni calcOffset(tp::List::Node* jump_inst, tp::List::Node* to) { + tp::alni offset = 0; + bool reversed = jump_inst->data.mInstIdx > to->data.mInstIdx; + auto iter_node = reversed ? jump_inst : jump_inst->next; + while (iter_node != to) { + offset += instSize(iter_node->data); + iter_node = reversed ? iter_node->prev : iter_node->next; + } + if (reversed) { + offset += instSize(iter_node->data); + } + return reversed ? -offset : offset; +} + +void FunctionDefinition::generateByteCode(ByteCode& out) { + + out.~ByteCode(); + new (&out) ByteCode(); + + mConstants.save(out.mConstants); + + tp::alni inst_len = 0; + for (auto inst_iter : mInstructions) { + inst_len += instSize(inst_iter.data()); + } + out.mInstructions.reserve(inst_len); + + tp::alni idx = 0; + for (auto inst_iter : mInstructions) { + auto inst = inst_iter.data(); + + switch (inst.mInstType) { + case Instruction::InstType::JUMP_IF: + case Instruction::InstType::JUMP_IF_NOT: + case Instruction::InstType::JUMP: { + tp::alni offset = calcOffset(inst_iter.node(), inst.mInstTarget); + + if (offset == 0) { + out.mInstructions[idx] = OpCode::NONE; + idx += 3; + break; + } + + if (inst.mInstType == Instruction::InstType::JUMP_IF) { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP_IF; + } + else { + out.mInstructions[idx] = OpCode::JUMP_IF_R; + } + } + else if (inst.mInstType == Instruction::InstType::JUMP_IF_NOT) { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP_IF_NOT; + } + else { + out.mInstructions[idx] = OpCode::JUMP_IF_NOT_R; + } + } + else { + if (offset > 0) { + out.mInstructions[idx] = OpCode::JUMP; + } + else { + out.mInstructions[idx] = OpCode::JUMP_R; + } + } + + idx++; + + tp::alni offset_mod = abs(offset); + tp::uint2 offset_param = (tp::uint2)offset_mod; + writeParam(out, idx, (tp::int1*)&offset_param, 2); + break; + } + case Instruction::InstType::PURE_CONST: { + writeConst(out, idx, (tp::uint2)inst.mConstData->mConstIdx); + break; + } + case Instruction::InstType::EXEC: { + out.mInstructions[idx] = inst.mOp; + idx++; + switch (inst.mArgType) { + case Instruction::ArgType::PARAM: { + writeParam(out, idx, (tp::int1*) &inst.mParam, inst.mParamBytes); + break; + } + case Instruction::ArgType::CONST: { + writeConst(out, idx, (tp::uint2)inst.mConstData->mConstIdx); + if (inst.mConstData2) { + writeConst(out, idx, (tp::uint2)inst.mConstData2->mConstIdx); + } + break; + } + case Instruction::ArgType::NO_ARG: { + break; + } + default:{ + ASSERT(0); + } + } + break; + } + default: { + ASSERT(0); + } + case Instruction::InstType::NONE: {} + } + } +} + +tp::List::Node* FunctionDefinition::inst(Instruction inst) { + mInstructions.pushBack(inst); + auto out = &mInstructions.last()->data; + out->mInstIdx = mInstructions.length() - 1; + return mInstructions.last(); +} + +static Parser* sParger = NULL; + +void obj::BCgen::init() { + ASSERT(!sParger); + if (!sParger) { + sParger = new Parser(); + } +} + +void obj::BCgen::deinit() { + ASSERT(sParger); + if (sParger) { + delete sParger; + } +} + +bool obj::BCgen::Compile(obj::MethodObject* method) { + + ASSERT(method); + ASSERT(sParger); + + if (!sParger) return false; + + auto script = method->mScript->mReadable->val; + auto res = sParger->parse(script); + + if (res.err) { + auto loc = res.err->get_err_location(script.read()); + // TODO : print parse error + // tp::gLogeer->write(tp::sfmt("Parser Error (%i,%i): \n", loc.head, loc.tail), true, tp::Logger::LogEntry::ERR); + // tp::GLog->write(res.err->mDescr, true, tp::Logger::LogEntry::ERR); + return false; + } + + BCgen::Genereate(method->mScript->mBytecode, res.scope); + + delete res.scope; + + return true; +} \ No newline at end of file diff --git a/Objects/private/compiler/instruction.cpp b/Objects/private/compiler/instruction.cpp new file mode 100644 index 0000000..90e2705 --- /dev/null +++ b/Objects/private/compiler/instruction.cpp @@ -0,0 +1,29 @@ + +#include "compiler/instruction.h" + +using namespace obj; +using namespace tp; +using namespace BCgen; + +Instruction::Instruction(OpCode op) : mOp(op), mArgType(ArgType::NO_ARG), mInstType(InstType::EXEC) {} + +Instruction::Instruction() : mInstType(InstType::NONE) {} + +Instruction::Instruction(ConstObject* constData) + : mConstData(constData), mInstType(InstType::PURE_CONST) {} + +Instruction::Instruction(OpCode op, ConstObject* constData) + : mOp(op), mConstData(constData), mArgType(ArgType::CONST), mInstType(InstType::EXEC) { +} + +Instruction::Instruction(OpCode op, ConstObject* constData, ConstObject* constData2) + : mOp(op), mConstData(constData), mConstData2(constData2), mArgType(ArgType::CONST), mInstType(InstType::EXEC) { +} + +Instruction::Instruction(OpCode op, tp::alni param, tp::alni nBytes) + : mOp(op), mParam(param), mArgType(ArgType::PARAM), mParamBytes(nBytes), mInstType(InstType::EXEC) { +} + +Instruction::Instruction(tp::List::Node* inst, InstType jump_type): mInstTarget(inst) { + mInstType = jump_type; +} \ No newline at end of file diff --git a/Objects/private/compiler/statement.cpp b/Objects/private/compiler/statement.cpp new file mode 100644 index 0000000..4d7e671 --- /dev/null +++ b/Objects/private/compiler/statement.cpp @@ -0,0 +1,116 @@ +#include "NewPlacement.hpp" +#include "compiler/statement.h" + +using namespace obj; +using namespace BCgen; + + +StatementFuncDef::StatementFuncDef(tp::String function_id, tp::init_list args, tp::init_list statements) { + mType = Type::DEF_FUNC; + mArgs = args; + mStatements = statements; + mFunctionId = function_id; +} + +StatementLocalDef::StatementLocalDef(tp::String id, Expression* value) : mLocalId(id), mNewExpr(value) { + mType = Type::DEF_LOCAL; +} + +StatementLocalDef::StatementLocalDef(tp::String id, ExpressionConst* value) : mLocalId(id), mConstExpr(value), mIsConstExpr(true) { + mType = Type::DEF_LOCAL; +} + +StatementCopy::StatementCopy(Expression* left, Expression* right) : mLeft(left), mRight(right) { + mType = Type::COPY; +} + +StatementReturn::StatementReturn() { + mType = Type::RET; +} + +StatementReturn::StatementReturn(Expression* ret) : mRet(ret) { + mType = Type::RET; +} + +StatementPrint::StatementPrint(Expression* target) : mTarget(target) { + mType = Type::PRINT; +} + +StatementScope::StatementScope(tp::init_list statements, bool aPushToScopeStack) { + mType = Type::SCOPE; + mStatements = statements; + mPushToScopeStack = aPushToScopeStack; +} + +StatementIf::StatementIf(Expression* condition, StatementScope* on_true, StatementScope* on_false) { + mType = Type::IF; + mOnFalse = on_false; + mOnTrue = on_true; + mCondition = condition; +} + +StatementWhile::StatementWhile(Expression* condition, StatementScope* scope) { + mType = Type::WHILE; + mScope = scope; + mCondition = condition; +} + +StatementIgnore::StatementIgnore(Expression* expr) { + mType = Type::IGNORE; + mExpr = expr; +} + +StatementClassDef::StatementClassDef(tp::String class_id, StatementScope* scope) { + mClassId = class_id; + mScope = scope; + mType = Type::CLASS_DEF; +} +// helpers + +StatementFuncDef* obj::BCgen::StmDefFunc(tp::String id, tp::init_list args, tp::init_list stms) { + return new StatementFuncDef(id, args, stms); +} + +StatementLocalDef* obj::BCgen::StmDefLocal(tp::String id, Expression* value) { + if (value->mType == Expression::Type::CONST) { + return new StatementLocalDef(id, (ExpressionConst*)value); + } + + return new StatementLocalDef(id, value); +} + +StatementCopy* obj::BCgen::StmCopy(Expression* left, Expression* right) { + return new StatementCopy(left, right); +} + +StatementPrint* obj::BCgen::StmPrint(Expression* target) { + return new StatementPrint(target); +} + +StatementReturn* obj::BCgen::StmReturn() { + return new StatementReturn(); +} + +StatementReturn* obj::BCgen::StmReturn(Expression* obj) { + return new StatementReturn(obj); +} + +StatementIf* obj::BCgen::StmIf(Expression* condition, StatementScope* on_true, StatementScope* on_false) { + return new StatementIf(condition, on_true, on_false); +} + +StatementScope* obj::BCgen::StmScope(tp::init_list statements, bool aPushToScopeStack = false) { + return new StatementScope(statements, aPushToScopeStack); +} + +StatementWhile* obj::BCgen::StmWhile(Expression* condition, StatementScope* scope) { + return new StatementWhile(condition, scope); +} + +StatementIgnore* obj::BCgen::StmIgnore(Expression* expr) { + return new StatementIgnore(expr); +} + +StatementClassDef* obj::BCgen::StmClassDef(tp::String id, StatementScope* scope) { + return new StatementClassDef(id, scope); +} \ No newline at end of file diff --git a/Objects/private/core/object.cpp b/Objects/private/core/object.cpp new file mode 100644 index 0000000..c121ddb --- /dev/null +++ b/Objects/private/core/object.cpp @@ -0,0 +1,250 @@ + + +#include "NewPlacement.hpp" + +#include "core/object.h" + +#include "primitives/nullobject.h" +#include "primitives/classobject.h" +#include "primitives/methodobject.h" + +#include "interpreter/interpreter.h" +#include "compiler/function.h" + +namespace obj { + + Object* ObjectMemAllocate(const ObjectType* type); + void ObjectMemDeallocate(Object* in); + + objects_api* NDO = NULL; + + void hierarchy_copy(Object* self, const Object* in, const ObjectType* type); + void hierarchy_construct(Object* self, const ObjectType* type); + + objects_api::objects_api() { + tp::memSetVal(sl_callbacks, SAVE_LOAD_MAX_CALLBACK_SLOTS * sizeof(save_load_callbacks*), 0); + interp = new Interpreter(); + } + + objects_api::~objects_api() { + delete interp; + } + + void objects_api::define(ObjectType* type) { + MODULE_SANITY_CHECK(gModuleObjects); + + DEBUG_ASSERT(NDO && "using uninitialize objects api"); + DEBUG_ASSERT(!types.presents(type->name) && "Type Redefinition"); + types.put(type->name, type); + + type->type_methods.init(); + } + + Object* objects_api::create(const tp::String& name) { + MODULE_SANITY_CHECK(gModuleObjects); + + const ObjectType* type = types.get(name); + + Object* obj_instance = ObjectMemAllocate(type); + + if (!obj_instance) { + return NULL; + } + + hierarchy_construct(obj_instance, obj_instance->type); + + setrefc(obj_instance, 0); + + NDO_CASTV(ClassObject, obj_instance, classobj); + if (classobj) { + auto idx = classobj->members->presents("__init__"); + DEBUG_ASSERT(idx); + if (idx) { + auto constructor_obj = classobj->members->getSlotVal(idx); + NDO_CASTV(MethodObject, constructor_obj, constructor_method); + if (constructor_method) { + interp->execAll(constructor_method, classobj); + } + } + } + + return obj_instance; + } + + Object* objects_api::copy(Object* self, const Object* in) { + if (self->type != in->type) { + return NULL; + } + + hierarchy_copy(self, in, self->type); + + return self; + } + + bool objects_api::compare(Object* first, Object* second) { + if (first->type == second->type) { + if (first->type->comparison) { + return first->type->comparison(first, second); + } + + // raw data comparison + return tp::memCompare(first, second, first->type->size) == 0; + } + + return false; + } + + Object* objects_api::instatiate(Object* in) { + obj::Object* obj = NDO->create(in->type->name); + NDO->copy(obj, in); + return obj; + } + + void objects_api::set(Object* self, tp::alni val) { + if (self->type->convesions && self->type->convesions->from_int) { + self->type->convesions->from_int(self, val); + return; + } + } + + void objects_api::set(Object* self, tp::alnf val) { + if (self->type->convesions && self->type->convesions->from_float) { + self->type->convesions->from_float(self, val); + return; + } + } + + void objects_api::set(Object* self, tp::String val) { + if (self->type->convesions && self->type->convesions->from_string) { + self->type->convesions->from_string(self, val); + return; + } + } + + tp::alni objects_api::toInt(Object* self) { + DEBUG_ASSERT(self->type->convesions && self->type->convesions->to_int); + return self->type->convesions->to_int(self); + } + + tp::alnf objects_api::toFloat(Object* self) { + DEBUG_ASSERT(self->type->convesions && self->type->convesions->to_float); + return self->type->convesions->to_float(self); + } + + bool objects_api::toBool(Object* self) { + if (self->type->convesions && self->type->convesions->to_int) { + return (bool) self->type->convesions->to_int(self); + } + return true; + } + + tp::String objects_api::toString(Object* self) { + DEBUG_ASSERT(self->type->convesions && self->type->convesions->to_string); + return self->type->convesions->to_string(self); + } + + void objects_api::destroy(Object* in) { + + if (!in) { + return; + } + + #ifdef OBJECT_REF_COUNT + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + if (mh->refc > 1) { + mh->refc--; + return; + } + #endif + + NDO_CASTV(ClassObject, in, classobj); + if (classobj) { + auto idx = classobj->members->presents("__del__"); + DEBUG_ASSERT(idx); + if (idx) { + auto constructor_obj = classobj->members->getSlotVal(idx); + NDO_CASTV(MethodObject, constructor_obj, constructor_method); + if (constructor_method) { + interp->execAll(constructor_method, classobj); + } + } + } + + for (const ObjectType* iter = in->type; iter; iter = iter->base) { + if (iter->destructor) { + iter->destructor(in); + } + } + + ObjectMemDeallocate(in); + } + + #ifdef OBJECT_REF_COUNT + tp::halni objects_api::getrefc(Object* in) { + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + return (tp::halni)mh->refc; + } + + void objects_api::refinc(Object* in) { + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + mh->refc++; + } + + void objects_api::setrefc(Object* in, tp::halni refc) { + ObjectMemHead* mh = NDO_MEMH_FROM_NDO(in); + mh->refc = refc; + } + #endif + + + void hierarchy_copy(Object* self, const Object* in, const ObjectType* type) { + if (type->base) { + hierarchy_copy(self, in, type->base); + } + + if (type->copy) { + type->copy(self, in); + } + } + + void hierarchy_construct(Object* self, const ObjectType* type) { + if (type->base) { + hierarchy_construct(self, type->base); + } + + if (type->constructor) { + type->constructor(self); + } + } + + Object* ndo_cast(const Object* in, const ObjectType* to_type) { + const ObjectType* typeiter = in->type; + while (typeiter) { + if (typeiter == to_type) { + return (Object*) in; + } + typeiter = typeiter->base; + } + return NULL; + } + + objects_api* objects_init() { + if (!NDO) { + NDO = new objects_api(); + } + + obj::BCgen::init(); + + return NDO; + } + + void objects_finalize() { + + if (NDO) { + delete NDO; + } + + obj::BCgen::deinit(); + } + +}; \ No newline at end of file diff --git a/Objects/private/core/objectsave.cpp b/Objects/private/core/objectsave.cpp new file mode 100644 index 0000000..138f741 --- /dev/null +++ b/Objects/private/core/objectsave.cpp @@ -0,0 +1,411 @@ + + +#include "core/object.h" + +#include "HeapAllocatorGlobal.hpp" + +#include + +namespace obj { + + ObjectMemHead* bottom = nullptr; + + struct ObjectsFileHeader { + char name[10] = {0}; + char version[10] = {0}; + + ObjectsFileHeader(bool default_val = true) { + if (default_val) { + tp::memCopy(&name, "objects", tp::String::Logic::calcLength("objects") + 1); + tp::memCopy(&version, "0", tp::String::Logic::calcLength("0") + 1); + } + } + }; + + + Object* ObjectMemAllocate(const ObjectType* type) { + ObjectMemHead* memh = (ObjectMemHead*) tp::HeapAllocGlobal::allocate(type->size + sizeof(ObjectMemHead)); + if (!memh) { + return NULL; + } + + memh->down = NULL; + memh->flags = NULL; + + #ifdef OBJECT_REF_COUNT + memh->refc = (tp::alni) 1; + #endif + + if (bottom) { + bottom->down = memh; + } + memh->up = bottom; + bottom = memh; + + NDO_FROM_MEMH(memh)->type = type; + return NDO_FROM_MEMH(memh); + } + + void ObjectMemDeallocate(Object* in) { + ObjectMemHead* memh = ((ObjectMemHead*) in) - 1; + + if (memh->up) { + memh->up->down = memh->down; + } + + if (memh->down) { + memh->down->up = memh->up; + } else { + bottom = memh->up; + } + + tp::HeapAllocGlobal::deallocate(memh); + } + + struct ObjectFileHead { + Object* load_head_adress = 0; + tp::halni refc = 0; + }; + + tp::int1* loaded_file = nullptr; + + + void objects_api::clear_object_flags() { + // clear all object flags + for (ObjectMemHead* iter = bottom; iter; iter = iter->up) { + iter->flags = -1; + } + } + + tp::alni& getObjectFlags(Object* in) { + return NDO_MEMH_FROM_NDO(in)->flags; + } + + tp::alni objsize_ram_util(Object* self, const ObjectType* type) { + tp::alni out = 0; + + if (type->allocated_size) { + out += type->allocated_size(self); + } else { + out += type->size - sizeof(ObjectType*); + } + + if (type->base) { + out += objsize_ram_util(self, type->base); + } else { + out += sizeof(ObjectType*); + } + + return out; + } + + tp::alni objects_api::objsize_ram(Object* self) { + return objsize_ram_util(self, self->type); + } + + tp::alni objects_api::objsize_ram_recursive_util(Object* self, const ObjectType* type, bool different_object) { + tp::alni out = 0; + + if (different_object) { + if (getObjectFlags(self) == 1) { + return 0; + } + + getObjectFlags(self) = 1; + } + + if (type->allocated_size_recursive) { + out += type->allocated_size_recursive(self); + } else { + if (type->allocated_size) { + out += type->allocated_size(self); + } else { + out += type->size - sizeof(ObjectType*); + } + } + + if (type->base) { + out += objsize_ram_recursive_util(self, type->base, false); + } else { + out += sizeof(ObjectType*); + } + + return out; + } + + tp::alni objects_api::objsize_ram_recursive(Object* self) { + clear_object_flags(); + return objsize_ram_recursive_util(self, self->type); + } + + tp::alni objsize_file_util(Object* self, const ObjectType* type) { + tp::alni out = 0; + + if (type->save_size) { + out += type->save_size(self); + } + + if (type->base) { + out += objsize_file_util(self, type->base); + } + return out; + } + + tp::alni objects_api::objsize_file(Object* self) { + return objsize_file_util(self, self->type); + } + + tp::alni objsize_file_recursive_util(Object* self, const ObjectType* type) { + tp::alni out = 0; + + getObjectFlags(self) = 1; + + if (type->save_size) { + out += type->save_size(self); + } + + if (type->childs_retrival) { + tp::Buffer childs = type->childs_retrival(self); + for (auto child : childs) { + if (getObjectFlags(child.data()) != 1) { + out += objsize_file_recursive_util(child.data(), child.data()->type); + } + } + } + + if (type->base) { + out += objsize_file_recursive_util(self, type->base); + } + + return out; + } + + tp::alni objects_api::objsize_file_recursive(Object* self) { + clear_object_flags(); + return objsize_file_recursive_util(self, self->type); + } + + void object_recursive_save(Archiver& ndf, Object* self, const ObjectType* type) { + if (type->base) { + object_recursive_save(ndf, self, type->base); + } + + // automatically offsets for parent type to write + if (type->save) { + type->save(self, ndf); + } + } + + tp::alni objects_api::save(Archiver& ndf, Object* in) { + // if already saved return file_adress + if (NDO_MEMH_FROM_NDO(in)->flags != -1) { + return NDO_MEMH_FROM_NDO(in)->flags; + } + + // save write adress for parent save function call + tp::alni tmp_adress = ndf.adress; + + // save requested object to first available adress + tp::alni save_adress = ndf.avl_adress; + + // save file_adress in memhead + NDO_MEMH_FROM_NDO(in)->flags = save_adress; + + // update write adress + ndf.adress = save_adress; + + // save file object header + ObjectFileHead ofh = { 0, getrefc(in) }; + ndf.write(&ofh); + tp::String(in->type->name).save(&ndf); + + // allocate for object file header + ndf.avl_adress += sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1; + + // calc max size needed for saving all hierarchy of types + tp::alni file_alloc_size = objsize_file_util(in, in->type); + + // offes first available adress + ndf.avl_adress += file_alloc_size; + + object_recursive_save(ndf, in, in->type); + + // restore adress for parent save function + ndf.adress = tmp_adress; + + // return addres of saved object in file space + return save_adress; + } + + void object_recursive_load(Archiver& ndf, Object* out, const ObjectType* type) { + if (type->base) { + object_recursive_load(ndf, out, type->base); + } + + // automatically offsets for parent type to read + if (type->load) { + type->load(ndf, out); + } + } + + Object* objects_api::load(Archiver& ndf, tp::alni file_adress) { + // check if already saved + if (((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress) { + return ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress; + } + + // save read adress + tp::alni parent_file_adress = ndf.adress; + + // set read adress + ndf.adress = file_adress; + + ObjectFileHead ofh; + ndf.read(&ofh); + tp::String type_name; + type_name.load(&ndf); + + const ObjectType* object_type = NDO->types.get(type_name); + Object* out = ObjectMemAllocate(object_type); + + if (!out) { + return NULL; + } + + setrefc(out, ofh.refc); + + // save heap adress in "loaded_file" + ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress = out; + + // loads recursivelly + object_recursive_load(ndf, out, object_type); + + // restore read adress for parent call to continue + ndf.adress = parent_file_adress; + + // return heap memory adress + return out; + } + + bool objects_api::save(Object* in, tp::String path, bool compressed) { + Archiver ndf(path.read(), Archiver::SAVE); + + if (!ndf.opened) { + return false; + } + + clear_object_flags(); + + // save vesion info + ObjectsFileHeader header; + ndf.write(&header); + + ndf.avl_adress = ndf.adress; + + // pre allocate + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i]) { + DEBUG_ASSERT(sl_callbacks[i]->size); + ndf.avl_adress += sl_callbacks[i]->size(sl_callbacks[i]->self, ndf); + } + } + + // presave + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->pre_save) { + sl_callbacks[i]->pre_save(sl_callbacks[i]->self, ndf); + } + } + + save(ndf, in); + + // postsave + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->post_save) { + sl_callbacks[i]->post_save(sl_callbacks[i]->self, ndf); + } + } + + ndf.disconnect(); + + // TODO : add compression + /* + if (compressed) { + auto temp = path + ".bz2"; + tp::compressF2F(path.read(), temp.cstr()); + + File::remove(path.read()); + File::rename(temp.cstr(), path.read()); + } + */ + + return true; + } + + Object* objects_api::load(tp::String path) { + /* + auto temp_file_name = path + ".unz"; + bool unz_res = tp::decompressF2F(path.cstr(), temp_file_name.cstr()); + + if (!unz_res) { + return NULL; + } + + File ndf(temp_file_name.cstr(), tp::osfile_openflags::LOAD); + */ + + Archiver ndf(path.read(), Archiver::LOAD); + + if (!ndf.opened) { + return NULL; + } + + // check for compability + ObjectsFileHeader current_header; + ObjectsFileHeader loaded_header(false); + ndf.read(&loaded_header); + if (!tp::memEqual(¤t_header, &loaded_header, sizeof(ObjectsFileHeader))) { + return NULL; + } + + ndf.adress = 0; + loaded_file = (tp::int1*) malloc(ndf.size()); + ndf.read_bytes(loaded_file, ndf.size()); + ndf.adress = sizeof(ObjectsFileHeader); + + // preload + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->pre_load) { + sl_callbacks[i]->pre_load(sl_callbacks[i]->self, ndf); + } + } + + Object* out = load(ndf, ndf.adress); + + // post + for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { + if (sl_callbacks[i] && sl_callbacks[i]->post_save) { + sl_callbacks[i]->post_load(sl_callbacks[i]->self, ndf); + } + } + + free(loaded_file); + + /* + ndf.close(); + + if (unz_res == NULL) { + File::remove(temp_file_name.cstr()); + } + */ + + setrefc(out, 0); + + return out; + } + + void objects_api::add_sl_callbacks(save_load_callbacks* in) { + sl_callbacks[sl_callbacks_load_idx] = in; + sl_callbacks_load_idx++; + } +}; \ No newline at end of file diff --git a/Objects/private/core/scriptsection.cpp b/Objects/private/core/scriptsection.cpp new file mode 100644 index 0000000..6af3c54 --- /dev/null +++ b/Objects/private/core/scriptsection.cpp @@ -0,0 +1,265 @@ + +#include "NewPlacement.hpp" +#include "HeapAllocatorGlobal.hpp" + +#include "core/scriptsection.h" + +using namespace obj; + +ScriptSection* gScriptSection = NULL; + +struct script_data_head { + tp::alni refc = 0; + tp::alni store_adress = 0; +}; + +void set_script_head_store_adress(Script* in, tp::alni address) { + ((script_data_head*)in - 1)->store_adress = address; +} + +tp::alni get_script_head_store_adress(Script* in) { + return ((script_data_head*)in - 1)->store_adress; +} + +Script* ScriptSection::createScript() { + auto sdhead = (script_data_head*)tp::HeapAllocGlobal::allocate(sizeof(script_data_head) + sizeof(Script)); + auto out = (Script*)(sdhead + 1); + + if (!sdhead) { + return NULL; + } + + sdhead->refc = 1; + sdhead->store_adress = -1; + + mScripts.pushBack(out); + + new (out) Script(); + out->mReadable = obj::StringObject::create(""); + obj::NDO->refinc(out->mReadable); + return out; +} + +void ScriptSection::delete_script(Script* script) { + script->~Script(); + obj::NDO->destroy(script->mReadable); + + tp::HeapAllocGlobal::deallocate((((script_data_head*)script) - 1)); +} + +void ScriptSection::reference_script(Script* script) { + (((script_data_head*)script) - 1)->refc++; +} + +void ScriptSection::abandonScript(Script* script) { + if ((((script_data_head*)script) - 1)->refc > 1) { + (((script_data_head*)script) - 1)->refc--; + } + else { + // ISSUE : on delete list structure is outdated + // FIXME : use pool alloc with ref count + // forwarding to global destruction + //delete_script(script); + } +} + +void ScriptSection::changeScript(Script** current_script, Script** new_script) { + abandonScript(*current_script); + reference_script(*new_script); + + *current_script = *new_script; +} + +tp::alni ScriptSection::get_script_file_adress(Script* in) { + return get_script_head_store_adress(in); +} + +tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, Archiver& file) { + tp::alni size = 0; + size += 5; // header + size += sizeof(tp::alni); // scripts length + + for (auto iter : self->mScripts) { + + set_script_head_store_adress(iter.data(), file.adress + size); + + size += sizeof(tp::alni); // scripts string obj ref + size += sizeof(tp::alni); // constants length + + for (auto const_obj : iter->mBytecode.mConstants) { + size += sizeof(tp::alni); // constant object addres + } + + // instructions + size += iter->mBytecode.mInstructions.saveSize(); + } + + size += sizeof(tp::alni); // objects mem offset + size += 5; // header + return size; +} + +void ScriptSection::save_script_table_to_file(ScriptSection* self, Archiver& file) { + // header + file.write_bytes("/scr/", 5); + + // scripts length + tp::alni scripts_count = self->mScripts.length(); + file.write(&scripts_count); + + for (auto iter : self->mScripts) { + + // scripts string obj ref + auto obj_addres = obj::NDO->save(file, iter->mReadable); + file.write(&obj_addres); + + // constants length + tp::alni consts_count = iter->mBytecode.mConstants.size(); + file.write(&consts_count); + + for (auto const_obj : iter->mBytecode.mConstants) { + // constant object addres + auto obj_addres = obj::NDO->save(file, const_obj.data()); + file.write(&obj_addres); + } + + // mInstructions + iter->mBytecode.mInstructions.save(file); + } + + // header + file.write_bytes("/scr/", 5); + + tp::alni objects_mem_offset = file.avl_adress; + file.write(&objects_mem_offset); +} + +void load_constants(ScriptSection* self, Archiver& file, tp::alni start_addr) { + auto addres = file.adress; + + file.adress = start_addr; + file.adress += 5; // header + + tp::alni scripts_count; + file.read(&scripts_count); + + for (tp::alni i = 0; i < scripts_count; i++) { + + auto script = self->get_scritp_from_file_adress(file.adress); + + // script text + tp::alni str_addr; + file.read(&str_addr); + script->mReadable = NDO_CAST(obj::StringObject, obj::NDO->load(file, str_addr)); + + file.adress += sizeof(tp::alni); // constants length + + for (auto const_obj : script->mBytecode.mConstants) { + tp::alni consts_addr; + file.read(&consts_addr); + const_obj.data() = obj::NDO->load(file, consts_addr); + } + + // instructions + file.adress += script->mBytecode.mInstructions.saveSize(); + } + + file.adress = addres; +} + +void ScriptSection::load_script_table_from_file(ScriptSection* self, Archiver& file) { + for (auto iter : self->mScripts) { + set_script_head_store_adress(iter.data(), -1); + } + + auto section_start_addr = file.adress; + + // header + file.adress += 5; + + // scripts length + tp::alni scripts_count; + file.read(&scripts_count); + + for (tp::alni i = 0; i < scripts_count; i++) { + + auto new_script = self->createScript(); + set_script_head_store_adress(new_script, file.adress); + + // scripts text + file.adress += sizeof(tp::alni); + + // constants length + tp::alni consts_count; + file.read(&consts_count); + + new_script->mBytecode.mConstants.reserve(consts_count); + + for (tp::alni j = 0; j < consts_count; j++) { + // constant object addres + tp::alni consts_addr; + file.read(&consts_addr); + + // skiping + //new_script->mBytecode.mConstants[j] = obj::NDO->load(file, consts_addr); + } + + // mInstructions + new_script->mBytecode.mInstructions.load(file); + } + + load_constants(self, file, section_start_addr); + + // header + file.adress += 5; + + tp::alni objects_mem_offset; + file.read(&objects_mem_offset); + + file.adress = objects_mem_offset; +} + +Script* ScriptSection::get_scritp_from_file_adress(tp::alni file_adress) { + for (auto iter : mScripts) { + if (get_script_head_store_adress(iter.data()) == file_adress) { + return iter.data(); + } + } + return NULL; +} + +ScriptSection::~ScriptSection() { + for (auto iter : mScripts) { + delete_script(iter.data()); + } +} + +obj::save_load_callbacks ScriptSection::slcb_script_section = { + .self = gScriptSection, + .pre_save = (obj::pre_save_callback*)ScriptSection::save_script_table_to_file, + .size = (obj::slcb_size_callback*)ScriptSection::save_script_table_to_file_size, + .pre_load = (obj::pre_load_callback*)ScriptSection::load_script_table_from_file, + .post_save = NULL, + .post_load = NULL, +}; + + +void ScriptSection::initialize() { + ASSERT(!gScriptSection); + gScriptSection = new ScriptSection(); + + ASSERT(obj::NDO && "Forgot to initialize objects?"); + + slcb_script_section.self = gScriptSection; + obj::NDO->add_sl_callbacks(&slcb_script_section); +} + +void ScriptSection::uninitialize() { + ASSERT(gScriptSection); + delete gScriptSection; +} + +ScriptSection* ScriptSection::globalHandle() { + return gScriptSection; +} + diff --git a/Objects/private/core/typegroups.cpp b/Objects/private/core/typegroups.cpp new file mode 100644 index 0000000..e98af62 --- /dev/null +++ b/Objects/private/core/typegroups.cpp @@ -0,0 +1,81 @@ + +#include "NewPlacement.hpp" + +#include "core/typegroups.h" + +#include "core/object.h" + +using namespace obj; + +obj::TypeGroups::TypeGroups() : is_group(true) { + new (&childs) Dict(); +} + +obj::TypeGroups::TypeGroups(bool is_group) : is_group(is_group) { + if (is_group) { + new (&childs) Dict(); + } else { + type = NULL; + } +} + +bool obj::TypeGroups::isGroup() { return is_group; } + +obj::TypeGroups::Dict* obj::TypeGroups::getChilds() { + DEBUG_ASSERT(is_group); + return &childs; +} + +void obj::TypeGroups::setType(ObjectType* type) { + DEBUG_ASSERT(!is_group); + this->type = type; +} + +void obj::TypeGroups::addType(ObjectType* type, tp::init_list path, tp::alni cur_dir_idx) { + DEBUG_ASSERT(is_group); + + tp::alni dir_len = (tp::alni) path.size(); + + if (dir_len == cur_dir_idx) { + TypeGroups* type_ref = new TypeGroups(false); + type_ref->setType(type); + childs.put(type->name, type_ref); + return; + } + + TypeGroups* group = NULL; + tp::alni index = 0; + + for (auto dir : path) { + if (index != cur_dir_idx) { + index++; + continue; + } + + auto child_idx = childs.presents(dir); + if (child_idx) { + group = childs.getSlotVal(child_idx); + } else { + group = new TypeGroups(true); + childs.put(dir, group); + } + + group->addType(type, path, cur_dir_idx + 1); + + break; + } +} + +const obj::ObjectType* obj::TypeGroups::getType() { + DEBUG_ASSERT(!is_group); + return type; +} + +obj::TypeGroups::~TypeGroups() { + if (is_group) { + for (auto& child : childs) { + delete child->val; + } + childs.~Map(); + } +} \ No newline at end of file diff --git a/Objects/private/core/typemethods.cpp b/Objects/private/core/typemethods.cpp new file mode 100644 index 0000000..d756d2a --- /dev/null +++ b/Objects/private/core/typemethods.cpp @@ -0,0 +1,138 @@ + +#include "NewPlacement.hpp" + +#include "core/typemethods.h" + +#include "primitives/nullobject.h" +#include "primitives/typeobject.h" +#include "primitives/floatobject.h" + +#include "interpreter/interpreter.h" + + +using namespace obj; + +TypeMethod obj::gDefaultTypeMethods[] = { + { + .nameid = "type", + .descr = "retrieves typeobject", + .exec = [](const TypeMethod* tm) { + tm->ret.obj = TypeObject::create(tm->self->type); + }, + .ret = { "typeobject", NULL }, + }, + { + .nameid = "to_str", + .descr = "converts to string", + .exec = [](const TypeMethod* tm) { + if (tm->self->type->convesions && tm->self->type->convesions->to_string) { + tm->ret.obj = StringObject::create(NDO->toString(tm->self)); + } + }, + .ret = { "string object", NULL }, + }, + { + .nameid = "to_float", + .descr = "converts to float", + .exec = [](const TypeMethod* tm) { + if (tm->self->type->convesions && tm->self->type->convesions->to_float) { + tm->ret.obj = FloatObject::create(NDO->toFloat(tm->self)); + } + }, + .ret = { "string object", NULL }, + }, +}; + +tp::int2 TypeMethods::presents(tp::String id) const { + for (tp::int2 idx = 0; idx < mNMethods; idx++) { + if (id == methods[idx]->nameid) { + return idx; + } + } + + tp::int2 idx = 0; + for (auto& tm : gDefaultTypeMethods) { + if (id == tm.nameid) { + return { tp::int2(idx + MAX_TYPE_METHODS) }; + } + idx++; + } + + return -1; +} + +TypeMethods::LookupKey TypeMethods::presents(const ObjectType* type, tp::string id) { + + tp::int2 depth = 0; + tp::int2 idx = 0; + + for (auto iter_type = type; iter_type; iter_type = iter_type->base) { + idx = iter_type->type_methods.presents(id); + if (idx != -1) { + break; + } + depth++; + } + + return { idx, depth}; +} + +const TypeMethod* TypeMethods::getMethod(tp::int2 key) const { + if (key < MAX_TYPE_METHODS) { + return methods[key]; + } + return &gDefaultTypeMethods[key - MAX_TYPE_METHODS]; +} + +const TypeMethod* TypeMethods::getMethod(const ObjectType* type, LookupKey key) { + auto type_iter = type; + for (auto idx = 0; idx < key.type_depth; idx++) { + type_iter = type_iter->base; + } + return type_iter->type_methods.getMethod(key.key); +} + +void TypeMethods::init() { + while (methods[mNMethods]) { + mNMethods++; + } + + for (tp::int1 i = 0; i < mNMethods; i++) { + methods[i]->init(); + } + + // initialize and use finate state automata to lookup methods +} + +tp::halni TypeMethods::nMethods() const { + return mNMethods; +} + +void TypeMethod::operator()(Interpreter* interp) const{ + for (auto i = 1; i <= mNargs; i++) { + args[mNargs - i].obj = interp->mOperandsStack.getOperand(); + //NDO->refinc(args[i].obj); + ASSERT(args[mNargs - i].obj && "expected an argument"); + } + + ASSERT(!interp->mOperandsStack.getOperand() && "args remained"); + interp->mOperandsStack.getOperand(); + + self = interp->mLastParent; + + exec(this); + + if (ret.obj) { + interp->mOperandsStack.push(ret.obj); + interp->mScopeStack.addTempReturn(ret.obj); + } + else { + interp->mOperandsStack.push(NDO_NULL_REF); + } +} + +void TypeMethod::init() { + while (args[mNargs].descr) { + mNargs++; + } +} \ No newline at end of file diff --git a/Objects/private/interpreter/callstack.cpp b/Objects/private/interpreter/callstack.cpp new file mode 100644 index 0000000..ccf37aa --- /dev/null +++ b/Objects/private/interpreter/callstack.cpp @@ -0,0 +1,40 @@ + +#include "NewPlacement.hpp" + +#include "interpreter/callstack.h" + +#include "interpreter/bytecode.h" +#include "primitives/methodobject.h" + +using namespace obj; + +void CallStack::enter(const CallStack::CallFrame& frame) { + if (mStack.size()) { + auto& last_frame = mStack.last(); + last_frame.mIp = last_frame.mMethod->mScript->mBytecode.mInstructionIdx; + } + + frame.mMethod->mScript->mBytecode.mArgumentsLoaded = 0; + frame.mMethod->mScript->mBytecode.mInstructionIdx = 0; + obj::NDO->refinc(frame.mMethod); + mStack.append(frame); +} + +void CallStack::leave() { + auto frame = mStack.last(); + obj::NDO->destroy(frame.mMethod); + mStack.pop(); + + if (mStack.size()) { + auto& last_frame = mStack.last(); + last_frame.mMethod->mScript->mBytecode.mInstructionIdx = last_frame.mIp; + } +} + +ByteCode* CallStack::getBytecode() { + return &mStack.last().mMethod->mScript->mBytecode; +} + +tp::halni CallStack::len() const { + return mStack.size(); +} \ No newline at end of file diff --git a/Objects/private/interpreter/interpreter.cpp b/Objects/private/interpreter/interpreter.cpp new file mode 100644 index 0000000..7978c18 --- /dev/null +++ b/Objects/private/interpreter/interpreter.cpp @@ -0,0 +1,573 @@ + +#include "NewPlacement.hpp" + +#include "interpreter/interpreter.h" + +#include "primitives/primitives.h" + +#include "Logging.hpp" + +#include "Timing.hpp" + +using namespace obj; + +inline tp::uint1 read_byte(ByteCode* bytecode) { + auto out = (tp::uint1)bytecode->mInstructions[bytecode->mInstructionIdx]; + bytecode->mInstructionIdx++; + return out; +} + +// exeption for opcodes +// reads 2 bytes from instructions in order to load constant onto operands stack +tp::uint2 loadConstDataIdx(ByteCode* bytecode) { + tp::uint2 out = 0; + out |= ((tp::uint2) read_byte(bytecode)); + out |= ((tp::uint2) read_byte(bytecode) << 8); + return out; +} + +// exeption for opcodes +// reads 2 bytes from instructions in order to load constant onto operands stack +void skip_param(ByteCode* bytecode) { + bytecode->mInstructionIdx += 2; +} + +tp::uint2 param(ByteCode* bytecode) { + return loadConstDataIdx(bytecode); +} + +void Interpreter::exec(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::init_list globals2) { + if (!method->mScript->mBytecode.mInstructions.size()) { + return; + } + + mCallStack.enter({ NULL, method, 0 }); + mCallStack.mStack.last().mSelf = self; + + stepBytecodeIn(); + + if (globals) { + for (auto glb : globals->getItems()) { + mScopeStack.addLocal(glb->val, glb->key); + } + } + + for (auto global_def : globals2) { + mScopeStack.addLocal(global_def.obj, global_def.id); + } +} + +bool Interpreter::finished() { + return !mCallStack.len(); +} + +void Interpreter::stepBytecode() { + tp::halni call_depth = mCallStack.len(); + do { + stepBytecodeIn(); + if (finished()) { + return; + } + } while (call_depth != mCallStack.len()); +} + +void Interpreter::stepBytecodeOut() { + if (finished()) { + return; + } + + tp::halni call_depth = mCallStack.len(); + if (!call_depth) { + return; + } + + do { + stepBytecodeIn(); + if (finished()) { + return; + } + } while (call_depth - 1 != mCallStack.len()); +} + +void Interpreter::stepBytecodeIn() { + using namespace obj; + using namespace tp; + + DEBUG_BREAK(finished()); + + auto bytecode = mCallStack.getBytecode(); + + if (bytecode->mInstructionIdx >= (tp::ualni) bytecode->mInstructions.size()) { + // just return + if (mScopeStack.mIdx) { + mScopeStack.leaveScope(); + } + + mCallStack.leave(); + + if (mCallStack.len()) { + mOperandsStack.push(NDO_NULL_REF); + } + return; + } + + auto opcode = bytecode->mInstructions[bytecode->mInstructionIdx]; + bytecode->mInstructionIdx++; + + switch (opcode) { + + case OpCode::NONE: { + break; + } + + case OpCode::HALT: { + while (true) { + tp::sleep(3); + } + break; + } + + case OpCode::TERMINATE: { + //tp::terminate(0); + } + + case OpCode::IGNORE: { + NDO->destroy(mOperandsStack.getOperand()); + break; + } + + case OpCode::LOAD_CONST: { + auto idx = loadConstDataIdx(bytecode); + auto const_obj = bytecode->mConstants[idx]; + mOperandsStack.push(const_obj); + break; + } + + case OpCode::LOAD_LOCAL: { + auto idx = loadConstDataIdx(bytecode); + auto const_obj = bytecode->mConstants[idx]; + NDO_CASTV(StringObject, const_obj, local_id); + ASSERT(local_id && "Invalid Object Type"); + auto local = mScopeStack.getLocal(local_id->val); + mOperandsStack.push(local); + break; + } + + case OpCode::SCOPE_IN: { + mScopeStack.enterScope(true); + break; + } + + case OpCode::JUMP: { + bytecode->mInstructionIdx += param(bytecode); + break; + } + + case OpCode::JUMP_IF: { + auto cond = mOperandsStack.getOperand(); + if (NDO->toBool(cond)) { + bytecode->mInstructionIdx += param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_IF_NOT: { + auto cond = mOperandsStack.getOperand(); + if (!NDO->toBool(cond)) { + bytecode->mInstructionIdx += param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_R: { + bytecode->mInstructionIdx -= param(bytecode); + break; + } + + case OpCode::JUMP_IF_R: { + auto cond = mOperandsStack.getOperand(); + if (NDO->toBool(cond)) { + bytecode->mInstructionIdx -= param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::JUMP_IF_NOT_R: { + auto cond = mOperandsStack.getOperand(); + if (!NDO->toBool(cond)) { + bytecode->mInstructionIdx -= param(bytecode); + } else { + skip_param(bytecode); + } + break; + } + + case OpCode::SCOPE_OUT: { + mScopeStack.leaveScope(); + break; + } + + case OpCode::PRINT: { + auto obj = mOperandsStack.getOperand(); + if (obj->type->convesions && obj->type->convesions->to_string) { + auto str = NDO->toString(obj); + gLogger->write(str, true); + } else { + gLogger->write(String(obj->type->name), true); + } + break; + } + + case OpCode::OBJ_CREATE_LOCAL: { + auto type = mOperandsStack.getOperand(); + auto id = mOperandsStack.getOperand(); + mScopeStack.addLocal(NDO->create(type->val), id->val); + break; + } + + case OpCode::DEF_LOCAL: { + auto id = mOperandsStack.getOperand(); + auto obj = mOperandsStack.getOperand(); + mScopeStack.addLocal(obj, id->val); + NDO->refinc(obj); + //mScopeStack.popTemp(); + break; + } + + case OpCode::OBJ_CREATE: { + auto type = mOperandsStack.getOperand(); + Object* new_obj = NULL; + + // basic types + auto idx = NDO->types.presents(type->val); + if (idx) { + auto new_obj = NDO->create(type->val); + + mOperandsStack.push(new_obj); + mScopeStack.addTemp(new_obj); + break; + } + + + // class creation + auto local_class = mScopeStack.getLocal(type->val); + NDO_CASTV(MethodObject, local_class, method); + ASSERT(method); + + // class is a function - execute it as a constructor + + // PUSH_ARGS protocol + tp::uint2 len = 0; + mOperandsStack.push((Object*)len); + mOperandsStack.push(NULL); + + // CALL protocol + mScopeStack.enterScope(false); + mCallStack.enter({ NULL, method, 0 }); + break; + } + + case OpCode::CLASS_CONSTRUCT: { + auto class_obj = (ClassObject*)NDO->create("class"); + + for (auto local : mScopeStack.getCurrentScope()->mLocals) { + class_obj->addMember(local->val, local->key); + } + + mOperandsStack.push(class_obj); + mScopeStack.addTempReturn(class_obj); + + mScopeStack.leaveScope(); + mCallStack.leave(); + return; + } + + case OpCode::RETURN: { + //mScopeStack.addTempReturn(NDO_NULL_REF); + mScopeStack.leaveScope(); + mCallStack.leave(); + if (mCallStack.len()) { + mOperandsStack.push(NDO_NULL_REF); + } + break; + } + + case OpCode::PUSH_ARGS: { + + // Layout of OperandsStack: + // .... + // +1) length : to chech number of args + // +2) NULL : stop saving args + // +3) object1 + // +4) object2 + // ... + + tp::uint2 len = read_byte(bytecode); + mOperandsStack.push((Object*) len); + mOperandsStack.push(NULL); + break; + } + + case OpCode::SAVE_ARGS: { + tp::uint2 args_len = read_byte(bytecode); + auto argument = mOperandsStack.getOperand(); + + while (argument) { + NDO->refinc(argument); + + auto argument_id = bytecode->mConstants[loadConstDataIdx(bytecode)]; + NDO_CASTV(StringObject, argument_id, id); + DEBUG_ASSERT(id); + mScopeStack.addLocal(argument, id->val); + bytecode->mArgumentsLoaded++; + argument = mOperandsStack.getOperand(); + } + + tp::uint2 saved_len = tp::uint2 (tp::ualni (mOperandsStack.getOperand())); + ASSERT(args_len == saved_len && "invalid number of arguments passefd"); + + break; + } + + case OpCode::RETURN_OBJ: { + if (mCallStack.len() > 1) { + auto ret = mOperandsStack.getOperand(); + mOperandsStack.push(ret); + mScopeStack.addTempReturn(ret); + } + + mScopeStack.leaveScope(); + mCallStack.leave(); + break; + } + + case OpCode::CALL: { + auto obj = mOperandsStack.getOperand(); + + if (!mIsTypeMethod) { + NDO_CASTV(MethodObject, obj, method); + + mScopeStack.enterScope(false); + mCallStack.enter({ NULL, method, 0 }); + + // push self + mCallStack.mStack.last().mSelf = mLastParent; + break; + } + + (*mTypeMethod)(this); + mIsTypeMethod = false; + mTypeMethod = NULL; + break; + } + + case OpCode::OBJ_ADD: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->add(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_SUB: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->sub(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_MUL: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->mul(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + case OpCode::OBJ_DIV: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + + ASSERT(left->type == right->type && "addition of different types is not implemented"); + ASSERT(left->type->ariphmetics && left->type->ariphmetics->add && "cannot add object of this type"); + + auto res = NDO->instatiate(left); + res->type->ariphmetics->div(res, right); + + mScopeStack.addTemp(res); + mOperandsStack.push(res); + break; + } + + case OpCode::OBJ_COPY: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + NDO->copy(left, right); + break; + } + + case OpCode::CHILD: { + auto child_id = mOperandsStack.getOperand(); + auto parent = mOperandsStack.getOperand(); + bool is_method = read_byte(bytecode); + + Object* child = NULL; + TypeMethods::LookupKey tm_key; + + if (is_method) { + tm_key = TypeMethods::presents(parent->type, child_id->val); + } + + if (tm_key) { + mTypeMethod = TypeMethods::getMethod(parent->type, tm_key); + mIsTypeMethod = true; + + } else { + NDO_CASTV(ClassObject, parent, class_obj); + ASSERT(class_obj && "not a class object"); + auto idx = class_obj->members->presents(child_id->val); + ASSERT(idx && "No child with such id"); + child = class_obj->members->getSlotVal(idx); + } + + //mScopeStack.addTemp(obj); + mOperandsStack.push(child); + mLastParent = parent; + break; + } + + case OpCode::SELF: { + //mScopeStack.addTemp(obj); + ASSERT(mCallStack.mStack.last().mSelf); + mOperandsStack.push(mCallStack.mStack.last().mSelf); + break; + } + + case OpCode::OBJ_LOAD: { + auto path = mOperandsStack.getOperand(); + auto obj = NDO->load(path->val); + mScopeStack.addTemp(obj); + mOperandsStack.push(obj); + break; + } + case OpCode::OBJ_SAVE: { + auto path = mOperandsStack.getOperand(); + auto target = mOperandsStack.getOperand(); + NDO->save(target, path->val); + break; + } + + case OpCode::AND: { + auto left = NDO->toBool(mOperandsStack.getOperand()); + auto right = NDO->toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(left && right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::OR: { + auto left = NDO->toBool(mOperandsStack.getOperand()); + auto right = NDO->toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(left || right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::NOT: { + auto inv = NDO->toBool(mOperandsStack.getOperand()); + auto out = BoolObject::create(!inv); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::NOT_EQUAL: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + auto out = BoolObject::create(!NDO->compare(left, right)); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL: { + auto left = mOperandsStack.getOperand(); + auto right = mOperandsStack.getOperand(); + auto out = BoolObject::create(NDO->compare(left, right)); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + + case OpCode::MORE: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left > right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::LESS: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left < right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL_OR_MORE: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left >= right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + case OpCode::EQUAL_OR_LESS: { + auto left = NDO->toFloat(mOperandsStack.getOperand()); + auto right = NDO->toFloat(mOperandsStack.getOperand()); + auto out = BoolObject::create(left <= right); + mScopeStack.addTemp(out); + mOperandsStack.push(out); + break; + } + + default: { + ASSERT("Invalid OpCode"); + } + } +} + +void Interpreter::execAll(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::init_list globals2) { + if (!method->mScript->mBytecode.mInstructions.size()) { + return; + } + + exec(method, self, globals, globals2); + while (!finished()) { + stepBytecodeIn(); + } +} \ No newline at end of file diff --git a/Objects/private/interpreter/opcodes.cpp b/Objects/private/interpreter/opcodes.cpp new file mode 100644 index 0000000..b630b9e --- /dev/null +++ b/Objects/private/interpreter/opcodes.cpp @@ -0,0 +1,384 @@ + +#include "Utils.hpp" + +#include "interpreter/opcodes.h" + +namespace obj { + OpcodeInfos gOpcodeInfos; +}; + +using namespace obj; + +#define CONST_IDX_BYTES 2 + +#define OP(opcode, name, desc, ops, params) \ + add(opcode, { #name, #desc, ops, params } ); + +OpcodeInfos::OperandsInfo::OperandsInfo() {} +OpcodeInfos::OperandsInfo::OperandsInfo(tp::init_list list) { + DEBUG_ASSERT(MAX_OPERANDS >= list.size()); + for (auto item : list) { + buff[len] = item; + len++; + } +} + +OpcodeInfos::ParamsInfo::ParamsInfo() {} +OpcodeInfos::ParamsInfo::ParamsInfo(tp::init_list list) { + DEBUG_ASSERT(MAX_PARAMS >= list.size()); + for (auto item : list) { + buff[len] = item; + len++; + } +} + +tp::uint1 OpcodeInfos::OpInfo::opsize() { + tp::uint1 out = 1; + for (auto i = 0; i < params.len; i++) { + out += params.buff[i].bytes; + } + return out; +} + +OpcodeInfos::OpcodeInfos() { + + add(OpCode::NONE, { "NONE", "Does Nothing" }); + add(OpCode::HALT, { "HALT", "Halts for 3 sec" }); + add(OpCode::TERMINATE, { "TERMINATE", "Terminates the process" }); + add(OpCode::DEF_LOCAL, { + .name = "DEF LOCAL", + .desc = "Adds object to the locals", + .operands = { + { "str", "local id" }, + { "any", "object to be local" } + } + } + ); + add(OpCode::LOAD_CONST, { + .name = "LOAD CONST", + .desc = "Loads const object from the const pool", + .params = { + { "const obj idx", CONST_IDX_BYTES }, + } + } + ); + add(OpCode::LOAD_LOCAL, { + .name = "LOAD LOCAL", + .desc = "Loads local object from the locals", + .params = { + { "idx of const StringObject - represents name id", CONST_IDX_BYTES }, + } + } + ); + add(OpCode::IGNORE, { + .name = "IGNORE", + .desc = "Ignores returned object by destroying it", + } + ); + add(OpCode::SCOPE_IN, { + .name = "SCOPE IN", + .desc = "Enters new scope", + } + ); + add(OpCode::SCOPE_OUT, { + .name = "SCOPE OUT", + .desc = "Leaves current scope", + } + ); + add(OpCode::CALL, { + .name = "CALL", + .desc = "Leaves current scope", + .operands = { + { "method", "method object" }, + } + } + ); + add(OpCode::RETURN_OBJ, { + .name = "RETURN OBJ", + .desc = "Returns Operand", + .operands = { + { "any", "object to be returned" }, + } + } + ); + add(OpCode::RETURN, { + .name = "RETURN", + .desc = "Returns Null Object", + } + ); + add(OpCode::CHILD, { + .name = "CHILD", + .desc = "Retrieves child from class", + .operands = { + { "str", "child id" }, + { "class", "parent class" }, + }, + .params = { + { "is method ?", 1 } + } + } + ); + add(OpCode::PUSH_ARGS, { + .name = "PUSH ARGS", + .desc = "Pushes Separator on the OperandsStack", + .params = { + { "length to chech number of args", 1 } + } + } + ); + add(OpCode::SAVE_ARGS, { + .name = "SAVE ARGS", + .desc = "Pushes operands to locals", + .params = { + { "number of arguments in function defenition", 1 } + } + } + ); + add(OpCode::OBJ_CREATE_LOCAL, { + .name = "CREATE LOCAL OBJ", + .desc = "creates object of given type and adds it to the locals", + .operands = { + { "str", "types" }, + { "str", "name id" }, + } + } + ); + add(OpCode::OBJ_CREATE, { + .name = "CREATE OBJ", + .desc = "creates object of given type", + .operands = { + { "str", "types" }, + } + } + ); + add(OpCode::OBJ_COPY, { + .name = "COPY", + .desc = "Copies objects", + .operands = { + { "any", "self" }, + { "any", "target" }, + } + } + ); + add(OpCode::OBJ_SAVE, { + .name = "SAVE", + .desc = "Saves object to a file", + .operands = { + { "str", "path" }, + { "any", "self" }, + } + } + ); + add(OpCode::OBJ_LOAD, { + .name = "LOAD", + .desc = "loads object from a file", + .operands = { + { "str", "path" }, + { "any", "self" }, + } + } + ); + add(OpCode::OBJ_ADD, { + .name = "ADD", + .desc = "Adds objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_SUB, { + .name = "SUB", + .desc = "Subtruts objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_MUL, { + .name = "MUL", + .desc = "Multiplies objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OBJ_DIV, { + .name = "DIV", + .desc = "Divides objects of the same type that supports ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::AND, { + .name = "AND", + .desc = "Logical AND of objects of the same type that supports boolean ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::OR, { + .name = "OR", + .desc = "Logical OR of objects of the same type that supports boolean ariphmetics", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL, { + .name = "EQUAL", + .desc = "Compares objects", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::NOT_EQUAL, { + .name = "NOT EQUAL", + .desc = "Compares objects and inverts the resault", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::MORE, { + .name = "MORE", + .desc = " > ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::LESS, { + .name = "LESS", + .desc = " < ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL_OR_MORE, { + .name = "GRATER OR EQUAL", + .desc = " >= ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::EQUAL_OR_LESS, { + .name = "LESS OR EQUAL", + .desc = " <= ", + .operands = { + { "any", "left" }, + { "any", "right" }, + } + } + ); + add(OpCode::NOT, { + .name = "NOT", + .desc = "Inverts the object bolean representation", + .operands = { + { "any", "self" }, + } + } + ); + add(OpCode::JUMP, { + .name = "JUMP", + .desc = "Offsets the instruction pointer", + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_R, { + .name = "JUMP R", + .desc = "Offsets the instruction pointer in reversed direction", + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF, { + .name = "JUMP IF", + .desc = "Offsets the instruction pointer if condition is met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_R, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer in reversed direction if condition is met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_NOT, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer if condition is NOT met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::JUMP_IF_NOT_R, { + .name = "JUMP IF R", + .desc = "Offsets the instruction pointer in reversed direction if condition is NOT met", + .operands = { + { "any", "condition object" }, + }, + .params = { + { "ip offset unsigned", 2 }, + } + } + ); + add(OpCode::PRINT, { + .name = "PRINT", + .desc = "Prints the object string representation", + .operands = { + { "any", "self" }, + } + } + ); + add(OpCode::CLASS_CONSTRUCT, { + .name = "CLASS CONSTRUCT", + .desc = "Creates class from the function execution state", + } + ); + add(OpCode::SELF, { + .name = "SELF", + .desc = "retrieves parent class of the current method", + } + ); +} + +OpcodeInfos::OpInfo OpcodeInfos::fetch(OpCode code) { + DEBUG_ASSERT((tp::alni)code >= 0 && (tp::alni)code < (tp::alni)OpCode::END_OPCODES); + return buff[(tp::alni)code]; +} + +void OpcodeInfos::add(OpCode code, const OpInfo& info) { + buff[(tp::alni)code] = info; +} \ No newline at end of file diff --git a/Objects/private/interpreter/operandsstack.cpp b/Objects/private/interpreter/operandsstack.cpp new file mode 100644 index 0000000..e037360 --- /dev/null +++ b/Objects/private/interpreter/operandsstack.cpp @@ -0,0 +1,30 @@ + +#include "interpreter/operandsstack.h" + +using namespace obj; + +OperandStack::OperandStack() { + mBuff = new Operand[MAX_STACK_SIZE]; + mIdx = 0; +} + +void OperandStack::push(Operand operand) { + ASSERT(MAX_STACK_SIZE - 1 > mIdx && "stack overflow"); + mBuff[mIdx] = operand; + mIdx++; +} + +void OperandStack::pop() { + ASSERT(mIdx != NULL && "stack overflow"); + mIdx--; +} + +Operand OperandStack::getOperand() { + auto ret = mBuff[mIdx - 1]; + mIdx--; + return ret; +} + +OperandStack::~OperandStack() { + delete[] mBuff; +} diff --git a/Objects/private/interpreter/scopestack.cpp b/Objects/private/interpreter/scopestack.cpp new file mode 100644 index 0000000..f00e408 --- /dev/null +++ b/Objects/private/interpreter/scopestack.cpp @@ -0,0 +1,90 @@ + +#include "NewPlacement.hpp" + +#include "interpreter/scopestack.h" + +using namespace obj; + +Scope::~Scope() { + for (auto local : mLocals) { + obj::NDO->destroy(local->val); + } + for (auto tmp : mTemps) { + obj::NDO->destroy(tmp.data()); + } +} + +obj::Object* ScopeStack::getLocalUtil(Scope& scope, tp::String* id) { + + auto idx = scope.mLocals.presents(*id); + + if (idx) { + return scope.mLocals.getSlotVal(idx); + } + else { + mIterIdx--; + Scope& parent_scope = mBuff[mIterIdx]; + ASSERT(parent_scope.mChildReachable && "Undefined Local Reference"); + return getLocalUtil(parent_scope, id); + } +} + +ScopeStack::ScopeStack() { + mBuff = (Scope*) tp::HeapAllocGlobal::allocate(sizeof(Scope) * MAX_STACK_SIZE); + mIdx = 0; + mIterIdx = 0; +} + +void ScopeStack::enterScope(bool aChildReachable) { + ASSERT(MAX_STACK_SIZE - 1 > mIdx && "stack overflow"); + new (&mBuff[mIdx]) Scope(); + mBuff[mIdx].mChildReachable = aChildReachable; + mIdx++; +} + +void ScopeStack::leaveScope() { + ASSERT(mIdx != NULL && "stack overflow"); + mBuff[mIdx - 1].~Scope(); + mIdx--; +} + +void ScopeStack::addTemp(obj::Object* tmp) { + obj::NDO->refinc(tmp); + mBuff[mIdx - 1].mTemps.pushBack(tmp); +} + +void ScopeStack::popTemp() { + obj::NDO->destroy(mBuff[mIdx - 1].mTemps.last()->data); + mBuff[mIdx - 1].mTemps.popBack(); +} + +void ScopeStack::addTempReturn(obj::Object* ret) { + if (mIdx >= 2) { + obj::NDO->refinc(ret); + mBuff[mIdx - 2].mTemps.pushBack(ret); + } +} + +void ScopeStack::addLocal(obj::Object* local, tp::String id) { + DEBUG_ASSERT(mIdx != 0 && "No scope given"); + Scope::ObjDict& locals = mBuff[mIdx - 1].mLocals; + auto idx = locals.presents(id); + if (idx) { + obj::NDO->destroy(locals.getSlotVal(idx)); + } + obj::NDO->refinc(local); + locals.put(id, local); +} + +obj::Object* ScopeStack::getLocal(tp::String& str) { + mIterIdx = mIdx - 1; + return getLocalUtil(mBuff[mIdx - 1], &str); +} + +Scope* ScopeStack::getCurrentScope() { + return &mBuff[mIdx - 1]; +} + +ScopeStack::~ScopeStack() { + tp::HeapAllocGlobal::deallocate(mBuff); +} diff --git a/Objects/private/parser/parser.cpp b/Objects/private/parser/parser.cpp new file mode 100644 index 0000000..dacd225 --- /dev/null +++ b/Objects/private/parser/parser.cpp @@ -0,0 +1,904 @@ + +#include "Logging.hpp" +#include "List.hpp" + +#include "parser/parser.h" +#include "compiler/function.h" + +#include + +#define MAX_STREAM_LENGTH 1024 * 8 * 200 + +#define REQUIRE(expr, desc, on_catch) DEBUG_BREAK(mRes.err); if (!(expr)) { mRes.err = new Error(desc, mTok.getCursorPrev().mAdvancedOffset); on_catch; return NULL; } +#define CHECK(expr, on_catch) if (!(expr)) { on_catch; return NULL; } +#define CHECK_ERROR(value, on_catch) if (mRes.err || !value) { on_catch; return NULL; } + +using namespace tp; +using namespace obj; +using namespace BCgen; + +bool Parser::Token::isAriphm() { + switch (type) { + case Token::ADD: + case Token::SUB: + case Token::DIV: + case Token::MUL: + return true; + default: + return false; + } +} + +bool Parser::Token::isBoolean() { + switch (type) { + case Token::EQUAL: + case Token::NOT_EQUAL: + case Token::BOOL_AND: + case Token::BOOL_OR: + case Token::MORE: + case Token::LESS: + case Token::QE_OR_MORE: + case Token::QE_OR_LESS: + return true; + default: + return false; + } +} + +Parser::Parser() { + mTok.build({ + { "\n|\t| |\r", Token::SPACE }, + { "var", Token::VAR }, + { "class", Token::CLASS_DEF }, + { "self", Token::SELF }, + { "\\{", Token::SCOPE_IN }, + { "\\}", Token::SCOPE_OUT }, + { "=", Token::ASSIGN }, + { "def", Token::DEF_FUNC }, + { "<<", Token::PRINT }, + { "if", Token::IF }, + { "else", Token::ELSE }, + { "while", Token::WHILE }, + { "\\(", Token::BRACKET_IN }, + { "\\)", Token::BRACKET_OUT }, + { ",", Token::COMMA }, + { "new", Token::NEW }, + { "\\.", Token::CHILD }, + { "return", Token::RETURN }, + { "==", Token::EQUAL }, + { "!=", Token::NOT_EQUAL }, + { ">", Token::MORE }, + { "<", Token::LESS }, + { ">=", Token::QE_OR_MORE }, + { "<=", Token::QE_OR_LESS }, + { "!", Token::BOOL_NOT }, + { "&&", Token::BOOL_AND }, + { "\\|\\|", Token::BOOL_OR }, + { "\\+", Token::ADD }, + { "\\*", Token::MUL }, + { "\\-", Token::SUB }, + { "/", Token::DIV }, + { ";", Token::STM_END }, + { "true", Token::CONST_TRUE }, + { "false", Token::CONST_FALSE }, + { "((\\-)|(\\+))?[0-9]+i?", Token::CONST_INT }, + { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?f?", Token::CONST_FLOAT }, + { "(/\\*){\\*-\\*}*(\\*/)", Token::COMMENT_BLOCK }, + { "\"{\"-\"}*\"", Token::CONST_STRING }, + { "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*", Token::ID }, + }); +} + +tp::String to_string(const char* stream, tp::alni len) { + tp::String out; + out.reserve(len + 1); + tp::memcp(out.get_writable(), stream, len); + out.get_writable()[len] = '\0'; + return out; +} + +Parser::Token Parser::tokRead() { + Token out; + + if (!tokInputLeft()) { + Token out; + out.type = Token::NO_TOKEN; + return out; + } + + auto crs_start = mTok.getCursor(); + out.type = mTok.readTok(); + out.token = to_string(crs_start.str(), mTok.lastTokLEn()); + + switch (out.type) { + case Token::CONST_FALSE: + out.boolean = false; + break; + case Token::CONST_TRUE: + out.boolean = true; + break; + case Token::CONST_INT: { + char* p_end; + out.integer = std::strtol(out.token.read(), &p_end, 10); + DEBUG_ASSERT(out.token.read() != p_end); + break; + } + case Token::CONST_FLOAT: { + char* p_end; + out.floating = std::strtod(out.token.read(), &p_end); + DEBUG_ASSERT(out.token.read() != p_end); + break; + } + case Token::CONST_STRING: { + out.str = to_string(crs_start.str() + 1, mTok.lastTokLEn() - 2); + break; + } + } + + return out; +} + +Parser::Token Parser::tokLookup() { + auto crs = mTok.getCursor(); + auto out = tokRead(); + mTok.setCursor(crs); + return out; +} + +bool Parser::tokInputLeft() { + auto type = mTok.lookupTok(); + + while (mTok.isInputLeft() && type == Token::SPACE || (type >= Token::__END__ && type <= Token::__START__)) { + mTok.skipTok(); + type = mTok.lookupTok(); + } + + return type != Token::SOURCE_END_TOKEN; +} + +void Parser::tokSkip() { + if (!tokInputLeft()) { + return; + } + mTok.skipTok(); +} + +Parser::Tokenizer::Cursor Parser::tokGetCursor() { return mTok.getCursor();} +void Parser::tokSetCursor(Tokenizer::Cursor crs) { mTok.setCursor(crs); } + +Expression* Parser::parseExprCompound() { + CHECK(tokRead() == Token::BRACKET_IN, {}); + auto ret = parseExpr(); + CHECK_ERROR(ret, {}); + REQUIRE(tokRead() == Token::BRACKET_OUT, "Expected Closing Bracket", {}); + return ret; +} + +Expression* Parser::parseExprNEW() { + CHECK(tokRead() == Token::NEW, {}); + auto name = tokRead(); + REQUIRE(name == Token::ID, "Expected Identifier", {}); + + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected opening brackets", {}); + REQUIRE(tokRead() == Token::BRACKET_OUT, "Expected closing brackets", {}); + + return ExprNew(name.token); +} + +Expression* Parser::parseExprLOCAL() { + auto local_id_tok = tokRead(); + if (local_id_tok == Token::ID) { + return ExprLocal(local_id_tok.token); + } + else if (local_id_tok == Token::SELF) { + return ExprSelf(); + } + return NULL; +} + +Expression* Parser::parseExprCONST() { + auto tok = tokRead(); + switch (tok) { + case Token::CONST_FALSE: + return ExprConst(false); + case Token::CONST_TRUE: + return ExprConst(true); + case Token::CONST_INT: + return ExprConst(tok.integer); + case Token::CONST_FLOAT: + return ExprConst(tok.floating); + case Token::CONST_STRING: + return ExprConst(tok.str); + default: + REQUIRE(0, "not a const Expr", {}); + } +} + +Expression* Parser::parseExprCHILD(Expression* prnt) { + CHECK(tokRead() == Token::CHILD, {}); + auto id = tokRead(); + REQUIRE(id == Token::ID, "Exprected Identifier", {}); + return prnt->ExprChild(id.str); +} + +Expression* Parser::parseExprCALL(Expression* prnt) { + CHECK(tokRead() == Token::BRACKET_IN, {}); + + List args; + +READ_ARG: + Expression* expr = NULL; + auto tok = tokLookup(); + REQUIRE(tok != Token::NO_TOKEN, "Missing Closing Bracket", {}); + + if (tok != Token::BRACKET_OUT) { + + expr = parseExpr(); + CHECK_ERROR(expr, { + for (auto arg : args) { + delete arg.data(); + } + }); + + args.pushBack(expr); + + tok = tokLookup(); + if (tok == Token::COMMA) { + tokSkip(); + goto READ_ARG; + } + else if (tok != Token::BRACKET_OUT) { + for (auto arg : args) { + delete arg.data(); + } + REQUIRE(0, "Expected A Closing Bracket", {}); + } + } + tokSkip(); + + auto out = prnt->ExprCall({}); + out->mArgs.reserve(args.length()); + + for (auto arg : args) { + out->mArgs[arg.idx()] = arg.data(); + } + + return out; +} + +Expression* Parser::parseExprAriphm() { + + tp::init_list expessions = { + ExprType::Compound, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + }; + + Expression* left = parseExpr(expessions); + CHECK_ERROR(left, {}); + + Expression* ret = NULL; + +PARSE: + + Expression* right = NULL; + + auto tok = tokLookup(); + if (tok.isAriphm()) { + tokSkip(); + + + right = parseExpr(expessions); + + if (mRes.err) { + if (ret) { + goto PRECEDENCE; + } + + delete left; + return NULL; + } + + } + else { + CHECK(ret, { + delete left; + }); + goto PRECEDENCE; + } + + switch (tok) { + case Token::ADD: + ret = ExprAriphm(left, right, OpCode::OBJ_ADD); + break; + case Token::SUB: + ret = ExprAriphm(left, right, OpCode::OBJ_SUB); + break; + case Token::DIV: + ret = ExprAriphm(left, right, OpCode::OBJ_DIV); + break; + case Token::MUL: + ret = ExprAriphm(left, right, OpCode::OBJ_MUL); + } + + left = ret; + goto PARSE; + +PRECEDENCE: + // FIXME: Not Implemented + + return ret; +} + +Expression* Parser::parseExprBOOLEAN() { + + tp::init_list expessions = { + ExprType::Compound, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + ExprType::BOOLEAN_NOT, + }; + + + Expression* left = parseExpr(expessions); + CHECK_ERROR(left, {}); + + Expression* ret = NULL; + +PARSE: + + Expression* right = NULL; + + auto tok = tokLookup(); + if (tok.isBoolean()) { + tokSkip(); + + right = parseExpr(expessions); + + if (mRes.err) { + if (ret) { + goto PRECEDENCE; + } + + delete left; + return NULL; + } + + } + else { + CHECK(ret, { + delete left; + }); + goto PRECEDENCE; + } + + switch (tok) { + case Token::EQUAL: + ret = ExprBool(left, right, OpCode::EQUAL); + break; + case Token::NOT_EQUAL: + ret = ExprBool(left, right, OpCode::NOT_EQUAL); + break; + case Token::BOOL_AND: + ret = ExprBool(left, right, OpCode::AND); + break; + case Token::BOOL_OR: + ret = ExprBool(left, right, OpCode::OR); + break; + case Token::MORE: + ret = ExprBool(left, right, OpCode::MORE); + break; + case Token::LESS: + ret = ExprBool(left, right, OpCode::LESS); + break; + case Token::QE_OR_MORE: + ret = ExprBool(left, right, OpCode::EQUAL_OR_MORE); + break; + case Token::QE_OR_LESS: + ret = ExprBool(left, right, OpCode::EQUAL_OR_LESS); + } + + left = ret; + goto PARSE; + +PRECEDENCE: + // FIXME: Not Implemented + + return ret; +} + +Expression* Parser::parseExprBOOLEAN_NOT() { + CHECK(tokRead() == Token::BOOL_NOT, {}); + + tp::init_list exprs = { + ExprType::Compound, + ExprType::BOOLEAN, + ExprType::Ariphm, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + }; + + auto out = parseExpr(exprs); + CHECK_ERROR(out, {}); + + return ExprBoolNot(out); +} + +Expression* Parser::parseExprFUNC() { + auto op_tok = tokRead(); + CHECK(op_tok == Token::ID, {}); + return ExprFunc(op_tok.token); +} + +// passed prnt isno longer responsability of callee +// suc : returns top level parent +// err : returns NULL +Expression* Parser::parseExprChain(Expression* prnt) { + + PARSE_CHAIN: + auto tok = tokLookup(); + + switch (tok) { + case Token::CHILD: { + tokRead(); + + auto child_id = tokRead(); + REQUIRE(child_id == Token::ID, "expected an id", { + delete prnt; + }); + + prnt = prnt->ExprChild(child_id.token); + goto PARSE_CHAIN; + } + + case Token::BRACKET_IN: { + + auto new_prnt = parseExprCALL(prnt); + CHECK_ERROR(new_prnt, { + delete prnt; + }); + + if (prnt->mType == Expression::Type::CHILD) { + ((ExpressionChild*)prnt)->mMethod = true; + } + + prnt = new_prnt; + goto PARSE_CHAIN; + } + } + + return prnt; +} + +Expression* Parser::parseExpr(tp::init_list expressions) { + + Expression* out = NULL; + + List errors; + + for (auto expr_type : expressions) { + auto crs = tokGetCursor(); + switch (expr_type) { + case Parser::ExprType::BOOLEAN_NOT: + out = parseExprBOOLEAN_NOT(); + break; + case Parser::ExprType::BOOLEAN: + out = parseExprBOOLEAN(); + break; + case Parser::ExprType::Ariphm: + out = parseExprAriphm(); + break; + case Parser::ExprType::NEW: + out = parseExprNEW(); + break; + case Parser::ExprType::LOCAL: + out = parseExprLOCAL(); + break; + case Parser::ExprType::CONST: + out = parseExprCONST(); + break; + case Parser::ExprType::Compound: + out = parseExprCompound(); + break; + } + + if (out) { + break; + } + + tokSetCursor(crs); + if (mRes.err) { + errors.pushBack(mRes.err); + mRes.err = NULL; + } + } + + if (out) { + // check for child expression and calls + out = parseExprChain(out); + + // check errors + if (mRes.err) { + errors.pushBack(mRes.err); + mRes.err = NULL; + goto ERRORS; + } + + for (auto err : errors) { + delete err.data(); + } + + return out; + } + + ERRORS: + Error* error = NULL; + tp::alni max_advanced = 0; + for (auto err : errors) { + if (err.data()->mAdvanecedIdx && err.data()->mAdvanecedIdx > max_advanced) { + max_advanced = err.data()->mAdvanecedIdx; + error = err.data(); + } + } + + if (error) { + mRes.err = new Error(*error); + + for (auto err : errors) { + delete err.data(); + } + + return NULL; + } + REQUIRE(0, "Expected and expression", {}); +} + +Statement* Parser::parseStmCall() { + + Expression* expr = parseExpr(); + CHECK_ERROR(expr, {}); + + REQUIRE(expr->mType == Expression::Type::CALL, + "expression statement can only be function call", { + delete expr; + }); + + if (tokRead() != Token::STM_END) { + delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return StmIgnore(expr); +} + +Statement* Parser::parseStmDefFunc() { + CHECK(tokRead() == Token::DEF_FUNC, {}); + List args; + auto name = tokRead(); + REQUIRE(name == Token::ID, "Expected an Identifier", {}); + + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected Opening Bracket", {}); + +READ_ARG: + auto tok = tokLookup(); + + REQUIRE(tok != Token::NO_TOKEN, "Missing Closing Bracket", {}); + + if (tok == Token::ID) { + args.pushBack(tok.token); + tokSkip(); + tok = tokLookup(); + } + + if (tok == Token::COMMA) { + tokSkip(); + goto READ_ARG; + } + + REQUIRE(tok == Token::BRACKET_OUT, "Expected Closing Bracket", {}); + tokSkip(); + + auto func_def = StmDefFunc(name.token, {}, {}); + + func_def->mArgs.reserve(args.length()); + for (auto iter : args) { + func_def->mArgs[iter.idx()] = iter.data(); + } + + StatementScope* scope = parseScope(true); + CHECK_ERROR(scope, { + delete func_def; + }); + + func_def->mStatements.reserve(scope->mStatements.size()); + for (auto stm : scope->mStatements) { + func_def->mStatements[stm.idx()] = stm.data(); + } + + delete scope; + return func_def; +} + +Statement* Parser::parseStmDefLocal() { + CHECK(tokRead() == Token::VAR, {}); + + auto tok = tokRead(); + REQUIRE(tok == Token::ID, "Expected an Identifier", {}); + REQUIRE(tokRead() == Token::ASSIGN, "Expected an assigment", {}); + + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::STM_END) { + delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return StmDefLocal(tok.token, expr); +} + +Statement* Parser::parseStmReturn() { + CHECK(tokRead() == Token::RETURN, {}); + auto crs = tokGetCursor(); + + auto expr = parseExpr(); + if (mRes.err) { + tokSetCursor(crs); + delete mRes.err; + mRes.err = NULL; + } + + if (tokRead() != Token::STM_END) { + if (expr) delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return expr ? StmReturn(expr) : StmReturn(); +} + +Statement* Parser::parseStmPrint() { + CHECK(tokRead() == Token::PRINT, {}); + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::STM_END) { + delete expr; + REQUIRE(0, "Expected End Of Statement", {}); + } + return StmPrint(expr); +} + +Statement* Parser::parseStmIf() { + CHECK(tokRead() == Token::IF, {}); + + // single if + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected Opening Bracket", {}); + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::BRACKET_OUT) { + delete expr; + REQUIRE(0, "Expected Closing Bracket", {}); + } + + auto ontrue = parseScope(false); + CHECK_ERROR(ontrue, {}); + + // if-else + auto crs = tokGetCursor(); + if (tokRead() == Token::ELSE) { + StatementScope* onfalse = parseScope(false); + CHECK_ERROR(onfalse, { + delete ontrue; + delete expr; + }); + + return StmIf(expr, ontrue, onfalse); + } + tokSetCursor(crs); + + return StmIf(expr, ontrue, NULL); +} + +Statement* Parser::parseStmWhile() { + CHECK(tokRead() == Token::WHILE, {}); + + REQUIRE(tokRead() == Token::BRACKET_IN, "Expected Opening Bracket", {}); + auto expr = parseExpr(); + CHECK_ERROR(expr, {}); + + if (tokRead() != Token::BRACKET_OUT) { + delete expr; + REQUIRE(0, "Expected Closing Bracket", {}); + } + + auto scope = parseScope(false); + CHECK_ERROR(scope, {}); + + return StmWhile(expr, scope); +} + +Statement* Parser::parseStmCopy() { + auto left = parseExpr(); + CHECK_ERROR(left, {}); + + CHECK(tokRead() == Token::ASSIGN, {}); + + auto right = parseExpr(); + CHECK_ERROR(right, { + delete left; + }); + + if (tokRead() != Token::STM_END) { + delete left; + delete right; + REQUIRE(0, "Expected End Of Statement", {}); + } + + return StmCopy(left, right); +} + +Statement* Parser::parseStmClassDef() { + CHECK(tokRead() == Token::CLASS_DEF, {}); + + auto id = tokRead(); + REQUIRE(id == Token::ID, "Expected an Identifier", {}); + + auto scope = parseScope(true); + CHECK_ERROR(scope, {}); + + return StmClassDef(id.token, scope); +} + +Statement* Parser::parseStm(tp::init_list stm_types) { + Statement* out = NULL; + + List errors; + + for (auto stm_type : stm_types) { + auto crs = tokGetCursor(); + switch (stm_type) { + case StmType::DefFunc: + out = parseStmDefFunc(); + break; + case StmType::DefLocal: + out = parseStmDefLocal(); + break; + case StmType::Return: + out = parseStmReturn(); + break; + case StmType::Print: + out = parseStmPrint(); + break; + case StmType::If: + out = parseStmIf(); + break; + case StmType::While: + out = parseStmWhile(); + break; + case StmType::Copy: + out = parseStmCopy(); + break; + case StmType::Call: + out = parseStmCall(); + break; + case StmType::CLASS_DEF: + out = parseStmClassDef(); + break; + } + + if (out) { + break; + } + + tokSetCursor(crs); + if (mRes.err) { + errors.pushBack(mRes.err); + mRes.err = NULL; + } + } + + if (out) { + for (auto err : errors) { + delete err.data(); + } + return out; + } + + Error* error = NULL; + tp::alni max_advanced = 0; + for (auto err : errors) { + if (err.data()->mAdvanecedIdx && max_advanced < err.data()->mAdvanecedIdx) { + max_advanced = err.data()->mAdvanecedIdx; + error = err.data(); + } + } + + if (error) { + mRes.err = new Error(*error); + + for (auto err : errors) { + delete err.data(); + } + + return NULL; + } + + REQUIRE(0, "Exprected A Statement", {}); +} + +StatementScope* Parser::parseScope(bool aPushToScopeStack) { + CHECK(tokRead() == Token::SCOPE_IN, {}); + + auto out = new StatementScope({}, aPushToScopeStack); + List stms; + +READ_STM: + auto crs = tokGetCursor(); + auto tok = tokRead(); + + if (tok == Token::NO_TOKEN) { + delete out; + for (auto stm : stms) { + delete stm.data(); + } + REQUIRE(0, "Missing Scope Closing Bracket", {}); + } + + if (tok != Token::SCOPE_OUT) { + tokSetCursor(crs); + + auto stm = parseStm(); + CHECK_ERROR(stm, { + delete out; + for (auto stm : stms) { + delete stm.data(); + } + }); + + stms.pushBack(stm); + + goto READ_STM; + } + + out->mStatements.reserve(stms.length()); + for (auto stm : stms) { + out->mStatements[stm.idx()] = stm.data(); + } + + return out; +} + +Parser::Resault Parser::parse(const tp::String& oscript) { + mTok.bindSource(oscript.read()); + + mRes.scope = new StatementScope({}, true); + + List stms; + do { + auto stm = parseStm(); + + if (mRes.err || !stm) { // catch + delete mRes.scope; + mRes.scope = NULL; + for (auto stm : stms) { + delete stm.data(); + } + + return mRes; + } + + stms.pushBack(stm); + + } while (tokInputLeft()); + + mRes.scope->mStatements.reserve(stms.length()); + for (auto stm : stms) { + mRes.scope->mStatements[stm.idx()] = stm.data(); + } + + return mRes; +} diff --git a/Objects/private/primitives/boolobject.cpp b/Objects/private/primitives/boolobject.cpp new file mode 100644 index 0000000..8d1bd3a --- /dev/null +++ b/Objects/private/primitives/boolobject.cpp @@ -0,0 +1,78 @@ + + +#include "NewPlacement.hpp" +#include "primitives/boolobject.h" + +using namespace obj; +using namespace tp; + +void BoolObject::constructor(BoolObject* self) { + self->val = false; +} + +void BoolObject::copy(BoolObject* self, const BoolObject* in) { + self->val = in->val; +} + +BoolObject* BoolObject::create(bool in) { + NDO_CASTV(BoolObject, NDO->create("bool"), out)->val = alni(in); + return out; +} + +void BoolObject::from_int(BoolObject* self, alni in) { + self->val = in; +} + +void BoolObject::from_float(BoolObject* self, alnf in) { + self->val = alni(bool(in)); +} + +void BoolObject::from_string(BoolObject* self, String in) { + self->val = alni(bool(in)); +} + +String BoolObject::to_string(BoolObject* self) { + return String(bool(self->val)); +} + +alni BoolObject::to_int(BoolObject* self) { + return self->val; +} + +alnf BoolObject::to_float(BoolObject* self) { + return alnf(bool(self->val)); +} + +static alni save_size(BoolObject* self) { + return sizeof(alni); +} + +static void save(BoolObject* self, Archiver& file_self) { + file_self.write(&self->val); +} + +static void load(Archiver& file_self, BoolObject* self) { + file_self.read(&self->val); +} + +struct ObjectTypeConversions BoolObjectTypeConversions = { + .from_int = (object_from_int) BoolObject::from_int, + .from_float = (object_from_float) BoolObject::from_float, + .from_string = (object_from_string) BoolObject::from_string, + .to_string = (object_to_string) BoolObject::to_string, + .to_int = (object_to_int) BoolObject::to_int, + .to_float = (object_to_float) BoolObject::to_float, +}; + +struct obj::ObjectType obj::BoolObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) BoolObject::constructor, + .destructor = NULL, + .copy = (object_copy) BoolObject::copy, + .size = sizeof(BoolObject), + .name = "bool", + .convesions = &BoolObjectTypeConversions, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/classobject.cpp b/Objects/private/primitives/classobject.cpp new file mode 100644 index 0000000..2bfad9d --- /dev/null +++ b/Objects/private/primitives/classobject.cpp @@ -0,0 +1,81 @@ +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/classobject.h" +#include "primitives/dictobject.h" +#include "primitives/nullobject.h" + +using namespace obj; +using namespace tp; + +void ClassObject::constructor(ClassObject* self) { + self->members = NDO_CAST(DictObject, NDO->create("dict")); + + self->addMember(NDO_NULL, "__init__"); + self->addMember(NDO_NULL, "__del__"); +} + +void ClassObject::copy(ClassObject* self, const ClassObject* blueprint) { + NDO->copy(self->members, blueprint->members); +} + +void ClassObject::destructor(ClassObject* self) { + NDO->destroy(self->members); +} + +void ClassObject::addMember(Object* obj, tp::String id) { + members->put(id, obj); +} + +void ClassObject::createMember(tp::String type, tp::String id) { + auto newo = NDO->create(type); + members->put(id, newo); +} + +alni ClassObject::save_size(ClassObject* self) { + return sizeof(alni); // dict object adress +} + +void ClassObject::save(ClassObject* self, Archiver& file_self) { + // save dictobject + alni ndo_object_adress = NDO->save(file_self, self->members); + file_self.write(&ndo_object_adress); +} + +void ClassObject::load(Archiver& file_self, ClassObject* self) { + alni ndo_object_adress; + file_self.read(&ndo_object_adress); + self->members = NDO_CAST(DictObject, NDO->load(file_self, ndo_object_adress)); +} + +tp::Buffer childs_retrival(ClassObject* self) { + tp::Buffer out; + out.append(self->members); + return out; +} + +alni allocated_size(ClassObject* self) { + return sizeof(DictObject*); +} + +alni allocated_size_recursive(ClassObject* self) { + alni out = sizeof(DictObject*); + out += NDO->objsize_ram_recursive_util(self->members, self->members->type); + return out; +} + +struct ObjectType ClassObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) ClassObject::constructor, + .destructor = (object_destructor) ClassObject::destructor, + .copy = (object_copy) ClassObject::copy, + .size = sizeof(ClassObject), + .name = "class", + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .childs_retrival = (object_debug_all_childs_retrival) childs_retrival, + .allocated_size = (object_allocated_size) allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive +}; diff --git a/Objects/private/primitives/colorobject.cpp b/Objects/private/primitives/colorobject.cpp new file mode 100644 index 0000000..587c663 --- /dev/null +++ b/Objects/private/primitives/colorobject.cpp @@ -0,0 +1,84 @@ + +#include "NewPlacement.hpp" +#include "primitives/colorobject.h" + +using namespace obj; +using namespace tp; + +void ColorObject::constructor(Object* self) { + NDO_CAST(ColorObject, self)->mCol = tp::RGBA(1.f); +} + +void ColorObject::copy(ColorObject* self, const ColorObject* in) { + self->mCol = in->mCol; +} + +ColorObject* ColorObject::create(tp::RGBA in) { + NDO_CASTV(ColorObject, NDO->create("RGBA"), out)->mCol = in; + return out; +} + +void ColorObject::from_int(ColorObject* self, alni in) { + self->mCol = tp::RGBA((tp::halnf)tp::clamp(in, (tp::alni) 0, (tp::alni) 1)); +} + +void ColorObject::from_float(ColorObject* self, alnf in) { + NDO_CAST(ColorObject, self)->mCol = tp::RGBA(tp::clamp((tp::halnf)in, 0.f, 1.f)); +} + +String ColorObject::to_string(ColorObject* self) { + // auto &col = NDO_CAST(ColorObject, self)->mCol; + // return tp::sfmt("%i:%i:%i:%i", (tp::alni) (col.r * 255), (tp::alni)(col.g * 255), (tp::alni)(col.b * 255), (tp::alni)(col.a * 255)); + // TODO : implement + return {}; +} + +static alni save_size(ColorObject* self) { + return sizeof(tp::RGBA); +} + +static void save(ColorObject* self, Archiver& file_self) { + file_self.write(&self->mCol); +} + +static void load(Archiver& file_self, ColorObject* self) { + file_self.read(&self->mCol); +} + +struct ObjectTypeConversions ColorObjectTypeConversions = { + .from_int = (object_from_int) ColorObject::from_int, + .from_float = (object_from_float) ColorObject::from_float, + .from_string = NULL, + .to_string = (object_to_string) ColorObject::to_string, + .to_int = NULL, + .to_float = NULL, +}; + +void sub(ColorObject* self, ColorObject* in) { + self->mCol = in->mCol - self->mCol; +} + +void add(ColorObject* self, ColorObject* in) { + self->mCol = in->mCol + self->mCol; +} + +struct ObjectTypeAriphmetics ColorObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) NULL, + .div = (object_div) NULL, +}; + +struct obj::ObjectType obj::ColorObject::TypeData = { + .base = NULL, + .constructor = ColorObject::constructor, + .destructor = NULL, + .copy = (object_copy) ColorObject::copy, + .size = sizeof(ColorObject), + .name = "RGBA", + .convesions = &ColorObjectTypeConversions, + .ariphmetics = &ColorObject::TypeAriphm, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/dictobject.cpp b/Objects/private/primitives/dictobject.cpp new file mode 100644 index 0000000..483c625 --- /dev/null +++ b/Objects/private/primitives/dictobject.cpp @@ -0,0 +1,232 @@ +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/dictobject.h" +#include "primitives/stringobject.h" + +using namespace obj; +using namespace tp; + +void DictObject::constructor(Object* self) { + NDO_CASTV(DictObject, self, dict); + + new (&dict->items) Map(); +} + +void DictObject::copy(Object* in, const Object* target) { + NDO_CASTV(DictObject, in, self); + NDO_CASTV(DictObject, target, src); + + destructor(self); + constructor(self); + + for (auto item : src->items) { + auto instance = NDO->instatiate(item->val); + self->items.put(item->key, instance); + } +} + +void DictObject::destructor(Object* self) { + NDO_CASTV(DictObject, self, dict); + for (auto item : dict->items) { + NDO->destroy(item->val); + } + dict->items.~Map(); +} + +alni DictObject::save_size(DictObject* self) { + // calculate size needed + alni save_size = 0; + + // number on entries + save_size += sizeof(alni); + + for (auto item : self->items) { + // string length + save_size += (item->key.size() + 1) * sizeof(*item->key.read()); + // object file adress + save_size += sizeof(alni); + } + + return save_size; +} + +void DictObject::save(DictObject* self, Archiver& file_self) { + + // write size + alni len = self->items.size(); + file_self.write(&len); + + // save hashmap pairs + for (auto item : self->items) { + // item val + alni ndo_object_adress = NDO->save(file_self, item->val); + file_self.write(&ndo_object_adress); + + // item key + item->key.save(&file_self); + } +} + +void DictObject::load(Archiver& file_self, DictObject* self) { + new (&self->items) tp::Map(); + + alni len; + file_self.read(&len); + + for (alni i = 0; i < len; i++) { + + // read val + alni ndo_object_adress; + file_self.read(&ndo_object_adress); + Object* val = NDO->load(file_self, ndo_object_adress); + + // read key value + String key; + key.load(&file_self); + + // add to dictinary + self->items.put(key, val); + } +} + +tp::Buffer DictObject::childs_retrival(DictObject* self) { + tp::Buffer out; + out.reserve(self->items.size()); + ualni i = 0; + for (auto item : self->items) { + out[i] = item->val; + i++; + } + return out; +} + +alni DictObject::allocated_size(DictObject* self) { + alni out = self->items.sizeAllocatedMem(); + for (auto item : self->items) { + out += item->key.sizeAllocatedMem(); + } + return out; + return 0; +} + +alni DictObject::allocated_size_recursive(DictObject* self) { + alni out = allocated_size(self); + for (auto item : self->items) { + out += NDO->objsize_ram_recursive_util(item->val, item->val->type); + } + return out; +} + +void DictObject::put(tp::String str, Object* obj) { + DEBUG_ASSERT(obj); + NDO->refinc(obj); + items.put(str, obj); +} + +void DictObject::remove(tp::String str) { + auto idx = items.presents(str); + if (idx) { + NDO->destroy(items.getSlotVal(idx)); + items.remove(str); + } +} + +Object* DictObject::get(tp::String str) { + return items.get(str); +} + +tp::Map::Idx DictObject::presents(tp::String str) { + return items.presents(str); +} + +Object* DictObject::getSlotVal(tp::alni idx) { + return items.getSlotVal(idx); +} + +const tp::Map& DictObject::getItems() const { + return items; +} + +static auto tm_get = TypeMethod{ + .nameid = "get", + .descr = "gets the object", + .args = { + { "str key", NULL } + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + auto str_key = tm->args[0].obj; + + NDO_CASTV(StringObject, str_key, key); + ASSERT(key); + + auto idx = self->presents(key->val); + if (idx) { + tm->ret.obj = self->getSlotVal(idx); + } + }, + .ret = { "object", NULL } +}; + +static auto tm_put = TypeMethod{ + .nameid = "put", + .descr = "puts the object into the dictinary", + .args = { + { "key", NULL }, + { "object", NULL } + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + + auto str_key = tm->args[0].obj; + auto obj = tm->args[1].obj; + + NDO_CASTV(StringObject, str_key, key); + ASSERT(key); + + self->put(key->val, obj); + }, +}; + +static auto tm_remove = TypeMethod{ + .nameid = "remove", + .descr = "remove the object from the dictinary", + .args = { + { "key", NULL }, + }, + .exec = [](const TypeMethod* tm) { + auto const self = (DictObject*)tm->self; + + auto str_key = tm->args[0].obj; + + NDO_CASTV(StringObject, str_key, key); + ASSERT(key); + + self->remove(key->val); + }, +}; + +struct obj::ObjectType DictObject::TypeData = { + .base = NULL, + .constructor = DictObject::constructor, + .destructor = DictObject::destructor, + .copy = DictObject::copy, + .size = sizeof(DictObject), + .name = "dict", + .save_size = (object_save_size)DictObject::save_size, + .save = (object_save)DictObject::save, + .load = (object_load)DictObject::load, + .childs_retrival = (object_debug_all_childs_retrival)DictObject::childs_retrival, + .allocated_size = (object_allocated_size)DictObject::allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive)DictObject::allocated_size_recursive, + + .type_methods = { + .methods = { + &tm_put, + &tm_remove, + &tm_get, + } + } +}; diff --git a/Objects/private/primitives/enumobject.cpp b/Objects/private/primitives/enumobject.cpp new file mode 100644 index 0000000..bc6523e --- /dev/null +++ b/Objects/private/primitives/enumobject.cpp @@ -0,0 +1,182 @@ + +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/enumobject.h" + +#include + +using namespace obj; +using namespace tp; + +void EnumObject::constructor(EnumObject* self) { + self->active = 0; + self->nentries = 0; + self->entries = NULL; +} + +void obj::EnumObject::destructor(EnumObject* self) { + if (self->entries) free(self->entries); +} + +void EnumObject::copy(EnumObject* self, const EnumObject* in) { + if (self->entries) free(self->entries); + self->active = in->active; + self->nentries = in->nentries; + + self->entries = (alni*)malloc(self->nentries * ENV_ALNI_SIZE_B); + tp::memCopy(self->entries, in->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +void obj::EnumObject::init(tp::init_list list) { + + if (entries) free(entries); + + active = 0; + nentries = (uhalni) list.size(); + entries = (alni*) malloc(nentries * ENV_ALNI_SIZE_B); + tp::memSetVal(entries, nentries * ENV_ALNI_SIZE_B, 0); + + alni* entry = entries; + for (auto elem : list) { + + alni len = tp::String::Logic::calcLength(elem); + if (len > ENV_ALNI_SIZE_B - 1) len = ENV_ALNI_SIZE_B - 1; + + tp::memCopy(entry, elem, len); + + for (alni* chech_entry = entries; chech_entry != entry; chech_entry++) { + DEBUG_ASSERT(tp::memCompare(chech_entry, entry, ENV_ALNI_SIZE_B) != 0); + } + + entry++; + } +} + +const char* obj::EnumObject::getActiveName() { + return getItemName(active); +} + +const char* obj::EnumObject::getItemName(tp::uhalni idx) { + DEBUG_ASSERT(entries && idx >= 0 && idx < nentries); + return (const char*) (entries + idx); +} + + +void EnumObject::from_int(EnumObject* self, alni in) { + if (self->entries && in >= 0 && in < self->nentries) { + self->active = uhalni(in); + } +} + +void EnumObject::from_float(EnumObject* self, alnf in) { + if (self->entries && in >= 0 && in < self->nentries) { + self->active = uhalni(in); + } +} + +void EnumObject::from_string(EnumObject* self, String in) { + if (self->entries) { + alni* entry = self->entries; + for (uhalni i = 0; i < self->nentries; i++) { + if (tp::String::Logic::isEqualLogic((const char*)entry, in.read())) { + self->active = i; + } + entry += 1; + } + } +} + +String EnumObject::to_string(EnumObject* self) { + if (!self->entries) { + return tp::String(); + } + auto val = (const char*)(&self->entries[self->active]); + return String(val); +} + +alni EnumObject::to_int(EnumObject* self) { + if (!self->entries) { + return -1; + } + return alni(self->active); +} + +alnf EnumObject::to_float(EnumObject* self) { + if (!self->entries) { + return -1; + } + return alnf(self->active); +} + +static alni save_size(EnumObject* self) { + if (!self->entries) { + return sizeof(uhalni); + } + return sizeof(uhalni) + sizeof(uhalni) + sizeof(alni) * self->nentries; +} + +static void save(EnumObject* self, Archiver& file_self) { + if (!self->entries) { + uhalni empty_code = -1; + file_self.write(&empty_code); + return; + } + file_self.write(&self->active); + file_self.write(&self->nentries); + file_self.write_bytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +static void load(Archiver& file_self, EnumObject* self) { + file_self.read(&self->active); + if (self->active == -1) { + self->nentries = 0; + self->entries = NULL; + return; + } + file_self.read(&self->nentries); + self->entries = (alni*) malloc(self->nentries * ENV_ALNI_SIZE_B); + file_self.read_bytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); +} + +bool obj::EnumObject::compare(EnumObject* first, EnumObject* second) { + return first->entries != NULL && second->entries != NULL && first->active == second->active; +} + +EnumObject* obj::EnumObject::create(tp::init_list list) { + auto enum_object = (EnumObject*)obj::NDO->create("enum"); + enum_object->init(list); + return enum_object; +} + +alni allocated_size(EnumObject* self) { + alni out = sizeof(uhalni) * 2 + sizeof(tp::alni*); + if (self->entries) { + out += self->nentries * sizeof(alni) * 2; + } + return out; +} + +struct ObjectTypeConversions EnumObjectTypeConversions = { + .from_int = (object_from_int) EnumObject::from_int, + .from_float = (object_from_float) EnumObject::from_float, + .from_string = (object_from_string) EnumObject::from_string, + .to_string = (object_to_string) EnumObject::to_string, + .to_int = (object_to_int) EnumObject::to_int, + .to_float = (object_to_float) EnumObject::to_float, +}; + +struct obj::ObjectType obj::EnumObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) EnumObject::constructor, + .destructor = (object_destructor) EnumObject::destructor, + .copy = (object_copy) EnumObject::copy, + .size = sizeof(EnumObject), + .name = "enum", + .convesions = &EnumObjectTypeConversions, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .comparison = (object_compare) EnumObject::compare, + .allocated_size = (object_allocated_size) allocated_size, +}; \ No newline at end of file diff --git a/Objects/private/primitives/floatobject.cpp b/Objects/private/primitives/floatobject.cpp new file mode 100644 index 0000000..470273f --- /dev/null +++ b/Objects/private/primitives/floatobject.cpp @@ -0,0 +1,102 @@ +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/floatobject.h" + +using namespace obj; +using namespace tp; + +void FloatObject::constructor(FloatObject* self) { + self->val = 0; +} + +void FloatObject::copy(FloatObject* self, const FloatObject* in) { + self->val = in->val; +} + +FloatObject* FloatObject::create(alnf in) { + NDO_CASTV(FloatObject, NDO->create("float"), out)->val = alnf(in); + return out; +} + +void FloatObject::from_int(FloatObject* self, alni in) { + self->val = alnf(in); +} + +void FloatObject::from_float(FloatObject* self, alnf in) { + self->val = in; +} + +void FloatObject::from_string(FloatObject* self, String in) { + self->val = alnf(in); +} + +String FloatObject::to_string(FloatObject* self) { + return String(self->val); +} + +alni FloatObject::to_int(FloatObject* self) { + return alni(self->val); +} + +alnf FloatObject::to_float(FloatObject* self) { + return self->val; +} + +static alni save_size(FloatObject* self) { + return sizeof(alnf); +} + +static void save(FloatObject* self, Archiver& file_self) { + file_self.write(&self->val); +} + +static void load(Archiver& file_self, FloatObject* self) { + file_self.read(&self->val); +} + +struct ObjectTypeConversions FloatObjectTypeConversions = { + .from_int = (object_from_int) FloatObject::from_int, + .from_float = (object_from_float) FloatObject::from_float, + .from_string = (object_from_string) FloatObject::from_string, + .to_string = (object_to_string) FloatObject::to_string, + .to_int = (object_to_int) FloatObject::to_int, + .to_float = (object_to_float) FloatObject::to_float, +}; + +static void mul(FloatObject* self, FloatObject* in) { + self->val *= in->val; +} + +static void sub(FloatObject* self, FloatObject* in) { + self->val -= in->val; +} + +static void add(FloatObject* self, FloatObject* in) { + self->val += in->val; +} + +static void divide(FloatObject* self, FloatObject* in) { + self->val /= in->val; +} + +struct ObjectTypeAriphmetics FloatObject::TypeAriphm = { + .add = (object_add)add, + .sub = (object_sub)sub, + .mul = (object_mul)mul, + .div = (object_div)divide, +}; + +struct obj::ObjectType obj::FloatObject::TypeData = { + .base = NULL, + .constructor = (object_constructor) FloatObject::constructor, + .destructor = NULL, + .copy = (object_copy) FloatObject::copy, + .size = sizeof(FloatObject), + .name = "float", + .convesions = &FloatObjectTypeConversions, + .ariphmetics = &FloatObject::TypeAriphm, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/interpreterobject.cpp b/Objects/private/primitives/interpreterobject.cpp new file mode 100644 index 0000000..8732922 --- /dev/null +++ b/Objects/private/primitives/interpreterobject.cpp @@ -0,0 +1,82 @@ + +#include "NewPlacement.hpp" + +#include "primitives/interpreterobject.h" +#include "primitives/linkobject.h" +#include "primitives/methodobject.h" + +using namespace obj; +using namespace tp; + +void InterpreterObject::constructor(InterpreterObject* self) { + new (&self->mInterpreter) Interpreter(); + + self->createMember("dict", "globals"); + self->createMember("link", "target method"); +} + +void InterpreterObject::destructor(InterpreterObject* self) { + self->mInterpreter.~Interpreter(); +} + +void InterpreterObject::load(Archiver& file_self, InterpreterObject* self) { + new (&self->mInterpreter) Interpreter(); +} + +bool InterpreterObject::running() { return !mInterpreter.finished(); } + +void InterpreterObject::exec(obj::ClassObject* self, tp::init_list globals) { + + if (running()) { + return; + } + + auto link_target = getMember("target method"); + if (!link_target) { + return; + } + + auto target = link_target->getLink(); + if (!target) { + return; + } + + NDO_CASTV(obj::MethodObject, target, method); + if (!method || !method->mScript->mBytecode.mInstructions.size()) { + return; + } + + mInterpreter.execAll(method, self, getMember("globals"), globals); +} + +void InterpreterObject::debug() { + if (running()) { + return; + } + + auto link_target = getMember("target method"); + if (!link_target) { + return; + } + + auto target = link_target->getLink(); + if (!target) { + return; + } + + NDO_CASTV(obj::MethodObject, target, method); + if (!method || !method->mScript->mBytecode.mInstructions.size()) { + return; + } + + mInterpreter.exec(method, this, getMember("globals")); +} + +struct obj::ObjectType InterpreterObject::TypeData = { + .base = &ClassObject::TypeData, + .constructor = (object_constructor)InterpreterObject::constructor, + .destructor = (object_destructor)InterpreterObject::destructor, + .size = sizeof(InterpreterObject), + .name = "interpreter", + .load = (object_load)InterpreterObject::load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/intobject.cpp b/Objects/private/primitives/intobject.cpp new file mode 100644 index 0000000..06de36a --- /dev/null +++ b/Objects/private/primitives/intobject.cpp @@ -0,0 +1,104 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/intobject.h" + +using namespace obj; +using namespace tp; + +void IntObject::constructor(Object* self) { + NDO_CAST(IntObject, self)->val = 0; +} + +void IntObject::copy(IntObject* self, const IntObject* in) { + self->val = in->val; +} + +IntObject* IntObject::create(alni in) { + NDO_CASTV(IntObject, NDO->create("int"), out)->val = in; + return out; +} + +void IntObject::from_int(Object* self, alni in) { + NDO_CAST(IntObject, self)->val = in; +} + +void IntObject::from_float(Object* self, alnf in) { + NDO_CAST(IntObject, self)->val = (alni)in; +} + +void IntObject::from_string(Object* self, String in) { + NDO_CAST(IntObject, self)->val = alni(in); +} + +String IntObject::to_string(Object* self) { + return String(NDO_CAST(IntObject, self)->val); +} + +alni IntObject::to_int(Object* self) { + return alni(NDO_CAST(IntObject, self)->val); +} + +alnf IntObject::to_float(Object* self) { + return alnf(NDO_CAST(IntObject, self)->val); +} + +static alni save_size(IntObject* self) { + return sizeof(alni); +} + +static void save(IntObject* self, Archiver& file_self) { + file_self.write(&self->val); +} + +static void load(Archiver& file_self, IntObject* self) { + file_self.read(&self->val); +} + +struct ObjectTypeConversions IntObjectTypeConversions = { + .from_int = IntObject::from_int, + .from_float = IntObject::from_float, + .from_string = IntObject::from_string, + .to_string = IntObject::to_string, + .to_int = IntObject::to_int, + .to_float = IntObject::to_float, +}; + +void divide(IntObject* self, IntObject* in) { + self->val /= in->val; +} + +void mul(IntObject* self, IntObject* in) { + self->val *= in->val; +} + +void sub(IntObject* self, IntObject* in) { + self->val -= in->val; +} + +void add(IntObject* self, IntObject* in) { + self->val += in->val; +} + +struct ObjectTypeAriphmetics IntObject::TypeAriphm = { + .add = (object_add) add, + .sub = (object_sub) sub, + .mul = (object_mul) mul, + .div = (object_div) divide, +}; + +struct obj::ObjectType obj::IntObject::TypeData = { + .base = NULL, + .constructor = IntObject::constructor, + .destructor = NULL, + .copy = (object_copy) IntObject::copy, + .size = sizeof(IntObject), + .name = "int", + .convesions = &IntObjectTypeConversions, + .ariphmetics = &IntObject::TypeAriphm, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, +}; \ No newline at end of file diff --git a/Objects/private/primitives/linkobject.cpp b/Objects/private/primitives/linkobject.cpp new file mode 100644 index 0000000..fb10d8b --- /dev/null +++ b/Objects/private/primitives/linkobject.cpp @@ -0,0 +1,132 @@ + +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/linkobject.h" + +using namespace obj; +using namespace tp; + +void LinkObject::constructor(Object* self) { + NDO_CAST(LinkObject, self)->link = 0; +} + +void LinkObject::destructor(LinkObject* self) { + if (self->link) NDO->destroy(self->link); +} + +void LinkObject::copy(Object* self, const Object* in) { + NDO_CAST(LinkObject, self)->setLink(NDO_CAST(LinkObject, in)->link); +} + +LinkObject* LinkObject::create(Object* in) { + NDO_CASTV(LinkObject, NDO->create("link"), out)->link = in; + return out; +} + +alni LinkObject::save_size(LinkObject* self) { + return sizeof(alni); +} + +void LinkObject::save(LinkObject* self, Archiver& file_self) { + if (self->link != NULL) { + alni link_object_save_adress = NDO->save(file_self, self->link); + file_self.write(&link_object_save_adress); + } + else { + alni null = -1; + file_self.write(&null); + } +} + +void LinkObject::load(Archiver& file_self, LinkObject* self) { + + alni saved_object_adress; + file_self.read(&saved_object_adress); + + if (saved_object_adress == -1) { + self->link = NULL; + } + else { + self->link = NDO->load(file_self, saved_object_adress); + } +} + +tp::Buffer LinkObject::childs_retrival(LinkObject* self) { + tp::Buffer out; + if (self->link) out.append(self->link); + return out; +} + +alni LinkObject::allocated_size(LinkObject* self) { + return sizeof(Object*); +} + +alni LinkObject::allocated_size_recursive(LinkObject* self) { + alni out = sizeof(Object*); + if (self->link) { + out += NDO->objsize_ram_recursive_util(self->link, self->link->type); + } + return out; +} + +Object* LinkObject::getLink() { + return link; +} + +void LinkObject::setLink(Object* obj) { +#ifdef OBJECT_REF_COUNT + if (link) NDO->destroy(link); + if (obj) NDO->refinc(obj); +#endif // OBJECT_REF_COUNT + link = obj; +} + +static auto tm_set = TypeMethod{ + .nameid = "set", + .descr = "sets the link", + .args = { + { "target", NULL } + }, + .exec = [](const TypeMethod* tm) { + auto const self = (LinkObject*)tm->self; + auto const target = tm->args[0].obj; + self->setLink(target); + } +}; + +static auto tm_get = TypeMethod{ + .nameid = "get", + .descr = "gets the link", + .exec = [](const TypeMethod* tm) { + auto const self = (LinkObject*)tm->self; + auto link = self->getLink(); + if (link) { + tm->ret.obj = link; + } + }, + .ret = { "the link", NULL } +}; + +struct obj::ObjectType LinkObject::TypeData = { + .base = NULL, + .constructor = LinkObject::constructor, + .destructor = (object_destructor)LinkObject::destructor, + .copy = LinkObject::copy, + .size = sizeof(LinkObject), + .name = "link", + .convesions = NULL, + .save_size = (object_save_size)LinkObject::save_size, + .save = (object_save)LinkObject::save, + .load = (object_load)LinkObject::load, + .childs_retrival = (object_debug_all_childs_retrival)LinkObject::childs_retrival, + .allocated_size = (object_allocated_size)LinkObject::allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive)LinkObject::allocated_size_recursive, + + .type_methods = { + .methods = { + &tm_set, + &tm_get, + } + } +}; \ No newline at end of file diff --git a/Objects/private/primitives/listobject.cpp b/Objects/private/primitives/listobject.cpp new file mode 100644 index 0000000..cd6b3f5 --- /dev/null +++ b/Objects/private/primitives/listobject.cpp @@ -0,0 +1,135 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/listobject.h" +#include "primitives/intobject.h" + +using namespace obj; +using namespace tp; + +void ListObject::constructor(Object* in) { + NDO_CASTV(ListObject, in, self); + new (&self->items) List(); +} + +void ListObject::copy(Object* in, const Object* target) { + NDO_CASTV(ListObject, in, self); + NDO_CASTV(ListObject, target, src); + + destructor(in); + + for (auto item : src->items) { + self->pushBack(NDO->instatiate(item.data())); + } +} + +void ListObject::destructor(Object* in) { + NDO_CASTV(ListObject, in, self); + for (auto item : self->items) { + NDO->destroy(item.data()); + } + self->items.removeAll(); +} + +alni ListObject::save_size(ListObject* self) { + alni len = self->items.length(); + return (len + 1) * sizeof(alni); +} + +void ListObject::save(ListObject* self, Archiver& file_self) { + alni len = self->items.length(); + file_self.write(&len); + + for (auto item : self->items) { + alni ndo_object_adress = NDO->save(file_self, item.data()); + file_self.write(&ndo_object_adress); + } +} + +void ListObject::load(Archiver& file_self, ListObject* self) { + new (&self->items) tp::List(); + + alni len; + file_self.read(&len); + + for (alni i = 0; i < len; i++) { + alni ndo_object_adress; + file_self.read(&ndo_object_adress); + self->items.pushBack(NDO->load(file_self, ndo_object_adress)); + } +} + +tp::Buffer ListObject::childs_retrival(ListObject* self) { + tp::Buffer out; + out.reserve(self->items.length()); + ualni i = 0; + for (auto item : self->items) { + out[i] = item.data(); + i++; + } + return out; +} + +alni ListObject::allocated_size(ListObject* self) { + // return self->items.sizeAllocatedMem(); + return {}; +} + +alni ListObject::allocated_size_recursive(ListObject* self) { + alni out = self->items.sizeAllocatedMem(); + for (auto item : self->items) { + out += NDO->objsize_ram_recursive_util(item.data(), item->type); + } + return out; +} + +void ListObject::pushBack(Object* obj) { +#ifdef OBJECT_REF_COUNT + obj::NDO->refinc(obj); +#endif // OBJECT_REF_COUNT + items.pushBack(obj); +} + +void ListObject::pushFront(Object* obj) { +#ifdef OBJECT_REF_COUNT + obj::NDO->refinc(obj); +#endif // OBJECT_REF_COUNT + items.pushFront(obj); +} + +void ListObject::delNode(tp::List::Node* node) { +#ifdef OBJECT_REF_COUNT + obj::NDO->destroy(node->data); +#endif // OBJECT_REF_COUNT + items.deleteNode(node); +} + +void ListObject::popBack() { +#ifdef OBJECT_REF_COUNT + auto obj = items.last(); + if (obj) obj::NDO->destroy(obj->data); +#endif // OBJECT_REF_COUNT + items.popBack(); +} + +const tp::List& ListObject::getItems() const { + return items; +} + +struct obj::ObjectType obj::ListObject::TypeData = { + .base = NULL, + .constructor = ListObject::constructor, + .destructor = ListObject::destructor, + .copy = ListObject::copy, + .size = sizeof(ListObject), + .name = "list", + .convesions = NULL, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .childs_retrival = (object_debug_all_childs_retrival) childs_retrival, + .allocated_size = (object_allocated_size) allocated_size, + .allocated_size_recursive = (object_allocated_size_recursive) allocated_size_recursive +}; \ No newline at end of file diff --git a/Objects/private/primitives/methodobject.cpp b/Objects/private/primitives/methodobject.cpp new file mode 100644 index 0000000..876c3f3 --- /dev/null +++ b/Objects/private/primitives/methodobject.cpp @@ -0,0 +1,78 @@ +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/methodobject.h" +#include "core/scriptsection.h" +#include "compiler/function.h" + +using namespace obj; + +struct ObjectType MethodObject::TypeData = { + .base = NULL, + .constructor = (object_constructor)MethodObject::constructor, + .destructor = (object_destructor)MethodObject::destructor, + .copy = (object_copy)MethodObject::copy, + .size = sizeof(MethodObject), + .name = "method", + .convesions = NULL, + .save_size = (object_save_size)MethodObject::save_size, + .save = (object_save)MethodObject::save, + .load = (object_load)MethodObject::load, +}; + +void MethodObject::constructor(MethodObject* self) { + self->mScript = obj::ScriptSection::globalHandle()->createScript(); +} + +void MethodObject::copy(MethodObject* self, MethodObject* in) { + obj::ScriptSection::globalHandle()->changeScript(&self->mScript, &in->mScript); +} + +void MethodObject::destructor(MethodObject* self) { + obj::ScriptSection::globalHandle()->abandonScript(self->mScript); +} + +tp::alni MethodObject::save_size(MethodObject* self) { + // script_table_file_address & script string object address + return sizeof(tp::alni); +} + +void MethodObject::save(MethodObject* self, Archiver& file_self) { + auto script_section = obj::ScriptSection::globalHandle(); + + // script_table_file_address + tp::alni script_table_file_address = script_section->get_script_file_adress(self->mScript); + file_self.write(&script_table_file_address); +} + +void MethodObject::load(Archiver& file_self, obj::MethodObject* self) { + auto script_section = obj::ScriptSection::globalHandle(); + + // script_table_file_address + tp::alni script_table_file_address; + file_self.read(&script_table_file_address); + self->mScript = script_section->get_scritp_from_file_adress(script_table_file_address); +} + + +void MethodObject::Initialize() { + obj::ScriptSection::initialize(); + NDO->define(&MethodObject::TypeData); + obj::NDO->type_groups.addType(&MethodObject::TypeData, { "Primitives" }); +} + +void MethodObject::UnInitialize() { + obj::ScriptSection::uninitialize(); +} + +void MethodObject::compile() { + BCgen::Compile(this); +} + +MethodObject* MethodObject::create(tp::String script) { + auto out = (MethodObject*)NDO->create(MethodObject::TypeData.name); + out->mScript->mReadable->val = script; + out->compile(); + return out; +} \ No newline at end of file diff --git a/Objects/private/primitives/nullobject.cpp b/Objects/private/primitives/nullobject.cpp new file mode 100644 index 0000000..846c842 --- /dev/null +++ b/Objects/private/primitives/nullobject.cpp @@ -0,0 +1,60 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/nullobject.h" + +using namespace obj; +using namespace tp; + +obj::NullObject* obj::NdoNull_globalInstance = NULL; +bool uninit_flag = false; + +void NullObject::uninit() { + uninit_flag = true; + NDO->destroy(NdoNull_globalInstance); +} + +void NullObject::destructor(Object* self) { + DEBUG_ASSERT(uninit_flag && "Only one the instance of NullObject exists and thus it can't be destroyed"); +} + + +String to_string(NullObject* self) { + return "NULL"; +} + +alni to_int(NullObject* self) { + return 0; +} + +alnf to_float(NullObject* self) { + return 0; +} + +obj::TypeMethods* tm_construct() { + auto out = new obj::TypeMethods(); + + return out; +} + +struct ObjectTypeConversions NullObjectTypeConversions = { + .from_int = NULL, + .from_float = NULL, + .from_string = NULL, + .to_string = (object_to_string) to_string, + .to_int = (object_to_int) to_int, + .to_float = (object_to_float) to_float, +}; + + +struct ObjectType NullObject::TypeData = { + .base = NULL, + .constructor = NULL, + .destructor = NullObject::destructor, + .copy = NULL, + .size = sizeof(NullObject), + .name = "null", + .convesions = &NullObjectTypeConversions, +}; \ No newline at end of file diff --git a/Objects/private/primitives/primitives.cpp b/Objects/private/primitives/primitives.cpp new file mode 100644 index 0000000..5591845 --- /dev/null +++ b/Objects/private/primitives/primitives.cpp @@ -0,0 +1,83 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/primitives.h" + +#include "Tokenizer.hpp" + +void obj::primitives_uninitialize() { + obj::NullObject::uninit(); + obj::MethodObject::UnInitialize(); +} + +void obj::primitives_define_types() { + + using namespace obj; + using namespace tp; + + static bool initialized = false; + if (initialized) { + return; + } + + DEBUG_ASSERT(NDO && "Objects library is not initialized"); + + NDO->define(&DictObject::TypeData); + NDO->define(&IntObject::TypeData); + NDO->define(&LinkObject::TypeData); + NDO->define(&ListObject::TypeData); + NDO->define(&NullObject::TypeData); + NDO->define(&StringObject::TypeData); + NDO->define(&BoolObject::TypeData); + NDO->define(&FloatObject::TypeData); + NDO->define(&EnumObject::TypeData); + NDO->define(&ClassObject::TypeData); + NDO->define(&ColorObject::TypeData); + NDO->define(&InterpreterObject::TypeData); + NDO->define(&TypeObject::TypeData); + + NDO->type_groups.addType(&DictObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&IntObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&LinkObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&ListObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&NullObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&StringObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&BoolObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&FloatObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&EnumObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&ClassObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&ColorObject::TypeData, {"Primitives"}); + NDO->type_groups.addType(&InterpreterObject::TypeData, { "scripting" }); + + obj::MethodObject::Initialize(); + + initialized = true; +} + +namespace obj { + objects_api* objects_init(); + void objects_finalize(); +}; + +static bool objInit() { + obj::objects_init(); + obj::primitives_define_types(); + return true; +} + +static void objDeinit() { + obj::primitives_uninitialize(); + obj::objects_finalize(); +} + +static tp::ModuleManifest* sModuleDependencies[] = { + // &tp::gModuleCompressor, + &tp::gModuleMath, + &tp::gModuleStrings, + &tp::gModuleTokenizer, + NULL +}; + +tp::ModuleManifest obj::gModuleObjects = tp::ModuleManifest("Objects", objInit, objDeinit, sModuleDependencies); \ No newline at end of file diff --git a/Objects/private/primitives/stringobject.cpp b/Objects/private/primitives/stringobject.cpp new file mode 100644 index 0000000..678a956 --- /dev/null +++ b/Objects/private/primitives/stringobject.cpp @@ -0,0 +1,97 @@ + +#pragma once + +#include "NewPlacement.hpp" + +#include "primitives/stringobject.h" + +using namespace obj; +using namespace tp; + +void StringObject::constructor(Object* self) { + new (&NDO_CAST(StringObject, self)->val) String(); +} + +void StringObject::destructor(StringObject* self) { + self->val.~String(); +} + +void StringObject::copy(Object* self, const Object* in) { + NDO_CAST(StringObject, self)->val = NDO_CAST(StringObject, in)->val; +} + +StringObject* StringObject::create(String in) { + NDO_CASTV(StringObject, NDO->create("str"), out)->val = in; + return out; +} + +void StringObject::from_int(StringObject* self, alni in) { + // self->val = in; +} + +void StringObject::from_float(StringObject* self, alnf in) { + // self->val = in; +} + +void StringObject::from_string(StringObject* self, String in) { + // self->val = in; +} + +String StringObject::to_string(StringObject* self) { + return self->val; +} + +alni StringObject::to_int(StringObject* self) { + return alni(self->val); +} + +alnf StringObject::to_float(StringObject* self) { + return alnf(self->val); +} + +static alni save_size(StringObject* self) { + // return self->val.save_size(); + return {}; +} + +static void save(StringObject* self, Archiver& file_self) { + self->val.save(&file_self); +} + +static void load(Archiver& file_self, StringObject* self) { + new (&self->val) tp::String(); + self->val.load(&file_self); +} + +alni allocated_size(StringObject* self) { + // return self->val.sizeAllocatedMem(); + return 0; +} + +static bool compare_strings(StringObject* left, StringObject* right) { + return left->val == right->val; +} + +struct ObjectTypeConversions StringObjectTypeConversions = { + .from_int = (object_from_int)StringObject::from_int, + .from_float = (object_from_float)StringObject::from_float, + .from_string = (object_from_string)StringObject::from_string, + .to_string = (object_to_string)StringObject::to_string, + .to_int = (object_to_int)StringObject::to_int, + .to_float = (object_to_float)StringObject::to_float, +}; + +struct obj::ObjectType StringObject::TypeData = { + .base = NULL, + .constructor = StringObject::constructor, + .destructor = (object_destructor)StringObject::destructor, + .copy = StringObject::copy, + .size = sizeof(StringObject), + .name = "str", + .convesions = &StringObjectTypeConversions, + .save_size = (object_save_size)save_size, + .save = (object_save)save, + .load = (object_load)load, + .comparison = (object_compare) compare_strings, + .allocated_size = (object_allocated_size) allocated_size, +}; \ No newline at end of file diff --git a/Objects/private/primitives/typeobject.cpp b/Objects/private/primitives/typeobject.cpp new file mode 100644 index 0000000..3ce305c --- /dev/null +++ b/Objects/private/primitives/typeobject.cpp @@ -0,0 +1,80 @@ + +#pragma once + +#include "NewPlacement.hpp" +#include "primitives/typeobject.h" +#include "primitives/nullobject.h" + +using namespace obj; +using namespace tp; + +TypeObject* TypeObject::create(const ObjectType* type) { + NDO_CASTV(TypeObject, NDO->create("typeobject"), out); + out->mTypeRef = type; + return out; +} + +static alni save_size(TypeObject* self) { + tp::String const nameid(self->mTypeRef->name); + return nameid.save_size(); +} + +static void save(TypeObject* self, Archiver& file_self) { + tp::String const nameid(self->mTypeRef->name); + nameid.save(&file_self); +} + +static void load(Archiver& file_self, TypeObject* self) { + tp::String nameid; + nameid.load(&file_self); + + auto idx = NDO->types.presents(nameid); + + if (idx) { + self->mTypeRef = NDO->types.getSlotVal(idx); + } + else { + self->mTypeRef = &NullObject::TypeData; + } +} + +static alni allocated_size(TypeObject* self) { + return sizeof(alni); +} + +static void from_string(TypeObject* self, tp::String in) { + auto idx = NDO->types.presents(in); + + if (idx) { + self->mTypeRef = NDO->types.getSlotVal(idx); + } + else { + self->mTypeRef = &NullObject::TypeData; + } +} + +static String to_string(TypeObject* self) { + return self->mTypeRef->name; +} + +bool comparator(TypeObject* left, TypeObject* right) { + return left->mTypeRef == right->mTypeRef; +} + +static struct ObjectTypeConversions conversions = { + .from_string = (object_from_string) from_string, + .to_string = (object_to_string) to_string, +}; + +struct obj::ObjectType TypeObject::TypeData = { + .base = NULL, + //.constructor = (object_constructor) TypeObject::constructor, + .size = sizeof(TypeObject), + .name = "typeobject", + .convesions = &conversions, + .save_size = (object_save_size) save_size, + .save = (object_save) save, + .load = (object_load) load, + .comparison = (object_compare) comparator, + .allocated_size = (object_allocated_size) allocated_size, +}; \ No newline at end of file diff --git a/Objects/public/compiler/constants.h b/Objects/public/compiler/constants.h new file mode 100644 index 0000000..5a95697 --- /dev/null +++ b/Objects/public/compiler/constants.h @@ -0,0 +1,42 @@ + +#pragma once + +#include "interpreter/bytecode.h" +#include "core/object.h" + +namespace obj { + namespace BCgen { + + struct ConstObject { + obj::Object* mObj = NULL; + tp::alni mConstIdx = 0; + + ConstObject(); + ConstObject(obj::Object* mObj); + }; + + + struct ConstObjectsPool { + tp::Map mMethods; + tp::Map mStrings; + tp::Map mIntegers; + tp::Map mFloats; + ConstObject mBoolTrue; + ConstObject mBoolFalse; + + bool mDelete = true; + tp::alni mTotalObjects = 0; + + ConstObject* get(tp::alni val); + ConstObject* get(tp::String val); + ConstObject* get(tp::alnf val); + ConstObject* get(bool val); + + ConstObject* addMethod(tp::String method_id, obj::Object* method); + ConstObject* registerObject(obj::Object* obj); + void save(tp::Buffer& out); + + ~ConstObjectsPool(); + }; + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/expression.h b/Objects/public/compiler/expression.h new file mode 100644 index 0000000..c297b99 --- /dev/null +++ b/Objects/public/compiler/expression.h @@ -0,0 +1,126 @@ + +#pragma once + +#include "Strings.hpp" +#include "Buffer.hpp" + +#include "interpreter/opcodes.h" + +namespace obj { + namespace BCgen { + + struct ExpressionChild; + struct ExpressionCall; + + struct Expression { + + enum class Type { + NONE, + NEW, + LOCAL, + CONST, + CHILD, + CALL, + ARIPHM, + FUNC, + BOOLEAN, + SELF, + } mType = Type::NONE; + + bool mValueUsed = false; + + Expression(); + Expression(Type type); + + ExpressionChild* ExprChild(tp::String id); + ExpressionCall* ExprCall(tp::init_list args); + }; + + struct ExpressionNew : public Expression { + tp::String mNewType; + ExpressionNew(tp::String type); + }; + + struct ExpressionLocal : public Expression { + tp::String mLocalId; + ExpressionLocal(tp::String id); + }; + + struct ExpressionFunc : public Expression { + tp::String mFuncId; + ExpressionFunc(tp::String id); + }; + + struct ExpressionChild : public Expression { + Expression* mParent = NULL; + tp::String mLocalId; + bool mMethod = false; + ExpressionChild(Expression* mParent, tp::String id); + }; + + struct ExpressionCall : public Expression { + Expression* mParent = NULL; + tp::Buffer mArgs; + ExpressionCall(Expression* mParent, tp::init_list args); + }; + + struct ExpressionAriphm : public Expression { + Expression* mLeft = NULL; + Expression* mRight = NULL; + OpCode mOpType; + ExpressionAriphm(Expression* left, Expression* right, OpCode type); + }; + + struct ExpressionBoolean : public Expression { + Expression* mLeft = NULL; + Expression* mRight = NULL; + + enum class BoolType : tp::uint1 { + AND = 24U, + OR, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + EQUAL_OR_MORE, + EQUAL_OR_LESS, + NOT, + } mBoolType; + + ExpressionBoolean(Expression* left, Expression* right, BoolType type); + ExpressionBoolean(Expression* invert); + }; + + struct ExpressionConst : public Expression { + enum ConstType { STR, INT, BOOL, FLT } mConstType; + tp::String str; + tp::alni integer = 0; + tp::alnf floating = 0; + bool boolean = 0; + + ExpressionConst(tp::String val); + ExpressionConst(const char* val); + ExpressionConst(tp::alni val); + ExpressionConst(tp::int4 val); + ExpressionConst(tp::flt4 val); + ExpressionConst(tp::alnf val); + ExpressionConst(bool val); + }; + + struct ExpressionSelf : public Expression { + ExpressionSelf(); + }; + + ExpressionLocal* ExprLocal(tp::String id); + ExpressionSelf* ExprSelf(); + ExpressionFunc* ExprFunc(tp::String id); + ExpressionNew* ExprNew(tp::String id); + ExpressionAriphm* ExprAriphm(Expression* left, Expression* right, OpCode type); + ExpressionBoolean* ExprBool(Expression* left, Expression* right, OpCode type); + ExpressionBoolean* ExprBoolNot(Expression* invert); + template + ExpressionConst* ExprConst(ConstType val) { + return new ExpressionConst(val); + } + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/function.h b/Objects/public/compiler/function.h new file mode 100644 index 0000000..a54df26 --- /dev/null +++ b/Objects/public/compiler/function.h @@ -0,0 +1,47 @@ + +#pragma once + +#include "Strings.hpp" +#include "List.hpp" +#include "Map.hpp" + +#include "instruction.h" +#include "statement.h" +#include "constants.h" + +namespace obj { + struct MethodObject; + + namespace BCgen { + + struct FunctionDefinition { + + FunctionDefinition* mPrnt = NULL; + + // signature + tp::String mFunctionId; + tp::List mArgsOrder; + + ConstObjectsPool mConstants; + tp::Map mLocals; + tp::List mInstructions; + + FunctionDefinition(tp::String function_id, tp::Buffer args, FunctionDefinition* prnt); + FunctionDefinition() {} + + void generateByteCode(ByteCode& out); + + tp::List::Node* inst(Instruction inst); + + void EvalExpr(Expression* expr); + void EvalStatement(Statement* expr); + + ConstObject* defineLocal(tp::String id); + }; + + void init(); + void deinit(); + void Genereate(ByteCode& out, StatementScope* body); + bool Compile(MethodObject* obj); + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/instruction.h b/Objects/public/compiler/instruction.h new file mode 100644 index 0000000..d0047a8 --- /dev/null +++ b/Objects/public/compiler/instruction.h @@ -0,0 +1,52 @@ + +#pragma once + +#include "interpreter/opcodes.h" + +#include "core/object.h" + +#include "List.hpp" + +namespace obj { + namespace BCgen { + + struct ConstObject; + + struct Instruction { + + OpCode mOp = OpCode::NONE; + + enum class ArgType { + NO_ARG, + PARAM, + CONST, + } mArgType = ArgType::NO_ARG; + + enum class InstType { + NONE, + JUMP, + JUMP_IF, + JUMP_IF_NOT, + EXEC, + PURE_CONST, + } mInstType = InstType::NONE; + + tp::alni mParam = 0; + tp::alni mParamBytes = 1; + + ConstObject* mConstData = NULL; + ConstObject* mConstData2 = NULL; + + tp::alni mInstIdx = 0; + tp::List::Node* mInstTarget = NULL; + + Instruction(); + Instruction(ConstObject* constData); + Instruction(OpCode op); + Instruction(OpCode op, ConstObject* constData); + Instruction(OpCode op, ConstObject* constData, ConstObject* constData2); + Instruction(OpCode op, tp::alni param, tp::alni nBytes); + Instruction(tp::List::Node* inst, InstType jump_type); + }; + }; +}; \ No newline at end of file diff --git a/Objects/public/compiler/statement.h b/Objects/public/compiler/statement.h new file mode 100644 index 0000000..0e53a3c --- /dev/null +++ b/Objects/public/compiler/statement.h @@ -0,0 +1,116 @@ + +#pragma once + +#include "expression.h" + +namespace obj { + namespace BCgen { + struct Statement { + enum class Type { + NONE, + SCOPE, + DEF_FUNC, + DEF_LOCAL, + RET, + PRINT, + COPY, + IF, + WHILE, + IGNORE, + CALL, + CLASS_DEF, + } mType = Type::NONE; + + bool mValueUsed = false; + + Statement() {} + Statement(Type type); + }; + + struct StatementScope : public Statement { + tp::Buffer mStatements; + bool mPushToScopeStack = false; + + StatementScope(tp::init_list statements, bool aPushToScopeStack); + }; + + struct StatementFuncDef : public Statement { + tp::Buffer mArgs; + tp::String mFunctionId; + tp::Buffer mStatements; + + StatementFuncDef(tp::String function_id, tp::init_list args, tp::init_list statements); + }; + + struct StatementLocalDef : public Statement { + tp::String mLocalId; + Expression* mNewExpr = NULL; + ExpressionConst* mConstExpr = NULL; + bool mIsConstExpr = false; + + StatementLocalDef(tp::String id, Expression* value); + StatementLocalDef(tp::String id, ExpressionConst* value); + }; + + struct StatementCopy : public Statement { + Expression* mLeft = NULL; + Expression* mRight = NULL; + + StatementCopy(Expression* left, Expression* right); + }; + + struct StatementReturn : public Statement { + Expression* mRet = NULL; + + StatementReturn(Expression* ret); + StatementReturn(); + }; + + struct StatementPrint : public Statement { + Expression* mTarget = NULL; + + StatementPrint(Expression* mTarget); + }; + + struct StatementIgnore : public Statement { + Expression* mExpr = NULL; + + StatementIgnore(Expression* expr); + }; + + struct StatementIf : public Statement { + Expression* mCondition = NULL; + StatementScope* mOnTrue = NULL; + StatementScope* mOnFalse = NULL; + + StatementIf(Expression* condition, StatementScope* on_true, StatementScope* on_false); + }; + + struct StatementWhile : public Statement { + Expression* mCondition = NULL; + StatementScope* mScope = NULL; + + StatementWhile(Expression* condition, StatementScope* scope); + }; + + struct StatementClassDef : public Statement { + tp::String mClassId; + StatementScope* mScope = NULL; + + StatementClassDef(tp::String class_id, StatementScope* scope); + }; + + // Helpers + StatementFuncDef* StmDefFunc(tp::String id, tp::init_list args, tp::init_list stms); + StatementLocalDef* StmDefLocal(tp::String id, Expression* value); + StatementCopy* StmCopy(Expression* left, Expression* right); + StatementPrint* StmPrint(Expression* target); + StatementReturn* StmReturn(Expression* obj); + StatementReturn* StmReturn(); + StatementIf* StmIf(Expression* condition, StatementScope* on_true, StatementScope* on_false); + StatementScope* StmScope(tp::init_list statements, bool aPushToScopeStack); + StatementWhile* StmWhile(Expression* condition, StatementScope* scope); + StatementIgnore* StmIgnore(Expression* expr); + StatementClassDef* StmClassDef(tp::String id, StatementScope* scope); + }; +}; \ No newline at end of file diff --git a/Objects/public/core/object.h b/Objects/public/core/object.h new file mode 100644 index 0000000..9feeef6 --- /dev/null +++ b/Objects/public/core/object.h @@ -0,0 +1,226 @@ + +#pragma once + +#include "Common.hpp" +#include "Map.hpp" +#include "List.hpp" +#include "Buffer.hpp" +#include "Strings.hpp" +#include "LocalConnection.hpp" + +#include "core/typegroups.h" +#include "core/typemethods.h" + +//#include "interpreter/interpreter.h" + +/* Steps to create custom Object: +define name of object +define base type +define struct members +implement construct, destruct and copy methods */ + +#define OBJECT_REF_COUNT + +#ifdef _DEBUG +#define NDO_CAST(cast_type, ptr) ((cast_type*)ndo_cast(ptr, &cast_type::TypeData)) +#define NDO_CAST_ASSERT(cast_type, ptr) {assert(ndo_cast(ptr, &cast_type::TypeData))} +#else +#define NDO_CAST_ASSERT(cast_type, ptr) {assert(ndo_cast(ptr, &cast_type::TypeData))} +#define NDO_CAST(cast_type, ptr) ((cast_type*)ndo_cast(ptr, &cast_type::TypeData)) +#endif + +#define NDO_CASTV(cast_type, ptr, var_name) cast_type* var_name = NDO_CAST(cast_type, ptr); var_name + +#define NDO_MEMH_FROM_NDO(ndo_ptr) (((ObjectMemHead*)ndo_ptr) - 1) +#define NDO_FROM_MEMH(ndo_ptr) ((Object*)(ndo_ptr + 1)) + +namespace obj { + + class Archiver : public tp::LocalConnection { + public: + enum Type { SAVE, LOAD }; + + Archiver() = default; + Archiver(const char*, Type) {}; + + bool opened; + + tp::ualni adress{}; + + // not yet writen address + // always offsets on write without specific address + tp::ualni avl_adress{}; + + void write_bytes(const tp::int1* in, tp::alni size, tp::alni adress = -1) {} + + template + void write(Type* in, tp::alni adress = -1) { + write_bytes((tp::int1*) in, sizeof(Type), adress); + } + + void read_bytes(tp::int1* in, tp::alni size, tp::alni adress = -1) {} + + template + void read(Type* in, tp::alni adress = -1) { + read_bytes((tp::int1*) in, sizeof(Type), adress); + } + }; + + extern tp::ModuleManifest gModuleObjects; + + extern struct objects_api* NDO; + + struct ObjectMemHead { + ObjectMemHead* up; + ObjectMemHead* down; + tp::alni flags; + #ifdef OBJECT_REF_COUNT + tp::alni refc; + #endif + }; + + struct Object { + const struct ObjectType* type; + }; + + typedef void (*object_from_int)(Object* self, tp::alni in); + typedef void (*object_from_float)(Object* self, tp::alnf in); + typedef void (*object_from_string)(Object* self, tp::String in); + typedef tp::String(*object_to_string)(Object* self); + typedef tp::alni(*object_to_int)(Object* self); + typedef tp::alnf(*object_to_float)(Object* self); + + struct ObjectTypeConversions { + object_from_int from_int; + object_from_float from_float; + object_from_string from_string; + object_to_string to_string; + object_to_int to_int; + object_to_float to_float; + }; + + typedef void (*object_add)(Object* self, Object* operand); + typedef void (*object_sub)(Object* self, Object* operand); + typedef void (*object_mul)(Object* self, Object* operand); + typedef void (*object_div)(Object* self, Object* operand); + + struct ObjectTypeAriphmetics { + object_add add; + object_sub sub; + object_mul mul; + object_div div; + }; + + typedef void (*object_constructor)(Object* self); + typedef void (*object_destructor)(Object* self); + typedef void (*object_copy)(Object* self, const Object* target); + + typedef tp::alni(*object_save_size)(Object* self); + typedef void (*object_save)(Object*, Archiver&); + typedef void (*object_load)(Archiver&, Object*); + + typedef bool (*object_compare)(Object*, Object*); + + typedef tp::Buffer (*object_debug_all_childs_retrival)(Object*); + typedef tp::alni (*object_allocated_size)(Object*); // default value = type->size - sizeof(ObjectType*) + typedef tp::alni (*object_allocated_size_recursive)(Object*); // default value = object_allocated_size + + struct ObjectType { + const ObjectType* base = NULL; + object_constructor constructor = NULL; + object_destructor destructor = NULL; + object_copy copy = NULL; + tp::alni size = NULL; + const char* name; + const ObjectTypeConversions* convesions = NULL; + const ObjectTypeAriphmetics* ariphmetics = NULL; + object_save_size save_size = NULL; + object_save save = NULL; + object_load load = NULL; + object_compare comparison = NULL; + void* vtable = NULL; + const char* description = NULL; + object_debug_all_childs_retrival childs_retrival = NULL; + object_allocated_size allocated_size = NULL; + object_allocated_size_recursive allocated_size_recursive = NULL; + TypeMethods type_methods; + }; + + + #define SAVE_LOAD_MAX_CALLBACK_SLOTS 100 + typedef void (pre_save_callback)(void* self, Archiver&); + typedef void (pre_load_callback)(void* self, Archiver&); + typedef void (post_save_callback)(void* self, Archiver&); + typedef void (post_load_callback)(void* self, Archiver&); + typedef tp::alni (slcb_size_callback)(void* self, Archiver&); + + struct save_load_callbacks { + void* self; + pre_save_callback* pre_save; + slcb_size_callback* size; + pre_load_callback* pre_load; + post_save_callback* post_save; + post_load_callback* post_load; + }; + + + struct objects_api { + + tp::Map types; + obj::TypeGroups type_groups; + Interpreter* interp = NULL; + + objects_api(); + ~objects_api(); + + void define(ObjectType* type); + Object* create(const tp::String& name); + Object* copy(Object* self, const Object* in); + bool compare(Object* first, Object* second); + Object* instatiate(Object*); + void set(Object* self, tp::alni val); + void set(Object* self, tp::alnf val); + void set(Object* self, tp::String val); + + tp::alni toInt(Object* self); + tp::alnf toFloat(Object* self); + bool toBool(Object* self); + tp::String toString(Object* self); + + void clear_object_flags(); + + void destroy(Object* in); + + #ifdef OBJECT_REF_COUNT + void refinc(Object* in); + tp::halni getrefc(Object* in); + private: + void setrefc(Object* in, tp::halni refc); + public: + #endif + + save_load_callbacks* sl_callbacks[SAVE_LOAD_MAX_CALLBACK_SLOTS]; + tp::alni sl_callbacks_load_idx = 0; + + void add_sl_callbacks(save_load_callbacks*); + + tp::alni objsize_file(Object* self); + tp::alni objsize_file_recursive(Object* self); + + tp::alni objsize_ram(Object* self); + tp::alni objsize_ram_recursive_util(Object* self, const ObjectType* type, bool different_object = true); + tp::alni objsize_ram_recursive(Object* self); + + bool save(Object*, tp::String path, bool compressed = true); + Object* load(tp::String path); + tp::alni save(Archiver&, Object*); + Object* load(Archiver&, tp::alni file_adress); + }; + + Object* ndo_cast(const Object* in, const ObjectType* to_type); + + template + Type* create() { + return (Type*)obj::NDO->create(Type::TypeData.name); + } +}; \ No newline at end of file diff --git a/Objects/public/core/scriptsection.h b/Objects/public/core/scriptsection.h new file mode 100644 index 0000000..56efcf7 --- /dev/null +++ b/Objects/public/core/scriptsection.h @@ -0,0 +1,36 @@ +#pragma once + +#include "primitives/methodobject.h" + +namespace obj { + + // global singleton API for method object to manage the script + struct ScriptSection { + + tp::List mScripts; + + Script* createScript(); + void changeScript(Script** current_script, Script** new_script); + void abandonScript(Script* script); + + tp::alni get_script_file_adress(Script* in); + Script* get_scritp_from_file_adress(tp::alni file_adress); + + ~ScriptSection(); + + static void initialize(); + static void uninitialize(); + static ScriptSection* globalHandle(); + + private: + + static obj::save_load_callbacks slcb_script_section; + + void delete_script(Script* script); + void reference_script(Script* script); + + static void save_script_table_to_file(ScriptSection* self, Archiver& file); + static void load_script_table_from_file(ScriptSection* self, Archiver& file); + static tp::alni save_script_table_to_file_size(ScriptSection* self, Archiver& file); + }; +}; \ No newline at end of file diff --git a/Objects/public/core/typegroups.h b/Objects/public/core/typegroups.h new file mode 100644 index 0000000..1dcb138 --- /dev/null +++ b/Objects/public/core/typegroups.h @@ -0,0 +1,40 @@ + +#pragma once + +#include "Map.hpp" +#include "Strings.hpp" + +namespace obj { + + struct ObjectType; + struct objects_api; + + class TypeGroups { + + public: + + typedef tp::Map Dict; + + TypeGroups(); + + friend struct obj::objects_api; + + TypeGroups(bool is_group); + + void addType(ObjectType* type, tp::init_list path, tp::alni cur_arg = 0); + void setType(ObjectType* type); + bool isGroup(); + Dict* getChilds(); + const obj::ObjectType* getType(); + ~TypeGroups(); + + private: + + bool is_group; + union { + Dict childs; + const obj::ObjectType* type; + }; + }; + +}; \ No newline at end of file diff --git a/Objects/public/core/typemethods.h b/Objects/public/core/typemethods.h new file mode 100644 index 0000000..d485aa4 --- /dev/null +++ b/Objects/public/core/typemethods.h @@ -0,0 +1,63 @@ + +#pragma once + +#include "Buffer.hpp" +#include "Strings.hpp" + +namespace obj { + + struct Interpreter; + struct Object; + struct ObjectType; + + struct TypeMethod { + enum { MAX_ARGS = 8 }; + struct Arg { + const char* descr = NULL; + mutable Object* obj = NULL; + }; + + const char* nameid = NULL; + const char* descr = NULL; + + mutable Object* self = NULL; + Arg args[MAX_ARGS]; + + tp::int1 mNargs = NULL; + + void (*exec)(const TypeMethod* tm) = NULL; + + mutable Arg ret; + + void operator()(Interpreter* interp) const; + + void init(); + }; + + extern TypeMethod gDefaultTypeMethods[3]; + + struct TypeMethods { + enum : tp::int2 { MAX_TYPE_METHODS = 128 }; + + TypeMethod* methods[MAX_TYPE_METHODS]; + tp::halni mNMethods = NULL; + + struct LookupKey { + tp::int2 key = -1; + tp::int2 type_depth = -1; + operator bool() { return key != -1; } + }; + + static LookupKey presents(const ObjectType*, tp::String); + static const TypeMethod* getMethod(const ObjectType*, LookupKey); + + void init(); + + tp::halni nMethods() const; + + private: + tp::int2 presents(tp::String) const; + const TypeMethod* getMethod(tp::int2) const; + }; + +}; \ No newline at end of file diff --git a/Objects/public/interpreter/bytecode.h b/Objects/public/interpreter/bytecode.h new file mode 100644 index 0000000..6453959 --- /dev/null +++ b/Objects/public/interpreter/bytecode.h @@ -0,0 +1,28 @@ + +#pragma once + +#include "opcodes.h" + +#include "primitives/intobject.h" +#include "primitives/stringobject.h" + +#include "Buffer.hpp" +#include "Strings.hpp" + +namespace obj { + + typedef Object* ConstData; + + struct ByteCode { + tp::Buffer mConstants; + tp::Buffer mInstructions; + tp::ualni mInstructionIdx = 0; + tp::ualni mArgumentsLoaded = 0; + + ~ByteCode() { + for (auto const_obj : mConstants) { + NDO->destroy(const_obj.data()); + } + } + }; +}; \ No newline at end of file diff --git a/Objects/public/interpreter/callstack.h b/Objects/public/interpreter/callstack.h new file mode 100644 index 0000000..afb97df --- /dev/null +++ b/Objects/public/interpreter/callstack.h @@ -0,0 +1,32 @@ +#pragma once + +#include "core/object.h" +#include "primitives/classobject.h" + +#include "Map.hpp" + +namespace obj { + struct MethodObject; +}; + +namespace obj { + + struct ByteCode; + + struct CallStack { + + struct CallFrame { + enum { CALL_DEPTH = 1024 }; + obj::Object* mSelf = NULL; + obj::MethodObject* mMethod = NULL; + tp::ualni mIp = 0; + }; + + void enter(const CallFrame& frame); + void leave(); + ByteCode* getBytecode(); + tp::halni len() const; + + tp::ConstSizeBuffer mStack; + }; +}; \ No newline at end of file diff --git a/Objects/public/interpreter/interpreter.h b/Objects/public/interpreter/interpreter.h new file mode 100644 index 0000000..eeab2cd --- /dev/null +++ b/Objects/public/interpreter/interpreter.h @@ -0,0 +1,29 @@ +#pragma once + +#include "operandsstack.h" +#include "scopestack.h" +#include "callstack.h" + +namespace obj { + struct Interpreter { + OperandStack mOperandsStack; + ScopeStack mScopeStack; + CallStack mCallStack; + + obj::Object* mLastParent = NULL; + bool mIsTypeMethod = false; + const TypeMethod* mTypeMethod = NULL; + + typedef struct { obj::Object* obj; tp::String id; } GlobalDef; + + void exec(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::init_list globals2 = {}); + + void stepBytecode(); + void stepBytecodeIn(); + void stepBytecodeOut(); + + bool finished(); + + void execAll(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::init_list globals2 = {}); + }; +}; \ No newline at end of file diff --git a/Objects/public/interpreter/opcodes.h b/Objects/public/interpreter/opcodes.h new file mode 100644 index 0000000..54fe22e --- /dev/null +++ b/Objects/public/interpreter/opcodes.h @@ -0,0 +1,158 @@ + +#pragma once + +#include "Common.hpp" + +// No Nested Scopes + +// Opcodes: +// Opcode input can be: +// 0) No Input +// 1) operands from OperandsStack (Operand) +// 2) Index of bytecode->ConstData from bytecode->Instruction (ConstData) +// 3) Raw Bytes from bytecode->Instruction (Param) + +namespace obj { + + extern struct OpcodeInfos gOpcodeInfos; + + enum class OpCode : tp::uint1 { + + NONE = 0x00, + HALT, + TERMINATE, + + DEF_LOCAL, + // Operand : String : local_id + // Operand : Any : object to be local + + LOAD_CONST, + LOAD_LOCAL, + // ConstData : idx of const object + + IGNORE, + + SCOPE_IN, + SCOPE_OUT, + + CALL, + RETURN_OBJ, + // Operand : Base : returned object + + RETURN, + + CHILD, + // Operand : String : child_id + // Operand : Base : parent + // Param : 1 bytes : is method? + + PUSH_ARGS, + SAVE_ARGS, + // Param : nubber of args + + OBJ_CREATE_LOCAL, + // Operand : String : type + // Operand : String : id + + OBJ_CREATE, + // Operand : String : type + + OBJ_COPY, + // Operand : Base: target + // Operand : Base: blueprint + + OBJ_SAVE, + OBJ_LOAD, + // Operand : String : path + // Operand : Base : target + + OBJ_ADD, + OBJ_SUB, + OBJ_MUL, + OBJ_DIV, + + AND, + OR, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + EQUAL_OR_MORE, + EQUAL_OR_LESS, + // Operand : Base: left + // Operand : Base: right + + NOT, + // Operand : Base: inv + + JUMP, + JUMP_R, + // Param : 2 bytes : offset + + JUMP_IF, + JUMP_IF_R, + JUMP_IF_NOT, + JUMP_IF_NOT_R, + // Operand : Base: condition + // Param : 2 bytes : offset + + + PRINT, + // Operand : Base: target + + CLASS_CONSTRUCT, + SELF, + + // ... + + END_OPCODES + }; + + struct OpcodeInfos { + + struct OperandsInfo { + struct Operand { + const char* obj_type = nullptr; + const char* desc = nullptr; + }; + + enum { MAX_OPERANDS = 5 }; + Operand buff[MAX_OPERANDS]; + tp::halni len = 0; + + OperandsInfo(); + OperandsInfo(tp::init_list list); + }; + + struct ParamsInfo { + struct Param { + const char* desc = nullptr; + tp::halni bytes = 1; + }; + + enum { MAX_PARAMS = 5 }; + Param buff[MAX_PARAMS]; + tp::halni len = 0; + + ParamsInfo(); + ParamsInfo(tp::init_list list); + }; + + struct OpInfo { + const char* name = nullptr; + const char* desc = nullptr; + OperandsInfo operands; + ParamsInfo params; + + tp::uint1 opsize(); + }; + + OpcodeInfos(); + OpInfo fetch(OpCode code); + + private: + OpInfo buff[(tp::alni)OpCode::END_OPCODES]; + + void add(OpCode code, const OpInfo& info); + }; +} \ No newline at end of file diff --git a/Objects/public/interpreter/operandsstack.h b/Objects/public/interpreter/operandsstack.h new file mode 100644 index 0000000..7300f21 --- /dev/null +++ b/Objects/public/interpreter/operandsstack.h @@ -0,0 +1,39 @@ +#pragma once + +#include "bytecode.h" +#include "core/object.h" + +namespace obj { + + // can be other aligned value as well + typedef obj::Object* Operand; + + class OperandStack { + + enum : tp::alni { + MAX_STACK_SIZE = 512 + }; + + public: + + Operand* mBuff; + tp::ualni mIdx; + + OperandStack(); + void push(Operand operand); + void pop(); + + Operand getOperand(); + + template + ObjectType* getOperand() { + auto operand = getOperand(); + auto ret = NDO_CAST(ObjectType, operand); + ASSERT(ret && "Operand Has Invalid Object Type"); + return ret; + } + + ~OperandStack(); + }; + +}; \ No newline at end of file diff --git a/Objects/public/interpreter/scopestack.h b/Objects/public/interpreter/scopestack.h new file mode 100644 index 0000000..9e1aae9 --- /dev/null +++ b/Objects/public/interpreter/scopestack.h @@ -0,0 +1,46 @@ +#pragma once + +#include "core/object.h" +#include "Map.hpp" + +namespace obj { + + struct Scope { + typedef tp::Map ObjDict; + typedef tp::List ObjList; + + ObjDict mLocals; + ObjList mTemps; + bool mChildReachable = true; + + ~Scope(); + }; + + class ScopeStack { + + enum : tp::alni { + MAX_STACK_SIZE = 1024 * 4 + }; + + public: + + Scope* mBuff; + tp::ualni mIdx; + tp::ualni mIterIdx; + + ScopeStack(); + void enterScope(bool aChildReachable); + void leaveScope(); + void addLocal(obj::Object* local, tp::String id); + void addTemp(obj::Object* tmp); + void popTemp(); + void addTempReturn(obj::Object* ret); + obj::Object* getLocal(tp::String& str); + Scope* getCurrentScope(); + ~ScopeStack(); + + private: + obj::Object* getLocalUtil(Scope& scope, tp::String* id); + }; + +}; \ No newline at end of file diff --git a/Objects/public/interpreter/script.h b/Objects/public/interpreter/script.h new file mode 100644 index 0000000..e89474e --- /dev/null +++ b/Objects/public/interpreter/script.h @@ -0,0 +1,12 @@ +#pragma once + +#include "interpreter/bytecode.h" + +namespace obj { + struct Script { + obj::StringObject* mReadable; + ByteCode mBytecode; + + void compile(); + }; +}; \ No newline at end of file diff --git a/Objects/public/parser/parser.h b/Objects/public/parser/parser.h new file mode 100644 index 0000000..7e53411 --- /dev/null +++ b/Objects/public/parser/parser.h @@ -0,0 +1,195 @@ +#pragma once +#include "NewPlacement.hpp" +#include "compiler/statement.h" +#include "compiler/expression.h" + +#include "Tokenizer.hpp" + +namespace obj { + + class Parser { + + struct Token { + + tp::String token; + + tp::alni integer; + tp::alnf floating; + bool boolean; + tp::String str; + + enum TokType : tp::alni { + __START__ = 0, + ID, + CONST_INT, + CONST_FLOAT, + CONST_STRING, + SCOPE_IN, + SCOPE_OUT, + ASSIGN, + DEF_FUNC, + PRINT, + IF, + ELSE, + WHILE, + BRACKET_IN, + BRACKET_OUT, + COMMA, + NEW, + CHILD, + RETURN, + EQUAL, + NOT_EQUAL, + MORE, + LESS, + QE_OR_MORE, + QE_OR_LESS, + BOOL_NOT, + BOOL_AND, + BOOL_OR, + ADD, + MUL, + SUB, + DIV, + QUOTES, + CONST_TRUE, + CONST_FALSE, + STM_END, + SPACE, + VAR, + CLASS_DEF, + SELF, + COMMENT_BLOCK, + __END__, + NO_TOKEN, + FAILED, + SOURCE_END_TOKEN, + } type; + + operator TokType() { + return type; + } + + bool isAriphm(); + bool isBoolean(); + }; + + typedef tp::SimpleTokenizer Tokenizer; + Tokenizer mTok; + + enum class ExprType { + BOOLEAN_NOT = 0, + BOOLEAN, + Ariphm, + NEW, + LOCAL, + CONST, + Compound + }; + + enum class StmType { + DefFunc = 0, + DefLocal, + Return, + Print, + If, + While, + Copy, + Call, + CLASS_DEF + }; + + public: + + Parser(); + + struct Error { + tp::String mDescr = "No Description"; + tp::alni mAdvanecedIdx = NULL; + + Error() {} + Error(tp::String descr, tp::alni idx) { + mDescr = descr; + mAdvanecedIdx = idx; + } + + tp::Pair get_err_location(const char* stream) { + tp::alni line = 1; + tp::alni colomn = 1; + + //assert(mAdvanecedIdx); + + for (auto i : tp::Range(mAdvanecedIdx)) { + if (stream[i] == '\n') { + colomn = 0; + line++; + } + colomn++; + } + + return { line, colomn }; + } + }; + + struct Resault { + Error* err = NULL; + obj::BCgen::StatementScope* scope = NULL; + } mRes; + + Resault parse(const tp::String& stream); + + private: + + Token tokRead(); + Token tokLookup(); + void tokSkip(); + bool tokInputLeft(); + Tokenizer::Cursor tokGetCursor(); + void tokSetCursor(Tokenizer::Cursor); + + BCgen::Expression* parseExprCompound(); + BCgen::Expression* parseExprNEW(); + BCgen::Expression* parseExprLOCAL(); + BCgen::Expression* parseExprCONST(); + BCgen::Expression* parseExprCHILD(BCgen::Expression* prnt); + BCgen::Expression* parseExprCALL(BCgen::Expression* prnt); + BCgen::Expression* parseExprAriphm(); + BCgen::Expression* parseExprBOOLEAN(); + BCgen::Expression* parseExprBOOLEAN_NOT(); + BCgen::Expression* parseExprFUNC(); + BCgen::Expression* parseExprChain(BCgen::Expression* prnt); + + BCgen::Expression* parseExpr(tp::init_list expressions = { + ExprType::BOOLEAN_NOT, + ExprType::BOOLEAN, + ExprType::Ariphm, + ExprType::NEW, + ExprType::LOCAL, + ExprType::CONST, + }); + + BCgen::Statement* parseStmCall(); + BCgen::Statement* parseStmDefFunc(); + BCgen::Statement* parseStmDefLocal(); + BCgen::Statement* parseStmReturn(); + BCgen::Statement* parseStmPrint(); + BCgen::Statement* parseStmIf(); + BCgen::Statement* parseStmWhile(); + BCgen::Statement* parseStmCopy(); + BCgen::Statement* parseStmClassDef(); + + BCgen::Statement* parseStm(tp::init_list stm_types = { + StmType::DefFunc, + StmType::DefLocal, + StmType::Return, + StmType::Print, + StmType::If, + StmType::While, + StmType::Copy, + StmType::Call, + StmType::CLASS_DEF + }); + + BCgen::StatementScope* parseScope(bool aPushToScopeStack); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/boolobject.h b/Objects/public/primitives/boolobject.h new file mode 100644 index 0000000..f669d6d --- /dev/null +++ b/Objects/public/primitives/boolobject.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct BoolObject : Object { + tp::alni val; + + static ObjectType TypeData; + static void constructor(BoolObject* self); + static void copy(BoolObject* self, const BoolObject* in); + + static BoolObject* create(bool in); + + static void from_int(BoolObject* self, tp::alni in); + static void from_float(BoolObject* self, tp::alnf in); + static void from_string(BoolObject* self, tp::String in); + static tp::String to_string(BoolObject* self); + static tp::alni to_int(BoolObject* self); + static tp::alnf to_float(BoolObject* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/classobject.h b/Objects/public/primitives/classobject.h new file mode 100644 index 0000000..2778972 --- /dev/null +++ b/Objects/public/primitives/classobject.h @@ -0,0 +1,49 @@ +#pragma once + +#include "primitives/dictobject.h" + +namespace obj { + + struct ClassObject : Object { + + static ObjectType TypeData; + static void copy(ClassObject* self, const ClassObject* in); + static void destructor(ClassObject* self); + static void constructor(ClassObject* self); + static tp::alni save_size(ClassObject* self); + static void save(ClassObject* self, Archiver& file_self); + static void load(Archiver& file_self, ClassObject* self); + + DictObject* members; + + void addMember(Object* obj, tp::String id); + void createMember(tp::String type, tp::String id); + + template + Type* createMember(tp::String id) { + auto out = NDO->create(Type::TypeData.name); + addMember(out, id); +#ifdef OBJECT_REF_COUNT + NDO->destroy(out); +#endif // OBJECT_REF_COUNT + + return (Type*) out; + } + + template + Type* getMember(const tp::String& id) { + auto idx = members->presents(id); + if (idx) { + return ((Type*)obj::ndo_cast(members->getSlotVal(idx), &Type::TypeData)); + } + return NULL; + } + + template + Type* getMemberAssert(const tp::String& id) { + auto out = getMember(id); + assert(out && "invalid member access"); + return out; + } + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/colorobject.h b/Objects/public/primitives/colorobject.h new file mode 100644 index 0000000..831c761 --- /dev/null +++ b/Objects/public/primitives/colorobject.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/object.h" +#include "Color.hpp" + +namespace obj { + + struct ColorObject : Object { + tp::RGBA mCol; + + static ObjectType TypeData; + static ObjectTypeAriphmetics TypeAriphm; + + static void constructor(Object* self); + static void copy(ColorObject* self, const ColorObject* in); + + static void from_int(ColorObject* self, tp::alni in); + static void from_float(ColorObject* self, tp::alnf in); + static tp::String to_string(ColorObject* self); + + static ColorObject* create(tp::RGBA in); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/dictobject.h b/Objects/public/primitives/dictobject.h new file mode 100644 index 0000000..6445196 --- /dev/null +++ b/Objects/public/primitives/dictobject.h @@ -0,0 +1,31 @@ +#pragma once + +#include "core/object.h" + +namespace obj { + + struct DictObject : Object { + static ObjectType TypeData; + static void copy(Object* self, const Object* in); + static void destructor(Object* self); + static void constructor(Object* self); + + static tp::alni save_size(DictObject* self); + static void save(DictObject* self, Archiver& file_self); + static void load(Archiver& file_self, DictObject* self); + static tp::Buffer childs_retrival(DictObject* self); + static tp::alni allocated_size(DictObject* self); + static tp::alni allocated_size_recursive(DictObject* self); + + void put(tp::String, Object*); + void remove(tp::String); + Object* get(tp::String); + tp::Map::Idx presents(tp::String); + Object* getSlotVal(tp::alni); + + const tp::Map& getItems() const; + + private: + tp::Map items; + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/enumobject.h b/Objects/public/primitives/enumobject.h new file mode 100644 index 0000000..13aebef --- /dev/null +++ b/Objects/public/primitives/enumobject.h @@ -0,0 +1,34 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct EnumObject : Object { + + // one entry is 2 * sizeof(alni) in size + tp::uhalni active; + tp::uhalni nentries; + tp::alni* entries; + + static ObjectType TypeData; + static void constructor(EnumObject* self); + static void destructor(EnumObject* self); + static void copy(EnumObject* self, const EnumObject* in); + + void init(tp::init_list list); + const char* getActiveName(); + const char* getItemName(tp::uhalni idx); + + static void from_int(EnumObject* self, tp::alni in); + static void from_float(EnumObject* self, tp::alnf in); + static void from_string(EnumObject* self, tp::String in); + static tp::String to_string(EnumObject* self); + static tp::alni to_int(EnumObject* self); + static tp::alnf to_float(EnumObject* self); + + static bool compare(EnumObject* first, EnumObject* second); + static EnumObject* create(tp::init_list list); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/floatobject.h b/Objects/public/primitives/floatobject.h new file mode 100644 index 0000000..5013383 --- /dev/null +++ b/Objects/public/primitives/floatobject.h @@ -0,0 +1,26 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct FloatObject : Object { + tp::alnf val; + + static ObjectType TypeData; + static ObjectTypeAriphmetics TypeAriphm; + + + static void constructor(FloatObject* self); + static void copy(FloatObject* self, const FloatObject* in); + static FloatObject* create(tp::alnf in); + + static void from_int(FloatObject* self, tp::alni in); + static void from_float(FloatObject* self, tp::alnf in); + static void from_string(FloatObject* self, tp::String in); + static tp::String to_string(FloatObject* self); + static tp::alni to_int(FloatObject* self); + static tp::alnf to_float(FloatObject* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/interpreterobject.h b/Objects/public/primitives/interpreterobject.h new file mode 100644 index 0000000..5710924 --- /dev/null +++ b/Objects/public/primitives/interpreterobject.h @@ -0,0 +1,19 @@ +#pragma once + +#include "interpreter/interpreter.h" +#include "primitives/classobject.h" + +namespace obj { + struct InterpreterObject : ClassObject { + static ObjectType TypeData; + Interpreter mInterpreter; + + static void destructor(InterpreterObject* self); + static void constructor(InterpreterObject* self); + static void load(Archiver& file_self, InterpreterObject* self); + + void exec(obj::ClassObject* self = NULL, tp::init_list globals = {}); + void debug(); + bool running(); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/intobject.h b/Objects/public/primitives/intobject.h new file mode 100644 index 0000000..0f26799 --- /dev/null +++ b/Objects/public/primitives/intobject.h @@ -0,0 +1,25 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct IntObject : Object { + tp::alni val; + + static ObjectType TypeData; + static ObjectTypeAriphmetics TypeAriphm; + + static void constructor(Object* self); + static void copy(IntObject* self, const IntObject* in); + static IntObject* create(tp::alni in); + + static void from_int(Object* self, tp::alni in); + static void from_float(Object* self, tp::alnf in); + static void from_string(Object* self, tp::String in); + static tp::String to_string(Object* self); + static tp::alni to_int(Object* self); + static tp::alnf to_float(Object* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/linkobject.h b/Objects/public/primitives/linkobject.h new file mode 100644 index 0000000..52b7129 --- /dev/null +++ b/Objects/public/primitives/linkobject.h @@ -0,0 +1,29 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct LinkObject : Object { + static ObjectType TypeData; + static void constructor(Object* self); + static void destructor(LinkObject* self); + static void copy(Object* self, const Object* in); + static LinkObject* create(Object* in); + + static tp::alni save_size(LinkObject* self); + static void save(LinkObject* self, Archiver& file_self); + static void load(Archiver& file_self, LinkObject* self); + static tp::alni allocated_size(LinkObject* self); + static tp::alni allocated_size_recursive(LinkObject* self); + static tp::Buffer childs_retrival(LinkObject* self); + + Object* getLink(); + void setLink(Object* obj); + + private: + Object* link; + }; + +}; \ No newline at end of file diff --git a/Objects/public/primitives/listobject.h b/Objects/public/primitives/listobject.h new file mode 100644 index 0000000..bd17841 --- /dev/null +++ b/Objects/public/primitives/listobject.h @@ -0,0 +1,36 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + enum ListMethods { + LISTOBJECT_PUSH_BACK, + LISTOBJECT_GET_LENGTH, + }; + + struct ListObject : Object { + static ObjectType TypeData; + static void constructor(Object* self); + static void copy(Object* self, const Object* in); + static void destructor(Object* self); + + static tp::alni allocated_size_recursive(ListObject* self); + static tp::alni allocated_size(ListObject* self); + static tp::Buffer childs_retrival(ListObject* self); + static void load(Archiver& file_self, ListObject* self); + static void save(ListObject* self, Archiver& file_self); + static tp::alni save_size(ListObject* self); + + const tp::List& getItems() const; + + void pushBack(Object* obj); + void pushFront(Object* obj); + void popBack(); + void delNode(tp::List::Node*); + + private: + tp::List items; + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/methodobject.h b/Objects/public/primitives/methodobject.h new file mode 100644 index 0000000..e4aedf3 --- /dev/null +++ b/Objects/public/primitives/methodobject.h @@ -0,0 +1,28 @@ +#pragma once + +#include "primitives/stringobject.h" +#include "interpreter/script.h" + +namespace obj { + + struct MethodObject : Object { + + static ObjectType TypeData; + + Script* mScript; + + static void constructor(MethodObject* self); + static void copy(MethodObject* self, MethodObject* in); + static void destructor(MethodObject* self); + static tp::alni save_size(MethodObject* self); + static void save(MethodObject* self,Archiver& file_self); + static void load(Archiver& file_self, obj::MethodObject* self); + + static void Initialize(); + static void UnInitialize(); + + void compile(); + + static MethodObject* create(tp::String script); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/nullobject.h b/Objects/public/primitives/nullobject.h new file mode 100644 index 0000000..0d71524 --- /dev/null +++ b/Objects/public/primitives/nullobject.h @@ -0,0 +1,32 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + extern struct NullObject* NdoNull_globalInstance; + + struct NullObject : Object { + + static void destructor(Object* self); + static ObjectType TypeData; + static void uninit(); + static Object* null_return() { + if (!NdoNull_globalInstance) { + NdoNull_globalInstance = (NullObject*) NDO->create("null"); + obj::NDO->refinc(NdoNull_globalInstance); + } + return (Object*) NdoNull_globalInstance; + } + + static Object* null_return_ref() { + obj::NDO->refinc(null_return()); + return NdoNull_globalInstance; + } + }; + + #define NDO_NULL obj::NullObject::null_return() + #define NDO_NULL_REF obj::NullObject::null_return_ref() + +}; \ No newline at end of file diff --git a/Objects/public/primitives/primitives.h b/Objects/public/primitives/primitives.h new file mode 100644 index 0000000..e659765 --- /dev/null +++ b/Objects/public/primitives/primitives.h @@ -0,0 +1,22 @@ + +#pragma once + +#include "primitives/dictobject.h" +#include "primitives/intobject.h" +#include "primitives/linkobject.h" +#include "primitives/listobject.h" +#include "primitives/nullobject.h" +#include "primitives/stringobject.h" +#include "primitives/boolobject.h" +#include "primitives/floatobject.h" +#include "primitives/enumobject.h" +#include "primitives/classobject.h" +#include "primitives/colorobject.h" +#include "primitives/methodobject.h" +#include "primitives/interpreterobject.h" +#include "primitives/typeobject.h" + +namespace obj { + void primitives_define_types(); + void primitives_uninitialize(); +}; \ No newline at end of file diff --git a/Objects/public/primitives/stringobject.h b/Objects/public/primitives/stringobject.h new file mode 100644 index 0000000..6f0b841 --- /dev/null +++ b/Objects/public/primitives/stringobject.h @@ -0,0 +1,24 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct StringObject : Object { + tp::String val; + + static ObjectType TypeData; + static void constructor(Object* self); + static void destructor(StringObject* self); + static void copy(Object* self, const Object* in); + static StringObject* create(tp::String in); + + static void from_int(StringObject* self, tp::alni in); + static void from_float(StringObject* self, tp::alnf in); + static void from_string(StringObject* self, tp::String in); + static tp::String to_string(StringObject* self); + static tp::alni to_int(StringObject* self); + static tp::alnf to_float(StringObject* self); + }; +}; \ No newline at end of file diff --git a/Objects/public/primitives/typeobject.h b/Objects/public/primitives/typeobject.h new file mode 100644 index 0000000..53b1f5a --- /dev/null +++ b/Objects/public/primitives/typeobject.h @@ -0,0 +1,13 @@ + +#pragma once + +#include "core/object.h" + +namespace obj { + + struct TypeObject : Object { + static ObjectType TypeData; + const ObjectType* mTypeRef; + static TypeObject* create(const ObjectType* type); + }; +}; \ No newline at end of file diff --git a/Objects/rsc/script.osc b/Objects/rsc/script.osc new file mode 100644 index 0000000..da04039 --- /dev/null +++ b/Objects/rsc/script.osc @@ -0,0 +1,15 @@ + +class A { + var string = "hello"; + def log(name) { + << self.string; + << name; + } +} + +def main() { + var a = new A(); + a.log("user"); +} + +main(); \ No newline at end of file diff --git a/Objects/tests/TestEntry.cpp b/Objects/tests/TestEntry.cpp new file mode 100644 index 0000000..c625e7e --- /dev/null +++ b/Objects/tests/TestEntry.cpp @@ -0,0 +1,90 @@ + + +#include "MethodObject/methodobject.h" +#include "primitives/primitives.h" + +#include "Interpreter/Interpreter.h" + +#include "log.h" + +#include "ByteCodeGen/Function.h" + +using namespace osc; +using namespace tp; +using namespace obj; + +void TestCompile(ByteCode& bytecode) { + using namespace BCgen; + + Genereate(bytecode, + StmScope({ + + StmDefFunc("main", {}, { + StmDefLocal("i1", ExprConst(1)), + StmDefLocal("i2", ExprConst(2)), + + StmDefFunc("add", {"first", "second"}, { + StmReturn(ExprAdd(ExprLocal("first"), ExprLocal("second"))) + }), + + StmPrint(ExprLocal("i1")), + StmPrint(ExprConst(" + ")), + StmPrint(ExprLocal("i2")), + StmPrint(ExprConst(" = ")), + + StmPrint(ExprFunc("add")->ExprCall({ ExprLocal("i1"), ExprLocal("i2") })), + + StmPrint(ExprConst("\n")), + }), + + StmPrint(ExprBoolNot(ExprConst(0))), + + StmWhile(ExprConst(false), StmScope({ + StmIgnore(ExprFunc("main")->ExprCall({})) + }) + ), + + StmIf(ExprConst(true), + StmScope({ + //StmIgnore(ExprFunc("main")->ExprCall({})), + //StmPrint(ExprConst("true")), + }), + StmScope({ + //StmPrint(ExprConst("false")), + }) + ) + }) + ); +} + +int main(int argc, char* argv[]) { + + tp::alloc_init(); + string::Initialize(); + Logger::init(); + + objects_init(); + primitives_define_types(); + MethodObject::Initialize(); + + { + Interpreter interp; + + ByteCode bytecode; + TestCompile(bytecode); + + GLog->write(" >> Exec: start \n"); + auto start = get_time(); + interp.exec(&bytecode); + auto end = get_time(); + GLog->write(sfmt("\n >> Exec time %i ms", end - start)); + } + + MethodObject::UnInitialize(); + objects_finalize(); + primitives_uninitialize(); + + Logger::deinit(); + string::UnInitialize(); + tp::alloc_uninit(); +} \ No newline at end of file diff --git a/Objects/tests/test.cpp b/Objects/tests/test.cpp new file mode 100644 index 0000000..6ed1c96 --- /dev/null +++ b/Objects/tests/test.cpp @@ -0,0 +1,75 @@ + +#include "primitives/primitives.h" + +#include "compiler/function.h" +#include "interpreter/interpreter.h" + +#include "CmdArgParser.h" + +void compile(char argc, const char* argv[]) { + tp::CmdArgParser args = { + { "script", tp::CmdArgParser::Arg::FILE_IN }, + { "out", "out.mo" } + }; + + if (!args.parse(argc, argv, true)) { + return; + } + + auto& script_file = args.getFile("script"); + auto outpath = args.getString("out"); + + tp::string script; + script.loadFile(&script_file); + + auto method = obj::MethodObject::create(script); + + obj::NDO->save(method, outpath); +} + +void execute(char argc, const char* argv[]) { + tp::CmdArgParser args = { + { "object_path", tp::CmdArgParser::Arg::STR }, + { "debug", false } + }; + + if (!args.parse(argc, argv, true)) { + return; + } + + auto object_path = args.getString("object_path"); + auto debug = args.getBool("debug"); + + auto obj = obj::NDO->load(object_path); + if (!obj) { + printf("Invalid Object File\n"); + return; + } + + NDO_CASTV(obj::MethodObject, obj, method); + if (!method) { + printf("Object Is Not A Method\n"); + return; + } + + obj::Interpreter interpreter; + interpreter.execAll(method); +} + + +int main(char argc, const char* argv[]) { + + tp::ModuleManifest* ModuleDependencies[] = { &obj::gModuleObjects, NULL }; + tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies); + if (!TestModule.initialize()) { + return 1; + } + +#ifdef OBC + compile(argc, argv); +#elif OBVM + execute(argc, argv); +#endif // OBC + + TestModule.deinitialize(); +} \ No newline at end of file diff --git a/TODO b/TODO index 25baf47..cf4062f 100644 --- a/TODO +++ b/TODO @@ -2,7 +2,19 @@ Testing ! Serialization ! Objects: - Implement ! + Serialization + Alloc Size queries + Compile !! + parser print error + write tests before refactor !! + remove obj_ref_count macro + fix all clang-tidy notices + write archiver + replace all strings with const string ref + replace all type usages with typedefs + remove tp:: + rename classes + move functions around Storage: Finish networking diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp index 3a041c5..cdee460 100644 --- a/Tokenizer/public/Tokenizer.hpp +++ b/Tokenizer/public/Tokenizer.hpp @@ -111,7 +111,7 @@ namespace tp { if (!mSource) { return false; } - if (mSource[mAdvancedOffset] == nullptr) { + if (mSource[mAdvancedOffset] == 0) { return false; } return true; diff --git a/Utils/private/Utils.cpp b/Utils/private/Utils.cpp index 48e351b..11f2011 100644 --- a/Utils/private/Utils.cpp +++ b/Utils/private/Utils.cpp @@ -87,6 +87,9 @@ namespace tp { return 0; } + bool memEqual(const void* left, const void* right, uhalni len) { + return memCompare(left, right, len) == 0; + } int1 memCompareVal(const void* left, uhalni len, uint1 val) { MODULE_SANITY_CHECK(gModuleBase) diff --git a/Utils/public/Utils.hpp b/Utils/public/Utils.hpp index 740f4d0..0cef950 100644 --- a/Utils/public/Utils.hpp +++ b/Utils/public/Utils.hpp @@ -12,6 +12,7 @@ namespace tp { void memSetVal(void* p, uhalni byteSize, uint1 val); void memCopy(void* left, const void* right, uhalni len); int1 memCompare(const void* left, const void* right, uhalni len); + bool memEqual(const void* left, const void* right, uhalni len); int1 memCompareVal(const void* left, uhalni len, uint1 val); } From 01ba8160ef83481074b8cad80d3e3df395fc4c10 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 25 Jul 2023 20:29:38 +0300 Subject: [PATCH 36/68] Generating permutations and small buffer checks --- Containers/public/Buffer.hpp | 32 ++++++++++++++++++++++++++++++++ Modules/public/Assert.hpp | 2 -- TODO | 1 + 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index 31ab348..b889348 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -318,4 +318,36 @@ namespace tp { mSize = newSize; } }; + + + template + void generatePermutations(const Buffer>& in, Buffer>& out) { + typedef long long Idx; + + // sanity check + for (const auto & vec : in) { + if (!vec.size()) return; + } + + out.resize(in.size()); + auto len = Idx(1); + for (const auto & vec : in) len *= (Idx) vec.size(); + for (auto i = 0; i < in.size(); i++) out[i].resize(len); + + auto dub = Idx(1); + for (auto power = (Idx) in.size() - 1; power >= 0; power--) { + auto& vec = in[power]; + long long i = 0; + while (i < len) { + for (auto val : vec) { + for (auto j = 0; j < dub; j++) { + out[power][i] = val; + i++; + } + } + } + dub *= (Idx) vec.size(); + } + } + } \ No newline at end of file diff --git a/Modules/public/Assert.hpp b/Modules/public/Assert.hpp index c85ac87..f80ad71 100644 --- a/Modules/public/Assert.hpp +++ b/Modules/public/Assert.hpp @@ -18,8 +18,6 @@ namespace tp { #define DEBUG_ASSERT(exp) {} #endif - - #if defined(ENV_OS_WINDOWS) #define DEBUG_BREAK(expr) if (expr) { __debugbreak(); } #elif defined(ENV_OS_ANDROID) diff --git a/TODO b/TODO index cf4062f..c37edc4 100644 --- a/TODO +++ b/TODO @@ -30,6 +30,7 @@ Utils: Containers: Add variant size buffer + Buffer add resize function Buffer improvements Add mem leakage tests Add check copy times From 3575cbc543236abf6201b35a0c7020f03ae6b8f3 Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Tue, 25 Jul 2023 18:47:00 +0300 Subject: [PATCH 37/68] Archiver Initial --- CMakeLists.txt | 2 +- CMakeSettings.json | 15 ++ CommandLine/private/CommandLine.cpp | 2 +- CommandLine/public/CommandLine.hpp | 2 +- Containers/public/Buffer.hpp | 67 ++++++++- Containers/public/Buffer2D.hpp | 34 ++++- Containers/public/List.hpp | 27 ++-- Containers/public/Map.hpp | 33 ++--- Containers/public/Tree.hpp | 31 +++- Containers/tests/ListTest.cpp | 14 +- Containers/tests/MapTest.cpp | 10 +- Containers/tests/Tests.hpp | 31 ---- Math/private/Camera.cpp | 2 +- Math/public/Vec.hpp | 32 ++--- Modules/.vs/slnx.sqlite | Bin 0 -> 90112 bytes Modules/CMakeLists.txt | 3 +- Modules/public/Archiver.hpp | 146 +++++++++++++++++++ Modules/public/Common.hpp | 29 +++- Modules/public/SizeCounter.hpp | 50 +++++++ Modules/tests/TestArchiver.cpp | 202 +++++++++++++++++++++++++++ Modules/tests/Tests.cpp | 12 +- TODO | 22 +-- Tokenizer/public/RegularExpression.h | 4 +- Tokenizer/public/Tokenizer.hpp | 4 +- Utils/tests/Tests.cpp | 2 +- 25 files changed, 652 insertions(+), 124 deletions(-) create mode 100644 CMakeSettings.json create mode 100644 Modules/.vs/slnx.sqlite create mode 100644 Modules/public/Archiver.hpp create mode 100644 Modules/public/SizeCounter.hpp create mode 100644 Modules/tests/TestArchiver.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index d0d6658..147af07 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,4 +25,4 @@ add_subdirectory(Externals) add_subdirectory(Connection) add_subdirectory(Graphics) -add_subdirectory(Objects) +#add_subdirectory(Objects) diff --git a/CMakeSettings.json b/CMakeSettings.json new file mode 100644 index 0000000..03cbf8d --- /dev/null +++ b/CMakeSettings.json @@ -0,0 +1,15 @@ +{ + "configurations": [ + { + "name": "x64-Debug", + "generator": "Ninja", + "configurationType": "Debug", + "inheritEnvironments": [ "msvc_x64_x64" ], + "buildRoot": "${projectDir}\\out\\build\\${name}", + "installRoot": "${projectDir}\\out\\install\\${name}", + "cmakeCommandArgs": "", + "buildCommandArgs": "", + "ctestCommandArgs": "" + } + ] +} \ No newline at end of file diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index f937e2a..35bfb35 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -93,7 +93,7 @@ CommandLine::Arg::~Arg() { } } -CommandLine::CommandLine(const init_list& args) { +CommandLine::CommandLine(const InitialierList& args) { bool optional_start = false; for (auto& arg : args) { diff --git a/CommandLine/public/CommandLine.hpp b/CommandLine/public/CommandLine.hpp index b0ad457..9573dc9 100644 --- a/CommandLine/public/CommandLine.hpp +++ b/CommandLine/public/CommandLine.hpp @@ -67,7 +67,7 @@ namespace tp { operator bool() { return mDescr != nullptr; } } mError; - CommandLine(const init_list& args); + CommandLine(const InitialierList& args); ~CommandLine(); void resetError() { mError.mDescr = nullptr; } diff --git a/Containers/public/Buffer.hpp b/Containers/public/Buffer.hpp index b889348..7888002 100644 --- a/Containers/public/Buffer.hpp +++ b/Containers/public/Buffer.hpp @@ -20,7 +20,7 @@ namespace tp { template class ConstSizeBuffer { - typedef SelCopyArg Arg; + typedef SelectValueOrReference Arg; private: tType mBuff[tSize]; @@ -29,6 +29,12 @@ namespace tp { public: ConstSizeBuffer() = default; + ~ConstSizeBuffer() { + for (auto i = 0; i < mLoad; i++) { + mBuff[i].~tType(); + } + } + public: [[nodiscard]] ualni size() const { return mLoad; } [[nodiscard]] ualni getBuffSize() const { return tSize; } @@ -75,13 +81,18 @@ namespace tp { mLoad--; } - ConstSizeBuffer& operator=(const tp::init_list& init) { + ConstSizeBuffer& operator=(const tp::InitialierList& init) { for (auto arg : init) { append(arg); } return *this; } + void clear() { + this->~ConstSizeBuffer(); + new (this) ConstSizeBuffer(); + } + public: class IteratorPointer { @@ -125,6 +136,24 @@ namespace tp { [[nodiscard]] Iterator end() const { return Iterator(mBuff + mLoad); } + + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mLoad; + for (auto item : *this) { + ar << item.data(); + } + } + + template + void archiveRead(tArchiver& ar) { + clear(); + ar >> mLoad; + for (auto i = 0; i < mLoad; i++) { + ar >> mBuff[i]; + } + } }; template< @@ -135,7 +164,7 @@ namespace tp { ualni tMinSize = 4 > class Buffer { - typedef SelCopyArg Arg; + typedef SelectValueOrReference Arg; private: tType* mBuff; @@ -157,10 +186,14 @@ namespace tp { for (ualni i = 0; i < mLoad; i++) new (&mBuff[i]) tType(in.mBuff[i]); } + void clear() { + this->~Buffer(); + new (this) Buffer(); + } + Buffer& operator=(const Buffer& in) { if (this == &in) return *this; - this->~Buffer(); - new (this) Buffer(in); + clear(); return *this; } @@ -219,7 +252,7 @@ namespace tp { } public: - Buffer& operator=(const tp::init_list& init) { + Buffer& operator=(const tp::InitialierList& init) { // TODO : optimize for (auto arg : init) { append(arg); @@ -307,6 +340,28 @@ namespace tp { return Iterator(mBuff + mLoad); } + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mLoad; + for (auto item : *this) { + ar << item.data(); + } + } + + template + void archiveRead(tArchiver& ar) { + clear(); + decltype(mLoad) len; + ar >> len; + for (auto i = len; i; i--) { + // TODO : optimize + if (mLoad == mSize) resizeBuffer(tResizePolicy(mSize)); + ar >> mBuff[mLoad]; + mLoad++; + } + } + private: void resizeBuffer(ualni newSize) { DEBUG_ASSERT(newSize >= mLoad) diff --git a/Containers/public/Buffer2D.hpp b/Containers/public/Buffer2D.hpp index d8e5205..32ab6cb 100644 --- a/Containers/public/Buffer2D.hpp +++ b/Containers/public/Buffer2D.hpp @@ -15,7 +15,7 @@ namespace tp { public: typedef ualni Index; typedef Pair Index2D; - typedef SelCopyArg tTypeArg; + typedef SelectValueOrReference tTypeArg; private: tAllocator mAlloc; @@ -40,6 +40,7 @@ namespace tp { ~Buffer2D() { deleteBuffer(); + mSize = { 0, 0 }; } explicit Buffer2D(Index2D aSize) { @@ -55,17 +56,17 @@ namespace tp { } inline tType& get(const Index2D& at) { - DEBUG_ASSERT(at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + DEBUG_ASSERT(mBuff && at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) return *(mBuff + mSize.x * at.y + at.x); } inline const tType& get(const Index2D& at) const { - DEBUG_ASSERT(at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + DEBUG_ASSERT(mBuff && at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) return *(mBuff + mSize.x * at.y + at.x); } inline void set(const Index2D& at, tTypeArg value) { - DEBUG_ASSERT(at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) + DEBUG_ASSERT(mBuff && at.x < mSize.x && at.y < mSize.y && at.x >= 0 && at.y >= 0) *(mBuff + mSize.x * at.y + at.x) = value; } @@ -77,10 +78,35 @@ namespace tp { } void assign(tType value) { + DEBUG_ASSERT(mBuff); Index len = mSize.x * mSize.y; for (Index i = 0; i < len; i++) { mBuff[i] = value; } } + + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mSize; + for (auto i = 0; i < mSize.x; i++) { + for (auto j = 0; j < mSize.y; j++) { + ar << get(i, j); + } + } + } + + template + void archiveRead(tArchiver& ar) { + decltype(mSize) size; + deleteBuffer(); + ar >> size; + reserve(size); + for (auto i = 0; i < mSize.x; i++) { + for (auto j = 0; j < mSize.y; j++) { + ar >> get(i, j); + } + } + } }; } \ No newline at end of file diff --git a/Containers/public/List.hpp b/Containers/public/List.hpp index 470781b..2da3168 100644 --- a/Containers/public/List.hpp +++ b/Containers/public/List.hpp @@ -10,7 +10,7 @@ namespace tp { template class List { - typedef SelCopyArg TypeArg; + typedef SelectValueOrReference TypeArg; typedef ualni Index; public: @@ -73,7 +73,7 @@ namespace tp { List() = default; - List(const init_list& list) { operator=(list); } + List(const InitialierList& list) { operator=(list); } [[nodiscard]] inline Node* first() const { return mFirst; } [[nodiscard]] inline Node* last() const { return mLast; } @@ -221,7 +221,7 @@ namespace tp { return *this; } - List& operator+=(const init_list& list) { + List& operator+=(const InitialierList& list) { for (auto item : list) { pushBack(item); } @@ -235,7 +235,7 @@ namespace tp { return *this; } - List& operator=(const init_list& list) { + List& operator=(const InitialierList& list) { removeAll(); *this += list; return *this; @@ -295,22 +295,23 @@ namespace tp { } } - template - void write(Saver& file) const { - file.write(mLength); + public: + template + void archiveWrite(tArchiver& ar) const { + ar << mLength; for (auto item : *this) { - file.write(item.data()); + ar << item.data(); } } - template - void read(Loader& file) { + template + void archiveRead(tArchiver& ar) { removeAll(); - ualni len; - file.read(len); + decltype(mLength) len; + ar >> len; for (auto i = len; i; i--) { auto node = newNodeNotConstructed(); - file.read(node->data); + ar >> node->data; pushBack(node); } } diff --git a/Containers/public/Map.hpp b/Containers/public/Map.hpp index cac899e..eb80279 100644 --- a/Containers/public/Map.hpp +++ b/Containers/public/Map.hpp @@ -7,11 +7,11 @@ namespace tp { template - ualni DefaultHashFunc(SelCopyArg key) { + ualni DefaultHashFunc(SelectValueOrReference key) { return hash(key); } - template) = DefaultHashFunc, int tTableInitialSize = 4> + template) = DefaultHashFunc, int tTableInitialSize = 4> class Map { enum { @@ -20,8 +20,8 @@ namespace tp { MAP_MAX_LOAD_PERCENTAGE = 66, }; - typedef SelCopyArg KeyArg; - typedef SelCopyArg ValArg; + typedef SelectValueOrReference KeyArg; + typedef SelectValueOrReference ValArg; public: @@ -35,7 +35,8 @@ namespace tp { struct Idx { alni idx = -1; - operator bool() { return idx != -1; } + [[nodiscard]] bool isValid() const { return bool(*this); } + explicit operator bool() const { return idx != -1; } }; private: @@ -365,24 +366,24 @@ namespace tp { return mNSlots; } - template - void write(Saver& file) { - file.write(mNEntries); + template + void archiveWrite(Archiver& ar) const { + ar << mNEntries; for (auto item : *this) { - file.write(item->val); - file.write(item->key); + ar << item->val; + ar << item->key; } } - template - void read(Loader& file) { + template + void archiveRead(Archiver& ar) { removeAll(); - ualni len; - file.read(len); + decltype(mNSlots) len; + ar >> len; for (auto i = len; i; i--) { auto node = newNodeNotConstructed(); - file.read(node->val); - file.read(node->key); + ar >> node->val; + ar >> node->key; put(node); } } diff --git a/Containers/public/Tree.hpp b/Containers/public/Tree.hpp index dfeefc2..2dd1ec7 100644 --- a/Containers/public/Tree.hpp +++ b/Containers/public/Tree.hpp @@ -25,8 +25,8 @@ namespace tp { template class AvlTree { - typedef SelCopyArg KeyArg; - typedef SelCopyArg DataArg; + typedef SelectValueOrReference KeyArg; + typedef SelectValueOrReference DataArg; public: class Node { @@ -369,5 +369,32 @@ namespace tp { } bool isValid() { return findInvalidNode(head()) == nullptr; } + + template + void traverse(Node* node, bool after, tFunctor functor) { + if (!after) functor(node); + if (node->mLeft) traverse(node->mLeft, after, functor); + if (node->mRight) traverse(node->mRight, after, functor); + if (after) functor(node); + } + + void removeAll() { + traverse(mRoot, true, [this](Node* node) { + deleteNode(node); + }); + mRoot = nullptr; + mSize = 0; + } + + public: + template + void archiveWrite(tArchiver& file) const { + FAIL("not implemented") + } + + template + void archiveRead(tArchiver&) { + FAIL("not implemented") + } }; } \ No newline at end of file diff --git a/Containers/tests/ListTest.cpp b/Containers/tests/ListTest.cpp index e23deb4..394826f 100644 --- a/Containers/tests/ListTest.cpp +++ b/Containers/tests/ListTest.cpp @@ -2,6 +2,7 @@ #include "Tests.hpp" #include "Testing.hpp" +#include "Archiver.hpp" using namespace tp; @@ -53,18 +54,19 @@ TEST_DEF_STATIC(Copy) { list2.removeAll(); } -TEST_DEF_STATIC(SaveLoad) { +TEST_DEF_STATIC(Serialization) { tp::List list = { TestClass(1), TestClass(2), TestClass(3), TestClass(4) }; - TestFile file; + ArchiverExample<1024, false> write; + ArchiverExample<1024, true> read; - list.write(file); + write % list; list.removeAll(); - file.setAddress(0); + memCopy(read.mBuff, write.mBuff, sizeof(write.mBuff)); - list.read(file); + read % list; ualni i = 0; for (auto iter : list) { @@ -79,5 +81,5 @@ TEST_DEF_STATIC(SaveLoad) { TEST_DEF(List) { testSimplePointer(); testSimpleReference(); - testSaveLoad(); + testSerialization(); } \ No newline at end of file diff --git a/Containers/tests/MapTest.cpp b/Containers/tests/MapTest.cpp index d5ce1f7..1afd47e 100644 --- a/Containers/tests/MapTest.cpp +++ b/Containers/tests/MapTest.cpp @@ -3,6 +3,7 @@ #include "Tests.hpp" #include "Testing.hpp" #include "Map.hpp" +#include "Archiver.hpp" using namespace tp; @@ -100,17 +101,18 @@ TEST_DEF_STATIC(SaveLoad) { map.put(i, TestClass(i)); } - TestFile file; + ArchiverExample<1024, false> write; + ArchiverExample<1024, true> read; - map.write(file); + write % map; map.removeAll(); TEST(map.size() == 0); - file.setAddress(0); + memCopy(read.mBuff, write.mBuff, sizeof(write.mBuff)); - map.read(file); + read % map; TEST(map.size() == 10); diff --git a/Containers/tests/Tests.hpp b/Containers/tests/Tests.hpp index 3e47e0b..20f09ef 100644 --- a/Containers/tests/Tests.hpp +++ b/Containers/tests/Tests.hpp @@ -28,37 +28,6 @@ public: void setVal(tp::ualni val) { val1 = val; } }; -class TestFile { - tp::ualni mem[1024] = { 0 }; - tp::ualni address = 0; - -public: - TestFile() = default; - - template - void write(const Type& val) { - val.write(*this); - } - - template<> - void write(const tp::ualni& val) { - mem[address] = val; - address++; - } - - void setAddress(tp::ualni addr) { address = addr; } - - template - void read(Type& val) { - val.read(*this); - } - - template<> - void read(tp::ualni& val) { - val = mem[address]; - address++; - } -}; void testList(); void testMap(); diff --git a/Math/private/Camera.cpp b/Math/private/Camera.cpp index d024aab..a2c6800 100644 --- a/Math/private/Camera.cpp +++ b/Math/private/Camera.cpp @@ -67,7 +67,7 @@ Vec3F Camera::project(Vec2F normalized) { halnf w = halnf((mTarget - mPos).length()); Vec4 world_pos4(normalized.x * w, normalized.y * w, z, w); - return inv * world_pos4; + return Vec3F(inv * world_pos4); } Vec2F Camera::project(const Vec3F& world) { diff --git a/Math/public/Vec.hpp b/Math/public/Vec.hpp index 5c165e1..3f5b1d4 100644 --- a/Math/public/Vec.hpp +++ b/Math/public/Vec.hpp @@ -6,7 +6,7 @@ namespace tp { template class Vec { - typedef SelCopyArg TypeArg; + typedef SelectValueOrReference TypeArg; private: Type mBuff[tSize]; @@ -21,7 +21,7 @@ namespace tp { MODULE_SANITY_CHECK(gModuleMath) } - Vec(TypeArg val) { + explicit Vec(TypeArg val) { assign(val); } @@ -185,7 +185,7 @@ namespace tp { return dot(in); } - alnf length2() const { + [[nodiscard]] alnf length2() const { alnf sum = 0; for (ualni i = 0; i < tSize; i++) { Type val = get(i); @@ -194,7 +194,7 @@ namespace tp { return sum; } - alnf length() const { + [[nodiscard]] alnf length() const { return sqrt(length2()); } @@ -250,18 +250,18 @@ namespace tp { } template - Vec(TypeIn Vec[2]) { + explicit Vec(TypeIn Vec[2]) { x = (Type) Vec[0]; y = (Type) Vec[1]; } template - Vec(TypeIn val) { + explicit Vec(TypeIn val) { x = y = (Type) val; } template - Vec(Vec& Vec) { + explicit Vec(Vec& Vec) { x = (Type) Vec.x; y = (Type) Vec.y; } @@ -381,11 +381,11 @@ namespace tp { return { -y, x }; } - alnf length2() const { + [[nodiscard]] alnf length2() const { return (x * x + y * y); } - alnf length() const { + [[nodiscard]] alnf length() const { Type const tmp = (Type) (x * x + y * y); return sqrt(tmp); } @@ -419,9 +419,9 @@ namespace tp { Type z; // Initialization - Vec() {} + Vec() = default; - Vec(const Vec& in) { + explicit Vec(const Vec& in) { x = in[0]; y = in[1]; z = in[2]; @@ -433,13 +433,13 @@ namespace tp { z = aZ; } - Vec(Type Vec[3]) { + explicit Vec(Type Vec[3]) { x = Vec[0]; y = Vec[1]; z = Vec[2]; } - Vec(Type x) { + explicit Vec(Type x) { assign(x); } @@ -584,7 +584,7 @@ namespace tp { return (x * in.x + y * in.y + z * in.z); } - alnf length() const { + [[nodiscard]] alnf length() const { return sqrt((halnf) (x * x + y * y + z * z)); } @@ -632,11 +632,11 @@ namespace tp { z = (Type) (tmp * sinA + z * cosA); } - halnf angelX() const { + [[nodiscard]] halnf angelX() const { return (halnf) atan2(y, z); } - halnf angelY() const { + [[nodiscard]] halnf angelY() const { return (halnf) atan2(x, z); } }; diff --git a/Modules/.vs/slnx.sqlite b/Modules/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..7b621f2557188917c5604ecb8b552dbc0710bfff GIT binary patch literal 90112 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

E^nU;chiOH6jOUwO;Y&GUaZ5?S3j&lcba zw`ri3ZvVdv5rXR$ zfWwb-?R3246pWs0eESYR;Q#+Ge3Jtj1Oh++2mk>f00e*l5C8%|00;m9AaLOXVEupL z$e}?X00e*l5C8%|00;m9AOHk_01yBI7ft|v|L?+)LxVs72mk>f00e*l5C8%|00;m9 pAOHj|oB*8vUpR7T5C{MPAOHk_01yBIKmZ5;0U!VbfWU + class ArchiverTemplate { + public: + struct HasFunc { + typedef ArchiverTemplate& ArchRef; + template struct Write : FalseType {}; + template struct Write()().archiveWrite(DeclareValue()()))>> : TrueType {}; + + template struct Read : FalseType {}; + template struct Read()().archiveRead(DeclareValue()()))>> : TrueType {}; + + template struct Archive : FalseType {}; + template struct Archive()().archive(DeclareValue()()))>> : TrueType {}; + + template + struct AssertCombinations { + static constexpr auto assert() { + if (HasFunc::template Read::value != HasFunc::template Write::value) return false; + if (HasFunc::template Read::value) { + if (HasFunc::template Read::value == HasFunc::template Archive::value) return false; + } + return true; + } + }; + }; + + public: + virtual void writeBytes(const int1* val, ualni size) = 0; + virtual void readBytes(int1* val, ualni size) = 0; + + public: + ArchiverTemplate() = default; + + // check if type has explicit write method. if not write as bytes + template + void operator <<(const Type& val) { + static_assert(!tRead); + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Write::value) { + val.archiveWrite(*this); + } else { + writeBytes((const int1*) &val, sizeof(val)); + } + } + + // check if type has explicit read method. if not read as bytes + template + void operator >>(Type& val) { + static_assert(tRead); + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Read::value) { + val.archiveRead(*this); + } else { + readBytes((int1*) &val, sizeof(val)); + } + } + + // check if type has explicit archive method. if not read/write as bytes + template + void operator %(Type& val) { + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Archive::value) { + val.archive(*this); + } else { + if constexpr (tRead) { + operator>>(val); + } else { + operator<<(val); + } + } + } + + template + void operator %(const Type& val) { + static_assert(HasFunc::template AssertCombinations::assert()); + if constexpr (HasFunc::template Archive::value) { + ((Type&)val).archive(*this); + } else { + if constexpr (tRead) { + operator>>(val); + } else { + operator<<(val); + } + } + } + }; + + template + class ArchiverExample : public ArchiverTemplate { + public: + ArchiverExample() = default; + + protected: + void incrementAddresses(ualni size) { + if (mFirstNotWritten == mAddress) mFirstNotWritten += size; + mAddress += size; + } + + void writeBytes(const int1* val, ualni size) override { + for (auto i = 0; i < size; i++) mBuff[mAddress + i] = val[i]; + incrementAddresses(size); + } + + void readBytes(int1* val, ualni size) override { + for (auto i = 0; i < size; i++) val[i] = mBuff[mAddress + i]; + incrementAddresses(size); + } + + template + static void test() { + const tType val; + tType res; + + res.change(); + + ArchiverExample write; + ArchiverExample read; + + write % val; + + for (auto i = 0; i < tMaxMemory; i++) read.mBuff[i] = write.mBuff[i]; + + read % res; + + if (val != res) { + throw "test failed"; + } + } + + public: + int1 mBuff[tMaxMemory]{}; + + private: + ualni mAddress = 0; + ualni mFirstNotWritten = 0; + }; +} \ No newline at end of file diff --git a/Modules/public/Common.hpp b/Modules/public/Common.hpp index 047f964..06c94ca 100644 --- a/Modules/public/Common.hpp +++ b/Modules/public/Common.hpp @@ -4,15 +4,40 @@ #include "Environment.hpp" #include "TypeInfo.hpp" #include +#include +#include namespace tp { template - using init_list = std::initializer_list; + using InitialierList = std::initializer_list; // Selects whether to pass by constant reference or by value template - using SelCopyArg = typename TypeSelect<(sizeof(tType) > sizeof(tp::alni)), const tType&, tType>::Result; + using SelectValueOrReference = typename TypeSelect<(sizeof(tType) > sizeof(tp::alni)), const tType&, tType>::Result; + template + using VoidType = void; + + template + struct Reference { + tType& operator()() {} + }; + + template + struct DeclareValue { + tType operator()() {} + }; + + struct TrueType { + static constexpr auto value = true; + }; + + struct FalseType { + static constexpr auto value = false; + }; +} + +namespace tp { ualni next2pow(ualni v); uhalni next2pow(uhalni v); ufalni next2pow(ufalni v); diff --git a/Modules/public/SizeCounter.hpp b/Modules/public/SizeCounter.hpp new file mode 100644 index 0000000..a44895d --- /dev/null +++ b/Modules/public/SizeCounter.hpp @@ -0,0 +1,50 @@ +#pragma once + +#include "Common.hpp" + +namespace tp { + + // TODO + template + class SizeCounter { + typedef SizeCounter& ArchRef; + template struct HasSizeCounter : FalseType {}; + template struct HasSizeCounter()().count(DeclareValue()()))>> : TrueType {}; + + public: + SizeCounter() = default; + + template + void count(const Type& val) { + if constexpr (HasSizeCounter::value) { + val.count(*this); + } else { + if constexpr (tRecursive) { + count(sizeof(val)); + } else { + mSize += sizeof(Type); + } + } + } + + void countSizeUnused(ualni size) { + mSizeUnused += size; + } + + void countSize(ualni size) { + mSize += size; + } + + [[nodiscard]] ualni getSizeUnused() const { + return mSizeUnused; + } + + [[nodiscard]] ualni getSize() const { + return mSize; + } + + private: + ualni mSize = 0; + ualni mSizeUnused = 0; + }; +} \ No newline at end of file diff --git a/Modules/tests/TestArchiver.cpp b/Modules/tests/TestArchiver.cpp new file mode 100644 index 0000000..3c9ee68 --- /dev/null +++ b/Modules/tests/TestArchiver.cpp @@ -0,0 +1,202 @@ + +#include "Archiver.hpp" +#include +#include + +using namespace tp; + +bool sFailed = false; + +struct Undef { + char character1 = 'a'; + bool boolean = true; + ualni integer = 321; + char character2 = 'a'; + + void change() { + character1++; + character2--; + integer++; + boolean = !boolean; + } + + [[nodiscard]] bool operator!=(const Undef& in) const { + if (character1 != in.character1) return true; + if (character2 != in.character2) return true; + if (integer != in.integer) return true; + if (boolean != in.boolean) return true; + return false; + } +}; + + +struct SimpleArchive { + char character = 'a'; + ualni integer = 123; + bool boolean = true; + Undef undef; + + template + void archive(tArchiver& ar) { + ar % character; + ar % integer; + ar % boolean; + ar % undef; + } + + void change() { + character++; + integer++; + boolean = !boolean; + undef.change(); + } + + [[nodiscard]] bool operator!=(const SimpleArchive& in) const { + if (character != in.character) return true; + if (integer != in.integer) return true; + if (boolean != in.boolean) return true; + if (undef != in.undef) return true; + return false; + } +}; + +struct Simple { + char character = 'a'; + ualni integer = 123; + bool boolean = true; + Undef undef; + + template + void archiveRead(tArchiver& ar) { + ar >> character; + ar >> integer; + ar >> boolean; + ar >> undef; + } + + template + void archiveWrite(tArchiver& ar) const { + ar << character; + ar << integer; + ar << boolean; + ar << undef; + } + + void change() { + character++; + integer++; + boolean = !boolean; + undef.change(); + } + + [[nodiscard]] bool operator!=(const Simple& in) const { + if (character != in.character) return true; + if (integer != in.integer) return true; + if (boolean != in.boolean) return true; + if (undef != in.undef) return true; + return false; + } +}; + +template +struct Set { + tType buff[10]; + ualni len = 5; + + template + void archiveRead(tArchiver& ar) { + ar >> len; + for (auto i = 0; i < len; i++) { + ar >> buff[i]; + } + } + + template + void archiveWrite(tArchiver& ar) const { + ar << len; + for (auto i = 0; i < len; i++) { + ar << buff[i]; + } + } + + void change() { + len = 2; + for (auto i = 0; i < len; i++) { + buff[i].change(); + } + } + + [[nodiscard]] bool operator!=(const Set& in) const { + for (auto i = 0; i < len; i++) { + if (buff[i] != in.buff[i]) return true; + } + + if (len != in.len) return true; + return false; + } +}; + + +template +struct Complex { + Undef undef; + Set set; + + template + void archive(tArchiver& ar) { + ar % set; + ar % undef; + } + + void change() { + undef.change(); + set.change(); + } + + [[nodiscard]] bool operator!=(const Complex& in) const { + return undef != in.undef || set != in.set; + } +}; + +template +void test() { + constexpr auto size = 1024; + + const tType val; + tType res; + + res.change(); + + ArchiverExample write; + ArchiverExample read; + + write % val; + + for (auto i = 0; i < size; i++) read.mBuff[i] = write.mBuff[i]; + + read % res; + + if (val != res) { + printf("Test %s Failed\n", typeid(tType).name()); + sFailed = true; + } +} + +template struct HasArchive : FalseType {}; +template struct HasArchive()().archive(DeclareValue()()))>> : TrueType {}; + +void testArchiver() { + + printf("has archive method - %i\n", HasArchive>::value); + printf("has archive method - %i\n", ArchiverExample<10, false>::HasFunc::Archive::value); + printf("has archive method - %i\n", ArchiverExample<10, false>::HasFunc::Archive::value); + + test(); + test(); + test>(); + test>(); + + if (sFailed) { + exit(1); + } +} diff --git a/Modules/tests/Tests.cpp b/Modules/tests/Tests.cpp index 5910731..474d6d7 100644 --- a/Modules/tests/Tests.cpp +++ b/Modules/tests/Tests.cpp @@ -1,7 +1,7 @@ #include "Module.hpp" -#include "Common.hpp" +void testArchiver(); int main() { tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleBase, nullptr }; @@ -13,10 +13,12 @@ int main() { ASSERT(tp::gEnvironment.mWidth == tp::Environment::ArchWidth::X64); - ASSERT(tp::max(2, 1) == 2); - ASSERT(tp::max(-1, 0) == 0); - ASSERT(tp::max(0, -1) == 0); - ASSERT(tp::min(0, -1) == -1); + ASSERT(tp::max(2, 1) == 2) + ASSERT(tp::max(-1, 0) == 0) + ASSERT(tp::max(0, -1) == 0) + ASSERT(tp::min(0, -1) == -1) + + testArchiver(); TestModule.deinitialize(); } \ No newline at end of file diff --git a/TODO b/TODO index c37edc4..47a4ae9 100644 --- a/TODO +++ b/TODO @@ -1,7 +1,7 @@ -Testing ! -Serialization ! +Testing !! Objects: + Testing Serialization Alloc Size queries Compile !! @@ -16,25 +16,29 @@ Objects: rename classes move functions around -Storage: - Finish networking - Enable preloads - Graphics: Window event system Graphics API FPS count & Performance control -Utils: - Stack trace fixes - Containers: + Test generatePermutations Add variant size buffer Buffer add resize function Buffer improvements + Buff serialization + Tree serialization + Write Traverse Avl test Add mem leakage tests Add check copy times AVL dont copy data just swap +Storage: + Finish networking + Enable preloads + +Utils: + Stack trace fixes + TextEditor: Implement diff --git a/Tokenizer/public/RegularExpression.h b/Tokenizer/public/RegularExpression.h index 07f7bbc..322cd6a 100644 --- a/Tokenizer/public/RegularExpression.h +++ b/Tokenizer/public/RegularExpression.h @@ -342,7 +342,7 @@ namespace tp::RegEx { return compileUtil(regex, state); } - Node compile(Graph& aGraph, init_list> aRules) { + Node compile(Graph& aGraph, InitialierList> aRules) { mGraph = &aGraph; auto left = mGraph->addVertex(); @@ -513,7 +513,7 @@ namespace tp::RegEx { } template - CompileError compile(NFA& out, const init_list>& rules) { + CompileError compile(NFA& out, const InitialierList>& rules) { Compiler compiler; compiler.compile(out, rules); return compiler.mError; diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp index cdee460..bf32739 100644 --- a/Tokenizer/public/Tokenizer.hpp +++ b/Tokenizer/public/Tokenizer.hpp @@ -25,7 +25,7 @@ namespace tp { MODULE_SANITY_CHECK(gModuleTokenizer) } - void build(const init_list>& rules) { + void build(const InitialierList>& rules) { NFA nfa; mError = RegEx::compile(nfa, rules); @@ -89,7 +89,7 @@ namespace tp { SimpleTokenizer() = default; - void build(const init_list>& rules) { + void build(const InitialierList>& rules) { mTokenizer.build(rules); } diff --git a/Utils/tests/Tests.cpp b/Utils/tests/Tests.cpp index 79c6c18..d3e1a49 100644 --- a/Utils/tests/Tests.cpp +++ b/Utils/tests/Tests.cpp @@ -17,7 +17,7 @@ void printSnapshot(const tp::CallStackCapture::CallStack* snapshot) { } void common() { - gCSCapture->getSnapshot(); + auto tmp = gCSCapture->getSnapshot(); } void first() { From 64e1f7873955c58116b5960f618cfe616e726505 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 30 Jul 2023 18:30:36 +0300 Subject: [PATCH 38/68] Objects Compiled --- CMakeLists.txt | 8 +- Modules/public/Archiver.hpp | 21 ----- Objects/CMakeLists.txt | 8 +- Objects/{tests => applications}/TestEntry.cpp | 19 ++-- Objects/{tests => applications}/test.cpp | 0 Objects/private/compiler/expression.cpp | 4 +- Objects/private/compiler/function.cpp | 14 +-- Objects/private/compiler/instruction.cpp | 3 +- Objects/private/compiler/statement.cpp | 8 +- .../primitives.cpp => core/module.cpp} | 70 ++++++++------- Objects/private/core/object.cpp | 20 ----- Objects/private/core/objectsave.cpp | 86 ++++++++++--------- Objects/private/core/scriptsection.cpp | 75 ++++++++-------- Objects/private/core/typegroups.cpp | 2 +- Objects/private/core/typemethods.cpp | 2 +- Objects/private/interpreter/interpreter.cpp | 4 +- Objects/private/interpreter/opcodes.cpp | 4 +- Objects/private/interpreter/operandsstack.cpp | 2 + Objects/private/parser/parser.cpp | 39 ++++++--- Objects/private/primitives/boolobject.cpp | 8 +- Objects/private/primitives/classobject.cpp | 8 +- Objects/private/primitives/colorobject.cpp | 8 +- Objects/private/primitives/dictobject.cpp | 25 +++--- Objects/private/primitives/enumobject.cpp | 22 ++--- Objects/private/primitives/floatobject.cpp | 8 +- .../private/primitives/interpreterobject.cpp | 4 +- Objects/private/primitives/intobject.cpp | 8 +- Objects/private/primitives/linkobject.cpp | 10 +-- Objects/private/primitives/listobject.cpp | 20 +++-- Objects/private/primitives/methodobject.cpp | 10 +-- Objects/private/primitives/stringobject.cpp | 8 +- Objects/private/primitives/typeobject.cpp | 10 +-- Objects/public/compiler/expression.h | 4 +- Objects/public/compiler/instruction.h | 8 +- Objects/public/compiler/statement.h | 8 +- Objects/public/core/object.h | 76 +++++++++------- Objects/public/core/scriptsection.h | 6 +- Objects/public/core/typegroups.h | 2 +- Objects/public/core/typemethods.h | 4 +- Objects/public/interpreter/interpreter.h | 4 +- Objects/public/interpreter/opcodes.h | 4 +- Objects/public/parser/parser.h | 6 +- Objects/public/primitives/classobject.h | 6 +- Objects/public/primitives/dictobject.h | 6 +- Objects/public/primitives/enumobject.h | 4 +- Objects/public/primitives/interpreterobject.h | 4 +- Objects/public/primitives/linkobject.h | 4 +- Objects/public/primitives/listobject.h | 4 +- Objects/public/primitives/methodobject.h | 4 +- Objects/public/primitives/primitives.h | 38 ++++---- Objects/tests/Tests.cpp | 9 ++ Strings/public/Strings.hpp | 15 ++++ 52 files changed, 384 insertions(+), 370 deletions(-) rename Objects/{tests => applications}/TestEntry.cpp (78%) rename Objects/{tests => applications}/test.cpp (100%) rename Objects/private/{primitives/primitives.cpp => core/module.cpp} (60%) create mode 100644 Objects/tests/Tests.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 147af07..94a5c9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,8 @@ project(Types) add_compile_definitions(MEM_DEBUG) +set(EXTERNALS ../Externals) + add_subdirectory(Modules) add_subdirectory(Utils) add_subdirectory(Containers) @@ -18,11 +20,7 @@ add_subdirectory(Allocators) add_subdirectory(Strings) add_subdirectory(Tokenizer) add_subdirectory(CommandLine) - -set(EXTERNALS ../Externals) add_subdirectory(Externals) - add_subdirectory(Connection) add_subdirectory(Graphics) - -#add_subdirectory(Objects) +add_subdirectory(Objects) diff --git a/Modules/public/Archiver.hpp b/Modules/public/Archiver.hpp index 825bb1b..ba66bc2 100644 --- a/Modules/public/Archiver.hpp +++ b/Modules/public/Archiver.hpp @@ -115,27 +115,6 @@ namespace tp { incrementAddresses(size); } - template - static void test() { - const tType val; - tType res; - - res.change(); - - ArchiverExample write; - ArchiverExample read; - - write % val; - - for (auto i = 0; i < tMaxMemory; i++) read.mBuff[i] = write.mBuff[i]; - - read % res; - - if (val != res) { - throw "test failed"; - } - } - public: int1 mBuff[tMaxMemory]{}; diff --git a/Objects/CMakeLists.txt b/Objects/CMakeLists.txt index a8e81b5..602e29a 100644 --- a/Objects/CMakeLists.txt +++ b/Objects/CMakeLists.txt @@ -15,11 +15,11 @@ target_include_directories(${PROJECT_NAME} PUBLIC ./public/) target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math Tokenizer CommandLine Connection) ### -------------------------- Applications -------------------------- ### -add_executable(osc ./applications/Compiler.cpp) -add_executable(osi ./applications/Interpreter.cpp) +#add_executable(osc ./applications/Compiler.cpp) +#add_executable(osi ./applications/Interpreter.cpp) -target_link_libraries(osc ${PROJECT_NAME}) -target_link_libraries(osi ${PROJECT_NAME}) +#target_link_libraries(osc ${PROJECT_NAME}) +#target_link_libraries(osi ${PROJECT_NAME}) ### -------------------------- Tests -------------------------- ### enable_testing() diff --git a/Objects/tests/TestEntry.cpp b/Objects/applications/TestEntry.cpp similarity index 78% rename from Objects/tests/TestEntry.cpp rename to Objects/applications/TestEntry.cpp index c625e7e..960c1b0 100644 --- a/Objects/tests/TestEntry.cpp +++ b/Objects/applications/TestEntry.cpp @@ -1,37 +1,34 @@ -#include "MethodObject/methodobject.h" +#include "primitives/methodobject.h" #include "primitives/primitives.h" -#include "Interpreter/Interpreter.h" +#include "interpreter/interpreter.h" -#include "log.h" +#include "compiler/function.h" -#include "ByteCodeGen/Function.h" - -using namespace osc; using namespace tp; using namespace obj; void TestCompile(ByteCode& bytecode) { using namespace BCgen; - Genereate(bytecode, + Genereate(bytecode, StmScope({ StmDefFunc("main", {}, { StmDefLocal("i1", ExprConst(1)), StmDefLocal("i2", ExprConst(2)), - StmDefFunc("add", {"first", "second"}, { - StmReturn(ExprAdd(ExprLocal("first"), ExprLocal("second"))) - }), + //StmDefFunc("add", {"first", "second"}, { + // StmReturn(ExprAdd(ExprLocal("first"), ExprLocal("second"))) + //}), StmPrint(ExprLocal("i1")), StmPrint(ExprConst(" + ")), StmPrint(ExprLocal("i2")), StmPrint(ExprConst(" = ")), - + StmPrint(ExprFunc("add")->ExprCall({ ExprLocal("i1"), ExprLocal("i2") })), StmPrint(ExprConst("\n")), diff --git a/Objects/tests/test.cpp b/Objects/applications/test.cpp similarity index 100% rename from Objects/tests/test.cpp rename to Objects/applications/test.cpp diff --git a/Objects/private/compiler/expression.cpp b/Objects/private/compiler/expression.cpp index 48a8390..322a8c5 100644 --- a/Objects/private/compiler/expression.cpp +++ b/Objects/private/compiler/expression.cpp @@ -11,7 +11,7 @@ ExpressionChild* Expression::ExprChild(tp::String id) { return new ExpressionChild(this, id); } -ExpressionCall* Expression::ExprCall(tp::init_list args) { +ExpressionCall* Expression::ExprCall(tp::InitialierList args) { return new ExpressionCall(this, args); } @@ -51,7 +51,7 @@ ExpressionBoolean::ExpressionBoolean(Expression* invert) : Expression(Type::BOOLEAN), mLeft(invert), mBoolType(BoolType::NOT){ } -ExpressionCall::ExpressionCall(Expression * mParent, tp::init_list args) : Expression(Type::CALL), mParent(mParent) { +ExpressionCall::ExpressionCall(Expression * mParent, tp::InitialierList args) : Expression(Type::CALL), mParent(mParent) { mArgs = args; } diff --git a/Objects/private/compiler/function.cpp b/Objects/private/compiler/function.cpp index 014da8f..6342b90 100644 --- a/Objects/private/compiler/function.cpp +++ b/Objects/private/compiler/function.cpp @@ -73,8 +73,8 @@ void FunctionDefinition::EvalStatement(Statement* stm) { auto jump_inst = inst(Instruction(NULL, Instruction::InstType::JUMP)); auto end_mark = inst(Instruction()); - jump_if_inst->data.mInstTarget = end_mark; - jump_inst->data.mInstTarget = check_mark; + jump_if_inst->data.mInstTarget = &end_mark->data; + jump_inst->data.mInstTarget = &check_mark->data; break; } @@ -98,8 +98,8 @@ void FunctionDefinition::EvalStatement(Statement* stm) { auto end_mark = inst(Instruction()); - jump_if_inst->data.mInstTarget = else_mark; - jump_inst->data.mInstTarget = end_mark; + jump_if_inst->data.mInstTarget = &else_mark->data; + jump_inst->data.mInstTarget = &end_mark->data; break; } @@ -396,11 +396,11 @@ void writeParam(ByteCode& out, tp::alni& idx, tp::int1* data, tp::alni size) { } } -tp::alni calcOffset(tp::List::Node* jump_inst, tp::List::Node* to) { +tp::alni calcOffset(tp::List::Node* jump_inst, Instruction* to) { tp::alni offset = 0; - bool reversed = jump_inst->data.mInstIdx > to->data.mInstIdx; + bool reversed = jump_inst->data.mInstIdx > to->mInstIdx; auto iter_node = reversed ? jump_inst : jump_inst->next; - while (iter_node != to) { + while (&iter_node->data != to) { offset += instSize(iter_node->data); iter_node = reversed ? iter_node->prev : iter_node->next; } diff --git a/Objects/private/compiler/instruction.cpp b/Objects/private/compiler/instruction.cpp index 90e2705..8f84870 100644 --- a/Objects/private/compiler/instruction.cpp +++ b/Objects/private/compiler/instruction.cpp @@ -1,4 +1,5 @@ +#include "NewPlacement.hpp" #include "compiler/instruction.h" using namespace obj; @@ -24,6 +25,6 @@ Instruction::Instruction(OpCode op, tp::alni param, tp::alni nBytes) : mOp(op), mParam(param), mArgType(ArgType::PARAM), mParamBytes(nBytes), mInstType(InstType::EXEC) { } -Instruction::Instruction(tp::List::Node* inst, InstType jump_type): mInstTarget(inst) { +Instruction::Instruction(Instruction* inst, InstType jump_type): mInstTarget(inst) { mInstType = jump_type; } \ No newline at end of file diff --git a/Objects/private/compiler/statement.cpp b/Objects/private/compiler/statement.cpp index 4d7e671..12f442f 100644 --- a/Objects/private/compiler/statement.cpp +++ b/Objects/private/compiler/statement.cpp @@ -5,7 +5,7 @@ using namespace obj; using namespace BCgen; -StatementFuncDef::StatementFuncDef(tp::String function_id, tp::init_list args, tp::init_list statements) { +StatementFuncDef::StatementFuncDef(tp::String function_id, tp::InitialierList args, tp::InitialierList statements) { mType = Type::DEF_FUNC; mArgs = args; mStatements = statements; @@ -36,7 +36,7 @@ StatementPrint::StatementPrint(Expression* target) : mTarget(target) { mType = Type::PRINT; } -StatementScope::StatementScope(tp::init_list statements, bool aPushToScopeStack) { +StatementScope::StatementScope(tp::InitialierList statements, bool aPushToScopeStack) { mType = Type::SCOPE; mStatements = statements; mPushToScopeStack = aPushToScopeStack; @@ -67,7 +67,7 @@ StatementClassDef::StatementClassDef(tp::String class_id, StatementScope* scope) } // helpers -StatementFuncDef* obj::BCgen::StmDefFunc(tp::String id, tp::init_list args, tp::init_list stms) { +StatementFuncDef* obj::BCgen::StmDefFunc(tp::String id, tp::InitialierList args, tp::InitialierList stms) { return new StatementFuncDef(id, args, stms); } @@ -99,7 +99,7 @@ StatementIf* obj::BCgen::StmIf(Expression* condition, StatementScope* on_true, S return new StatementIf(condition, on_true, on_false); } -StatementScope* obj::BCgen::StmScope(tp::init_list statements, bool aPushToScopeStack = false) { +StatementScope* obj::BCgen::StmScope(tp::InitialierList statements, bool aPushToScopeStack = false) { return new StatementScope(statements, aPushToScopeStack); } diff --git a/Objects/private/primitives/primitives.cpp b/Objects/private/core/module.cpp similarity index 60% rename from Objects/private/primitives/primitives.cpp rename to Objects/private/core/module.cpp index 5591845..22286c2 100644 --- a/Objects/private/primitives/primitives.cpp +++ b/Objects/private/core/module.cpp @@ -1,29 +1,29 @@ -#pragma once - #include "NewPlacement.hpp" -#include "primitives/primitives.h" - #include "Tokenizer.hpp" -void obj::primitives_uninitialize() { - obj::NullObject::uninit(); - obj::MethodObject::UnInitialize(); -} +#include "compiler/function.h" -void obj::primitives_define_types() { - - using namespace obj; - using namespace tp; +#include "primitives/boolobject.h" +#include "primitives/classobject.h" +#include "primitives/colorobject.h" +#include "primitives/dictobject.h" +#include "primitives/enumobject.h" +#include "primitives/floatobject.h" +#include "primitives/interpreterobject.h" +#include "primitives/intobject.h" +#include "primitives/linkobject.h" +#include "primitives/listobject.h" +#include "primitives/methodobject.h" +#include "primitives/nullobject.h" +#include "primitives/stringobject.h" +#include "primitives/typeobject.h" - static bool initialized = false; - if (initialized) { - return; - } - - DEBUG_ASSERT(NDO && "Objects library is not initialized"); +using namespace obj; +using namespace tp; +static void defineTypes() { NDO->define(&DictObject::TypeData); NDO->define(&IntObject::TypeData); NDO->define(&LinkObject::TypeData); @@ -37,7 +37,9 @@ void obj::primitives_define_types() { NDO->define(&ColorObject::TypeData); NDO->define(&InterpreterObject::TypeData); NDO->define(&TypeObject::TypeData); +} +static void defineGroups() { NDO->type_groups.addType(&DictObject::TypeData, {"Primitives"}); NDO->type_groups.addType(&IntObject::TypeData, {"Primitives"}); NDO->type_groups.addType(&LinkObject::TypeData, {"Primitives"}); @@ -50,26 +52,28 @@ void obj::primitives_define_types() { NDO->type_groups.addType(&ClassObject::TypeData, {"Primitives"}); NDO->type_groups.addType(&ColorObject::TypeData, {"Primitives"}); NDO->type_groups.addType(&InterpreterObject::TypeData, { "scripting" }); - - obj::MethodObject::Initialize(); - - initialized = true; } -namespace obj { - objects_api* objects_init(); - void objects_finalize(); -}; -static bool objInit() { - obj::objects_init(); - obj::primitives_define_types(); +static bool init(const tp::ModuleManifest*) { + if (!NDO) NDO = new objects_api(); + obj::BCgen::init(); + + MethodObject::Initialize(); + + defineTypes(); + defineGroups(); + return true; } -static void objDeinit() { - obj::primitives_uninitialize(); - obj::objects_finalize(); +static void deinit(const tp::ModuleManifest*) { + + NullObject::uninit(); + MethodObject::UnInitialize(); + + obj::BCgen::deinit(); + delete NDO; } static tp::ModuleManifest* sModuleDependencies[] = { @@ -80,4 +84,4 @@ static tp::ModuleManifest* sModuleDependencies[] = { NULL }; -tp::ModuleManifest obj::gModuleObjects = tp::ModuleManifest("Objects", objInit, objDeinit, sModuleDependencies); \ No newline at end of file +tp::ModuleManifest obj::gModuleObjects = tp::ModuleManifest("Objects", init, deinit, sModuleDependencies); \ No newline at end of file diff --git a/Objects/private/core/object.cpp b/Objects/private/core/object.cpp index c121ddb..c2f8f90 100644 --- a/Objects/private/core/object.cpp +++ b/Objects/private/core/object.cpp @@ -227,24 +227,4 @@ namespace obj { } return NULL; } - - objects_api* objects_init() { - if (!NDO) { - NDO = new objects_api(); - } - - obj::BCgen::init(); - - return NDO; - } - - void objects_finalize() { - - if (NDO) { - delete NDO; - } - - obj::BCgen::deinit(); - } - }; \ No newline at end of file diff --git a/Objects/private/core/objectsave.cpp b/Objects/private/core/objectsave.cpp index 138f741..6b24f1c 100644 --- a/Objects/private/core/objectsave.cpp +++ b/Objects/private/core/objectsave.cpp @@ -1,5 +1,6 @@ +#include "NewPlacement.hpp" #include "core/object.h" #include "HeapAllocatorGlobal.hpp" @@ -30,7 +31,7 @@ namespace obj { } memh->down = NULL; - memh->flags = NULL; + memh->flags = 0; #ifdef OBJECT_REF_COUNT memh->refc = (tp::alni) 1; @@ -185,7 +186,7 @@ namespace obj { return objsize_file_recursive_util(self, self->type); } - void object_recursive_save(Archiver& ndf, Object* self, const ObjectType* type) { + void object_recursive_save(ArchiverOut& ndf, Object* self, const ObjectType* type) { if (type->base) { object_recursive_save(ndf, self, type->base); } @@ -196,48 +197,48 @@ namespace obj { } } - tp::alni objects_api::save(Archiver& ndf, Object* in) { + tp::alni objects_api::save(ArchiverOut& ndf, Object* in) { // if already saved return file_adress if (NDO_MEMH_FROM_NDO(in)->flags != -1) { return NDO_MEMH_FROM_NDO(in)->flags; } // save write adress for parent save function call - tp::alni tmp_adress = ndf.adress; + tp::alni tmp_adress = ndf.getAddress(); // save requested object to first available adress - tp::alni save_adress = ndf.avl_adress; + tp::alni save_adress = ndf.getFreeAddress(); // save file_adress in memhead NDO_MEMH_FROM_NDO(in)->flags = save_adress; // update write adress - ndf.adress = save_adress; + ndf.setAddress(save_adress); // save file object header ObjectFileHead ofh = { 0, getrefc(in) }; - ndf.write(&ofh); - tp::String(in->type->name).save(&ndf); + ndf << ofh; + ndf << tp::String(in->type->name); // allocate for object file header - ndf.avl_adress += sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1; + ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1); // calc max size needed for saving all hierarchy of types tp::alni file_alloc_size = objsize_file_util(in, in->type); // offes first available adress - ndf.avl_adress += file_alloc_size; + ndf.setFreeAddress(ndf.getFreeAddress() + file_alloc_size); object_recursive_save(ndf, in, in->type); // restore adress for parent save function - ndf.adress = tmp_adress; + ndf.setAddress(tmp_adress); // return addres of saved object in file space return save_adress; } - void object_recursive_load(Archiver& ndf, Object* out, const ObjectType* type) { + void object_recursive_load(ArchiverIn& ndf, Object* out, const ObjectType* type) { if (type->base) { object_recursive_load(ndf, out, type->base); } @@ -248,22 +249,23 @@ namespace obj { } } - Object* objects_api::load(Archiver& ndf, tp::alni file_adress) { + Object* objects_api::load(ArchiverIn& ndf, tp::alni file_adress) { // check if already saved if (((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress) { return ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress; } - // save read adress - tp::alni parent_file_adress = ndf.adress; + // save read address + tp::alni parent_file_adress = ndf.getAddress(); - // set read adress - ndf.adress = file_adress; + // set read address + ndf.setAddress(file_adress); ObjectFileHead ofh; - ndf.read(&ofh); + ndf >> ofh; + tp::String type_name; - type_name.load(&ndf); + ndf >> type_name; const ObjectType* object_type = NDO->types.get(type_name); Object* out = ObjectMemAllocate(object_type); @@ -277,40 +279,40 @@ namespace obj { // save heap adress in "loaded_file" ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress = out; - // loads recursivelly + // loads recursively object_recursive_load(ndf, out, object_type); - // restore read adress for parent call to continue - ndf.adress = parent_file_adress; + // restore read address for parent call to continue + ndf.setAddress(parent_file_adress); // return heap memory adress return out; } bool objects_api::save(Object* in, tp::String path, bool compressed) { - Archiver ndf(path.read(), Archiver::SAVE); + ArchiverOut ndf(path.read()); - if (!ndf.opened) { + if (!ndf.isOpened()) { return false; } clear_object_flags(); - // save vesion info + // save version info ObjectsFileHeader header; - ndf.write(&header); + ndf << header; - ndf.avl_adress = ndf.adress; + ndf.setFreeAddress(ndf.getAddress()); // pre allocate for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { if (sl_callbacks[i]) { DEBUG_ASSERT(sl_callbacks[i]->size); - ndf.avl_adress += sl_callbacks[i]->size(sl_callbacks[i]->self, ndf); + ndf.setFreeAddress(ndf.getFreeAddress() + sl_callbacks[i]->size(sl_callbacks[i]->self, ndf)); } } - // presave + // pre-save for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { if (sl_callbacks[i] && sl_callbacks[i]->pre_save) { sl_callbacks[i]->pre_save(sl_callbacks[i]->self, ndf); @@ -319,15 +321,13 @@ namespace obj { save(ndf, in); - // postsave + // post-save for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { if (sl_callbacks[i] && sl_callbacks[i]->post_save) { sl_callbacks[i]->post_save(sl_callbacks[i]->self, ndf); } } - ndf.disconnect(); - // TODO : add compression /* if (compressed) { @@ -354,24 +354,28 @@ namespace obj { File ndf(temp_file_name.cstr(), tp::osfile_openflags::LOAD); */ - Archiver ndf(path.read(), Archiver::LOAD); + ArchiverIn ndf(path.read()); - if (!ndf.opened) { + if (!ndf.isOpened()) { return NULL; } - // check for compability + // check for compatibility ObjectsFileHeader current_header; ObjectsFileHeader loaded_header(false); - ndf.read(&loaded_header); + + ndf >> loaded_header; + if (!tp::memEqual(¤t_header, &loaded_header, sizeof(ObjectsFileHeader))) { return NULL; } - ndf.adress = 0; - loaded_file = (tp::int1*) malloc(ndf.size()); - ndf.read_bytes(loaded_file, ndf.size()); - ndf.adress = sizeof(ObjectsFileHeader); + ndf.setAddress(0); + + loaded_file = (tp::int1*) malloc(ndf.getSize()); + ndf.readBytes(loaded_file, ndf.getSize()); + + ndf.setAddress(sizeof(ObjectsFileHeader)); // preload for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { @@ -380,7 +384,7 @@ namespace obj { } } - Object* out = load(ndf, ndf.adress); + Object* out = load(ndf, ndf.getAddress()); // post for (tp::alni i = 0; i < SAVE_LOAD_MAX_CALLBACK_SLOTS; i++) { diff --git a/Objects/private/core/scriptsection.cpp b/Objects/private/core/scriptsection.cpp index 6af3c54..030e95d 100644 --- a/Objects/private/core/scriptsection.cpp +++ b/Objects/private/core/scriptsection.cpp @@ -74,14 +74,14 @@ tp::alni ScriptSection::get_script_file_adress(Script* in) { return get_script_head_store_adress(in); } -tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, Archiver& file) { +tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, ArchiverOut& file) { tp::alni size = 0; size += 5; // header size += sizeof(tp::alni); // scripts length for (auto iter : self->mScripts) { - set_script_head_store_adress(iter.data(), file.adress + size); + set_script_head_store_adress(iter.data(), file.getAddress() + size); size += sizeof(tp::alni); // scripts string obj ref size += sizeof(tp::alni); // constants length @@ -91,7 +91,8 @@ tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, Arch } // instructions - size += iter->mBytecode.mInstructions.saveSize(); + ASSERT(false) + // size += iter->mBytecode.mInstructions.saveSize(); } size += sizeof(tp::alni); // objects mem offset @@ -99,124 +100,126 @@ tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, Arch return size; } -void ScriptSection::save_script_table_to_file(ScriptSection* self, Archiver& file) { +void ScriptSection::save_script_table_to_file(ScriptSection* self, ArchiverOut& file) { // header - file.write_bytes("/scr/", 5); + file.writeBytes("/scr/", 5); // scripts length tp::alni scripts_count = self->mScripts.length(); - file.write(&scripts_count); + file << scripts_count; for (auto iter : self->mScripts) { // scripts string obj ref auto obj_addres = obj::NDO->save(file, iter->mReadable); - file.write(&obj_addres); + file << obj_addres; // constants length tp::alni consts_count = iter->mBytecode.mConstants.size(); - file.write(&consts_count); + file << consts_count; for (auto const_obj : iter->mBytecode.mConstants) { // constant object addres auto obj_addres = obj::NDO->save(file, const_obj.data()); - file.write(&obj_addres); + file << obj_addres; } // mInstructions - iter->mBytecode.mInstructions.save(file); + ASSERT(false) + file << iter->mBytecode.mInstructions; } // header - file.write_bytes("/scr/", 5); + file.writeBytes("/scr/", 5); - tp::alni objects_mem_offset = file.avl_adress; - file.write(&objects_mem_offset); + tp::alni objects_mem_offset = file.getFreeAddress(); + file << objects_mem_offset; } -void load_constants(ScriptSection* self, Archiver& file, tp::alni start_addr) { - auto addres = file.adress; +void load_constants(ScriptSection* self, ArchiverIn& file, tp::alni start_addr) { + auto addres = file.getAddress(); - file.adress = start_addr; - file.adress += 5; // header + file.setAddress(start_addr); + file.setAddress( start_addr + 5); // header tp::alni scripts_count; - file.read(&scripts_count); + file >> scripts_count; for (tp::alni i = 0; i < scripts_count; i++) { - auto script = self->get_scritp_from_file_adress(file.adress); + auto script = self->get_scritp_from_file_adress(file.getAddress()); // script text tp::alni str_addr; - file.read(&str_addr); + file >> str_addr; script->mReadable = NDO_CAST(obj::StringObject, obj::NDO->load(file, str_addr)); - file.adress += sizeof(tp::alni); // constants length + file.setAddress(file.getAddress() + sizeof(tp::alni)); // constants length for (auto const_obj : script->mBytecode.mConstants) { tp::alni consts_addr; - file.read(&consts_addr); + file >> consts_addr; const_obj.data() = obj::NDO->load(file, consts_addr); } // instructions - file.adress += script->mBytecode.mInstructions.saveSize(); + ASSERT(false) + //file.setAddress(file.getAddress() + script->mBytecode.mInstructions.saveSize()); } - file.adress = addres; + file.setAddress(addres); } -void ScriptSection::load_script_table_from_file(ScriptSection* self, Archiver& file) { +void ScriptSection::load_script_table_from_file(ScriptSection* self, ArchiverIn& file) { for (auto iter : self->mScripts) { set_script_head_store_adress(iter.data(), -1); } - auto section_start_addr = file.adress; + auto section_start_addr = file.getAddress(); // header - file.adress += 5; + file.setAddress(file.getAddress() + 5); // scripts length tp::alni scripts_count; - file.read(&scripts_count); + file >> scripts_count; for (tp::alni i = 0; i < scripts_count; i++) { auto new_script = self->createScript(); - set_script_head_store_adress(new_script, file.adress); + set_script_head_store_adress(new_script, file.getAddress()); // scripts text - file.adress += sizeof(tp::alni); + file.setAddress(file.getAddress() + sizeof(tp::alni)); // constants length tp::alni consts_count; - file.read(&consts_count); + file >> consts_count; new_script->mBytecode.mConstants.reserve(consts_count); for (tp::alni j = 0; j < consts_count; j++) { // constant object addres tp::alni consts_addr; - file.read(&consts_addr); + file >> consts_addr; // skiping //new_script->mBytecode.mConstants[j] = obj::NDO->load(file, consts_addr); } // mInstructions - new_script->mBytecode.mInstructions.load(file); + file >> new_script->mBytecode.mInstructions; } load_constants(self, file, section_start_addr); // header - file.adress += 5; + file.setAddress(file.getAddress() + 5); tp::alni objects_mem_offset; - file.read(&objects_mem_offset); + file >> objects_mem_offset; - file.adress = objects_mem_offset; + file.setAddress(objects_mem_offset); } Script* ScriptSection::get_scritp_from_file_adress(tp::alni file_adress) { diff --git a/Objects/private/core/typegroups.cpp b/Objects/private/core/typegroups.cpp index e98af62..b666233 100644 --- a/Objects/private/core/typegroups.cpp +++ b/Objects/private/core/typegroups.cpp @@ -31,7 +31,7 @@ void obj::TypeGroups::setType(ObjectType* type) { this->type = type; } -void obj::TypeGroups::addType(ObjectType* type, tp::init_list path, tp::alni cur_dir_idx) { +void obj::TypeGroups::addType(ObjectType* type, tp::InitialierList path, tp::alni cur_dir_idx) { DEBUG_ASSERT(is_group); tp::alni dir_len = (tp::alni) path.size(); diff --git a/Objects/private/core/typemethods.cpp b/Objects/private/core/typemethods.cpp index d756d2a..1b22194 100644 --- a/Objects/private/core/typemethods.cpp +++ b/Objects/private/core/typemethods.cpp @@ -61,7 +61,7 @@ tp::int2 TypeMethods::presents(tp::String id) const { return -1; } -TypeMethods::LookupKey TypeMethods::presents(const ObjectType* type, tp::string id) { +TypeMethods::LookupKey TypeMethods::presents(const ObjectType* type, tp::String id) { tp::int2 depth = 0; tp::int2 idx = 0; diff --git a/Objects/private/interpreter/interpreter.cpp b/Objects/private/interpreter/interpreter.cpp index 7978c18..bf3a660 100644 --- a/Objects/private/interpreter/interpreter.cpp +++ b/Objects/private/interpreter/interpreter.cpp @@ -36,7 +36,7 @@ tp::uint2 param(ByteCode* bytecode) { return loadConstDataIdx(bytecode); } -void Interpreter::exec(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::init_list globals2) { +void Interpreter::exec(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::InitialierList globals2) { if (!method->mScript->mBytecode.mInstructions.size()) { return; } @@ -561,7 +561,7 @@ void Interpreter::stepBytecodeIn() { } } -void Interpreter::execAll(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::init_list globals2) { +void Interpreter::execAll(obj::MethodObject* method, obj::ClassObject* self, obj::DictObject* globals, tp::InitialierList globals2) { if (!method->mScript->mBytecode.mInstructions.size()) { return; } diff --git a/Objects/private/interpreter/opcodes.cpp b/Objects/private/interpreter/opcodes.cpp index b630b9e..db9df0b 100644 --- a/Objects/private/interpreter/opcodes.cpp +++ b/Objects/private/interpreter/opcodes.cpp @@ -15,7 +15,7 @@ using namespace obj; add(opcode, { #name, #desc, ops, params } ); OpcodeInfos::OperandsInfo::OperandsInfo() {} -OpcodeInfos::OperandsInfo::OperandsInfo(tp::init_list list) { +OpcodeInfos::OperandsInfo::OperandsInfo(tp::InitialierList list) { DEBUG_ASSERT(MAX_OPERANDS >= list.size()); for (auto item : list) { buff[len] = item; @@ -24,7 +24,7 @@ OpcodeInfos::OperandsInfo::OperandsInfo(tp::init_list list) { } OpcodeInfos::ParamsInfo::ParamsInfo() {} -OpcodeInfos::ParamsInfo::ParamsInfo(tp::init_list list) { +OpcodeInfos::ParamsInfo::ParamsInfo(tp::InitialierList list) { DEBUG_ASSERT(MAX_PARAMS >= list.size()); for (auto item : list) { buff[len] = item; diff --git a/Objects/private/interpreter/operandsstack.cpp b/Objects/private/interpreter/operandsstack.cpp index e037360..75799d8 100644 --- a/Objects/private/interpreter/operandsstack.cpp +++ b/Objects/private/interpreter/operandsstack.cpp @@ -1,4 +1,6 @@ +#include "NewPlacement.hpp" + #include "interpreter/operandsstack.h" using namespace obj; diff --git a/Objects/private/parser/parser.cpp b/Objects/private/parser/parser.cpp index dacd225..255b883 100644 --- a/Objects/private/parser/parser.cpp +++ b/Objects/private/parser/parser.cpp @@ -91,9 +91,8 @@ Parser::Parser() { tp::String to_string(const char* stream, tp::alni len) { tp::String out; - out.reserve(len + 1); - tp::memcp(out.get_writable(), stream, len); - out.get_writable()[len] = '\0'; + out.resize(len); + tp::memCopy(out.write(), stream, len); return out; } @@ -259,8 +258,10 @@ READ_ARG: auto out = prnt->ExprCall({}); out->mArgs.reserve(args.length()); + ualni idx = 0; for (auto arg : args) { - out->mArgs[arg.idx()] = arg.data(); + out->mArgs[idx] = arg.data(); + idx++; } return out; @@ -268,7 +269,7 @@ READ_ARG: Expression* Parser::parseExprAriphm() { - tp::init_list expessions = { + tp::InitialierList expessions = { ExprType::Compound, ExprType::NEW, ExprType::LOCAL, @@ -333,7 +334,7 @@ PRECEDENCE: Expression* Parser::parseExprBOOLEAN() { - tp::init_list expessions = { + tp::InitialierList expessions = { ExprType::Compound, ExprType::NEW, ExprType::LOCAL, @@ -412,7 +413,7 @@ PRECEDENCE: Expression* Parser::parseExprBOOLEAN_NOT() { CHECK(tokRead() == Token::BOOL_NOT, {}); - tp::init_list exprs = { + tp::InitialierList exprs = { ExprType::Compound, ExprType::BOOLEAN, ExprType::Ariphm, @@ -473,7 +474,7 @@ Expression* Parser::parseExprChain(Expression* prnt) { return prnt; } -Expression* Parser::parseExpr(tp::init_list expressions) { +Expression* Parser::parseExpr(tp::InitialierList expressions) { Expression* out = NULL; @@ -604,8 +605,11 @@ READ_ARG: auto func_def = StmDefFunc(name.token, {}, {}); func_def->mArgs.reserve(args.length()); + + ualni idx = 0; for (auto iter : args) { - func_def->mArgs[iter.idx()] = iter.data(); + func_def->mArgs[idx] = iter.data(); + idx++; } StatementScope* scope = parseScope(true); @@ -614,8 +618,11 @@ READ_ARG: }); func_def->mStatements.reserve(scope->mStatements.size()); + + idx = 0; for (auto stm : scope->mStatements) { - func_def->mStatements[stm.idx()] = stm.data(); + func_def->mStatements[idx] = stm.data(); + idx++; } delete scope; @@ -753,7 +760,7 @@ Statement* Parser::parseStmClassDef() { return StmClassDef(id.token, scope); } -Statement* Parser::parseStm(tp::init_list stm_types) { +Statement* Parser::parseStm(tp::InitialierList stm_types) { Statement* out = NULL; List errors; @@ -865,8 +872,11 @@ READ_STM: } out->mStatements.reserve(stms.length()); + + ualni idx = 0; for (auto stm : stms) { - out->mStatements[stm.idx()] = stm.data(); + out->mStatements[idx] = stm.data(); + idx++; } return out; @@ -896,8 +906,11 @@ Parser::Resault Parser::parse(const tp::String& oscript) { } while (tokInputLeft()); mRes.scope->mStatements.reserve(stms.length()); + + ualni idx = 0; for (auto stm : stms) { - mRes.scope->mStatements[stm.idx()] = stm.data(); + mRes.scope->mStatements[idx] = stm.data(); + idx++; } return mRes; diff --git a/Objects/private/primitives/boolobject.cpp b/Objects/private/primitives/boolobject.cpp index 8d1bd3a..f63f16f 100644 --- a/Objects/private/primitives/boolobject.cpp +++ b/Objects/private/primitives/boolobject.cpp @@ -47,12 +47,12 @@ static alni save_size(BoolObject* self) { return sizeof(alni); } -static void save(BoolObject* self, Archiver& file_self) { - file_self.write(&self->val); +static void save(BoolObject* self, ArchiverOut& file_self) { + file_self << self->val; } -static void load(Archiver& file_self, BoolObject* self) { - file_self.read(&self->val); +static void load(ArchiverIn& file_self, BoolObject* self) { + file_self >> self->val; } struct ObjectTypeConversions BoolObjectTypeConversions = { diff --git a/Objects/private/primitives/classobject.cpp b/Objects/private/primitives/classobject.cpp index 2bfad9d..6baaf87 100644 --- a/Objects/private/primitives/classobject.cpp +++ b/Objects/private/primitives/classobject.cpp @@ -37,15 +37,15 @@ alni ClassObject::save_size(ClassObject* self) { return sizeof(alni); // dict object adress } -void ClassObject::save(ClassObject* self, Archiver& file_self) { +void ClassObject::save(ClassObject* self, ArchiverOut& file_self) { // save dictobject alni ndo_object_adress = NDO->save(file_self, self->members); - file_self.write(&ndo_object_adress); + file_self << ndo_object_adress; } -void ClassObject::load(Archiver& file_self, ClassObject* self) { +void ClassObject::load(ArchiverIn& file_self, ClassObject* self) { alni ndo_object_adress; - file_self.read(&ndo_object_adress); + file_self >> ndo_object_adress; self->members = NDO_CAST(DictObject, NDO->load(file_self, ndo_object_adress)); } diff --git a/Objects/private/primitives/colorobject.cpp b/Objects/private/primitives/colorobject.cpp index 587c663..6419878 100644 --- a/Objects/private/primitives/colorobject.cpp +++ b/Objects/private/primitives/colorobject.cpp @@ -37,12 +37,12 @@ static alni save_size(ColorObject* self) { return sizeof(tp::RGBA); } -static void save(ColorObject* self, Archiver& file_self) { - file_self.write(&self->mCol); +static void save(ColorObject* self, ArchiverOut& file_self) { + file_self << self->mCol; } -static void load(Archiver& file_self, ColorObject* self) { - file_self.read(&self->mCol); +static void load(ArchiverIn& file_self, ColorObject* self) { + file_self >> self->mCol; } struct ObjectTypeConversions ColorObjectTypeConversions = { diff --git a/Objects/private/primitives/dictobject.cpp b/Objects/private/primitives/dictobject.cpp index 483c625..c6b8e9e 100644 --- a/Objects/private/primitives/dictobject.cpp +++ b/Objects/private/primitives/dictobject.cpp @@ -52,39 +52,39 @@ alni DictObject::save_size(DictObject* self) { return save_size; } -void DictObject::save(DictObject* self, Archiver& file_self) { +void DictObject::save(DictObject* self, ArchiverOut& file_self) { // write size alni len = self->items.size(); - file_self.write(&len); + file_self << len; // save hashmap pairs for (auto item : self->items) { // item val alni ndo_object_adress = NDO->save(file_self, item->val); - file_self.write(&ndo_object_adress); + file_self << ndo_object_adress; // item key - item->key.save(&file_self); + file_self << item->key; } } -void DictObject::load(Archiver& file_self, DictObject* self) { +void DictObject::load(ArchiverIn& file_self, DictObject* self) { new (&self->items) tp::Map(); alni len; - file_self.read(&len); + file_self >> len; for (alni i = 0; i < len; i++) { // read val alni ndo_object_adress; - file_self.read(&ndo_object_adress); + file_self >> ndo_object_adress; Object* val = NDO->load(file_self, ndo_object_adress); // read key value String key; - key.load(&file_self); + file_self >> key; // add to dictinary self->items.put(key, val); @@ -103,11 +103,12 @@ tp::Buffer DictObject::childs_retrival(DictObject* self) { } alni DictObject::allocated_size(DictObject* self) { - alni out = self->items.sizeAllocatedMem(); + ASSERT(false) + // alni out = self->items.sizeAllocatedMem(); for (auto item : self->items) { - out += item->key.sizeAllocatedMem(); + // out += item->key.sizeAllocatedMem(); } - return out; + // return out; return 0; } @@ -141,7 +142,7 @@ tp::Map::Idx DictObject::presents(tp::String str) { return items.presents(str); } -Object* DictObject::getSlotVal(tp::alni idx) { +Object* DictObject::getSlotVal(tp::Map::Idx idx) { return items.getSlotVal(idx); } diff --git a/Objects/private/primitives/enumobject.cpp b/Objects/private/primitives/enumobject.cpp index bc6523e..67eacb3 100644 --- a/Objects/private/primitives/enumobject.cpp +++ b/Objects/private/primitives/enumobject.cpp @@ -28,7 +28,7 @@ void EnumObject::copy(EnumObject* self, const EnumObject* in) { tp::memCopy(self->entries, in->entries, self->nentries * ENV_ALNI_SIZE_B); } -void obj::EnumObject::init(tp::init_list list) { +void obj::EnumObject::init(tp::InitialierList list) { if (entries) free(entries); @@ -116,34 +116,34 @@ static alni save_size(EnumObject* self) { return sizeof(uhalni) + sizeof(uhalni) + sizeof(alni) * self->nentries; } -static void save(EnumObject* self, Archiver& file_self) { +static void save(EnumObject* self, ArchiverOut& file_self) { if (!self->entries) { uhalni empty_code = -1; - file_self.write(&empty_code); + file_self << empty_code; return; } - file_self.write(&self->active); - file_self.write(&self->nentries); - file_self.write_bytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); + file_self << self->active; + file_self << self->nentries; + file_self.writeBytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); } -static void load(Archiver& file_self, EnumObject* self) { - file_self.read(&self->active); +static void load(ArchiverIn& file_self, EnumObject* self) { + file_self >> self->active; if (self->active == -1) { self->nentries = 0; self->entries = NULL; return; } - file_self.read(&self->nentries); + file_self >> self->nentries; self->entries = (alni*) malloc(self->nentries * ENV_ALNI_SIZE_B); - file_self.read_bytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); + file_self.readBytes((tp::int1*) self->entries, self->nentries * ENV_ALNI_SIZE_B); } bool obj::EnumObject::compare(EnumObject* first, EnumObject* second) { return first->entries != NULL && second->entries != NULL && first->active == second->active; } -EnumObject* obj::EnumObject::create(tp::init_list list) { +EnumObject* obj::EnumObject::create(tp::InitialierList list) { auto enum_object = (EnumObject*)obj::NDO->create("enum"); enum_object->init(list); return enum_object; diff --git a/Objects/private/primitives/floatobject.cpp b/Objects/private/primitives/floatobject.cpp index 470273f..019fd66 100644 --- a/Objects/private/primitives/floatobject.cpp +++ b/Objects/private/primitives/floatobject.cpp @@ -47,12 +47,12 @@ static alni save_size(FloatObject* self) { return sizeof(alnf); } -static void save(FloatObject* self, Archiver& file_self) { - file_self.write(&self->val); +static void save(FloatObject* self, ArchiverOut& file_self) { + file_self << self->val; } -static void load(Archiver& file_self, FloatObject* self) { - file_self.read(&self->val); +static void load(ArchiverIn& file_self, FloatObject* self) { + file_self >> self->val; } struct ObjectTypeConversions FloatObjectTypeConversions = { diff --git a/Objects/private/primitives/interpreterobject.cpp b/Objects/private/primitives/interpreterobject.cpp index 8732922..55a15b9 100644 --- a/Objects/private/primitives/interpreterobject.cpp +++ b/Objects/private/primitives/interpreterobject.cpp @@ -19,13 +19,13 @@ void InterpreterObject::destructor(InterpreterObject* self) { self->mInterpreter.~Interpreter(); } -void InterpreterObject::load(Archiver& file_self, InterpreterObject* self) { +void InterpreterObject::load(ArchiverIn& file_self, InterpreterObject* self) { new (&self->mInterpreter) Interpreter(); } bool InterpreterObject::running() { return !mInterpreter.finished(); } -void InterpreterObject::exec(obj::ClassObject* self, tp::init_list globals) { +void InterpreterObject::exec(obj::ClassObject* self, tp::InitialierList globals) { if (running()) { return; diff --git a/Objects/private/primitives/intobject.cpp b/Objects/private/primitives/intobject.cpp index 06de36a..9aa004e 100644 --- a/Objects/private/primitives/intobject.cpp +++ b/Objects/private/primitives/intobject.cpp @@ -49,12 +49,12 @@ static alni save_size(IntObject* self) { return sizeof(alni); } -static void save(IntObject* self, Archiver& file_self) { - file_self.write(&self->val); +static void save(IntObject* self, ArchiverOut& file_self) { + file_self << self->val; } -static void load(Archiver& file_self, IntObject* self) { - file_self.read(&self->val); +static void load(ArchiverIn& file_self, IntObject* self) { + file_self >> self->val; } struct ObjectTypeConversions IntObjectTypeConversions = { diff --git a/Objects/private/primitives/linkobject.cpp b/Objects/private/primitives/linkobject.cpp index fb10d8b..462c77b 100644 --- a/Objects/private/primitives/linkobject.cpp +++ b/Objects/private/primitives/linkobject.cpp @@ -28,21 +28,21 @@ alni LinkObject::save_size(LinkObject* self) { return sizeof(alni); } -void LinkObject::save(LinkObject* self, Archiver& file_self) { +void LinkObject::save(LinkObject* self, ArchiverOut& file_self) { if (self->link != NULL) { alni link_object_save_adress = NDO->save(file_self, self->link); - file_self.write(&link_object_save_adress); + file_self << link_object_save_adress; } else { alni null = -1; - file_self.write(&null); + file_self << null; } } -void LinkObject::load(Archiver& file_self, LinkObject* self) { +void LinkObject::load(ArchiverIn& file_self, LinkObject* self) { alni saved_object_adress; - file_self.read(&saved_object_adress); + file_self >> saved_object_adress; if (saved_object_adress == -1) { self->link = NULL; diff --git a/Objects/private/primitives/listobject.cpp b/Objects/private/primitives/listobject.cpp index cd6b3f5..58d7461 100644 --- a/Objects/private/primitives/listobject.cpp +++ b/Objects/private/primitives/listobject.cpp @@ -38,25 +38,25 @@ alni ListObject::save_size(ListObject* self) { return (len + 1) * sizeof(alni); } -void ListObject::save(ListObject* self, Archiver& file_self) { +void ListObject::save(ListObject* self, ArchiverOut& file_self) { alni len = self->items.length(); - file_self.write(&len); + file_self << len; for (auto item : self->items) { alni ndo_object_adress = NDO->save(file_self, item.data()); - file_self.write(&ndo_object_adress); + file_self << ndo_object_adress; } } -void ListObject::load(Archiver& file_self, ListObject* self) { +void ListObject::load(ArchiverIn& file_self, ListObject* self) { new (&self->items) tp::List(); alni len; - file_self.read(&len); + file_self >> len; for (alni i = 0; i < len; i++) { alni ndo_object_adress; - file_self.read(&ndo_object_adress); + file_self >> ndo_object_adress; self->items.pushBack(NDO->load(file_self, ndo_object_adress)); } } @@ -78,11 +78,13 @@ alni ListObject::allocated_size(ListObject* self) { } alni ListObject::allocated_size_recursive(ListObject* self) { - alni out = self->items.sizeAllocatedMem(); + ASSERT(false) + //alni out = self->items.sizeAllocatedMem(); for (auto item : self->items) { - out += NDO->objsize_ram_recursive_util(item.data(), item->type); + //out += NDO->objsize_ram_recursive_util(item.data(), item->type); } - return out; + // return out; + return 0; } void ListObject::pushBack(Object* obj) { diff --git a/Objects/private/primitives/methodobject.cpp b/Objects/private/primitives/methodobject.cpp index 876c3f3..7a7f375 100644 --- a/Objects/private/primitives/methodobject.cpp +++ b/Objects/private/primitives/methodobject.cpp @@ -38,20 +38,18 @@ tp::alni MethodObject::save_size(MethodObject* self) { return sizeof(tp::alni); } -void MethodObject::save(MethodObject* self, Archiver& file_self) { +void MethodObject::save(MethodObject* self, ArchiverOut& file_self) { auto script_section = obj::ScriptSection::globalHandle(); - // script_table_file_address tp::alni script_table_file_address = script_section->get_script_file_adress(self->mScript); - file_self.write(&script_table_file_address); + file_self << script_table_file_address; } -void MethodObject::load(Archiver& file_self, obj::MethodObject* self) { +void MethodObject::load(ArchiverIn& file_self, obj::MethodObject* self) { auto script_section = obj::ScriptSection::globalHandle(); - // script_table_file_address tp::alni script_table_file_address; - file_self.read(&script_table_file_address); + file_self >> script_table_file_address; self->mScript = script_section->get_scritp_from_file_adress(script_table_file_address); } diff --git a/Objects/private/primitives/stringobject.cpp b/Objects/private/primitives/stringobject.cpp index 678a956..3ef9dd7 100644 --- a/Objects/private/primitives/stringobject.cpp +++ b/Objects/private/primitives/stringobject.cpp @@ -54,13 +54,13 @@ static alni save_size(StringObject* self) { return {}; } -static void save(StringObject* self, Archiver& file_self) { - self->val.save(&file_self); +static void save(StringObject* self, ArchiverOut& file_self) { + file_self << self->val; } -static void load(Archiver& file_self, StringObject* self) { +static void load(ArchiverIn& file_self, StringObject* self) { new (&self->val) tp::String(); - self->val.load(&file_self); + file_self >> self->val; } alni allocated_size(StringObject* self) { diff --git a/Objects/private/primitives/typeobject.cpp b/Objects/private/primitives/typeobject.cpp index 3ce305c..7e5288f 100644 --- a/Objects/private/primitives/typeobject.cpp +++ b/Objects/private/primitives/typeobject.cpp @@ -16,17 +16,17 @@ TypeObject* TypeObject::create(const ObjectType* type) { static alni save_size(TypeObject* self) { tp::String const nameid(self->mTypeRef->name); - return nameid.save_size(); + return nameid.size() + sizeof(nameid.size()); } -static void save(TypeObject* self, Archiver& file_self) { +static void save(TypeObject* self, ArchiverOut& file_self) { tp::String const nameid(self->mTypeRef->name); - nameid.save(&file_self); + file_self << nameid; } -static void load(Archiver& file_self, TypeObject* self) { +static void load(ArchiverIn& file_self, TypeObject* self) { tp::String nameid; - nameid.load(&file_self); + file_self >> nameid; auto idx = NDO->types.presents(nameid); diff --git a/Objects/public/compiler/expression.h b/Objects/public/compiler/expression.h index c297b99..3e71c73 100644 --- a/Objects/public/compiler/expression.h +++ b/Objects/public/compiler/expression.h @@ -33,7 +33,7 @@ namespace obj { Expression(Type type); ExpressionChild* ExprChild(tp::String id); - ExpressionCall* ExprCall(tp::init_list args); + ExpressionCall* ExprCall(tp::InitialierList args); }; struct ExpressionNew : public Expression { @@ -61,7 +61,7 @@ namespace obj { struct ExpressionCall : public Expression { Expression* mParent = NULL; tp::Buffer mArgs; - ExpressionCall(Expression* mParent, tp::init_list args); + ExpressionCall(Expression* mParent, tp::InitialierList args); }; struct ExpressionAriphm : public Expression { diff --git a/Objects/public/compiler/instruction.h b/Objects/public/compiler/instruction.h index d0047a8..26f142d 100644 --- a/Objects/public/compiler/instruction.h +++ b/Objects/public/compiler/instruction.h @@ -16,13 +16,13 @@ namespace obj { OpCode mOp = OpCode::NONE; - enum class ArgType { + enum class ArgType : tp::ualni { NO_ARG, PARAM, CONST, } mArgType = ArgType::NO_ARG; - enum class InstType { + enum class InstType : tp::ualni { NONE, JUMP, JUMP_IF, @@ -38,7 +38,7 @@ namespace obj { ConstObject* mConstData2 = NULL; tp::alni mInstIdx = 0; - tp::List::Node* mInstTarget = NULL; + Instruction* mInstTarget = NULL; Instruction(); Instruction(ConstObject* constData); @@ -46,7 +46,7 @@ namespace obj { Instruction(OpCode op, ConstObject* constData); Instruction(OpCode op, ConstObject* constData, ConstObject* constData2); Instruction(OpCode op, tp::alni param, tp::alni nBytes); - Instruction(tp::List::Node* inst, InstType jump_type); + Instruction(Instruction* inst, InstType jump_type); }; }; }; \ No newline at end of file diff --git a/Objects/public/compiler/statement.h b/Objects/public/compiler/statement.h index 0e53a3c..c708820 100644 --- a/Objects/public/compiler/statement.h +++ b/Objects/public/compiler/statement.h @@ -31,7 +31,7 @@ namespace obj { tp::Buffer mStatements; bool mPushToScopeStack = false; - StatementScope(tp::init_list statements, bool aPushToScopeStack); + StatementScope(tp::InitialierList statements, bool aPushToScopeStack); }; struct StatementFuncDef : public Statement { @@ -39,7 +39,7 @@ namespace obj { tp::String mFunctionId; tp::Buffer mStatements; - StatementFuncDef(tp::String function_id, tp::init_list args, tp::init_list statements); + StatementFuncDef(tp::String function_id, tp::InitialierList args, tp::InitialierList statements); }; struct StatementLocalDef : public Statement { @@ -101,14 +101,14 @@ namespace obj { }; // Helpers - StatementFuncDef* StmDefFunc(tp::String id, tp::init_list args, tp::init_list stms); + StatementFuncDef* StmDefFunc(tp::String id, tp::InitialierList args, tp::InitialierList stms); StatementLocalDef* StmDefLocal(tp::String id, Expression* value); StatementCopy* StmCopy(Expression* left, Expression* right); StatementPrint* StmPrint(Expression* target); StatementReturn* StmReturn(Expression* obj); StatementReturn* StmReturn(); StatementIf* StmIf(Expression* condition, StatementScope* on_true, StatementScope* on_false); - StatementScope* StmScope(tp::init_list statements, bool aPushToScopeStack); + StatementScope* StmScope(tp::InitialierList statements, bool aPushToScopeStack); StatementWhile* StmWhile(Expression* condition, StatementScope* scope); StatementIgnore* StmIgnore(Expression* expr); StatementClassDef* StmClassDef(tp::String id, StatementScope* scope); diff --git a/Objects/public/core/object.h b/Objects/public/core/object.h index 9feeef6..8782bdf 100644 --- a/Objects/public/core/object.h +++ b/Objects/public/core/object.h @@ -11,6 +11,8 @@ #include "core/typegroups.h" #include "core/typemethods.h" +#include "Archiver.hpp" + //#include "interpreter/interpreter.h" /* Steps to create custom Object: @@ -36,36 +38,48 @@ implement construct, destruct and copy methods */ namespace obj { - class Archiver : public tp::LocalConnection { + template + class Archiver : public tp::ArchiverTemplate { + tp::LocalConnection mConnection; + tp::ualni mAddress = 0; + tp::ualni mFirstNotWritten = 0; + public: - enum Type { SAVE, LOAD }; - Archiver() = default; - Archiver(const char*, Type) {}; + explicit Archiver(const char* location) {}; - bool opened; - - tp::ualni adress{}; - - // not yet writen address - // always offsets on write without specific address - tp::ualni avl_adress{}; - - void write_bytes(const tp::int1* in, tp::alni size, tp::alni adress = -1) {} - - template - void write(Type* in, tp::alni adress = -1) { - write_bytes((tp::int1*) in, sizeof(Type), adress); + void writeBytes(const tp::int1* val, tp::ualni size) override { + mConnection.writeBytes(val, size); + incrementAddresses(size); } - void read_bytes(tp::int1* in, tp::alni size, tp::alni adress = -1) {} + void readBytes(tp::int1* val, tp::ualni size) override { + mConnection.readBytes(val, size); + incrementAddresses(size); + } - template - void read(Type* in, tp::alni adress = -1) { - read_bytes((tp::int1*) in, sizeof(Type), adress); + tp::ualni getAddress() { return mAddress; } + + void setAddress(tp::ualni addr) { mAddress = addr; } + + tp::ualni getFreeAddress() { return mFirstNotWritten; } + + void setFreeAddress(tp::ualni addr) { mFirstNotWritten = addr; } + + bool isOpened() { return mConnection.getConnectionStatus().isOpened(); } + + bool getSize() { return mConnection.size(); } + + private: + void incrementAddresses(tp::ualni size) { + // if (mAddress + size > mFirstNotWritten) mFirstNotWritten = mAddress + size; + mAddress += size; } }; + using ArchiverIn = Archiver; + using ArchiverOut = Archiver; + extern tp::ModuleManifest gModuleObjects; extern struct objects_api* NDO; @@ -116,8 +130,8 @@ namespace obj { typedef void (*object_copy)(Object* self, const Object* target); typedef tp::alni(*object_save_size)(Object* self); - typedef void (*object_save)(Object*, Archiver&); - typedef void (*object_load)(Archiver&, Object*); + typedef void (*object_save)(Object*, ArchiverOut&); + typedef void (*object_load)(ArchiverIn&, Object*); typedef bool (*object_compare)(Object*, Object*); @@ -130,7 +144,7 @@ namespace obj { object_constructor constructor = NULL; object_destructor destructor = NULL; object_copy copy = NULL; - tp::alni size = NULL; + tp::alni size = 0; const char* name; const ObjectTypeConversions* convesions = NULL; const ObjectTypeAriphmetics* ariphmetics = NULL; @@ -148,11 +162,11 @@ namespace obj { #define SAVE_LOAD_MAX_CALLBACK_SLOTS 100 - typedef void (pre_save_callback)(void* self, Archiver&); - typedef void (pre_load_callback)(void* self, Archiver&); - typedef void (post_save_callback)(void* self, Archiver&); - typedef void (post_load_callback)(void* self, Archiver&); - typedef tp::alni (slcb_size_callback)(void* self, Archiver&); + typedef void (pre_save_callback)(void* self, ArchiverOut&); + typedef void (pre_load_callback)(void* self, ArchiverIn&); + typedef void (post_save_callback)(void* self, ArchiverOut&); + typedef void (post_load_callback)(void* self, ArchiverIn&); + typedef tp::alni (slcb_size_callback)(void* self, ArchiverOut&); struct save_load_callbacks { void* self; @@ -213,8 +227,8 @@ namespace obj { bool save(Object*, tp::String path, bool compressed = true); Object* load(tp::String path); - tp::alni save(Archiver&, Object*); - Object* load(Archiver&, tp::alni file_adress); + tp::alni save(ArchiverOut&, Object*); + Object* load(ArchiverIn&, tp::alni file_adress); }; Object* ndo_cast(const Object* in, const ObjectType* to_type); diff --git a/Objects/public/core/scriptsection.h b/Objects/public/core/scriptsection.h index 56efcf7..724b15b 100644 --- a/Objects/public/core/scriptsection.h +++ b/Objects/public/core/scriptsection.h @@ -29,8 +29,8 @@ namespace obj { void delete_script(Script* script); void reference_script(Script* script); - static void save_script_table_to_file(ScriptSection* self, Archiver& file); - static void load_script_table_from_file(ScriptSection* self, Archiver& file); - static tp::alni save_script_table_to_file_size(ScriptSection* self, Archiver& file); + static void save_script_table_to_file(ScriptSection* self, ArchiverOut& file); + static void load_script_table_from_file(ScriptSection* self, ArchiverIn& file); + static tp::alni save_script_table_to_file_size(ScriptSection* self, ArchiverOut& file); }; }; \ No newline at end of file diff --git a/Objects/public/core/typegroups.h b/Objects/public/core/typegroups.h index 1dcb138..ac546a8 100644 --- a/Objects/public/core/typegroups.h +++ b/Objects/public/core/typegroups.h @@ -21,7 +21,7 @@ namespace obj { TypeGroups(bool is_group); - void addType(ObjectType* type, tp::init_list path, tp::alni cur_arg = 0); + void addType(ObjectType* type, tp::InitialierList path, tp::alni cur_arg = 0); void setType(ObjectType* type); bool isGroup(); Dict* getChilds(); diff --git a/Objects/public/core/typemethods.h b/Objects/public/core/typemethods.h index d485aa4..06a95d5 100644 --- a/Objects/public/core/typemethods.h +++ b/Objects/public/core/typemethods.h @@ -23,7 +23,7 @@ namespace obj { mutable Object* self = NULL; Arg args[MAX_ARGS]; - tp::int1 mNargs = NULL; + tp::int1 mNargs = 0; void (*exec)(const TypeMethod* tm) = NULL; @@ -40,7 +40,7 @@ namespace obj { enum : tp::int2 { MAX_TYPE_METHODS = 128 }; TypeMethod* methods[MAX_TYPE_METHODS]; - tp::halni mNMethods = NULL; + tp::halni mNMethods = 0; struct LookupKey { tp::int2 key = -1; diff --git a/Objects/public/interpreter/interpreter.h b/Objects/public/interpreter/interpreter.h index eeab2cd..c6f67b2 100644 --- a/Objects/public/interpreter/interpreter.h +++ b/Objects/public/interpreter/interpreter.h @@ -16,7 +16,7 @@ namespace obj { typedef struct { obj::Object* obj; tp::String id; } GlobalDef; - void exec(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::init_list globals2 = {}); + void exec(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::InitialierList globals2 = {}); void stepBytecode(); void stepBytecodeIn(); @@ -24,6 +24,6 @@ namespace obj { bool finished(); - void execAll(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::init_list globals2 = {}); + void execAll(obj::MethodObject* method, obj::ClassObject* self = NULL, obj::DictObject* globals = NULL, tp::InitialierList globals2 = {}); }; }; \ No newline at end of file diff --git a/Objects/public/interpreter/opcodes.h b/Objects/public/interpreter/opcodes.h index 54fe22e..e77092b 100644 --- a/Objects/public/interpreter/opcodes.h +++ b/Objects/public/interpreter/opcodes.h @@ -121,7 +121,7 @@ namespace obj { tp::halni len = 0; OperandsInfo(); - OperandsInfo(tp::init_list list); + OperandsInfo(tp::InitialierList list); }; struct ParamsInfo { @@ -135,7 +135,7 @@ namespace obj { tp::halni len = 0; ParamsInfo(); - ParamsInfo(tp::init_list list); + ParamsInfo(tp::InitialierList list); }; struct OpInfo { diff --git a/Objects/public/parser/parser.h b/Objects/public/parser/parser.h index 7e53411..dba98fb 100644 --- a/Objects/public/parser/parser.h +++ b/Objects/public/parser/parser.h @@ -105,7 +105,7 @@ namespace obj { struct Error { tp::String mDescr = "No Description"; - tp::alni mAdvanecedIdx = NULL; + tp::alni mAdvanecedIdx = 0; Error() {} Error(tp::String descr, tp::alni idx) { @@ -159,7 +159,7 @@ namespace obj { BCgen::Expression* parseExprFUNC(); BCgen::Expression* parseExprChain(BCgen::Expression* prnt); - BCgen::Expression* parseExpr(tp::init_list expressions = { + BCgen::Expression* parseExpr(tp::InitialierList expressions = { ExprType::BOOLEAN_NOT, ExprType::BOOLEAN, ExprType::Ariphm, @@ -178,7 +178,7 @@ namespace obj { BCgen::Statement* parseStmCopy(); BCgen::Statement* parseStmClassDef(); - BCgen::Statement* parseStm(tp::init_list stm_types = { + BCgen::Statement* parseStm(tp::InitialierList stm_types = { StmType::DefFunc, StmType::DefLocal, StmType::Return, diff --git a/Objects/public/primitives/classobject.h b/Objects/public/primitives/classobject.h index 2778972..e3d6d31 100644 --- a/Objects/public/primitives/classobject.h +++ b/Objects/public/primitives/classobject.h @@ -11,8 +11,8 @@ namespace obj { static void destructor(ClassObject* self); static void constructor(ClassObject* self); static tp::alni save_size(ClassObject* self); - static void save(ClassObject* self, Archiver& file_self); - static void load(Archiver& file_self, ClassObject* self); + static void save(ClassObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, ClassObject* self); DictObject* members; @@ -33,7 +33,7 @@ namespace obj { template Type* getMember(const tp::String& id) { auto idx = members->presents(id); - if (idx) { + if (bool(idx)) { return ((Type*)obj::ndo_cast(members->getSlotVal(idx), &Type::TypeData)); } return NULL; diff --git a/Objects/public/primitives/dictobject.h b/Objects/public/primitives/dictobject.h index 6445196..6806436 100644 --- a/Objects/public/primitives/dictobject.h +++ b/Objects/public/primitives/dictobject.h @@ -11,8 +11,8 @@ namespace obj { static void constructor(Object* self); static tp::alni save_size(DictObject* self); - static void save(DictObject* self, Archiver& file_self); - static void load(Archiver& file_self, DictObject* self); + static void save(DictObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, DictObject* self); static tp::Buffer childs_retrival(DictObject* self); static tp::alni allocated_size(DictObject* self); static tp::alni allocated_size_recursive(DictObject* self); @@ -21,7 +21,7 @@ namespace obj { void remove(tp::String); Object* get(tp::String); tp::Map::Idx presents(tp::String); - Object* getSlotVal(tp::alni); + Object* getSlotVal(tp::Map::Idx); const tp::Map& getItems() const; diff --git a/Objects/public/primitives/enumobject.h b/Objects/public/primitives/enumobject.h index 13aebef..6e12823 100644 --- a/Objects/public/primitives/enumobject.h +++ b/Objects/public/primitives/enumobject.h @@ -17,7 +17,7 @@ namespace obj { static void destructor(EnumObject* self); static void copy(EnumObject* self, const EnumObject* in); - void init(tp::init_list list); + void init(tp::InitialierList list); const char* getActiveName(); const char* getItemName(tp::uhalni idx); @@ -29,6 +29,6 @@ namespace obj { static tp::alnf to_float(EnumObject* self); static bool compare(EnumObject* first, EnumObject* second); - static EnumObject* create(tp::init_list list); + static EnumObject* create(tp::InitialierList list); }; }; \ No newline at end of file diff --git a/Objects/public/primitives/interpreterobject.h b/Objects/public/primitives/interpreterobject.h index 5710924..9f5f235 100644 --- a/Objects/public/primitives/interpreterobject.h +++ b/Objects/public/primitives/interpreterobject.h @@ -10,9 +10,9 @@ namespace obj { static void destructor(InterpreterObject* self); static void constructor(InterpreterObject* self); - static void load(Archiver& file_self, InterpreterObject* self); + static void load(ArchiverIn& file_self, InterpreterObject* self); - void exec(obj::ClassObject* self = NULL, tp::init_list globals = {}); + void exec(obj::ClassObject* self = NULL, tp::InitialierList globals = {}); void debug(); bool running(); }; diff --git a/Objects/public/primitives/linkobject.h b/Objects/public/primitives/linkobject.h index 52b7129..b614773 100644 --- a/Objects/public/primitives/linkobject.h +++ b/Objects/public/primitives/linkobject.h @@ -13,8 +13,8 @@ namespace obj { static LinkObject* create(Object* in); static tp::alni save_size(LinkObject* self); - static void save(LinkObject* self, Archiver& file_self); - static void load(Archiver& file_self, LinkObject* self); + static void save(LinkObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, LinkObject* self); static tp::alni allocated_size(LinkObject* self); static tp::alni allocated_size_recursive(LinkObject* self); static tp::Buffer childs_retrival(LinkObject* self); diff --git a/Objects/public/primitives/listobject.h b/Objects/public/primitives/listobject.h index bd17841..3546f70 100644 --- a/Objects/public/primitives/listobject.h +++ b/Objects/public/primitives/listobject.h @@ -19,8 +19,8 @@ namespace obj { static tp::alni allocated_size_recursive(ListObject* self); static tp::alni allocated_size(ListObject* self); static tp::Buffer childs_retrival(ListObject* self); - static void load(Archiver& file_self, ListObject* self); - static void save(ListObject* self, Archiver& file_self); + static void load(ArchiverIn& file_self, ListObject* self); + static void save(ListObject* self, ArchiverOut& file_self); static tp::alni save_size(ListObject* self); const tp::List& getItems() const; diff --git a/Objects/public/primitives/methodobject.h b/Objects/public/primitives/methodobject.h index e4aedf3..907225a 100644 --- a/Objects/public/primitives/methodobject.h +++ b/Objects/public/primitives/methodobject.h @@ -15,8 +15,8 @@ namespace obj { static void copy(MethodObject* self, MethodObject* in); static void destructor(MethodObject* self); static tp::alni save_size(MethodObject* self); - static void save(MethodObject* self,Archiver& file_self); - static void load(Archiver& file_self, obj::MethodObject* self); + static void save(MethodObject* self, ArchiverOut& file_self); + static void load(ArchiverIn& file_self, obj::MethodObject* self); static void Initialize(); static void UnInitialize(); diff --git a/Objects/public/primitives/primitives.h b/Objects/public/primitives/primitives.h index e659765..81802d2 100644 --- a/Objects/public/primitives/primitives.h +++ b/Objects/public/primitives/primitives.h @@ -1,22 +1,16 @@ - -#pragma once - -#include "primitives/dictobject.h" -#include "primitives/intobject.h" -#include "primitives/linkobject.h" -#include "primitives/listobject.h" -#include "primitives/nullobject.h" -#include "primitives/stringobject.h" -#include "primitives/boolobject.h" -#include "primitives/floatobject.h" -#include "primitives/enumobject.h" -#include "primitives/classobject.h" -#include "primitives/colorobject.h" -#include "primitives/methodobject.h" -#include "primitives/interpreterobject.h" -#include "primitives/typeobject.h" - -namespace obj { - void primitives_define_types(); - void primitives_uninitialize(); -}; \ No newline at end of file +#pragma once + +#include "primitives/boolobject.h" +#include "primitives/classobject.h" +#include "primitives/colorobject.h" +#include "primitives/dictobject.h" +#include "primitives/enumobject.h" +#include "primitives/floatobject.h" +#include "primitives/interpreterobject.h" +#include "primitives/intobject.h" +#include "primitives/linkobject.h" +#include "primitives/listobject.h" +#include "primitives/methodobject.h" +#include "primitives/nullobject.h" +#include "primitives/stringobject.h" +#include "primitives/typeobject.h" \ No newline at end of file diff --git a/Objects/tests/Tests.cpp b/Objects/tests/Tests.cpp new file mode 100644 index 0000000..52e3859 --- /dev/null +++ b/Objects/tests/Tests.cpp @@ -0,0 +1,9 @@ + +#include "NewPlacement.hpp" +#include "Testing.hpp" + +#include "primitives/primitives.h" + +int main() { + return 0; +} \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index b146d41..b999f8d 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -166,6 +166,21 @@ namespace tp { } } + template + void archiveWrite(tArchiver& ar) const { + auto size = this->size(); + ar << size; + ar.writeBytes(read(), size); + } + + template + void archiveRead(tArchiver& ar) { + Index size; + ar >> size; + resize(size); + ar.readBytes(write(), size); + } + public: // Syntax sugars explicit StringTemplate(alni val) { From 2c8e1470d1c37e99346c1f5cb874de74894e72c7 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 31 Jul 2023 20:16:05 +0300 Subject: [PATCH 39/68] Adding Simple Objest test. Fixes some bugs --- Allocators/private/HeapAllocatorGlobal.cpp | 2 ++ Connection/private/LocalConnection.cpp | 13 ++++----- Connection/public/ConnectionCommon.hpp | 2 +- Modules/public/Archiver.hpp | 4 +-- Objects/CMakeLists.txt | 2 +- Objects/private/core/module.cpp | 1 + Objects/public/core/object.h | 8 ++++-- Objects/tests/Tests.cpp | 16 +++++++++++ Objects/tests/core/TestCore.cpp | 31 ++++++++++++++++++++++ Strings/public/Strings.hpp | 10 ++++--- 10 files changed, 74 insertions(+), 15 deletions(-) create mode 100644 Objects/tests/core/TestCore.cpp diff --git a/Allocators/private/HeapAllocatorGlobal.cpp b/Allocators/private/HeapAllocatorGlobal.cpp index 7e41c6a..291ccd6 100644 --- a/Allocators/private/HeapAllocatorGlobal.cpp +++ b/Allocators/private/HeapAllocatorGlobal.cpp @@ -172,6 +172,8 @@ bool HeapAllocGlobal::checkLeaks() { } #endif + printf(" Count : %llu", mNumAllocations); + ASSERT(!"Destruction of not freed Allocator") return true; } diff --git a/Connection/private/LocalConnection.cpp b/Connection/private/LocalConnection.cpp index cd6f90c..cf90e2e 100644 --- a/Connection/private/LocalConnection.cpp +++ b/Connection/private/LocalConnection.cpp @@ -26,11 +26,11 @@ bool LocalConnection::connect(const Location& location, const Type& connectionIn switch (connectionInfo.getType()) { case Type::READ: - handle->open(location.getLocation().read(), false); + handle->open(location.getLocation().read(), true); break; case Type::WRITE: - handle->open(location.getLocation().read(), true); + handle->open(location.getLocation().read(), false); break; default: @@ -61,12 +61,13 @@ bool LocalConnection::disconnect() { bool LocalConnection::setPointer(BytePointer pointer) { DEBUG_ASSERT(mStatus.isOpened()); if (!mStatus.isOpened()) return false; + mPointer = pointer; return true; } bool LocalConnection::readBytes(Byte* bytes, SizeBytes size) { - DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isWrite()); - if (!mStatus.isOpened() || !mConnectionType.isWrite()) return false; + DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isRead()); + if (!mStatus.isOpened() || !mConnectionType.isRead()) return false; mHandle->seekp(mPointer); mHandle->read(bytes, size); @@ -75,8 +76,8 @@ bool LocalConnection::readBytes(Byte* bytes, SizeBytes size) { } bool LocalConnection::writeBytes(const Byte* bytes, SizeBytes size) { - DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isRead()); - if (!mStatus.isOpened() || !mConnectionType.isRead()) return false; + DEBUG_ASSERT(mStatus.isOpened() && mConnectionType.isWrite()); + if (!mStatus.isOpened() || !mConnectionType.isWrite()) return false; mHandle->seekp(mPointer); mHandle->write(bytes, size); diff --git a/Connection/public/ConnectionCommon.hpp b/Connection/public/ConnectionCommon.hpp index ab70d62..6c3cc1f 100644 --- a/Connection/public/ConnectionCommon.hpp +++ b/Connection/public/ConnectionCommon.hpp @@ -34,8 +34,8 @@ namespace tp { class Type { public: enum State { - READ, WRITE, + READ, READ_WRITE, NONE, }; diff --git a/Modules/public/Archiver.hpp b/Modules/public/Archiver.hpp index ba66bc2..6bc7ee9 100644 --- a/Modules/public/Archiver.hpp +++ b/Modules/public/Archiver.hpp @@ -48,7 +48,7 @@ namespace tp { if constexpr (HasFunc::template Write::value) { val.archiveWrite(*this); } else { - writeBytes((const int1*) &val, sizeof(val)); + writeBytes((const int1*) &val, sizeof(Type)); } } @@ -60,7 +60,7 @@ namespace tp { if constexpr (HasFunc::template Read::value) { val.archiveRead(*this); } else { - readBytes((int1*) &val, sizeof(val)); + readBytes((int1*) &val, sizeof(Type)); } } diff --git a/Objects/CMakeLists.txt b/Objects/CMakeLists.txt index 602e29a..91166d2 100644 --- a/Objects/CMakeLists.txt +++ b/Objects/CMakeLists.txt @@ -23,7 +23,7 @@ target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math Tokenizer CommandLine ### -------------------------- Tests -------------------------- ### enable_testing() -file(GLOB TEST_SOURCES "./tests/*.cpp") +file(GLOB TEST_SOURCES "./tests/*.cpp" "./tests/*/*.cpp") add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) diff --git a/Objects/private/core/module.cpp b/Objects/private/core/module.cpp index 22286c2..3140810 100644 --- a/Objects/private/core/module.cpp +++ b/Objects/private/core/module.cpp @@ -81,6 +81,7 @@ static tp::ModuleManifest* sModuleDependencies[] = { &tp::gModuleMath, &tp::gModuleStrings, &tp::gModuleTokenizer, + &tp::gModuleConnection, NULL }; diff --git a/Objects/public/core/object.h b/Objects/public/core/object.h index 8782bdf..29ae4fa 100644 --- a/Objects/public/core/object.h +++ b/Objects/public/core/object.h @@ -46,14 +46,18 @@ namespace obj { public: Archiver() = default; - explicit Archiver(const char* location) {}; + explicit Archiver(const char* location) { + mConnection.connect(tp::LocalConnection::Location(location), tp::LocalConnection::Type(tRead)); + }; void writeBytes(const tp::int1* val, tp::ualni size) override { + mConnection.setPointer(mAddress); mConnection.writeBytes(val, size); incrementAddresses(size); } void readBytes(tp::int1* val, tp::ualni size) override { + mConnection.setPointer(mAddress); mConnection.readBytes(val, size); incrementAddresses(size); } @@ -68,7 +72,7 @@ namespace obj { bool isOpened() { return mConnection.getConnectionStatus().isOpened(); } - bool getSize() { return mConnection.size(); } + tp::ualni getSize() { return mConnection.size(); } private: void incrementAddresses(tp::ualni size) { diff --git a/Objects/tests/Tests.cpp b/Objects/tests/Tests.cpp index 52e3859..0a9b12d 100644 --- a/Objects/tests/Tests.cpp +++ b/Objects/tests/Tests.cpp @@ -4,6 +4,22 @@ #include "primitives/primitives.h" +using namespace tp; +using namespace obj; + + +void testCore(); + int main() { + + tp::ModuleManifest* deps[] = { &gModuleObjects, nullptr }; + tp::ModuleManifest module("ObjectsTests", nullptr, nullptr, deps); + + if (module.initialize()) { + + testCore(); + + module.deinitialize(); + } return 0; } \ No newline at end of file diff --git a/Objects/tests/core/TestCore.cpp b/Objects/tests/core/TestCore.cpp new file mode 100644 index 0000000..a482294 --- /dev/null +++ b/Objects/tests/core/TestCore.cpp @@ -0,0 +1,31 @@ + +#include "NewPlacement.hpp" + +#include "Testing.hpp" + +#include "core/object.h" + +#include "primitives/intobject.h" + +using namespace tp; +using namespace obj; + +TEST_DEF_STATIC(BasicAPI) { + auto integer = NDO_CAST(IntObject, NDO->create("int")); + + integer->val = 10; + + printf("%s\n", NDO->toString(integer).read()); + + NDO->save(integer, "tmp.o"); + auto savedInt = NDO->load("tmp.o"); + + printf("%s\n", NDO->toString(savedInt).read()); + + NDO->destroy(integer); + NDO->destroy(savedInt); +} + +TEST_DEF(Core) { + testBasicAPI(); +} \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index b999f8d..9f61cfa 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -121,6 +121,7 @@ namespace tp { } void decReference(Data* dp) { + DEBUG_ASSERT(dp->mReferenceCount > 0) dp->mReferenceCount--; if (!dp->mReferenceCount) { mData->~StringData(); @@ -184,21 +185,24 @@ namespace tp { public: // Syntax sugars explicit StringTemplate(alni val) { - auto raw = new tChar[MAX_INT_STRING_LENGTH]; + tChar raw[MAX_INT_STRING_LENGTH]; Logic::convertValueToString(val, raw, MAX_INT_STRING_LENGTH); mData = new (sStringPool.allocate(0)) StringData(raw); + incReference(mData); } explicit StringTemplate(alnf val) { - auto raw = new tChar[MAX_FLOAT_STRING_LENGTH]; + tChar raw[MAX_INT_STRING_LENGTH]; Logic::convertValueToString(val, raw, MAX_FLOAT_STRING_LENGTH); mData = new (sStringPool.allocate(0)) StringData(raw); + incReference(mData); } explicit StringTemplate(bool val) { - auto raw = new tChar[MAX_BOOL_STRING_LENGTH]; + tChar raw[MAX_INT_STRING_LENGTH]; Logic::convertValueToString(val, raw, MAX_BOOL_STRING_LENGTH); mData = new (sStringPool.allocate(0)) StringData(raw); + incReference(mData); } explicit operator alni() { From a918c83ec129539f5f8ec100021c958e18b35760 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 31 Jul 2023 22:10:46 +0300 Subject: [PATCH 40/68] Objects adding dict test & fixes --- Objects/private/core/objectsave.cpp | 8 +++-- Objects/private/primitives/dictobject.cpp | 5 ++- Objects/private/primitives/stringobject.cpp | 7 +++-- Objects/tests/Tests.cpp | 2 ++ Objects/tests/core/TestCore.cpp | 5 +++ Objects/tests/primitives/TestPrimitives.cpp | 35 +++++++++++++++++++++ 6 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 Objects/tests/primitives/TestPrimitives.cpp diff --git a/Objects/private/core/objectsave.cpp b/Objects/private/core/objectsave.cpp index 6b24f1c..dc67e1e 100644 --- a/Objects/private/core/objectsave.cpp +++ b/Objects/private/core/objectsave.cpp @@ -221,7 +221,7 @@ namespace obj { ndf << tp::String(in->type->name); // allocate for object file header - ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + 1); + ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + sizeof(tp::String::Logic::Index)); // calc max size needed for saving all hierarchy of types tp::alni file_alloc_size = objsize_file_util(in, in->type); @@ -372,8 +372,10 @@ namespace obj { ndf.setAddress(0); - loaded_file = (tp::int1*) malloc(ndf.getSize()); - ndf.readBytes(loaded_file, ndf.getSize()); + const auto fileSize = ndf.getSize(); + loaded_file = (tp::int1*) malloc(fileSize); + tp::memSetVal(loaded_file, fileSize, 0); + ndf.readBytes(loaded_file, fileSize); ndf.setAddress(sizeof(ObjectsFileHeader)); diff --git a/Objects/private/primitives/dictobject.cpp b/Objects/private/primitives/dictobject.cpp index c6b8e9e..f83aea0 100644 --- a/Objects/private/primitives/dictobject.cpp +++ b/Objects/private/primitives/dictobject.cpp @@ -44,7 +44,10 @@ alni DictObject::save_size(DictObject* self) { for (auto item : self->items) { // string length - save_size += (item->key.size() + 1) * sizeof(*item->key.read()); + auto size = item->key.size(); + save_size += size * sizeof(*item->key.read()); + save_size += sizeof(decltype(size)); + // object file adress save_size += sizeof(alni); } diff --git a/Objects/private/primitives/stringobject.cpp b/Objects/private/primitives/stringobject.cpp index 3ef9dd7..58f9947 100644 --- a/Objects/private/primitives/stringobject.cpp +++ b/Objects/private/primitives/stringobject.cpp @@ -50,8 +50,11 @@ alnf StringObject::to_float(StringObject* self) { } static alni save_size(StringObject* self) { - // return self->val.save_size(); - return {}; + alni save_size = 0; + auto size = self->val.size(); + save_size += (size) * sizeof(*self->val.read()); + save_size += sizeof(decltype(size)); + return save_size; } static void save(StringObject* self, ArchiverOut& file_self) { diff --git a/Objects/tests/Tests.cpp b/Objects/tests/Tests.cpp index 0a9b12d..f3a24b4 100644 --- a/Objects/tests/Tests.cpp +++ b/Objects/tests/Tests.cpp @@ -9,6 +9,7 @@ using namespace obj; void testCore(); +void testPrimitives(); int main() { @@ -18,6 +19,7 @@ int main() { if (module.initialize()) { testCore(); + testPrimitives(); module.deinitialize(); } diff --git a/Objects/tests/core/TestCore.cpp b/Objects/tests/core/TestCore.cpp index a482294..9166570 100644 --- a/Objects/tests/core/TestCore.cpp +++ b/Objects/tests/core/TestCore.cpp @@ -22,6 +22,11 @@ TEST_DEF_STATIC(BasicAPI) { printf("%s\n", NDO->toString(savedInt).read()); + TEST(NDO->compare(integer, savedInt)); + TEST(NDO_CAST(IntObject, savedInt)); + TEST(integer->val == NDO_CAST(IntObject, savedInt)->val); + + NDO->destroy(integer); NDO->destroy(savedInt); } diff --git a/Objects/tests/primitives/TestPrimitives.cpp b/Objects/tests/primitives/TestPrimitives.cpp new file mode 100644 index 0000000..4e7d01b --- /dev/null +++ b/Objects/tests/primitives/TestPrimitives.cpp @@ -0,0 +1,35 @@ + +#include "NewPlacement.hpp" + +#include "Testing.hpp" + +#include "core/object.h" + +#include "primitives/dictobject.h" +#include "primitives/intobject.h" + +using namespace tp; +using namespace obj; + +TEST_DEF_STATIC(Dict) { + auto integer = NDO_CAST(IntObject, NDO->create("int")); + integer->val = 10; + + auto dict = NDO_CAST(DictObject, NDO->create("dict")); + + dict->put("val", integer); + + NDO->save(dict, "dict.o"); + + auto dictLoaded = NDO_CAST(DictObject, NDO->load("dict.o")); + + TEST(dictLoaded->presents("val").isValid()); + TEST(NDO_CAST(IntObject, dictLoaded->get("val"))->val == 10); + + NDO->destroy(dict); + NDO->destroy(dictLoaded); +} + +TEST_DEF(Primitives) { + testDict(); +} \ No newline at end of file From 0cefb47b66d0c6419c216efcc66f8e84b3e12c40 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 1 Aug 2023 07:41:09 +0300 Subject: [PATCH 41/68] Refactor save size calculation with SaveSizeCounter SaveSizeCounter is introduced and used for calculating the save size of objects. The previous method of calculating save size directly in each class was replaced with a call to the SaveSizeCounter's calc method. This results in a cleaner, more maintainable code as the size calculation logic is now centralized in one class. It is more efficient and scalable as any changes to the calculation can be made in one place and will be reflected everywhere. --- Modules/public/SizeCounter.hpp | 25 ++++++++++++++++++++- Objects/private/core/objectsave.cpp | 2 +- Objects/private/core/scriptsection.cpp | 7 ++---- Objects/private/primitives/dictobject.cpp | 4 +--- Objects/private/primitives/stringobject.cpp | 6 +---- Objects/public/core/object.h | 1 + 6 files changed, 30 insertions(+), 15 deletions(-) diff --git a/Modules/public/SizeCounter.hpp b/Modules/public/SizeCounter.hpp index a44895d..e861738 100644 --- a/Modules/public/SizeCounter.hpp +++ b/Modules/public/SizeCounter.hpp @@ -1,9 +1,32 @@ #pragma once -#include "Common.hpp" +#include "Archiver.hpp" namespace tp { + class SaveSizeCounter : public ArchiverTemplate { + public: + SaveSizeCounter() = default; + + template < typename tType> + static ualni calc(const tType& val) { + SaveSizeCounter cnt; + cnt << val; + return cnt.mSize; + } + + protected: + void writeBytes(const int1* val, ualni size) override { mSize += size; } + void readBytes(int1* val, ualni size) override {} + + [[nodiscard]] ualni getSize() const { return mSize; } + + private: + ualni mSize = 0; + }; + + + // TODO template class SizeCounter { diff --git a/Objects/private/core/objectsave.cpp b/Objects/private/core/objectsave.cpp index dc67e1e..5da599f 100644 --- a/Objects/private/core/objectsave.cpp +++ b/Objects/private/core/objectsave.cpp @@ -221,7 +221,7 @@ namespace obj { ndf << tp::String(in->type->name); // allocate for object file header - ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::String::Logic::calcLength(in->type->name) + sizeof(tp::String::Logic::Index)); + ndf.setFreeAddress(ndf.getFreeAddress() + sizeof(ObjectFileHead) + tp::SaveSizeCounter::calc(tp::String(in->type->name))); // calc max size needed for saving all hierarchy of types tp::alni file_alloc_size = objsize_file_util(in, in->type); diff --git a/Objects/private/core/scriptsection.cpp b/Objects/private/core/scriptsection.cpp index 030e95d..7cf9879 100644 --- a/Objects/private/core/scriptsection.cpp +++ b/Objects/private/core/scriptsection.cpp @@ -91,8 +91,7 @@ tp::alni ScriptSection::save_script_table_to_file_size(ScriptSection* self, Arch } // instructions - ASSERT(false) - // size += iter->mBytecode.mInstructions.saveSize(); + size += tp::SaveSizeCounter::calc(iter->mBytecode.mInstructions); } size += sizeof(tp::alni); // objects mem offset @@ -125,7 +124,6 @@ void ScriptSection::save_script_table_to_file(ScriptSection* self, ArchiverOut& } // mInstructions - ASSERT(false) file << iter->mBytecode.mInstructions; } @@ -163,8 +161,7 @@ void load_constants(ScriptSection* self, ArchiverIn& file, tp::alni start_addr) } // instructions - ASSERT(false) - //file.setAddress(file.getAddress() + script->mBytecode.mInstructions.saveSize()); + file.setAddress(file.getAddress() + tp::SaveSizeCounter::calc(script->mBytecode.mInstructions)); } file.setAddress(addres); diff --git a/Objects/private/primitives/dictobject.cpp b/Objects/private/primitives/dictobject.cpp index f83aea0..3848888 100644 --- a/Objects/private/primitives/dictobject.cpp +++ b/Objects/private/primitives/dictobject.cpp @@ -44,9 +44,7 @@ alni DictObject::save_size(DictObject* self) { for (auto item : self->items) { // string length - auto size = item->key.size(); - save_size += size * sizeof(*item->key.read()); - save_size += sizeof(decltype(size)); + save_size += tp::SaveSizeCounter::calc(item->key); // object file adress save_size += sizeof(alni); diff --git a/Objects/private/primitives/stringobject.cpp b/Objects/private/primitives/stringobject.cpp index 58f9947..3c44b49 100644 --- a/Objects/private/primitives/stringobject.cpp +++ b/Objects/private/primitives/stringobject.cpp @@ -50,11 +50,7 @@ alnf StringObject::to_float(StringObject* self) { } static alni save_size(StringObject* self) { - alni save_size = 0; - auto size = self->val.size(); - save_size += (size) * sizeof(*self->val.read()); - save_size += sizeof(decltype(size)); - return save_size; + return tp::SaveSizeCounter::calc(self->val); } static void save(StringObject* self, ArchiverOut& file_self) { diff --git a/Objects/public/core/object.h b/Objects/public/core/object.h index 29ae4fa..345a9e9 100644 --- a/Objects/public/core/object.h +++ b/Objects/public/core/object.h @@ -12,6 +12,7 @@ #include "core/typemethods.h" #include "Archiver.hpp" +#include "SizeCounter.hpp" //#include "interpreter/interpreter.h" From b06e1da52950070ce41c28d1c8d93307274f060b Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 1 Aug 2023 18:57:36 +0300 Subject: [PATCH 42/68] Add Interpreter tests and improve Parser error logging A set of tests for the InterpreterObject has been added to enhance its reliability and maintainability. The tests check the essential functionalities such as its creation, execution, saving, loading, and destruction. Furthermore, the error logging for the Parser has been improved, now providing more precise location of detected errors. The changes improve the robustness and debugability of the code. --- Objects/private/compiler/function.cpp | 3 +- Objects/tests/Tests.cpp | 2 + Objects/tests/interpreter/TestInterpreter.cpp | 40 +++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 Objects/tests/interpreter/TestInterpreter.cpp diff --git a/Objects/private/compiler/function.cpp b/Objects/private/compiler/function.cpp index 6342b90..ce7e815 100644 --- a/Objects/private/compiler/function.cpp +++ b/Objects/private/compiler/function.cpp @@ -541,8 +541,9 @@ bool obj::BCgen::Compile(obj::MethodObject* method) { auto res = sParger->parse(script); if (res.err) { - auto loc = res.err->get_err_location(script.read()); // TODO : print parse error + auto loc = res.err->get_err_location(script.read()); + printf("Parser Error (%i,%i): \n", loc.head, loc.tail); // tp::gLogeer->write(tp::sfmt("Parser Error (%i,%i): \n", loc.head, loc.tail), true, tp::Logger::LogEntry::ERR); // tp::GLog->write(res.err->mDescr, true, tp::Logger::LogEntry::ERR); return false; diff --git a/Objects/tests/Tests.cpp b/Objects/tests/Tests.cpp index f3a24b4..640bf29 100644 --- a/Objects/tests/Tests.cpp +++ b/Objects/tests/Tests.cpp @@ -10,6 +10,7 @@ using namespace obj; void testCore(); void testPrimitives(); +void testInterpreter(); int main() { @@ -20,6 +21,7 @@ int main() { testCore(); testPrimitives(); + testInterpreter(); module.deinitialize(); } diff --git a/Objects/tests/interpreter/TestInterpreter.cpp b/Objects/tests/interpreter/TestInterpreter.cpp new file mode 100644 index 0000000..8cb70ca --- /dev/null +++ b/Objects/tests/interpreter/TestInterpreter.cpp @@ -0,0 +1,40 @@ + +#include "NewPlacement.hpp" + +#include "Testing.hpp" + +#include "core/object.h" +#include "primitives/methodobject.h" +#include "primitives/interpreterobject.h" +#include "primitives/linkobject.h" +#include "compiler/function.h" +#include "interpreter/interpreter.h" + +using namespace tp; +using namespace obj; + +TEST_DEF_STATIC(Simple) { + + auto method = NDO_CAST(MethodObject, NDO->create("method")); + auto interpreter = NDO_CAST(InterpreterObject, NDO->create("interpreter")); + + interpreter->getMember("target method")->setLink(method); + + method->mScript->mReadable->val = "<< 3;"; + method->compile(); + + interpreter->exec(); + + NDO->save(interpreter, "interp.o"); + + auto interpreterLoaded = NDO_CAST(InterpreterObject, NDO->load("interp.o")); + + interpreterLoaded->exec(); + + NDO->destroy(interpreter); + NDO->destroy(interpreterLoaded); +} + +TEST_DEF(Interpreter) { + testSimple(); +} \ No newline at end of file From 55571ca3dd09a3cbcc7138f0f4d12800ce10e900 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 1 Aug 2023 20:05:29 +0300 Subject: [PATCH 43/68] Load and destroy methods revised for proper reference counting The update enhances object management by involving scope-based reference counting. The change affects loading and destruction operations in the Object and several other classes, ensuring the release or retention of objects adhere to their usage context. A function for logging type data has also been introduced to provide better clarity during debugging. Also, tests in script & interpreter have been altered to run in separate module initializations to avoid cross-test interference. Overall, it provides better memory management and dependable tests. --- Objects/private/compiler/function.cpp | 1 + Objects/private/core/module.cpp | 4 +++ Objects/private/core/objectsave.cpp | 33 +++++++++++++++++-- Objects/private/core/scriptsection.cpp | 3 ++ Objects/private/primitives/classobject.cpp | 1 + Objects/private/primitives/dictobject.cpp | 2 +- Objects/private/primitives/linkobject.cpp | 1 + Objects/private/primitives/listobject.cpp | 2 +- Objects/public/core/object.h | 3 ++ Objects/tests/Tests.cpp | 15 ++++++--- Objects/tests/interpreter/TestInterpreter.cpp | 2 +- Strings/private/Logging.cpp | 1 + 12 files changed, 58 insertions(+), 10 deletions(-) diff --git a/Objects/private/compiler/function.cpp b/Objects/private/compiler/function.cpp index ce7e815..7b26b8d 100644 --- a/Objects/private/compiler/function.cpp +++ b/Objects/private/compiler/function.cpp @@ -527,6 +527,7 @@ void obj::BCgen::deinit() { ASSERT(sParger); if (sParger) { delete sParger; + sParger = nullptr; } } diff --git a/Objects/private/core/module.cpp b/Objects/private/core/module.cpp index 3140810..91d09e2 100644 --- a/Objects/private/core/module.cpp +++ b/Objects/private/core/module.cpp @@ -73,7 +73,11 @@ static void deinit(const tp::ModuleManifest*) { MethodObject::UnInitialize(); obj::BCgen::deinit(); + + assertNoLeaks(); + delete NDO; + NDO = nullptr; } static tp::ModuleManifest* sModuleDependencies[] = { diff --git a/Objects/private/core/objectsave.cpp b/Objects/private/core/objectsave.cpp index 5da599f..adc57b4 100644 --- a/Objects/private/core/objectsave.cpp +++ b/Objects/private/core/objectsave.cpp @@ -3,6 +3,8 @@ #include "NewPlacement.hpp" #include "core/object.h" +#include "primitives/nullobject.h" + #include "HeapAllocatorGlobal.hpp" #include @@ -63,6 +65,27 @@ namespace obj { tp::HeapAllocGlobal::deallocate(memh); } + void logTypeData(const ObjectType* type) { + printf("type - %s\n", type->name); + if (type->base) { + printf("Based on "); + logTypeData(type->base); + } + } + + void assertNoLeaks() { + if (bottom) { + printf("ERROR : not all objects are destroyed\n"); + tp::ualni idx = 0; + for (ObjectMemHead* memh = bottom; memh; memh = memh->up) { + printf(" ===== Object - %i. Ref count - %i ===== \n", idx, memh->refc); + logTypeData(NDO_FROM_MEMH(memh)->type); + idx++; + } + } + } + + struct ObjectFileHead { Object* load_head_adress = 0; tp::halni refc = 0; @@ -274,7 +297,13 @@ namespace obj { return NULL; } - setrefc(out, ofh.refc); + setrefc(out, 0); + + // check for null object + if (out->type == &NullObject::TypeData) { + ObjectMemDeallocate(out); + out = NdoNull_globalInstance; + } // save heap adress in "loaded_file" ((ObjectFileHead*) (loaded_file + file_adress))->load_head_adress = out; @@ -405,8 +434,6 @@ namespace obj { } */ - setrefc(out, 0); - return out; } diff --git a/Objects/private/core/scriptsection.cpp b/Objects/private/core/scriptsection.cpp index 7cf9879..930cf55 100644 --- a/Objects/private/core/scriptsection.cpp +++ b/Objects/private/core/scriptsection.cpp @@ -150,6 +150,8 @@ void load_constants(ScriptSection* self, ArchiverIn& file, tp::alni start_addr) // script text tp::alni str_addr; file >> str_addr; + + NDO->destroy(script->mReadable); // we already have string object in the script when creating script script->mReadable = NDO_CAST(obj::StringObject, obj::NDO->load(file, str_addr)); file.setAddress(file.getAddress() + sizeof(tp::alni)); // constants length @@ -257,6 +259,7 @@ void ScriptSection::initialize() { void ScriptSection::uninitialize() { ASSERT(gScriptSection); delete gScriptSection; + gScriptSection = nullptr; } ScriptSection* ScriptSection::globalHandle() { diff --git a/Objects/private/primitives/classobject.cpp b/Objects/private/primitives/classobject.cpp index 6baaf87..5131504 100644 --- a/Objects/private/primitives/classobject.cpp +++ b/Objects/private/primitives/classobject.cpp @@ -47,6 +47,7 @@ void ClassObject::load(ArchiverIn& file_self, ClassObject* self) { alni ndo_object_adress; file_self >> ndo_object_adress; self->members = NDO_CAST(DictObject, NDO->load(file_self, ndo_object_adress)); + NDO->refinc(self->members); } tp::Buffer childs_retrival(ClassObject* self) { diff --git a/Objects/private/primitives/dictobject.cpp b/Objects/private/primitives/dictobject.cpp index 3848888..db4f6dd 100644 --- a/Objects/private/primitives/dictobject.cpp +++ b/Objects/private/primitives/dictobject.cpp @@ -88,7 +88,7 @@ void DictObject::load(ArchiverIn& file_self, DictObject* self) { file_self >> key; // add to dictinary - self->items.put(key, val); + self->put(key, val); } } diff --git a/Objects/private/primitives/linkobject.cpp b/Objects/private/primitives/linkobject.cpp index 462c77b..610156e 100644 --- a/Objects/private/primitives/linkobject.cpp +++ b/Objects/private/primitives/linkobject.cpp @@ -49,6 +49,7 @@ void LinkObject::load(ArchiverIn& file_self, LinkObject* self) { } else { self->link = NDO->load(file_self, saved_object_adress); + NDO->refinc(self->link); } } diff --git a/Objects/private/primitives/listobject.cpp b/Objects/private/primitives/listobject.cpp index 58d7461..7d4b1d8 100644 --- a/Objects/private/primitives/listobject.cpp +++ b/Objects/private/primitives/listobject.cpp @@ -57,7 +57,7 @@ void ListObject::load(ArchiverIn& file_self, ListObject* self) { for (alni i = 0; i < len; i++) { alni ndo_object_adress; file_self >> ndo_object_adress; - self->items.pushBack(NDO->load(file_self, ndo_object_adress)); + self->pushBack(NDO->load(file_self, ndo_object_adress)); } } diff --git a/Objects/public/core/object.h b/Objects/public/core/object.h index 345a9e9..2a0ac05 100644 --- a/Objects/public/core/object.h +++ b/Objects/public/core/object.h @@ -236,6 +236,9 @@ namespace obj { Object* load(ArchiverIn&, tp::alni file_adress); }; + void logTypeData(const ObjectType* type); + void assertNoLeaks(); + Object* ndo_cast(const Object* in, const ObjectType* to_type); template diff --git a/Objects/tests/Tests.cpp b/Objects/tests/Tests.cpp index 640bf29..90728d7 100644 --- a/Objects/tests/Tests.cpp +++ b/Objects/tests/Tests.cpp @@ -18,12 +18,19 @@ int main() { tp::ModuleManifest module("ObjectsTests", nullptr, nullptr, deps); if (module.initialize()) { - testCore(); - testPrimitives(); - testInterpreter(); - module.deinitialize(); } + + if (module.initialize()) { + testPrimitives(); + module.deinitialize(); + } + + if (module.initialize()) { + testInterpreter(); + module.deinitialize(); + } + return 0; } \ No newline at end of file diff --git a/Objects/tests/interpreter/TestInterpreter.cpp b/Objects/tests/interpreter/TestInterpreter.cpp index 8cb70ca..ec2ef8d 100644 --- a/Objects/tests/interpreter/TestInterpreter.cpp +++ b/Objects/tests/interpreter/TestInterpreter.cpp @@ -31,8 +31,8 @@ TEST_DEF_STATIC(Simple) { interpreterLoaded->exec(); - NDO->destroy(interpreter); NDO->destroy(interpreterLoaded); + NDO->destroy(interpreter); } TEST_DEF(Interpreter) { diff --git a/Strings/private/Logging.cpp b/Strings/private/Logging.cpp index 34ec6df..4ef468d 100644 --- a/Strings/private/Logging.cpp +++ b/Strings/private/Logging.cpp @@ -54,5 +54,6 @@ namespace tp { void Logger::deinitializeGlobal() { DEBUG_ASSERT(gLogger) delete gLogger; + gLogger = nullptr; } } \ No newline at end of file From f9d62c324de2b7c2802225b511b45607111f07f3 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Thu, 3 Aug 2023 21:15:27 +0300 Subject: [PATCH 44/68] "Added new test 'Complex' and improved error debugging" This revision adds a complex test to the 'TestInterpreter.cpp' file to test functionalities such as classes, variable initializations, loops, conditionals and methods in the interpreter. The token parser has also been updated with a reset method in the 'parser.cpp' file for cleaning up any previous state before parsing a new script. This ensures the parser starts fresh for each new parse request. It also improves the debugging process in 'function.cpp' by printing the description of parser errors. Few completed tasks are removed from the TODO list. --- Objects/private/compiler/function.cpp | 2 +- Objects/private/parser/parser.cpp | 3 +- Objects/tests/interpreter/TestInterpreter.cpp | 50 ++++++++++++++++++- TODO | 11 ++-- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/Objects/private/compiler/function.cpp b/Objects/private/compiler/function.cpp index 7b26b8d..c178136 100644 --- a/Objects/private/compiler/function.cpp +++ b/Objects/private/compiler/function.cpp @@ -544,7 +544,7 @@ bool obj::BCgen::Compile(obj::MethodObject* method) { if (res.err) { // TODO : print parse error auto loc = res.err->get_err_location(script.read()); - printf("Parser Error (%i,%i): \n", loc.head, loc.tail); + printf("Parser Error (%i,%i): %s\n", loc.head, loc.tail, res.err->mDescr.read()); // tp::gLogeer->write(tp::sfmt("Parser Error (%i,%i): \n", loc.head, loc.tail), true, tp::Logger::LogEntry::ERR); // tp::GLog->write(res.err->mDescr, true, tp::Logger::LogEntry::ERR); return false; diff --git a/Objects/private/parser/parser.cpp b/Objects/private/parser/parser.cpp index 255b883..7139dab 100644 --- a/Objects/private/parser/parser.cpp +++ b/Objects/private/parser/parser.cpp @@ -884,7 +884,8 @@ READ_STM: Parser::Resault Parser::parse(const tp::String& oscript) { mTok.bindSource(oscript.read()); - + mTok.reset(); + mRes.scope = new StatementScope({}, true); List stms; diff --git a/Objects/tests/interpreter/TestInterpreter.cpp b/Objects/tests/interpreter/TestInterpreter.cpp index ec2ef8d..9a0c592 100644 --- a/Objects/tests/interpreter/TestInterpreter.cpp +++ b/Objects/tests/interpreter/TestInterpreter.cpp @@ -13,8 +13,55 @@ using namespace tp; using namespace obj; -TEST_DEF_STATIC(Simple) { +auto script1 = R"( +class A { + var string = "hello"; + def log(name) { + << self.string; + << name; + } +} +def main() { + var a = new A(); + a.log(" user "); +} + +main(); + +var i = 10; + +if (i == 10) { + while (i > 0) { + << i; + i = i - 1; + } +} else { + << " no "; +} + +)"; + +auto script = R"( +var i = 10; +)"; + +TEST_DEF_STATIC(Complex) { + auto method = NDO_CAST(MethodObject, NDO->create("method")); + auto interpreter = NDO_CAST(InterpreterObject, NDO->create("interpreter")); + + interpreter->getMember("target method")->setLink(method); + + method->mScript->mReadable->val = script1; + method->compile(); + + interpreter->exec(); + + + NDO->destroy(interpreter); +} + +TEST_DEF_STATIC(Simple) { auto method = NDO_CAST(MethodObject, NDO->create("method")); auto interpreter = NDO_CAST(InterpreterObject, NDO->create("interpreter")); @@ -37,4 +84,5 @@ TEST_DEF_STATIC(Simple) { TEST_DEF(Interpreter) { testSimple(); + //testComplex(); } \ No newline at end of file diff --git a/TODO b/TODO index 47a4ae9..a57da84 100644 --- a/TODO +++ b/TODO @@ -1,20 +1,14 @@ Testing !! Objects: - Testing - Serialization - Alloc Size queries - Compile !! - parser print error write tests before refactor !! + Alloc Size queries remove obj_ref_count macro fix all clang-tidy notices - write archiver replace all strings with const string ref replace all type usages with typedefs remove tp:: rename classes - move functions around Graphics: Window event system @@ -39,6 +33,7 @@ Storage: Utils: Stack trace fixes + Save leaks and then use in debugging to break when the same call occurs? TextEditor: - Implement + Implement \ No newline at end of file From 112fea2f0473dac0139f4e22cc6ed9239678cc4a Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Thu, 3 Aug 2023 22:04:42 +0300 Subject: [PATCH 45/68] Adding objects GUI initial. Changing TODO. Some fixes along side --- Allocators/private/HeapAllocatorGlobal.cpp | 4 +- Containers/public/List.hpp | 3 +- Externals/imgui | 2 +- Graphics/examples/Example.cpp | 12 +- Graphics/private/bindings/DebugGUI.cpp | 4 + Graphics/private/bindings/Window.cpp | 28 +- Graphics/public/Graphics.hpp | 1 + Graphics/public/Window.hpp | 5 +- Math/public/Rect.hpp | 2 +- Objects/CMakeLists.txt | 4 +- Objects/applications/GUI.cpp | 1109 ++++++++++++++++++++ Objects/applications/GUI.h | 73 ++ Objects/applications/GUIEntry.cpp | 50 + Strings/public/StringLogic.hpp | 26 +- Strings/public/Strings.hpp | 21 +- Strings/tests/TestsStrings.cpp | 13 + Strings/tests/TestsStringsLogic.cpp | 32 +- TODO | 12 +- 18 files changed, 1345 insertions(+), 56 deletions(-) create mode 100644 Objects/applications/GUI.cpp create mode 100644 Objects/applications/GUI.h create mode 100644 Objects/applications/GUIEntry.cpp diff --git a/Allocators/private/HeapAllocatorGlobal.cpp b/Allocators/private/HeapAllocatorGlobal.cpp index 291ccd6..469070d 100644 --- a/Allocators/private/HeapAllocatorGlobal.cpp +++ b/Allocators/private/HeapAllocatorGlobal.cpp @@ -164,7 +164,7 @@ bool HeapAllocGlobal::checkLeaks() { } // 1) Check for not deallocated memory - if (mNumAllocations && ignoredCount != mNumAllocations) { + if (mNumAllocations && ignoredCount < mNumAllocations) { #ifdef MEM_STACK_TRACE for (auto iter = mEntry; iter; iter = iter->mPrev) { @@ -172,7 +172,7 @@ bool HeapAllocGlobal::checkLeaks() { } #endif - printf(" Count : %llu", mNumAllocations); + printf(" Count : %llu", mNumAllocations - ignoredCount); ASSERT(!"Destruction of not freed Allocator") return true; diff --git a/Containers/public/List.hpp b/Containers/public/List.hpp index 2da3168..85a49bf 100644 --- a/Containers/public/List.hpp +++ b/Containers/public/List.hpp @@ -177,8 +177,9 @@ namespace tp { void popBack() { DEBUG_ASSERT(mLast) + auto const tmp = mLast; detach(mLast); - deleteNode(mLast); + deleteNode(tmp); } void popFront() { diff --git a/Externals/imgui b/Externals/imgui index 1109de3..4144d7d 160000 --- a/Externals/imgui +++ b/Externals/imgui @@ -1 +1 @@ -Subproject commit 1109de38277fd2d14d4dca4c1cb8d4a2c4ff0f95 +Subproject commit 4144d7d772a800f08693b8b13f7c81f1f22a73c4 diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp index 4505870..a074ff3 100644 --- a/Graphics/examples/Example.cpp +++ b/Graphics/examples/Example.cpp @@ -1,6 +1,8 @@ #include "Window.hpp" +#include "imgui.h" + int main() { tp::ModuleManifest* deps[] = { &tp::gModuleGraphics, nullptr }; tp::ModuleManifest testModule("Example", nullptr, nullptr, deps); @@ -10,12 +12,16 @@ int main() { } { - tp::HeapAllocGlobal::startIgnore(); auto window = tp::Window::createWindow(800, 600, "Window 1"); - tp::HeapAllocGlobal::stopIgnore(); if (window) { - window->renderLoop(); + while (!window->shouldClose()) { + window->processEvents(); + + ImGui::Text("Hello!"); + + window->draw(); + } } tp::Window::destroyWindow(window); diff --git a/Graphics/private/bindings/DebugGUI.cpp b/Graphics/private/bindings/DebugGUI.cpp index fdf1e79..5254806 100644 --- a/Graphics/private/bindings/DebugGUI.cpp +++ b/Graphics/private/bindings/DebugGUI.cpp @@ -42,10 +42,14 @@ void Graphics::GUI::deinit() { } void Graphics::GUI::proc() { + tp::HeapAllocGlobal::startIgnore(); + ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); + tp::HeapAllocGlobal::stopIgnore(); + // ImGui code goes here ImGui::Begin("Window"); ImGui::End(); diff --git a/Graphics/private/bindings/Window.cpp b/Graphics/private/bindings/Window.cpp index 3cf251f..88958d2 100644 --- a/Graphics/private/bindings/Window.cpp +++ b/Graphics/private/bindings/Window.cpp @@ -71,11 +71,13 @@ void Graphics::deinit() { mGl.deinit(); } -void Graphics::draw() { +void Graphics::proc() { mGl.proc(); mCanvas.proc(); mGui.proc(); +} +void Graphics::draw() { mGl.draw(); mCanvas.draw(); mGui.draw(); @@ -110,6 +112,8 @@ Window::~Window() { Window* Window::createWindow(int width, int height, const char* title) { + tp::HeapAllocGlobal::startIgnore(); + static int count = 1; if (!count) { printf("Window class is a singleton\n"); @@ -128,7 +132,10 @@ Window* Window::createWindow(int width, int height, const char* title) { printf("GLFW Error: %i %s\n", error, description); }); - return new Window(width, height, title); + auto out = new Window(width, height, title); + + tp::HeapAllocGlobal::stopIgnore(); + return out; } void Window::destroyWindow(Window* window) { @@ -136,15 +143,18 @@ void Window::destroyWindow(Window* window) { glfwTerminate(); } -void Window::renderLoop() { - while (!glfwWindowShouldClose(mContext->window)) { +bool Window::shouldClose() const { + return glfwWindowShouldClose(mContext->window); +} - mGraphics.draw(); +void Window::processEvents() { + glfwPollEvents(); + mGraphics.proc(); +} - // Swap buffers and poll events - glfwSwapBuffers(mContext->window); - glfwPollEvents(); - } +void Window::draw() { + mGraphics.draw(); + glfwSwapBuffers(mContext->window); } auto Window::getContext() -> Context* { return mContext; } \ No newline at end of file diff --git a/Graphics/public/Graphics.hpp b/Graphics/public/Graphics.hpp index b2e95d2..ef198b4 100644 --- a/Graphics/public/Graphics.hpp +++ b/Graphics/public/Graphics.hpp @@ -67,6 +67,7 @@ namespace tp { void init(Window* window); void deinit(); void draw(); + void proc(); private: GUI mGui; diff --git a/Graphics/public/Window.hpp b/Graphics/public/Window.hpp index 1f6a762..87d75bf 100644 --- a/Graphics/public/Window.hpp +++ b/Graphics/public/Window.hpp @@ -27,7 +27,10 @@ namespace tp { static void destroyWindow(Window* window); public: - void renderLoop(); + void draw(); + void processEvents(); + [[nodiscard]] bool shouldClose() const; + auto getContext() -> Context*; private: diff --git a/Math/public/Rect.hpp b/Math/public/Rect.hpp index 33fa70b..f6aba2a 100644 --- a/Math/public/Rect.hpp +++ b/Math/public/Rect.hpp @@ -94,7 +94,7 @@ namespace tp { // argument isInside bool isInside(const Vec2& p) const { - return (p.each_compre(pos) && (pos + size).each_compre(p)); + return isInside(p.x, p.y); } bool isInside(Type x, Type y) const { diff --git a/Objects/CMakeLists.txt b/Objects/CMakeLists.txt index 91166d2..893056a 100644 --- a/Objects/CMakeLists.txt +++ b/Objects/CMakeLists.txt @@ -7,7 +7,7 @@ project(Objects) ### ---------------------- Static Library --------------------- ### file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") -file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp") +file(GLOB HEADERS "./public/*.hpp" "./public/*/*.hpp" "./applications/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) @@ -17,9 +17,11 @@ target_link_libraries(${PROJECT_NAME} PUBLIC Strings Math Tokenizer CommandLine ### -------------------------- Applications -------------------------- ### #add_executable(osc ./applications/Compiler.cpp) #add_executable(osi ./applications/Interpreter.cpp) +add_executable(osg ./applications/GUI.cpp ./applications/GUIEntry.cpp) #target_link_libraries(osc ${PROJECT_NAME}) #target_link_libraries(osi ${PROJECT_NAME}) +target_link_libraries(osg ${PROJECT_NAME} Graphics Imgui) ### -------------------------- Tests -------------------------- ### enable_testing() diff --git a/Objects/applications/GUI.cpp b/Objects/applications/GUI.cpp new file mode 100644 index 0000000..3b6cdc0 --- /dev/null +++ b/Objects/applications/GUI.cpp @@ -0,0 +1,1109 @@ + +#include "GUI.h" + +#include "Rect.hpp" + +#include "interpreter/interpreter.h" + +#include "imgui.h" +#include "imgui_internal.h" + +namespace ImGui { + + bool SubMenuBegin(const char* desc, int level); + void SubMenuEnd(int level); + + void ToolTip(const char* desc); + + struct PopupData { + bool opened = false; + bool ishovered = false; + tp::Vec2F p1; + tp::Vec2F p2; + operator bool() { + return opened; + } + }; + + PopupData HoverPopupBegin(const char* id, tp::Vec2F size, tp::Vec2F pos = tp::Vec2F(-1), int flags = 0); + void HoverPopupEnd(PopupData& in); + + void ApplyStyle(tp::halnf dpmm, float font_size_mm = 5, float ui_scale = 1); +}; + +ImGui::PopupData ImGui::HoverPopupBegin(const char* str_id, tp::Vec2F size, tp::Vec2F pos_p, ImGuiPopupFlags popup_flags) { + ImGui::PopupData out; + out.ishovered = ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup); + + if (out.ishovered) { + ImVec2 pos; + + if (pos_p == tp::Vec2F(-1)) { + pos = GImGui->CurrentWindow->DC.CursorPos; + } + else { + pos.x = pos_p.x; + pos.y = pos_p.y; + } + + ImGui::SetNextWindowPos(pos); + out.p1 = { pos.x, pos.y }; + + ImGui::OpenPopup(str_id); + + out.p2 = out.p1; + out.p2.x += ImGui::GetWindowWidth(); + } + + if (BeginPopup(str_id, ImGuiWindowFlags_NoMove)) { + out.opened = true; + + auto pos = GetWindowPos(); + out.p1 = { pos.x, pos.y }; + out.p2 = out.p1; + out.p2.x += ImGui::GetWindowWidth(); + + } + return out; +} + +void ImGui::HoverPopupEnd(ImGui::PopupData& in) { + + if (!in.opened) { + return; + } + + in.ishovered |= IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_ChildWindows); + + tp::Vec2F mousepos = { ImGui::GetMousePos().x, ImGui::GetMousePos().y }; + tp::halnf tollerance = 10; + tp::RectF tollerace_rect(tp::Vec2F(in.p1.x, in.p1.y - tollerance), tp::Vec2F(in.p2.x - in.p1.x, tollerance * 2.f)); + bool is_tollerance = tollerace_rect.isInside(mousepos); + + if (!(in.ishovered || is_tollerance)) { + CloseCurrentPopup(); + } + + EndPopup(); +} + + +obj::ObjectsGUI::~ObjectsGUI() { + if (mClipboard) { + obj::NDO->destroy(mClipboard); + } + for (auto iter : mViewStack) { + obj::NDO->destroy(iter->obj); + } +} + +void obj::ObjectsGUI::setClipboard(obj::Object* obj) { + if (mClipboard) { + obj::NDO->destroy(mClipboard); + } + + mClipboard = obj; + + if (mClipboard) { + obj::NDO->refinc(obj); + } +} + +obj::Object* obj::ObjectsGUI::getClipboard() { + return mClipboard; +} + +obj::Object* imgui_object_create_menu(obj::TypeGroups* type_group = NULL) { + + obj::Object* newo = NULL; + + if (!type_group) { + type_group = &obj::NDO->type_groups; + } + + for (auto childo : *type_group->getChilds()) { + + if (childo->val->isGroup()) { + if (ImGui::BeginMenu((childo->key).read())) { + newo = imgui_object_create_menu(childo->val); + ImGui::EndMenu(); + } + continue; + } + + if (ImGui::Button((childo->key).read(), { 100, 0 })) { + if (childo->key == "null") { + newo = NDO_NULL; + } + else { + newo = obj::NDO->create(childo->key); + } + } + } + + return newo; +} + +obj::ObjectsGUI::ObjectsGUI() { + assert(obj::NDO && "Objects library is not initialized"); +} + +void obj::ObjectsGUI::cd(obj::Object* child, tp::String name) { + mActive = child; + mViewStack.pushBack({ mActive, name }); + obj::NDO->refinc(child); +} + +void obj::ObjectsGUI::cdup() { + if (mViewStack.length() > 1) { + obj::NDO->destroy(mViewStack.last()->data.obj); + + mViewStack.popBack(); + mActive = mViewStack.last()->data.obj; + } +} + +void obj::ObjectsGUI::preview(obj::Object* obj) { + if (NDO_CAST(obj::LinkObject, obj)) { + NDO_CASTV(obj::LinkObject, obj, linko); + + bool no_link_preview = !linko->getLink(); + tp::alni max_depth = 5; + tp::alni depth_count = 0; + tp::Map link_lookup; + obj::LinkObject* link_iter = linko; + while (link_iter && link_iter->getLink() && !no_link_preview) { + link_iter = NDO_CAST(obj::LinkObject, link_iter->getLink()); + depth_count++; + + if (link_lookup.presents(tp::alni(link_iter))) { + no_link_preview = true; + } + else { + link_lookup.put(tp::alni(link_iter), 0); + } + no_link_preview |= max_depth < depth_count; + } + + if (linko->getLink()) { + if (!no_link_preview) { + ImGui::Text("=> "); + ImGui::SameLine(); + preview(linko->getLink()); + } + else { + ImGui::Text("Max preview depth exceeded"); + } + } + else { + ImGui::Text("Link Is Null"); + } + } + else if (NDO_CAST(obj::IntObject, obj)) { + tp::alni& val = NDO_CAST(obj::IntObject, obj)->val; + int gui_val = int(val); + ImGui::InputInt(" ", &gui_val); + val = tp::alni(gui_val); + } + else if (NDO_CAST(obj::StringObject, obj)) { + NDO_CASTV(obj::StringObject, obj, stringo); + static char val[2048] = { " " }; + if (stringo->val != val) { + assert(tp::String::Logic::calcLength(stringo->val.read()) < 2048); + tp::memCopy(val, stringo->val.read(), stringo->val.size() + 1); + } + ImGui::InputText("", val, 2048); + if (stringo->val != val) { + stringo->val = val; + } + } + else if (NDO_CAST(obj::BoolObject, obj)) { + boolView((obj::BoolObject*)obj); + } + else if (NDO_CAST(obj::FloatObject, obj)) { + tp::alnf& val = NDO_CAST(obj::FloatObject, obj)->val; + auto gui_val = float(val); + ImGui::InputFloat(" ", &gui_val); + val = tp::alnf(gui_val); + + } + else if (NDO_CAST(obj::EnumObject, obj)) { + enumView((obj::EnumObject*)obj); + } + else if (NDO_CAST(obj::ColorObject, obj)) { + colorView((obj::ColorObject*)obj); + } + else { + ImGui::Text(obj->type->name); ImGui::SameLine(); + ImGui::Text(" (No Preview) "); + } +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::interpreterView(obj::InterpreterObject* self) { + using namespace ImGui; + + auto& interp = self->mInterpreter; + + // not running state + if (interp.finished()) { + Text("State: Not Runnig"); + + if (Selectable("Debug")) { + self->debug(); + } + + auto res = ObjectsGUI::classView(self); + if (res) { + return res; + } + + return {}; + } + + // running state + BeginChild("dockable"); { + auto id = ImGui::GetCurrentWindow()->ID; + DockSpace(id); + } EndChild(); + + Begin("ByteCodeView"); { + + if (Button("Step")) { + interp.stepBytecode(); + if (interp.finished()) { + End(); + return {}; + } + } + + SameLine(); + if (Button("Step In")) { + interp.stepBytecodeIn(); + if (interp.finished()) { + End(); + return {}; + } + } + + SameLine(); + if (Button("Step out")) { + interp.stepBytecodeOut(); + if (interp.finished()) { + End(); + return {}; + } + } + + BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + + const auto bytecode = interp.mCallStack.getBytecode(); + tp::halni idx = 0; + + for (auto ip = 0; ip < bytecode->mInstructions.size(); ) { + auto opcode = bytecode->mInstructions[ip]; + auto info = obj::gOpcodeInfos.fetch(opcode); + PushID(info.name); + + TextColored(ImVec4(1.f, 1.f, 1.f, 0.5f), "%i", idx); SameLine(); + if (bytecode->mInstructionIdx == ip) { + TextColored(ImVec4(1.f, 0.5f, 0.5f, 1.f), info.name); + } + else { + Text(info.name); + } + + // INFO + auto hd = HoverPopupBegin(tp::String((tp::alni)ip).read(), { 400, 250 }); + if (hd) { + Text(info.desc); + if (info.operands.len) { + Text("Operands :"); + for (auto i = 0; i < info.operands.len; i++) { + auto op = info.operands.buff[i]; + Text(" %i : %s : %s", i, op.obj_type, op.desc); + } + } + if (info.params.len) { + Text("Params : "); + for (auto i = 0; i < info.params.len; i++) { + auto param = info.params.buff[i]; + Text(" %i : %i bytes : %s ", i, param.bytes, param.desc); + } + } + } + HoverPopupEnd(hd); + + PopID(); + ip += info.opsize(); + idx++; + } + + EndChild(); + } End(); + + Begin("SourceCodeView"); { + stringView(interp.mCallStack.mStack.last().mMethod->mScript->mReadable); + } End(); + + Begin("OperandStack"); { + if (!interp.mOperandsStack.mIdx) { + Text("No Operands"); + } + for (auto i = 0; i < interp.mOperandsStack.mIdx; i++) { + auto operand = interp.mOperandsStack.mBuff[i]; + tp::alni operand_val = (tp::alni)operand; + + if (operand_val == NULL) { + Text("NULL"); + } + else if (tp::uint2(operand_val) == NULL) { + Text("2 BYTE VAL : %i", tp::uint2(operand_val)); + } + else { + if (Selectable(operand->type->name, false, 0, ImVec2(100, 0))) { + End(); + return { operand, "operand" }; + } + SameLine(); + + PushID((tp::alni)operand); + preview(operand); + PopID(); + } + } + } End(); + + Begin("ScopeStack"); { + for (auto i = 0; i < interp.mScopeStack.mIdx; i++) { + if (TreeNode(tp::String((tp::alni)i).read())) { + + auto& scope = interp.mScopeStack.mBuff[i]; + + if (TreeNode("Locals")) { + for (auto local : scope.mLocals) { + if (Selectable(local->key.read(), false, 0, ImVec2(100, 0))) { + TreePop(); + TreePop(); + End(); + return { local->val, local->key }; + } + + PushID(local->key.read()); + SameLine(); + preview(local->val); + PopID(); + } + TreePop(); + } + + if (TreeNode("Temps")) { + tp::alni idx = 0; + for (auto tmp : scope.mTemps) { + if (Selectable(tp::String(idx).read(), false, 0, ImVec2(100, 0))) { + TreePop(); + TreePop(); + End(); + return { tmp.data(), "temp" }; + } + idx++; + } + TreePop(); + } + TreePop(); + } + } + } End(); + + Begin("CallStack"); { + for (auto i = 0; i < interp.mCallStack.mStack.size(); i++) { + auto method = interp.mCallStack.mStack[i].mMethod; + PushID(i); + if (Selectable("method")) { + PopID(); + End(); + return { method, "call stack method" }; + } + PopID(); + } + } End(); + + Begin("ConstPool"); { + auto bc = interp.mCallStack.getBytecode(); + tp::alni idx = 0; + for (auto const_obj : bc->mConstants) { + PushID(idx); + if (Button(const_obj.data()->type->name)) { + End(); + PopID(); + return {const_obj.data(), tp::String(idx)}; + } + SameLine(); + preview(const_obj.data()); + PopID(); + idx++; + } + } End(); + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::colorView(obj::ColorObject* in) { + ImGui::ColorEdit4(" ", &in->mCol.r); + return {}; +} + + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::enumView(obj::EnumObject* obj) { + + if (!obj->entries) { + ImGui::Text("enum is uninitialized"); + return {}; + } + + if (ImGui::BeginCombo(" ", obj->getActiveName())) { + + for (tp::uhalni idx = 0; idx < obj->nentries; idx++) { + if (ImGui::Selectable(obj->getItemName(idx))) { + obj::NDO->set(obj, tp::alni(idx)); + } + } + + ImGui::EndCombo(); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::boolView(obj::BoolObject* obj) { + tp::alni& val = obj->val; + bool gui_val = bool(val); + ImGui::Checkbox(gui_val ? "True" : "False", &gui_val); + val = tp::alni(gui_val); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::floatView(obj::FloatObject* obj) { + tp::alnf& val = obj->val; + float gui_val = float(val); + ImGui::InputFloat("Value", &gui_val); + val = tp::alnf(gui_val); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::nullView(obj::NullObject* in) { + ImGui::Text("Null Object."); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::linkoView(obj::LinkObject* obj) { + + if (obj->getLink()) { + + ImGui::Text("%s at %x", obj->getLink()->type->name, obj->getLink()); + + if (ImGui::Selectable("View")) { + return { obj->getLink(), "adress" }; + } + } + else { + ImGui::Text("Link Is Null"); + } + + if (ImGui::Selectable("Set from clipboard")) { + obj->setLink(mClipboard); + } + + if (ImGui::Selectable("Copy value")) { + setClipboard(obj->getLink()); + } + if (ImGui::Selectable("Set Null")) { + obj->setLink(NULL); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::intoView(obj::IntObject* obj) { + ImGui::Text("Int Value: "); ImGui::SameLine(); + int val = (int)obj->val; + ImGui::InputInt(" ", &val); + obj->val = (tp::alni)val; + return {}; +} + +void obj::ObjectsGUI::dictViewDrawCreate(obj::DictObject* dict) { + if (ImGui::BeginPopupContextItem("child_2", ImGuiPopupFlags_MouseButtonRight)) { + + if (mClipboard) { + if (ImGui::Selectable("Paste")) { + tp::alni idx = 1; + tp::String name_base = tp::String("clipboard ") + tp::String(mClipboard->type->name) + tp::String(" "); + tp::String name_out = name_base; + + while (dict->presents(name_out)) { + name_out = name_base + tp::String(idx); + idx++; + } + + dict->put(name_out, mClipboard); + } + } + + if (ImGui::BeginMenu("Create")) { + + obj::Object* newo = imgui_object_create_menu(); + + if (newo) { + tp::alni idx = 1; + tp::String name_base = tp::String("new ") + tp::String(newo->type->name) + tp::String(" "); + tp::String name_out = name_base; + + while (dict->presents(name_out)) { + name_out = name_base + tp::String(idx); + idx++; + } + + dict->put(name_out, newo); + } + + ImGui::EndMenu(); + } + + ImGui::EndPopup(); + } +} + +void obj::ObjectsGUI::dictViewEdit(obj::DictObject* dict, tp::String key, obj::Object* obj, bool& popup) { + if (ImGui::BeginPopupContextItem(key.read(), ImGuiPopupFlags_MouseButtonRight)) { + popup = true; + + ImGui::Text("%s at %x", obj->type->name, obj); + + if (key.size() > 100) { + ImGui::Text("name is too large"); + } + else { + + if (mLastNameEditObject != obj) { + tp::memCopy(mNameEdit, key.read(), key.size() + 1); + mLastNameEditObject = obj; + } + + if (ImGui::InputTextEx(" ", "new name", mNameEdit, 100, { 140 , 30 }, ImGuiInputTextFlags_EnterReturnsTrue)) { + auto idx = dict->presents(mNameEdit); + if (bool(idx)) { + //Notify("Object with such name Already Exists"); + } + else { + obj::NDO->refinc(obj); + dict->remove(key); + auto id = tp::String(mNameEdit); + dict->put(id, obj); + obj::NDO->destroy(obj); + } + } + } + + if (ImGui::Selectable("Remove")) { + dict->remove(key); + } + + if (ImGui::Selectable("Copy Link")) { + setClipboard(obj); + } + + ImGui::EndPopup(); + } +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::dictView(obj::DictObject* obj) { + bool popup = false; + auto table_flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable; + + ImGui::BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); { + if (!obj->getItems().size()) { + ImGui::Text("Dictinary Is Empty. "); + } + + if (ImGui::BeginTable("Members", 2, table_flags)) { + ImGui::TableSetupColumn("name"); + ImGui::TableSetupColumn("info"); + for (auto childo : obj->getItems()) { + + ImGui::TableNextRow(0, 30); + ImGui::TableSetColumnIndex(0); + + if (ImGui::Selectable(childo->key.read())) { + ImGui::EndTable(); + ImGui::EndChild(); + return { childo->val, { tp::String(childo->val->type->name) + tp::String(" ") + childo->key } }; + } + + dictViewEdit(obj, childo->key, childo->val, popup); + + ImGui::TableSetColumnIndex(1); + ImGui::PushID((int)childo->key.read()[0]); + preview(childo->val); + ImGui::PopID(); + + } + ImGui::EndTable(); + } + } ImGui::EndChild(); + + if (!popup) { + dictViewDrawCreate(obj); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::listView(obj::ListObject* obj) { + bool popup = false; + ViewStackNode out; + + if (!obj->getItems().length()) { + ImGui::Text("List Is Empty. "); + } + + ImGui::BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + + if (ImGui::BeginTable("Items", 2)) { + ImGui::TableSetupColumn("type", ImGuiTableColumnFlags_WidthFixed, 120.0f); + ImGui::TableSetupColumn("info"); + + tp::alni idx = 0; + for (auto childo : obj->getItems()) { + ImGui::TableNextRow(0, 36); + + ImGui::TableSetColumnIndex(0); + if (ImGui::Selectable(tp::String(idx).read())) { + out = ViewStackNode(childo.data(), { tp::String(childo->type->name) + tp::String("at") + tp::String(idx) } ); + break; + } + + { + if (ImGui::BeginPopupContextItem(tp::String(idx).read(), ImGuiPopupFlags_MouseButtonRight)) { + popup = true; + + ImGui::Text("%s at %x", childo->type->name, childo.data()); + + if (ImGui::Selectable("Remove")) { + obj->delNode(childo.node()); + ImGui::EndPopup(); + break; + } + + if (ImGui::Selectable("Copy Link")) { + setClipboard(childo.data()); + ImGui::EndPopup(); + break; + } + + if (childo.node()->prev && ImGui::Selectable("Move Up")) { + tp::swap(childo.node()->prev->data, childo.data()); + ImGui::EndPopup(); + break; + } + + if (childo.node()->next && ImGui::Selectable("Move Down")) { + tp::swap(childo.node()->next->data, childo.data()); + ImGui::EndPopup(); + break; + } + + ImGui::EndPopup(); + } + } + + ImGui::TableSetColumnIndex(1); + + ImGui::PushID((int)idx); + preview(childo.data()); + ImGui::PopID(); + + idx++; + } + ImGui::EndTable(); + } + + ImGui::EndChild(); + + if (!popup && ImGui::BeginPopupContextItem("child_2", ImGuiPopupFlags_MouseButtonRight)) { + + if (ImGui::Selectable("Paste")) { + obj->pushBack(mClipboard); + } + + if (ImGui::BeginMenu("Create")) { + + obj::Object* newo = imgui_object_create_menu(); + if (newo) { + obj->pushBack(newo); + } + ImGui::EndMenu(); + } + ImGui::EndPopup(); + } + + return out; +} + +void drawStrView(tp::String& in) { + static char val[2048] = { " " }; + + if (in != val) { + assert(tp::String::Logic::calcLength(in.read()) < 2048); + tp::memCopy(val, in.read(), in.size() + 1); + } + + ImGui::BeginChild("str_edit"); + ImGui::InputTextMultiline(" ", val, 2048, { ImGui::GetWindowWidth() , ImGui::GetWindowHeight() }); + ImGui::EndChild(); + + if (in != val) { + in = val; + } +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::stringView(obj::StringObject* in) { + drawStrView(in->val); + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::classView(obj::ClassObject* self) { + + bool popup = false; + auto dict = self->members; + + ImGui::BeginChild("frame", { 0, 0 }, 0, ImGuiWindowFlags_NoBackground); + + if (!dict->getItems().size()) { + ImGui::Text("No Members"); + } + + auto table_flags = ImGuiTableFlags_Resizable | ImGuiTableFlags_Reorderable; + auto tree_flags = ImGuiTreeNodeFlags_DefaultOpen | ImGuiTreeNodeFlags_Framed; + ImGuiWindow* window = ImGui::GetCurrentWindow(); + + auto n_methods = 0; + for (auto childo : dict->getItems()) { + if (childo->val->type == &obj::MethodObject::TypeData) { + n_methods++; + } + } + + if (n_methods != dict->getItems().size() && ImGui::TreeNodeBehavior(window->GetID("Members"), tree_flags, "Members", 0)) { + if (ImGui::BeginTable("Members", 2, table_flags)) { + ImGui::TableSetupColumn("name"); + ImGui::TableSetupColumn("info"); + + tp::alni idx = 0; + for (auto childo : dict->getItems()) { + if (childo->val->type == &obj::MethodObject::TypeData) { + continue; + } + + ImGui::TableNextRow(0, 30); + ImGui::TableSetColumnIndex(0); + + if (ImGui::Selectable(childo->key.read())) { + ImGui::EndTable(); + ImGui::TreePop(); + ImGui::EndChild(); + return { childo->val, { tp::String(childo->val->type->name) + childo->key } }; + } + + dictViewEdit(dict, childo->key, childo->val, popup); + + ImGui::TableSetColumnIndex(1); + ImGui::PushID((int)idx); + preview(childo->val); + ImGui::PopID(); + + } + ImGui::EndTable(); + + idx++; + } + ImGui::TreePop(); + } + + if (n_methods && ImGui::TreeNodeBehavior(window->GetID("Methods"), tree_flags, "Methods", 0) ) { + for (auto childo : dict->getItems()) { + if (childo->val->type == &obj::MethodObject::TypeData) { + if (ImGui::Selectable(childo->key.read())) { + ImGui::TreePop(); + ImGui::EndChild(); + return { childo->val, { tp::String(childo->val->type->name) + childo->key } }; + } + dictViewEdit(dict, childo->key, childo->val, popup); + } + } + ImGui::TreePop(); + } + + ImGui::EndChild(); + + if (!popup) { + dictViewDrawCreate(dict); + } + + return {}; +} + +obj::ObjectsGUI::ViewStackNode obj::ObjectsGUI::methodView(obj::MethodObject* in) { + + if (in->mScript->mBytecode.mInstructions.size()) { + if (ImGui::Button("Recompile")) { + in->compile(); + } + + ImGui::SameLine(); + if (ImGui::Button("Execute")) { + obj::Interpreter interp; + interp.execAll(in); + } + + } + else { + if (ImGui::Button("Compile")) { + in->compile(); + } + } + + ImGui::SameLine(); + auto ret = stringView(in->mScript->mReadable); + + if (ret.obj) { + return ret; + } + + return {}; +} + +void obj::ObjectsGUI::explorer() { + + if (ImGui::Button("<")) { + cdup(); + } + + ImGui::SameLine(); + ImGui::BeginChild("child_path", { 0, 45 }, false, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_HorizontalScrollbar); + tp::List rev_path; + for (auto childo = mViewStack.last(); childo; childo = childo->prev) { + rev_path.pushBack(&childo->data); + } + + tp::alni idx = 0; + for (auto childo = rev_path.last(); childo; childo = childo->prev) { + ImGui::PushID((int)idx); + bool go_back = false; + if (childo == rev_path.last()) { + go_back = ImGui::Button(childo->data->id.read()); ImGui::SameLine(); + } + else { + go_back = ImGui::Button((childo->data->id).read()); ImGui::SameLine(); + } + ImGui::PopID(); + + if (ImGui::BeginPopupContextItem(NULL, ImGuiPopupFlags_MouseButtonRight)) { + + obj::Object* curretn_object = childo->data->obj; + ImGui::Text("%s at %x", curretn_object->type->name, curretn_object); + ImGui::Separator(); + + if (ImGui::Selectable("Copy Link")) { + setClipboard(curretn_object); + } + + if (ImGui::Selectable("Instantiate ")) { + setClipboard(obj::NDO->instatiate(curretn_object)); + //Notify("Object copied to clipboard"); + } + + ImGui::Separator(); + + static char path_str[100] = { "data.o\0" }; + static bool compressed = true; + ImGui::InputTextEx(" ", "save path", path_str, 100, { 100, 30 }, 0); + + bool save_object = ImGui::Button("Save Object"); + ImGui::SameLine(); ImGui::Checkbox("Compressed", &compressed); + bool load_object = ImGui::Button("Load Object"); + + if (save_object) { + obj::NDO->save(curretn_object, path_str, compressed); + //Notify("Object saved"); + } + + if (load_object) { + obj::Object* loadedo = obj::NDO->load(path_str); + if (loadedo) { + setClipboard(loadedo); + //Notify("Object copied to clipboard"); + } + else { + //Notify("Can't load Object"); + } + } + + ImGui::EndPopup(); + } + + if (go_back) { + while (&mViewStack.last()->data != childo->data) { + cdup(); + } + mActive = childo->data->obj; + ImGui::EndChild(); + return; + } + idx++; + } + ImGui::Text(" "); + ImGui::EndChild(); + + ImGui::Separator(); + + ViewStackNode new_active; + if (NDO_CAST(obj::NullObject, mActive)) { + new_active = nullView((obj::NullObject*)mActive); + } + else if (NDO_CAST(obj::LinkObject, mActive)) { + new_active = linkoView((obj::LinkObject*)mActive); + } + else if (NDO_CAST(obj::IntObject, mActive)) { + new_active = intoView((obj::IntObject*)mActive); + } + else if (NDO_CAST(obj::StringObject, mActive)) { + new_active = stringView((obj::StringObject*)mActive); + } + else if (NDO_CAST(obj::ListObject, mActive)) { + new_active = listView((obj::ListObject*)mActive); + } + else if (NDO_CAST(obj::DictObject, mActive)) { + new_active = dictView((obj::DictObject*)mActive); + } + else if (NDO_CAST(obj::InterpreterObject, mActive)) { + new_active = interpreterView((obj::InterpreterObject*)mActive); + } + else if (NDO_CAST(obj::ClassObject, mActive)) { + new_active = classView((obj::ClassObject*)mActive); + } + else if (NDO_CAST(obj::BoolObject, mActive)) { + new_active = boolView((obj::BoolObject*)mActive); + } + else if (NDO_CAST(obj::FloatObject, mActive)) { + new_active = floatView((obj::FloatObject*)mActive); + } + else if (NDO_CAST(obj::EnumObject, mActive)) { + new_active = enumView((obj::EnumObject*)mActive); + } + else if (NDO_CAST(obj::MethodObject, mActive)) { + new_active = methodView((obj::MethodObject*)mActive); + } + else if (NDO_CAST(obj::ColorObject, mActive)) { + new_active = colorView((obj::ColorObject*)mActive); + } + else { + ImGui::Text("Preview is Unavaliable"); + } + + if (new_active != NULL) { + cd(new_active.obj, new_active.id); + } +} + +void obj::ObjectsGUI::properties(const obj::ObjectType* type, bool top_of_tree_vew) { + + assert(type); + assert(mActive); + assert(mActive->type == type); + + ImGui::Text(" RefCount : %i", obj::NDO->getrefc(mActive)); + + ImGui::Text(" Type : %s", type->name); + + if (ImGui::TreeNode("Description ")) { + if (type->description) { + ImGui::Text(type->description); + } + else { + ImGui::Text("Description is not given"); + } + ImGui::TreePop(); + } + + if (ImGui::TreeNode("Size")) { + if (0 && ImGui::TreeNode("Top Level Type")) { + + ImGui::Text("RAM : "); + ImGui::Indent(); + ImGui::Text("Only Structure : %i bytes", type->size - (type->base ? type->base->size : 0)); + ImGui::Text("With Non-Object Links : Not Supported"); + ImGui::Unindent(); + + ImGui::Text("Disk :"); + ImGui::Indent(); + ImGui::Text("Only Structure : Currently Not Supported"); + ImGui::Text("With Object Links : Not Supported"); + ImGui::Unindent(); + + ImGui::TreePop(); + } + //if (ImGui::TreeNode("Full Type Hierarchy")) { + + ImGui::Text("RAM : "); + ImGui::Indent(); + ImGui::Text("Only Structure : %i bytes", type->size); + ImGui::Text("With Non-Object Links : %i bytes", obj::NDO->objsize_ram(mActive)); + ImGui::Text("Full Size Recursive : %i bytes", obj::NDO->objsize_ram_recursive(mActive)); + ImGui::Unindent(); + + ImGui::Text("Disk :"); + ImGui::Indent(); + ImGui::Text("Only Structure : %i bytes", obj::NDO->objsize_file(mActive)); + ImGui::Text("With Object Links : %i bytes", obj::NDO->objsize_file_recursive(mActive)); + ImGui::Unindent(); + + //ImGui::TreePop(); + //} + ImGui::TreePop(); + } + + if (ImGui::TreeNode("Base Type")) { + if (type->base) { + properties(type->base, false); + } + else { + ImGui::Text("No base type"); + } + ImGui::TreePop(); + } +} + +void obj::ObjectsGUI::draw() { + if (!mShowDebugInfo) { + return; + } + + if (mViewStack.length()) { + if (ImGui::Begin("Explorer")) { + explorer(); + } + ImGui::End(); + + if (ImGui::Begin("Objet Info")) { + properties(mActive->type); + } + ImGui::End(); + + } + else { + ImGui::Text("ViewStack is Empty"); + } + + auto& io = ImGui::GetIO(); + mCaptureInput = (io.WantCaptureMouse || io.WantCaptureKeyboard); +} diff --git a/Objects/applications/GUI.h b/Objects/applications/GUI.h new file mode 100644 index 0000000..6297db6 --- /dev/null +++ b/Objects/applications/GUI.h @@ -0,0 +1,73 @@ + +#pragma once + +#include "primitives/primitives.h" +#include "primitives//interpreterobject.h" + +#include "compiler/function.h" + +#include "strings.h" + +namespace obj { + + class ObjectsGUI { + + enum { MAX_NAME_LENGHT = 102 }; + char mNameEdit [MAX_NAME_LENGHT]; + obj::Object* mLastNameEditObject = NULL; + + struct ViewStackNode { + obj::Object* obj; + tp::String id; + ViewStackNode() { obj = NULL; } + ViewStackNode(obj::Object* obj, tp::String id) : obj(obj), id(id) {} + operator bool() { return obj; } + }; + + tp::List mViewStack; + obj::Object* mRoot = NULL; + obj::Object* mActive = NULL; + obj::Object* mClipboard = NULL; + + void setClipboard(obj::Object*); + obj::Object* getClipboard(); + + void* mImGuiCtx = NULL; + + public: + + bool mShowDebugInfo = true; + bool mCaptureInput = false; + + ObjectsGUI(); + ~ObjectsGUI(); + + void cd(obj::Object* child, tp::String name); + void cdup(); + + void clearEvents(); + + void draw(); + void explorer(); + void properties(const obj::ObjectType*, bool top_of_tree_vew = true); + void drawFps(); + private: + + void preview(obj::Object* obj); + ViewStackNode enumView(obj::EnumObject* obj); + ViewStackNode boolView(obj::BoolObject* obj); + ViewStackNode floatView(obj::FloatObject* obj); + ViewStackNode nullView(obj::NullObject* obj); + ViewStackNode linkoView(obj::LinkObject* obj); + ViewStackNode intoView(obj::IntObject* obj); + ViewStackNode dictView(obj::DictObject* obj); + ViewStackNode listView(obj::ListObject* obj); + ViewStackNode stringView(obj::StringObject* in); + ViewStackNode classView(obj::ClassObject* in); + ViewStackNode methodView(obj::MethodObject* in); + ViewStackNode colorView(obj::ColorObject* in); + ViewStackNode interpreterView(obj::InterpreterObject* in); + void dictViewEdit(obj::DictObject* dict, tp::String item_id, obj::Object* obj, bool& popup); + void dictViewDrawCreate(obj::DictObject* dict); + }; +}; diff --git a/Objects/applications/GUIEntry.cpp b/Objects/applications/GUIEntry.cpp new file mode 100644 index 0000000..3323b16 --- /dev/null +++ b/Objects/applications/GUIEntry.cpp @@ -0,0 +1,50 @@ + +#include "NewPlacement.hpp" +#include "Window.hpp" + +#include "GUI.h" + +using namespace tp; +using namespace obj; + +class GUIWindow { + Window* window; + ObjectsGUI gui; + +public: + GUIWindow() { + tp::HeapAllocGlobal::startIgnore(); + window = Window::createWindow(1500, 900, "Objects GUI"); + tp::HeapAllocGlobal::stopIgnore(); + + gui.cd(NDO->create("dict"), "root"); + } + + void run() { + while (!window->shouldClose()) { + window->processEvents(); + gui.draw(); + window->draw(); + } + } + + ~GUIWindow() { + Window::destroyWindow(window); + } +}; + +int main() { + + tp::ModuleManifest* deps[] = { &gModuleObjects, &gModuleGraphics, nullptr }; + tp::ModuleManifest module("ObjectsTests", nullptr, nullptr, deps); + + if (module.initialize()) { + { + GUIWindow window; + window.run(); + } + module.deinitialize(); + } + + return 0; +} \ No newline at end of file diff --git a/Strings/public/StringLogic.hpp b/Strings/public/StringLogic.hpp index f66be01..b86baa5 100644 --- a/Strings/public/StringLogic.hpp +++ b/Strings/public/StringLogic.hpp @@ -26,42 +26,42 @@ namespace tp { return iter - in; } - static tChar* insertLogic(const tChar* cur, const tChar* tar, Index at, Index len) { + static void insertLogic(tChar* result, Index resultLen, const tChar* cur, const tChar* tar, Index at, Index len) { auto curLen = calcLength(cur); auto allLen = curLen + len; - auto* out = new tChar[allLen + 1]; + ASSERT(allLen <= resultLen); DEBUG_ASSERT(curLen >= 0) DEBUG_ASSERT(len >= 0) DEBUG_ASSERT(at < curLen + 1 && at >= 0) for (Index idx = 0; idx < at; idx++) { - out[idx] = cur[idx]; + result[idx] = cur[idx]; } for (Index idx = 0; idx < len; idx++) { - out[idx + at] = tar[idx]; + result[idx + at] = tar[idx]; } for (Index idx = at + len; idx < allLen; idx++) { - out[idx] = cur[idx - len]; + result[idx] = cur[idx - len]; } - out[allLen] = '\0'; - return out; + result[allLen] = '\0'; } // including end not including start - static tChar* removeLogic(const tChar* cur, Index start, Index end) { + static void removeLogic(tChar* result, Index resultLen, const tChar* cur, Index start, Index end) { auto curLen = calcLength(cur); auto rangeLen = end - start; auto newLen = curLen - rangeLen; - auto* out = new tChar[newLen + 1]; - out[newLen] = '\0'; + + ASSERT(newLen <= resultLen); + + result[newLen] = '\0'; for (Index idx = 0; idx < start; idx++) { - out[idx] = cur[idx]; + result[idx] = cur[idx]; } for (Index idx = end; idx < curLen; idx++) { - out[idx - rangeLen] = cur[idx]; + result[idx - rangeLen] = cur[idx]; } - return out; } static bool isEqualLogic(const tChar* left, const tChar* right) { diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index 9f61cfa..5bdf9f8 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -15,6 +15,7 @@ namespace tp { class StringData { friend StringTemplate; typedef StringLogic Logic; + typedef typename StringLogic::Index Index; private: uint2 mIsConst; // source is non-modifiable @@ -38,7 +39,7 @@ namespace tp { mEditedIdx = 0; } - explicit StringData(const tChar* aBuff) { + explicit StringData(tChar* aBuff) { MODULE_SANITY_CHECK(gModuleStrings) DEBUG_ASSERT(aBuff) auto const len = Logic::calcLength(aBuff); @@ -58,7 +59,7 @@ namespace tp { if (!mIsConst) delete[] mBuff; } - void resize(ualni size) { + void resize(Index size) { DEBUG_ASSERT(mReferenceCount == 1 && !mIsConst) delete[] mBuff; mBuff = new tChar[size + 1]; @@ -143,7 +144,7 @@ namespace tp { } // output will be null if in TextEditing mode - tChar* resize(uint1 size) { + tChar* resize(Index size) { makeModifiable(); mData->resize(size); return write(); @@ -231,6 +232,12 @@ namespace tp { Logic::calcLineOffsets(read(), size(), aOut); } + StringTemplate& operator=(tChar* in) { + this->~StringTemplate(); + new (this) StringTemplate(in); + return *this; + } + StringTemplate& operator=(const tChar* in) { this->~StringTemplate(); new (this) StringTemplate(in); @@ -250,6 +257,14 @@ namespace tp { return Logic::isEqualLogic(in.read(), read()); } + StringTemplate operator+(const StringTemplate& in) const { + StringTemplate out; + auto const newSize = in.size() + size(); + out.resize(newSize); + Logic::insertLogic(out.write(), newSize, read(), in.read(), size(), in.size()); + return out; + } + public: // Debugging [[nodiscard]] ualni getReferenceCount() const { return mData->mReferenceCount; } [[nodiscard]] bool getIsConstFlag() const { return mData->mIsConst; } diff --git a/Strings/tests/TestsStrings.cpp b/Strings/tests/TestsStrings.cpp index 70f29cb..5bdee31 100644 --- a/Strings/tests/TestsStrings.cpp +++ b/Strings/tests/TestsStrings.cpp @@ -9,6 +9,18 @@ struct TestStruct { String str = "test data"; }; +TEST_DEF_STATIC(Addition) { + String str1 = "abc"; + String str2 = "def"; + { + str1 + str2; + } + { + TEST(str1 + str2 == "abcdef"); + TEST(str1 + "aaaccc" == "abcaaaccc"); + } +} + TEST_DEF_STATIC(Simple) { String str; TEST(str.getIsConstFlag()); @@ -35,4 +47,5 @@ TEST_DEF_STATIC(Simple) { TEST_DEF(Strings) { testSimple(); + testAddition(); } \ No newline at end of file diff --git a/Strings/tests/TestsStringsLogic.cpp b/Strings/tests/TestsStringsLogic.cpp index 747f2ab..7de8051 100644 --- a/Strings/tests/TestsStringsLogic.cpp +++ b/Strings/tests/TestsStringsLogic.cpp @@ -33,78 +33,78 @@ TEST_DEF(calcLength) { TEST_DEF(insertLogic_emptyTarget) { // Test insertLogic function with an empty target string + char inserted[40] = { "" }; const char* cur = "Hello"; const char* tar = ""; const char* result = "Hello"; - char* inserted = Logic::insertLogic(cur, tar, 5, 0); + Logic::insertLogic(inserted, 40, cur, tar, 5, 0); TEST(Logic::isEqualLogic(inserted, result)); - delete[] inserted; } TEST_DEF(insertLogic_emptyCurrent) { // Test insertLogic function with an empty current string + char inserted[40] = { "" }; const char* cur = ""; const char* tar = "World"; const char* result = "World"; - char* inserted = Logic::insertLogic(cur, tar, 0, 5); + Logic::insertLogic(inserted, 40, cur, tar, 0, 5); TEST(Logic::isEqualLogic(inserted, result)); - delete[] inserted; } TEST_DEF(insertLogic_curLengthLessThanPos) { // Test insertLogic function with current length less than the insert position + char inserted[40] = { "" }; const char* cur = "Hello"; const char* tar = "World"; const char* result = "HelloWorld"; - char* inserted = Logic::insertLogic(cur, tar, 10, 5); + Logic::insertLogic(inserted, 40, cur, tar, 10, 5); TEST(Logic::isEqualLogic(inserted, result)); - delete[] inserted; } TEST_DEF(removeLogic_emptyCurrent) { // Test removeLogic function with an empty current string + char removed[40] = { "" }; const char* cur = ""; const char* result = ""; - char* removed = Logic::removeLogic(cur, 0, 0); + Logic::removeLogic(removed, 40, cur, 0, 0); TEST(Logic::isEqualLogic(removed, result)); - delete[] removed; } TEST_DEF(removeLogic_removeUntilEnd) { // Test removeLogic function by removing until the end of the current string + char removed[40] = { "" }; const char* cur = "HelloWorld"; const char* result = "World"; - char* removed = Logic::removeLogic(cur, 0, 5); + Logic::removeLogic(removed, 40, cur, 0, 5); TEST(Logic::isEqualLogic(removed, result)); - delete[] removed; } TEST_DEF(removeLogic_removeMiddleCharacters) { // Test removeLogic function by removing characters in the middle of the current string + char removed[40] = { "" }; const char* cur = "HelloWorld"; const char* result = "Helrld"; - char* removed = Logic::removeLogic(cur, 3, 7); + Logic::removeLogic(removed, 40, cur, 3, 7); TEST(Logic::isEqualLogic(removed, result)); - delete[] removed; } TEST_DEF(insertLogicGood) { // Test insertLogic function + char inserted[40] = { "" }; const char* cur = "Hello"; const char* tar = "World"; const char* result = "HelloWorld"; - char* inserted = Logic::insertLogic(cur, tar, 5, 5); + Logic::insertLogic(inserted, 40, cur, tar, 5, 5); TEST(Logic::isEqualLogic(inserted, result)); - delete[] inserted; } TEST_DEF(removeLogicGood) { // Test removeLogic function + char removed[40] = { "" }; const char* cur = "HelloWorld"; const char* result = "Helo"; - char* removed = Logic::removeLogic(cur, 3, 8); + Logic::removeLogic(removed, 40, cur, 3, 8); TEST(Logic::isEqualLogic(removed, result)); - delete[] removed; } diff --git a/TODO b/TODO index a57da84..bff087b 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,13 @@ Testing !! +Graphics: + Window event system + Graphics API + FPS count & Performance control + Objects: + Debug GUI + use anonymous namespaces for object static methods write tests before refactor !! Alloc Size queries remove obj_ref_count macro @@ -10,11 +17,6 @@ Objects: remove tp:: rename classes -Graphics: - Window event system - Graphics API - FPS count & Performance control - Containers: Test generatePermutations Add variant size buffer From 9a7e44a96d1286064387bd30d96a5e9000478fd8 Mon Sep 17 00:00:00 2001 From: Ilusha <63184036+IlyaShurupov@users.noreply.github.com> Date: Mon, 7 Aug 2023 18:56:03 +0300 Subject: [PATCH 46/68] Update cmake.yml - sudo apt-get update before installing pacages --- .github/workflows/cmake.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 23941d3..781907a 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -28,7 +28,8 @@ jobs: auth_header="$(git config --local --get http.https://github.com/.extraheader)" git submodule sync --recursive git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1 - + + sudo apt-get update sudo apt-get install python3 python-is-python3 sudo apt-get install -y libx11-dev libgl1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev From 9c8771a378dfedb1030005b3bf8d38a58a29e246 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 7 Aug 2023 18:49:55 +0300 Subject: [PATCH 47/68] Editing TODO --- TODO | 42 ++++++++++++++++++++++++++++++------------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/TODO b/TODO index bff087b..1d83f18 100644 --- a/TODO +++ b/TODO @@ -1,22 +1,40 @@ Testing !! +Objects: + tokenizing: + test all + + parsing: + make cf grammar + make lalr parser + test all + + features: + add debug line information into bytecode + implement Alloc Size queries + + enhance: + use anonymous namespaces for object static methods + remove obj_ref_count macro + fix all clang-tidy notices + replace all strings with const string ref + replace all type usages with typedefs + remove tp:: + rename classes + + bugs: + disallow Alloc Size queries + + +Modules: + Remove all static variable into module's data + Make modules simple threaded + Graphics: Window event system Graphics API FPS count & Performance control -Objects: - Debug GUI - use anonymous namespaces for object static methods - write tests before refactor !! - Alloc Size queries - remove obj_ref_count macro - fix all clang-tidy notices - replace all strings with const string ref - replace all type usages with typedefs - remove tp:: - rename classes - Containers: Test generatePermutations Add variant size buffer From 5fab9ee507dce11daf45e3191f389c6d52a9d505 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 7 Aug 2023 19:02:32 +0300 Subject: [PATCH 48/68] Adding some tokinizer checks for strings and comments --- Objects/private/parser/parser.cpp | 7 ++++--- Tokenizer/tests/TestTokenizer.cpp | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Objects/private/parser/parser.cpp b/Objects/private/parser/parser.cpp index 7139dab..8c159d7 100644 --- a/Objects/private/parser/parser.cpp +++ b/Objects/private/parser/parser.cpp @@ -82,9 +82,10 @@ Parser::Parser() { { "true", Token::CONST_TRUE }, { "false", Token::CONST_FALSE }, { "((\\-)|(\\+))?[0-9]+i?", Token::CONST_INT }, - { "((\\-)|(\\+))?([0-9]+)(\\.)([0-9]*)?f?", Token::CONST_FLOAT }, - { "(/\\*){\\*-\\*}*(\\*/)", Token::COMMENT_BLOCK }, - { "\"{\"-\"}*\"", Token::CONST_STRING }, + { R"(((\-)|(\+))?([0-9]+)(\.)([0-9]*)?f?)", Token::CONST_FLOAT }, + { R"((/\*){\*-\*}*(\*/))", Token::COMMENT_BLOCK }, + { R"("{"-"}*")", Token::CONST_STRING }, + { "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*", Token::ID }, }); } diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp index fd53e5d..0a991e3 100644 --- a/Tokenizer/tests/TestTokenizer.cpp +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -14,12 +14,12 @@ const char* script = R"( /* yea -comment */ +comment "and string inside" with int 123 and float 0.123f */ -1.f; if (+1.f) { - var string = "string value + var string = "string value some &&characters inside string&& -= asdf 09a another line"; } From eb712a352dd70f69a55249fbff202c0bbf615365 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Tue, 8 Aug 2023 17:54:14 +0300 Subject: [PATCH 49/68] Parser Initial --- Parser/CMakeLists.txt | 22 ++++++++ Parser/private/Parser.cpp | 0 Parser/public/Parser.hpp | 105 ++++++++++++++++++++++++++++++++++++++ Parser/tests/Tests.cpp | 4 ++ 4 files changed, 131 insertions(+) create mode 100644 Parser/CMakeLists.txt create mode 100644 Parser/private/Parser.cpp create mode 100644 Parser/public/Parser.hpp create mode 100644 Parser/tests/Tests.cpp diff --git a/Parser/CMakeLists.txt b/Parser/CMakeLists.txt new file mode 100644 index 0000000..8af7064 --- /dev/null +++ b/Parser/CMakeLists.txt @@ -0,0 +1,22 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Parser) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_link_libraries(${PROJECT_NAME} PUBLIC Strings) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Parser/private/Parser.cpp b/Parser/private/Parser.cpp new file mode 100644 index 0000000..e69de29 diff --git a/Parser/public/Parser.hpp b/Parser/public/Parser.hpp new file mode 100644 index 0000000..4c64fe0 --- /dev/null +++ b/Parser/public/Parser.hpp @@ -0,0 +1,105 @@ +#pragma once + +#include "Strings.hpp" +#include "Map.hpp" +#include "List.hpp" + +namespace tp { + + template + class ContextFreeGrammar { + public: + class NonTerminalSymbol; + + class RHSArg { + tAlphabetType terminal; + const NonTerminalSymbol* nonTerminal = nullptr; + public: + RHSArg(const NonTerminalSymbol* aNonTerminal) : nonTerminal(aNonTerminal) {} + RHSArg(tAlphabetType terminal) : terminal(terminal) {} + }; + + class NonTerminalSymbol { + String name; + String description; + + struct Rule { + List mArgs; + }; + + List mRules; + + Rule* newRule() { + mRules.pushBack(); + return mRules.last()->data; + } + }; + + private: + Map mNonTerminals; + NonTerminalSymbol* mStart; + + public: + ContextFreeGrammar() = default; + + void setStartNonTerminal(const NonTerminalSymbol* start) { + mStart = start; + } + + const NonTerminalSymbol* addRule(const String& LHS, const InitialierList RHS) { + NonTerminalSymbol* nonTerminal = nullptr; + auto idx = mNonTerminals.presents(LHS); + if (idx) { + nonTerminal = mNonTerminals.get(idx); + } else { + nonTerminal = new NonTerminalSymbol(LHS, "None"); + mNonTerminals.put(LHS, nonTerminal); + } + + auto* rule = nonTerminal->newRule(); + for (auto arg : RHS) { + rule->pushBack(arg); + } + + return nonTerminal; + } + + bool checkSemantic() { + return false; + } + + bool checkNonAmbiguous() { + return false; + } + }; + + template + class Parser { + typedef ContextFreeGrammar Grammar; + + public: + class ASTNode { + const Grammar::NonTerminalSymbol* mNonTerminal; + List mLeafs; + }; + + private: + class InputTape { + }; + + class StateStack { + }; + + private: + Grammar mGrammar; + + public: + Parser() = default; + + Grammar& getGrammar() { return mGrammar; } + + void buildTables() {} + + const ASTNode* parse() {} + }; +} \ No newline at end of file diff --git a/Parser/tests/Tests.cpp b/Parser/tests/Tests.cpp new file mode 100644 index 0000000..7679e67 --- /dev/null +++ b/Parser/tests/Tests.cpp @@ -0,0 +1,4 @@ + +int main() { + +} \ No newline at end of file From 424787c7357ab11b1efdcd62b270a8f877ed1481 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Thu, 10 Aug 2023 10:44:38 +0300 Subject: [PATCH 50/68] CF Grammar Initial --- CMakeLists.txt | 1 + Parser/CMakeLists.txt | 2 +- Parser/private/CfGrammarParser.cpp | 190 +++++++++++++++++++++++++++++ Parser/private/Parser.cpp | 0 Parser/public/CfGrammar.hpp | 29 +++++ Parser/public/Parser.hpp | 105 ---------------- Tokenizer/public/Tokenizer.hpp | 30 +++++ 7 files changed, 251 insertions(+), 106 deletions(-) create mode 100644 Parser/private/CfGrammarParser.cpp delete mode 100644 Parser/private/Parser.cpp create mode 100644 Parser/public/CfGrammar.hpp delete mode 100644 Parser/public/Parser.hpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 94a5c9a..1937060 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ add_subdirectory(Math) add_subdirectory(Allocators) add_subdirectory(Strings) add_subdirectory(Tokenizer) +add_subdirectory(Parser) add_subdirectory(CommandLine) add_subdirectory(Externals) add_subdirectory(Connection) diff --git a/Parser/CMakeLists.txt b/Parser/CMakeLists.txt index 8af7064..947b1c6 100644 --- a/Parser/CMakeLists.txt +++ b/Parser/CMakeLists.txt @@ -10,7 +10,7 @@ file(GLOB SOURCES "./private/*.cpp") file(GLOB HEADERS "./public/*.hpp") add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) -target_link_libraries(${PROJECT_NAME} PUBLIC Strings) +target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer) ### -------------------------- Tests -------------------------- ### enable_testing() diff --git a/Parser/private/CfGrammarParser.cpp b/Parser/private/CfGrammarParser.cpp new file mode 100644 index 0000000..6fc4dbe --- /dev/null +++ b/Parser/private/CfGrammarParser.cpp @@ -0,0 +1,190 @@ + +#include "NewPlacement.hpp" + +#include "CfGrammar.hpp" +#include "Tokenizer.hpp" + +using namespace tp; + +enum class Token { + NO_TOKEN, + START, + ID, + EQUAL, + TERMINAL_START, + TERMINAL_END, + ALTERNATION, + RULE_END, + IGNORED, + END, + FAILED, +}; + +typedef int1 AlphabetType; +typedef SimpleTokenizer CFGTokenizer; + +struct State { + + struct Transition { + Token tok = Token::FAILED; + State* target = nullptr; + void (*action)(CfGrammar* grammar, const String& tok) = nullptr; + }; + + String error; + Buffer transitions; + bool accept = false; +}; + +typedef Buffer Automata; + +void initializeTokenizer(CFGTokenizer* tok) { + typedef decltype(tok->getTokenizer()) TokBase; + tok->build({ + { TokBase::idRE, Token::ID }, + { TokBase::etherRE, Token::IGNORED }, + { "Start", Token::START }, + { ":", Token::EQUAL }, + { "[", Token::TERMINAL_START }, + { "]", Token::TERMINAL_END }, + { "|", Token::ALTERNATION }, + { ";", Token::RULE_END }, + }); +} + +void initAutomata(Automata& automata) { + automata.reserve(8); + auto states = &automata.first(); + + auto root = states++; + auto end = states++; + auto start = states++; + auto startEnd = states++; + auto rule = states++; + auto rhs = states++; + auto terminalStart = states++; + auto terminalEnd = states; + + root->transitions = { + { Token::END, end }, + { Token::START, start }, + { Token::ID, rule, [](CfGrammar* grammar, const String& tok) { + grammar->rules.pushBack({ tok, {} }); + } + }, + }; + + start->transitions = { + { Token::ID, startEnd}, + }; + + startEnd->transitions = { + { Token::RULE_END, + root, + [](CfGrammar* grammar, const String& tok) { + grammar->startTerminal = tok; + } + }, + }; + + rule->transitions = { + { Token::EQUAL, rhs }, + }; + + rhs->transitions = { + { Token::ALTERNATION, rhs, [](CfGrammar* grammar, const String& tok) { + auto const& id = grammar->rules.last()->data.id; + grammar->rules.pushBack({ id, {} }); + } + }, + { Token::ID, rhs, [](CfGrammar* grammar, const String& tok) { + grammar->rules.last()->data.args.pushBack({ tok, false }); + } + }, + { Token::TERMINAL_START, terminalStart }, + { Token::RULE_END, root }, + }; + + terminalStart->transitions = { + { Token::ID, rhs, [](CfGrammar* grammar, const String& tok) { + grammar->rules.last()->data.args.pushBack({ tok, true }); + } + }, + }; + + terminalEnd->transitions = { + { Token::TERMINAL_END, rhs }, + }; + + auto idError = "Expected an identifier"; + auto stmEndError = "Expected an statement end ';'"; + + root->error = "Expected 'Start' statement, rule or end of text"; + start->error = idError; + startEnd->error = stmEndError; + rule->error = "Expected production equality ':'"; + rhs->error = "Expected alternation '|', terminal id, statement end ';' or terminal start '[' "; + terminalStart->error = idError; + terminalEnd->error = "Expected terminal end '[' "; + + end->accept = true; +} + +bool parse(const AlphabetType* text, Automata* automata, CFGTokenizer* tok, CfGrammar* grammar) { + tok->reset(); + tok->bindSource(text); + + State* state = &(*automata)[0]; + while (!state->accept) { + + auto token = tok->readTok(); + + if (token == Token::FAILED) { + auto errorLocation = tok->getCursorPrev().get2DLocation(); + printf("Syntax error at (%llu, %llu)\n", errorLocation.line, errorLocation.character); + return false; + } + + auto tokVal = tok->extractVal(); + + bool isTransition = false; + + for (auto transition : state->transitions) { + if (transition->tok == token) { + transition->action(grammar, tokVal); + state = transition->target; + isTransition = true; + break; + } + } + + if (!isTransition) { + // if no tok matched to any transition produce error + auto errorLocation = tok->getCursorPrev().get2DLocation(); + printf("Parse error at (%llu, %llu) - %s", errorLocation.line, errorLocation.character, state->error.read()); + return false; + } + } + + return true; +} + +struct tp::CfGrammarParserState { + Automata automata; + CFGTokenizer tokenizer; +}; + +CfGrammarParserState* CfGrammar::initializeCfGrammarParser() { + auto state = new CfGrammarParserState(); + initializeTokenizer(&state->tokenizer); + initAutomata(state->automata); + return state; +} + +void CfGrammar::deinitializeCfGrammarParser(CfGrammarParserState* state) { + delete state; +} + +void CfGrammar::parse(CfGrammarParserState* context, const int1* source) { + ::parse(source, &context->automata, &context->tokenizer, this); +} \ No newline at end of file diff --git a/Parser/private/Parser.cpp b/Parser/private/Parser.cpp deleted file mode 100644 index e69de29..0000000 diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp new file mode 100644 index 0000000..0cff23f --- /dev/null +++ b/Parser/public/CfGrammar.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "Strings.hpp" +#include "List.hpp" + +namespace tp { + + struct CfGrammar { + struct Rule { + struct Arg { + String id; + bool isTerminal; + }; + + String id; + List args; + }; + + List rules; + String startTerminal; + + public: + static struct CfGrammarParserState* initializeCfGrammarParser(); + static void deinitializeCfGrammarParser(CfGrammarParserState*); + + public: + void parse(CfGrammarParserState* context, const int1* source); + }; +} \ No newline at end of file diff --git a/Parser/public/Parser.hpp b/Parser/public/Parser.hpp deleted file mode 100644 index 4c64fe0..0000000 --- a/Parser/public/Parser.hpp +++ /dev/null @@ -1,105 +0,0 @@ -#pragma once - -#include "Strings.hpp" -#include "Map.hpp" -#include "List.hpp" - -namespace tp { - - template - class ContextFreeGrammar { - public: - class NonTerminalSymbol; - - class RHSArg { - tAlphabetType terminal; - const NonTerminalSymbol* nonTerminal = nullptr; - public: - RHSArg(const NonTerminalSymbol* aNonTerminal) : nonTerminal(aNonTerminal) {} - RHSArg(tAlphabetType terminal) : terminal(terminal) {} - }; - - class NonTerminalSymbol { - String name; - String description; - - struct Rule { - List mArgs; - }; - - List mRules; - - Rule* newRule() { - mRules.pushBack(); - return mRules.last()->data; - } - }; - - private: - Map mNonTerminals; - NonTerminalSymbol* mStart; - - public: - ContextFreeGrammar() = default; - - void setStartNonTerminal(const NonTerminalSymbol* start) { - mStart = start; - } - - const NonTerminalSymbol* addRule(const String& LHS, const InitialierList RHS) { - NonTerminalSymbol* nonTerminal = nullptr; - auto idx = mNonTerminals.presents(LHS); - if (idx) { - nonTerminal = mNonTerminals.get(idx); - } else { - nonTerminal = new NonTerminalSymbol(LHS, "None"); - mNonTerminals.put(LHS, nonTerminal); - } - - auto* rule = nonTerminal->newRule(); - for (auto arg : RHS) { - rule->pushBack(arg); - } - - return nonTerminal; - } - - bool checkSemantic() { - return false; - } - - bool checkNonAmbiguous() { - return false; - } - }; - - template - class Parser { - typedef ContextFreeGrammar Grammar; - - public: - class ASTNode { - const Grammar::NonTerminalSymbol* mNonTerminal; - List mLeafs; - }; - - private: - class InputTape { - }; - - class StateStack { - }; - - private: - Grammar mGrammar; - - public: - Parser() = default; - - Grammar& getGrammar() { return mGrammar; } - - void buildTables() {} - - const ASTNode* parse() {} - }; -} \ No newline at end of file diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp index bf32739..dad09ea 100644 --- a/Tokenizer/public/Tokenizer.hpp +++ b/Tokenizer/public/Tokenizer.hpp @@ -19,6 +19,15 @@ namespace tp { return mTransitionMatrix.isTrapped(); } + public: + // Some useful RE to be reused + static constexpr const tAlphabetType* etherRE = "\n|\t| |\r"; + static constexpr const tAlphabetType* intRE = "((\\-)|(\\+))?[0-9]+i?"; + static constexpr const tAlphabetType* floatRE = R"(((\-)|(\+))?([0-9]+)(\.)([0-9]*)?f?)"; + static constexpr const tAlphabetType* commentBlockRE = R"((/\*){\*-\*}*(\*/))"; + static constexpr const tAlphabetType* stringRE = R"("{"-"}*")"; + static constexpr const tAlphabetType* idRE = "([a-z]|[A-Z]|_)+([a-z]|[A-Z]|[0-9]|_)*"; + public: Tokenizer() { @@ -85,9 +94,30 @@ namespace tp { const tAlphabetType* mSource = nullptr; ualni mAdvancedOffset = 0; const tAlphabetType* str() { return mSource + mAdvancedOffset; } + + struct Location2D { + ualni line = 0; + ualni character = 0; + }; + + Location2D get2DLocation() { + Location2D out; + typedef typename StringLogic::Index Idx; + Buffer offsets; + StringLogic::calcLineOffsets(mSource, StringLogic::calcLength(mSource), offsets); + for (ualni idx = 1; idx < offsets.size(); idx++) { + if (offsets[idx] > mAdvancedOffset) { + out.line = idx - 1; + break; + } + } + out.character = mAdvancedOffset - offsets[out.line]; + return out; + } }; SimpleTokenizer() = default; + auto getTokenizer() const { return mTokenizer; } void build(const InitialierList>& rules) { mTokenizer.build(rules); From 92f34e2a99115706574f6664b304e8e3aba7cc2c Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Thu, 10 Aug 2023 17:29:28 +0300 Subject: [PATCH 51/68] CF Grammar improvements --- CommandLine/private/CommandLine.cpp | 1 + Parser/CMakeLists.txt | 6 +++ Parser/applications/Cfg.cpp | 72 +++++++++++++++++++++++++++++ Parser/private/CfGrammar.cpp | 62 +++++++++++++++++++++++++ Parser/private/CfGrammarParser.cpp | 52 +++++++++++++-------- Parser/private/Parser.cpp | 8 ++++ Parser/public/CfGrammar.hpp | 22 ++++++++- Parser/public/Parser.hpp | 7 +++ Parser/rsc/grammar.txt | 12 +++++ Tokenizer/tests/TestTokenizer.cpp | 40 ++++++++++++++++ 10 files changed, 262 insertions(+), 20 deletions(-) create mode 100644 Parser/applications/Cfg.cpp create mode 100644 Parser/private/CfGrammar.cpp create mode 100644 Parser/private/Parser.cpp create mode 100644 Parser/public/Parser.hpp create mode 100644 Parser/rsc/grammar.txt diff --git a/CommandLine/private/CommandLine.cpp b/CommandLine/private/CommandLine.cpp index 35bfb35..a7172b7 100644 --- a/CommandLine/private/CommandLine.cpp +++ b/CommandLine/private/CommandLine.cpp @@ -337,6 +337,7 @@ void CommandLine::parseArg(Arg& arg, const char* src) { auto tok = mTokenizer.readTok(); if (tok < TokType::INT || tok > TokType::STR) { ErrInvalidArgSyntax(&arg); + return; } auto val = mTokenizer.extractVal(); diff --git a/Parser/CMakeLists.txt b/Parser/CMakeLists.txt index 947b1c6..eda4fcc 100644 --- a/Parser/CMakeLists.txt +++ b/Parser/CMakeLists.txt @@ -12,6 +12,12 @@ add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) target_include_directories(${PROJECT_NAME} PUBLIC ./public/) target_link_libraries(${PROJECT_NAME} PUBLIC Tokenizer) +### -------------------------- Applications -------------------------- ### +add_executable(cfg ./applications/Cfg.cpp ) +target_link_libraries(cfg ${PROJECT_NAME} CommandLine) + +configure_file(rsc/grammar.txt grammar.txt COPYONLY) + ### -------------------------- Tests -------------------------- ### enable_testing() file(GLOB TEST_SOURCES "./tests/*.cpp") diff --git a/Parser/applications/Cfg.cpp b/Parser/applications/Cfg.cpp new file mode 100644 index 0000000..bfedbb3 --- /dev/null +++ b/Parser/applications/Cfg.cpp @@ -0,0 +1,72 @@ + +#include "NewPlacement.hpp" + +#include "Parser.hpp" +#include "CommandLine.hpp" + +using namespace tp; + +void run(const String& source) { + auto state = CfGrammar::initializeCfGrammarParser(); + + CfGrammar grammar; + + if (!grammar.parse(state, source)) { + printf("Parsing is failed\n"); + return; + } + + if (!grammar.compile()) { + printf("Compilation is failed\n"); + return; + } + + printf("Grammar is accepted.\n"); + + printf("Example text formed from grammar : TODO\n"); + + CfGrammar::deinitializeCfGrammarParser(state); +} + +int main(int argc, const char* argv[]) { + tp::ModuleManifest* deps[] = { &tp::gModuleParser, &tp::gModuleCommandLine, nullptr }; + tp::ModuleManifest testModule("CommandLineTest", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + { + CommandLine cmd = { + { "grammar", CommandLine::Arg::STR }, + }; + + if (!cmd.parse((char) argc, argv, true, 1)) { + return 1; + } + + auto location = cmd.getString("grammar"); + + LocalConnection file; + String grammar; + + file.connect(LocalConnection::Location(location), LocalConnection::Type(true)); + + if (!file.getConnectionStatus().isOpened()) { + printf("Cant open file\n"); + return 1; + } + + auto size = file.size(); + grammar.resize((String::Index) size); + file.readBytes(grammar.write(), size); + + + run(grammar); + + file.disconnect(); + } + + testModule.deinitialize(); + return 0; +} \ No newline at end of file diff --git a/Parser/private/CfGrammar.cpp b/Parser/private/CfGrammar.cpp new file mode 100644 index 0000000..a265f51 --- /dev/null +++ b/Parser/private/CfGrammar.cpp @@ -0,0 +1,62 @@ + +#include "NewPlacement.hpp" +#include "CfGrammar.hpp" + +using namespace tp; + +bool CfGrammar::compile() { + + if (!rules.length()) { + printf("Grammar must have at leas one rule\n"); + return false; + } + + if (startTerminal == String()) { + printf("Using first rule's non-terminal as grammar's root. Define explicitly - 'Start : id'\n"); + startTerminal = rules.first()->data.id; + } + + // find all rules + for (auto rule : rules) { + + if (!rule->args.length()) { + printf("Rule must have at leas one terminal or non-terminal. See rule '%s'\n", rule->id.read()); + return false; + } + + if (!mNonTerminals.presents(rule->id)) { + mNonTerminals.put(rule->id, {}); + } + auto nonTerminal = &mNonTerminals.get(rule->id); + + nonTerminal->rules.pushBack(&rule.data()); + } + + for (auto nonTerminal : mNonTerminals) { + for (auto rule : nonTerminal->val.rules) { + for (auto arg : rule->args) { + + if (arg->isTerminal) { + mTerminals.put(rule->id, {}); + } else { + auto idx = mNonTerminals.presents(arg->id); + if (!idx) { + printf("Referenced non-terminal '%s' is not defined\n", arg->id.read()); + return false; + } + auto reference = &mNonTerminals.getSlotVal(idx); + reference->references.put(nonTerminal->key, &nonTerminal->val); + nonTerminal->val.referencing.put(arg->id, reference); + } + } + } + } + + for (auto nonTerminal : mNonTerminals) { + if (!nonTerminal->val.references.size() && nonTerminal->key != startTerminal) { + printf("Non-terminal '%s' is defined but not used\n", nonTerminal->key.read()); + } + } + + return true; +} \ No newline at end of file diff --git a/Parser/private/CfGrammarParser.cpp b/Parser/private/CfGrammarParser.cpp index 6fc4dbe..16645c6 100644 --- a/Parser/private/CfGrammarParser.cpp +++ b/Parser/private/CfGrammarParser.cpp @@ -16,6 +16,8 @@ enum class Token { ALTERNATION, RULE_END, IGNORED, + EPSILON, + COMMENT, END, FAILED, }; @@ -31,6 +33,7 @@ struct State { void (*action)(CfGrammar* grammar, const String& tok) = nullptr; }; + String name; String error; Buffer transitions; bool accept = false; @@ -41,25 +44,28 @@ typedef Buffer Automata; void initializeTokenizer(CFGTokenizer* tok) { typedef decltype(tok->getTokenizer()) TokBase; tok->build({ - { TokBase::idRE, Token::ID }, { TokBase::etherRE, Token::IGNORED }, { "Start", Token::START }, { ":", Token::EQUAL }, - { "[", Token::TERMINAL_START }, - { "]", Token::TERMINAL_END }, - { "|", Token::ALTERNATION }, + { "\\[", Token::TERMINAL_START }, + { "\\]", Token::TERMINAL_END }, + { "\\|", Token::ALTERNATION }, { ";", Token::RULE_END }, + { "&", Token::EPSILON }, + { TokBase::idRE, Token::ID }, + { TokBase::commentBlockRE, Token::COMMENT }, }); + + ASSERT(tok->isBuild()) } void initAutomata(Automata& automata) { - automata.reserve(8); + automata.reserve(7); auto states = &automata.first(); auto root = states++; auto end = states++; auto start = states++; - auto startEnd = states++; auto rule = states++; auto rhs = states++; auto terminalStart = states++; @@ -75,11 +81,7 @@ void initAutomata(Automata& automata) { }; start->transitions = { - { Token::ID, startEnd}, - }; - - startEnd->transitions = { - { Token::RULE_END, + { Token::ID, root, [](CfGrammar* grammar, const String& tok) { grammar->startTerminal = tok; @@ -98,7 +100,11 @@ void initAutomata(Automata& automata) { } }, { Token::ID, rhs, [](CfGrammar* grammar, const String& tok) { - grammar->rules.last()->data.args.pushBack({ tok, false }); + grammar->rules.last()->data.args.pushBack({ tok, false, false }); + } + }, + { Token::EPSILON, rhs, [](CfGrammar* grammar, const String& tok) { + grammar->rules.last()->data.args.pushBack({ tok, false, true }); } }, { Token::TERMINAL_START, terminalStart }, @@ -106,8 +112,8 @@ void initAutomata(Automata& automata) { }; terminalStart->transitions = { - { Token::ID, rhs, [](CfGrammar* grammar, const String& tok) { - grammar->rules.last()->data.args.pushBack({ tok, true }); + { Token::ID, terminalEnd, [](CfGrammar* grammar, const String& tok) { + grammar->rules.last()->data.args.pushBack({ tok, true, false }); } }, }; @@ -121,12 +127,18 @@ void initAutomata(Automata& automata) { root->error = "Expected 'Start' statement, rule or end of text"; start->error = idError; - startEnd->error = stmEndError; rule->error = "Expected production equality ':'"; rhs->error = "Expected alternation '|', terminal id, statement end ';' or terminal start '[' "; terminalStart->error = idError; terminalEnd->error = "Expected terminal end '[' "; + root->name = "root"; + start->name = "start"; + rule->name = "production"; + rhs->name = "rhs"; + terminalStart->name = "terminalStart"; + terminalEnd->name = "terminalEnd"; + end->accept = true; } @@ -139,6 +151,10 @@ bool parse(const AlphabetType* text, Automata* automata, CFGTokenizer* tok, CfGr auto token = tok->readTok(); + if (token == Token::IGNORED || token == Token::COMMENT) { + continue; + } + if (token == Token::FAILED) { auto errorLocation = tok->getCursorPrev().get2DLocation(); printf("Syntax error at (%llu, %llu)\n", errorLocation.line, errorLocation.character); @@ -151,7 +167,7 @@ bool parse(const AlphabetType* text, Automata* automata, CFGTokenizer* tok, CfGr for (auto transition : state->transitions) { if (transition->tok == token) { - transition->action(grammar, tokVal); + if (transition->action) transition->action(grammar, tokVal); state = transition->target; isTransition = true; break; @@ -185,6 +201,6 @@ void CfGrammar::deinitializeCfGrammarParser(CfGrammarParserState* state) { delete state; } -void CfGrammar::parse(CfGrammarParserState* context, const int1* source) { - ::parse(source, &context->automata, &context->tokenizer, this); +bool CfGrammar::parse(CfGrammarParserState* context, const String& source) { + return ::parse(source.read(), &context->automata, &context->tokenizer, this); } \ No newline at end of file diff --git a/Parser/private/Parser.cpp b/Parser/private/Parser.cpp new file mode 100644 index 0000000..3f8ad9e --- /dev/null +++ b/Parser/private/Parser.cpp @@ -0,0 +1,8 @@ +#include "Parser.hpp" + +#include "Tokenizer.hpp" + +using namespace tp; + +static ModuleManifest* sModuleDependencies[] = { &gModuleTokenizer, nullptr }; +ModuleManifest tp::gModuleParser = ModuleManifest("CommandLine", nullptr, nullptr, sModuleDependencies); diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp index 0cff23f..8e4a4f7 100644 --- a/Parser/public/CfGrammar.hpp +++ b/Parser/public/CfGrammar.hpp @@ -2,6 +2,7 @@ #include "Strings.hpp" #include "List.hpp" +#include "Map.hpp" namespace tp { @@ -9,7 +10,8 @@ namespace tp { struct Rule { struct Arg { String id; - bool isTerminal; + bool isTerminal = false; + bool isEpsilon = false; }; String id; @@ -19,11 +21,27 @@ namespace tp { List rules; String startTerminal; + private: + struct NonTerminal { + List rules; + Map references; + Map referencing; + }; + + struct Terminal {}; + + Map mTerminals; + Map mNonTerminals; + public: static struct CfGrammarParserState* initializeCfGrammarParser(); static void deinitializeCfGrammarParser(CfGrammarParserState*); public: - void parse(CfGrammarParserState* context, const int1* source); + bool parse(CfGrammarParserState* context, const String& source); + bool compile(); + + bool isAmbiguous(); + void optimize(); }; } \ No newline at end of file diff --git a/Parser/public/Parser.hpp b/Parser/public/Parser.hpp new file mode 100644 index 0000000..5f3f488 --- /dev/null +++ b/Parser/public/Parser.hpp @@ -0,0 +1,7 @@ +#pragma once + +#include "CfGrammar.hpp" + +namespace tp { + extern ModuleManifest gModuleParser; +} \ No newline at end of file diff --git a/Parser/rsc/grammar.txt b/Parser/rsc/grammar.txt new file mode 100644 index 0000000..93d36e3 --- /dev/null +++ b/Parser/rsc/grammar.txt @@ -0,0 +1,12 @@ + +/* +Sample grammar. +This grammar wil produce text in the form: TODO +*/ + +/* This is the starting production of the grammar */ +Start A + +/* Production rule */ +A : [ ID ]; + diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp index 0a991e3..9ca3a38 100644 --- a/Tokenizer/tests/TestTokenizer.cpp +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -193,6 +193,46 @@ TEST_DEF_STATIC(Simple) { TEST(outputHash == outputHashPassed); } +TEST_DEF(Covarage) { + enum class TokType { + START = 0, + NONE = 1, + FAILED = 2, + SPACE = 3, + ID = 4, + COMMENT_BLOCK = 5, + TOK_SOURCE_END = 6, + }; + + SimpleTokenizer lexer; + + lexer.build({ + { "([a-c]|A)+", TokType::ID }, + { "A", TokType::START }, + { " ", TokType::SPACE }, + }); + + if (!lexer.isBuild()) { + printf("Error : %s", lexer.getBuildError().description); + return; + } + + lexer.bindSource(" A bc cb cc "); + /* 3 5 3 0 3 4 3 4 3 6 */ + + TokType tok; + ualni outputHash = 0; + printf("\n\n OutputHash : "); + do { + tok = lexer.readTok(); + outputHash += ualni(tok); + printf(" %i ", int(tok)); + } while (tok != TokType::TOK_SOURCE_END && tok != TokType::FAILED); + printf(" : %llu", outputHash); + TEST(outputHash == 90); +} + TEST_DEF(Tokenizer) { testSimple(); + // testCovarage(); TODO : test environment for an error } \ No newline at end of file From d888aeb2b43fe53e6027b62f93d72aadb84d615c Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Thu, 10 Aug 2023 18:33:17 +0300 Subject: [PATCH 52/68] Fixing tokenizer bug --- Parser/applications/Cfg.cpp | 2 +- Parser/private/CfGrammarParser.cpp | 7 +++---- TODO | 3 --- Tokenizer/public/AutomataGraph.h | 4 ++++ Tokenizer/public/RegularExpression.h | 12 +++++------- Tokenizer/public/Tokenizer.hpp | 11 ++++++++--- Tokenizer/tests/TestTokenizer.cpp | 13 ++++++------- 7 files changed, 27 insertions(+), 25 deletions(-) diff --git a/Parser/applications/Cfg.cpp b/Parser/applications/Cfg.cpp index bfedbb3..6b22bb5 100644 --- a/Parser/applications/Cfg.cpp +++ b/Parser/applications/Cfg.cpp @@ -21,7 +21,7 @@ void run(const String& source) { return; } - printf("Grammar is accepted.\n"); + printf("Grammar accepted.\n"); printf("Example text formed from grammar : TODO\n"); diff --git a/Parser/private/CfGrammarParser.cpp b/Parser/private/CfGrammarParser.cpp index 16645c6..d20b27a 100644 --- a/Parser/private/CfGrammarParser.cpp +++ b/Parser/private/CfGrammarParser.cpp @@ -42,9 +42,8 @@ struct State { typedef Buffer Automata; void initializeTokenizer(CFGTokenizer* tok) { - typedef decltype(tok->getTokenizer()) TokBase; tok->build({ - { TokBase::etherRE, Token::IGNORED }, + { CFGTokenizer::tTokenizer::etherRE, Token::IGNORED }, { "Start", Token::START }, { ":", Token::EQUAL }, { "\\[", Token::TERMINAL_START }, @@ -52,8 +51,8 @@ void initializeTokenizer(CFGTokenizer* tok) { { "\\|", Token::ALTERNATION }, { ";", Token::RULE_END }, { "&", Token::EPSILON }, - { TokBase::idRE, Token::ID }, - { TokBase::commentBlockRE, Token::COMMENT }, + { CFGTokenizer::tTokenizer::idRE, Token::ID }, + { CFGTokenizer::tTokenizer::commentBlockRE, Token::COMMENT }, }); ASSERT(tok->isBuild()) diff --git a/TODO b/TODO index 1d83f18..a8767fb 100644 --- a/TODO +++ b/TODO @@ -1,9 +1,6 @@ Testing !! Objects: - tokenizing: - test all - parsing: make cf grammar make lalr parser diff --git a/Tokenizer/public/AutomataGraph.h b/Tokenizer/public/AutomataGraph.h index 3913535..5a03edb 100644 --- a/Tokenizer/public/AutomataGraph.h +++ b/Tokenizer/public/AutomataGraph.h @@ -422,6 +422,10 @@ namespace tp { TransitionMatrix() = default; + auto getStates() const { return &mStates; } + auto getTransitions() const { return &mTransitions; } + auto getStart() const { return mStart; } + void construct(const DFA& dfa) { mSymbolRange = dfa.getRange(); auto range_len = ualni(mSymbolRange.mEnd - mSymbolRange.mBegin); diff --git a/Tokenizer/public/RegularExpression.h b/Tokenizer/public/RegularExpression.h index 322cd6a..7fa668f 100644 --- a/Tokenizer/public/RegularExpression.h +++ b/Tokenizer/public/RegularExpression.h @@ -351,17 +351,15 @@ namespace tp::RegEx { halni idx = 0; for (auto rule: aRules) { - auto node = idx ? compileUtil(rule.head, rule.tail) : compileUtil(rule.head, rule.tail, left, right); + auto node = compileUtil(rule.head, rule.tail); if (!(node.left && node.right)) { mError.mRuleIndex = idx; return {}; } - if (idx) { - transitionAny(left, node.left); - transitionAny(node.right, right); - } + transitionAny(left, node.left); + transitionAny(node.right, right); idx++; } @@ -373,7 +371,7 @@ namespace tp::RegEx { private: - Node compileUtil(const tAlphabetType* regex, tStateType state, Vertex* aLeft = nullptr, Vertex* aRight = nullptr) { + Node compileUtil(const tAlphabetType* regex, tStateType state) { Parser parser; auto astNode = parser.parse(regex); if (parser.mError.isError()) { @@ -384,7 +382,7 @@ namespace tp::RegEx { return {}; } - auto node = compileNode(astNode, aLeft, aRight); + auto node = compileNode(astNode, nullptr, nullptr); delete astNode; mGraph->setVertexState(node.right, state); diff --git a/Tokenizer/public/Tokenizer.hpp b/Tokenizer/public/Tokenizer.hpp index dad09ea..869beba 100644 --- a/Tokenizer/public/Tokenizer.hpp +++ b/Tokenizer/public/Tokenizer.hpp @@ -50,6 +50,8 @@ namespace tp { return !mError.isError(); } + auto getMatrix() const { return &mTransitionMatrix; } + const RegEx::CompileError& getBuildError() { return mError; } @@ -80,8 +82,11 @@ namespace tp { template class SimpleTokenizer { - - Tokenizer mTokenizer; + public: + typedef Tokenizer tTokenizer; + + private: + tTokenizer mTokenizer; const tAlphabetType* mSource = nullptr; ualni mLastTokLen = 0; @@ -117,7 +122,7 @@ namespace tp { }; SimpleTokenizer() = default; - auto getTokenizer() const { return mTokenizer; } + auto getTokenizer() const { return &mTokenizer; } void build(const InitialierList>& rules) { mTokenizer.build(rules); diff --git a/Tokenizer/tests/TestTokenizer.cpp b/Tokenizer/tests/TestTokenizer.cpp index 9ca3a38..350e51e 100644 --- a/Tokenizer/tests/TestTokenizer.cpp +++ b/Tokenizer/tests/TestTokenizer.cpp @@ -30,7 +30,7 @@ return )"; -TEST_DEF_STATIC(Simple) { +TEST_DEF_STATIC(General) { enum class TokType { NONE, @@ -193,7 +193,7 @@ TEST_DEF_STATIC(Simple) { TEST(outputHash == outputHashPassed); } -TEST_DEF(Covarage) { +TEST_DEF(Simple) { enum class TokType { START = 0, NONE = 1, @@ -207,9 +207,9 @@ TEST_DEF(Covarage) { SimpleTokenizer lexer; lexer.build({ + { " ", TokType::SPACE }, { "([a-c]|A)+", TokType::ID }, { "A", TokType::START }, - { " ", TokType::SPACE }, }); if (!lexer.isBuild()) { @@ -218,7 +218,6 @@ TEST_DEF(Covarage) { } lexer.bindSource(" A bc cb cc "); - /* 3 5 3 0 3 4 3 4 3 6 */ TokType tok; ualni outputHash = 0; @@ -229,10 +228,10 @@ TEST_DEF(Covarage) { printf(" %i ", int(tok)); } while (tok != TokType::TOK_SOURCE_END && tok != TokType::FAILED); printf(" : %llu", outputHash); - TEST(outputHash == 90); + TEST(outputHash == 33); } TEST_DEF(Tokenizer) { + testGeneral(); testSimple(); - // testCovarage(); TODO : test environment for an error -} \ No newline at end of file +} From 6fcfa075f8afeb6726606b0a9e7dd387ae022818 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 11 Aug 2023 16:04:02 +0300 Subject: [PATCH 53/68] Generate sentences from cf grammar. Fix list initialization from copy constructor --- Containers/public/List.hpp | 4 +-- Parser/applications/Cfg.cpp | 6 +++- Parser/private/CfGrammar.cpp | 65 ++++++++++++++++++++++++++++++++++++ Parser/public/CfGrammar.hpp | 13 +++++++- 4 files changed, 84 insertions(+), 4 deletions(-) diff --git a/Containers/public/List.hpp b/Containers/public/List.hpp index 85a49bf..e80b50c 100644 --- a/Containers/public/List.hpp +++ b/Containers/public/List.hpp @@ -72,7 +72,7 @@ namespace tp { public: List() = default; - + List(const List& in) { this->operator=(in); } List(const InitialierList& list) { operator=(list); } [[nodiscard]] inline Node* first() const { return mFirst; } @@ -146,7 +146,7 @@ namespace tp { } [[nodiscard]] Node* findIdx(Index idx) const { - DEBUG_ASSERT(!mFirst || idx > mLength - 1) + DEBUG_ASSERT(mFirst && idx < mLength && idx >= 0) Node* found = mFirst; for (int i = 0; i != idx; i++) { found = found->next; diff --git a/Parser/applications/Cfg.cpp b/Parser/applications/Cfg.cpp index 6b22bb5..23ad5ac 100644 --- a/Parser/applications/Cfg.cpp +++ b/Parser/applications/Cfg.cpp @@ -23,7 +23,11 @@ void run(const String& source) { printf("Grammar accepted.\n"); - printf("Example text formed from grammar : TODO\n"); + List sentences; + grammar.generateSentences(sentences); + + printf("Example sentences formed from grammar: \n"); + for (auto sentence : sentences) tp::CfGrammar::printSentence(sentence.data()); CfGrammar::deinitializeCfGrammarParser(state); } diff --git a/Parser/private/CfGrammar.cpp b/Parser/private/CfGrammar.cpp index a265f51..5901eca 100644 --- a/Parser/private/CfGrammar.cpp +++ b/Parser/private/CfGrammar.cpp @@ -2,8 +2,73 @@ #include "NewPlacement.hpp" #include "CfGrammar.hpp" +#include "Timing.hpp" + using namespace tp; +void CfGrammar::generateSentences(List& out) { + constexpr ualni maxTime = 1000; + constexpr ualni maxSentences = 40; + constexpr ualni maxQueue = 20000; + + List queue; + Timer timer(maxTime); + + // add start production + Sentence start; + start.terms.pushBack( { startTerminal, false } ); + queue.pushBack(start); + + PASS: + + auto const sentential = &queue.first()->data; + bool isSentence = true; + ualni termIdx = 0; + for (auto term : sentential->terms) { + if (term->terminal) { + termIdx++; + continue; + } + + auto nonTerminal = &mNonTerminals.get(term->id); + for (auto production : nonTerminal->rules) { + queue.pushBack(*sentential); + auto copy = &queue.last()->data; + + auto appendTerm = copy->terms.findIdx(termIdx); + auto deleteTerm = appendTerm; + for (auto arg : production->args) { + auto newTerm = copy->terms.newNode({ arg->id, arg->isTerminal }); + copy->terms.attach(newTerm, appendTerm); + appendTerm = newTerm; + } + copy->terms.removeNode(deleteTerm); + } + + isSentence = false; + termIdx++; + } + if (isSentence) out.pushBack(*sentential); + queue.popFront(); + + + bool stop = false; + stop |= !queue.length(); + stop |= timer.isTimeout(); + stop |= queue.length() > maxQueue; + stop |= out.length() > maxSentences; + + if (!stop) goto PASS; +} + +void CfGrammar::printSentence(Sentence& in) { + printf("Sentence:"); + for (auto term : in.terms) { + printf(" %s", term->id.read()); + } + printf("\n"); +} + bool CfGrammar::compile() { if (!rules.length()) { diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp index 8e4a4f7..f8b650e 100644 --- a/Parser/public/CfGrammar.hpp +++ b/Parser/public/CfGrammar.hpp @@ -18,6 +18,14 @@ namespace tp { List args; }; + struct Sentence { + struct Term { + String id; + bool terminal; + }; + List terms; + }; + List rules; String startTerminal; @@ -41,7 +49,10 @@ namespace tp { bool parse(CfGrammarParserState* context, const String& source); bool compile(); - bool isAmbiguous(); + void generateSentences(List& out); + static void printSentence(Sentence& in); + + private: void optimize(); }; } \ No newline at end of file From 01b7d96ebd7302910f3f15eff953bbd67b9b3273 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 11 Aug 2023 16:21:30 +0300 Subject: [PATCH 54/68] Fixin map --- Containers/public/Map.hpp | 9 +++++++-- Parser/rsc/grammar.txt | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Containers/public/Map.hpp b/Containers/public/Map.hpp index eb80279..2c398c4 100644 --- a/Containers/public/Map.hpp +++ b/Containers/public/Map.hpp @@ -41,7 +41,7 @@ namespace tp { private: tAllocator mAlloc; - Node** mTable; + Node** mTable = nullptr; ualni mNSlots = 0; ualni mNEntries = 0; @@ -181,6 +181,10 @@ namespace tp { mTable = newTable(mNSlots); } + Map(const Map& in) { + this->operator=(in); + } + Node** buff() const { return mTable; } @@ -202,8 +206,9 @@ namespace tp { if (!mTable[idx] || isDeletedNode(mTable[idx])) { mTable[idx] = newNode(key, val); mNEntries++; + } else { + mTable[idx]->val = val; } - mTable[idx]->val = val; if ((halnf) mNEntries / mNSlots > maxLoadFactor()) { rehash(); } diff --git a/Parser/rsc/grammar.txt b/Parser/rsc/grammar.txt index 93d36e3..554b086 100644 --- a/Parser/rsc/grammar.txt +++ b/Parser/rsc/grammar.txt @@ -8,5 +8,5 @@ This grammar wil produce text in the form: TODO Start A /* Production rule */ -A : [ ID ]; +A : [ ID ] [ IS ] [ IDs ]; From 7d49642376cd4f90e6bc77acf05da7f0d56bf6e6 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 11 Aug 2023 16:37:51 +0300 Subject: [PATCH 55/68] Fixin cfg --- Parser/applications/Cfg.cpp | 8 ++++++++ Parser/private/CfGrammar.cpp | 7 ++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/Parser/applications/Cfg.cpp b/Parser/applications/Cfg.cpp index 23ad5ac..c7e467a 100644 --- a/Parser/applications/Cfg.cpp +++ b/Parser/applications/Cfg.cpp @@ -13,11 +13,13 @@ void run(const String& source) { if (!grammar.parse(state, source)) { printf("Parsing is failed\n"); + CfGrammar::deinitializeCfGrammarParser(state); return; } if (!grammar.compile()) { printf("Compilation is failed\n"); + CfGrammar::deinitializeCfGrammarParser(state); return; } @@ -41,6 +43,12 @@ int main(int argc, const char* argv[]) { } { + printf("Arguments given: "); + for (auto idx = 0; idx < argc; idx++) { + printf("[%s]", argv[idx]); + } + printf("\n"); + CommandLine cmd = { { "grammar", CommandLine::Arg::STR }, }; diff --git a/Parser/private/CfGrammar.cpp b/Parser/private/CfGrammar.cpp index 5901eca..4b6d82d 100644 --- a/Parser/private/CfGrammar.cpp +++ b/Parser/private/CfGrammar.cpp @@ -38,6 +38,7 @@ void CfGrammar::generateSentences(List& out) { auto appendTerm = copy->terms.findIdx(termIdx); auto deleteTerm = appendTerm; for (auto arg : production->args) { + if (arg->isEpsilon) continue; auto newTerm = copy->terms.newNode({ arg->id, arg->isTerminal }); copy->terms.attach(newTerm, appendTerm); appendTerm = newTerm; @@ -62,11 +63,11 @@ void CfGrammar::generateSentences(List& out) { } void CfGrammar::printSentence(Sentence& in) { - printf("Sentence:"); + printf("Sentence: ["); for (auto term : in.terms) { printf(" %s", term->id.read()); } - printf("\n"); + printf(" ]\n"); } bool CfGrammar::compile() { @@ -103,7 +104,7 @@ bool CfGrammar::compile() { if (arg->isTerminal) { mTerminals.put(rule->id, {}); - } else { + } else if (!arg->isEpsilon) { auto idx = mNonTerminals.presents(arg->id); if (!idx) { printf("Referenced non-terminal '%s' is not defined\n", arg->id.read()); From 43fe34dcbf79539c98ea025f3bfaa9ce6d311ee9 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 11 Aug 2023 16:42:47 +0300 Subject: [PATCH 56/68] Improve module initialization log --- Modules/private/Module.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Modules/private/Module.cpp b/Modules/private/Module.cpp index 65fcebd..2089a07 100644 --- a/Modules/private/Module.cpp +++ b/Modules/private/Module.cpp @@ -26,6 +26,8 @@ bool ModuleManifest::isInitialized() const { bool ModuleManifest::initialize(const ModuleManifest* parent) { + if (!parent) std::cout << "===== Initialization Start =====\n"; + mInitCount++; if (isInitialized()) { @@ -38,7 +40,7 @@ bool ModuleManifest::initialize(const ModuleManifest* parent) { mInitialized &= (*module)->initialize(this); } - std::cout << "=== Initializing \"" << mModuleName << "\" from \"" << (parent ? parent->mModuleName : mModuleName ) << "\"\n"; + std::cout << " * Initializing \"" << mModuleName << "\" from \"" << (parent ? parent->mModuleName : mModuleName ) << "\"\n"; if (mInit) mInitialized &= mInit(this); @@ -46,6 +48,8 @@ bool ModuleManifest::initialize(const ModuleManifest* parent) { std::cout << "Failed to Initialize.\n"; } + if (!parent) std::cout << "===== Initialization End =====\n\n"; + return mInitialized; } From 0a886bd8a88b41dd60cff3d4a8f4c6fc950334ac Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Fri, 11 Aug 2023 18:49:45 +0300 Subject: [PATCH 57/68] Fixing list copy and grammar sentence generation --- Containers/public/List.hpp | 4 +++- Parser/private/CfGrammar.cpp | 20 +++++++++++++++----- Parser/public/CfGrammar.hpp | 3 +++ Parser/rsc/grammar.txt | 12 ++++++++++-- TODO | 12 +++++++----- 5 files changed, 38 insertions(+), 13 deletions(-) diff --git a/Containers/public/List.hpp b/Containers/public/List.hpp index e80b50c..26ab926 100644 --- a/Containers/public/List.hpp +++ b/Containers/public/List.hpp @@ -243,7 +243,7 @@ namespace tp { } [[nodiscard]] bool operator==(const List& in) const { - if (in == *this) { return true; } + if (&in == this) { return true; } if (in.length() != length()) { return false; } @@ -253,6 +253,8 @@ namespace tp { if (left->data != right->data) { return false; } + left = left->next; + right = right->next; } if (left != right) { return false; diff --git a/Parser/private/CfGrammar.cpp b/Parser/private/CfGrammar.cpp index 4b6d82d..f23ac40 100644 --- a/Parser/private/CfGrammar.cpp +++ b/Parser/private/CfGrammar.cpp @@ -8,8 +8,8 @@ using namespace tp; void CfGrammar::generateSentences(List& out) { constexpr ualni maxTime = 1000; - constexpr ualni maxSentences = 40; - constexpr ualni maxQueue = 20000; + constexpr ualni maxSentences = 200; + constexpr ualni maxQueue = 1000000; List queue; Timer timer(maxTime); @@ -49,9 +49,19 @@ void CfGrammar::generateSentences(List& out) { isSentence = false; termIdx++; } - if (isSentence) out.pushBack(*sentential); - queue.popFront(); + if (isSentence) { + auto exists = false; + for (auto iter : out) { + if (iter->terms == sentential->terms) { + exists = true; + break; + } + } + if (!exists) out.pushBack(*sentential); + } + + queue.popFront(); bool stop = false; stop |= !queue.length(); @@ -63,7 +73,7 @@ void CfGrammar::generateSentences(List& out) { } void CfGrammar::printSentence(Sentence& in) { - printf("Sentence: ["); + printf("["); for (auto term : in.terms) { printf(" %s", term->id.read()); } diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp index f8b650e..391b250 100644 --- a/Parser/public/CfGrammar.hpp +++ b/Parser/public/CfGrammar.hpp @@ -22,6 +22,9 @@ namespace tp { struct Term { String id; bool terminal; + bool operator==(const Term& in) const { + return (id == in.id) && (terminal == in.terminal); + } }; List terms; }; diff --git a/Parser/rsc/grammar.txt b/Parser/rsc/grammar.txt index 554b086..fe82820 100644 --- a/Parser/rsc/grammar.txt +++ b/Parser/rsc/grammar.txt @@ -5,8 +5,16 @@ This grammar wil produce text in the form: TODO */ /* This is the starting production of the grammar */ + +/* Simple Example Start A +A : [ ID ] | &; +*/ -/* Production rule */ -A : [ ID ] [ IS ] [ IDs ]; +/* Lists Example */ +Start List + +List : List Stm | Stm; +Stm : StmBody [ END ]; +StmBody: [ Stm1 ] | [ Stm2 ] | [ Stm3 ]; diff --git a/TODO b/TODO index a8767fb..758f6a7 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,13 @@ Testing !! -Objects: - parsing: - make cf grammar - make lalr parser - test all +Parser: + CF Grammar: + optimize generation of sentences + check sanity + impl parse machine + +Objects: features: add debug line information into bytecode implement Alloc Size queries From e6d9439ba99a764bd9884557f0d75a79d4f81ff2 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 12 Aug 2023 08:08:47 +0300 Subject: [PATCH 58/68] Adding simple test fot cf grammar --- Parser/tests/Tests.cpp | 60 +++++++++++++++++++++++++++++++++++++++- Utils/public/Testing.hpp | 1 + 2 files changed, 60 insertions(+), 1 deletion(-) diff --git a/Parser/tests/Tests.cpp b/Parser/tests/Tests.cpp index 7679e67..892394f 100644 --- a/Parser/tests/Tests.cpp +++ b/Parser/tests/Tests.cpp @@ -1,4 +1,62 @@ -int main() { +#include "NewPlacement.hpp" +#include "Testing.hpp" +#include "Parser.hpp" +using namespace tp; + +TEST_DEF(Simple) { + + String source = R"( +Start Body +Body : [ Function ] | List | &; +List : [ LIST ]; +)"; + + auto state = CfGrammar::initializeCfGrammarParser(); + + CfGrammar grammar; + + if (!grammar.parse(state, source)) { + TEST(0 && "Parsing is failed\n"); + CfGrammar::deinitializeCfGrammarParser(state); + return; + } + + if (!grammar.compile()) { + TEST(0 && "Compilation is failed\n"); + CfGrammar::deinitializeCfGrammarParser(state); + return; + } + + CfGrammar::deinitializeCfGrammarParser(state); + + printf("Grammar accepted.\n"); + + List sentences; + grammar.generateSentences(sentences); + + TEST_ASSERT(sentences.length() == 3); + TEST_ASSERT(sentences.first()->data.terms.length() == 1); + TEST_ASSERT(sentences.last()->data.terms.length() == 1); + + TEST(sentences.first()->data.terms.first()->data.id == "Function"); + TEST(sentences.last()->data.terms.first()->data.id == "LIST"); + + printf("Example sentences formed from grammar: \n"); + for (auto sentence : sentences) tp::CfGrammar::printSentence(sentence.data()); +} + +int main(int argc, const char* argv[]) { + tp::ModuleManifest* deps[] = { &tp::gModuleParser, nullptr }; + tp::ModuleManifest testModule("CommandLineTest", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + testSimple(); + + testModule.deinitialize(); + return 0; } \ No newline at end of file diff --git a/Utils/public/Testing.hpp b/Utils/public/Testing.hpp index c8c1c1c..25f76c2 100644 --- a/Utils/public/Testing.hpp +++ b/Utils/public/Testing.hpp @@ -61,4 +61,5 @@ namespace tp { void Name##FunctorBody() #define TEST(expr) if (!(expr)) tp::gTesting.addFailedCheck({ #expr, __FILE__, __LINE__ }) +#define TEST_ASSERT(expr) TEST(expr); if (!(expr)) return #define TEST_EQUAL(l, r) if (!((l) == (r))) tp::gTesting.addFailedCheck({ #l" == "#r, __FILE__, __LINE__ }) From b2054386014e3604c7a16c6dad0415bf790c06b2 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 12 Aug 2023 08:27:50 +0300 Subject: [PATCH 59/68] CFG remove unused rules --- Containers/public/List.hpp | 1 + Parser/private/CfGrammar.cpp | 11 +++++++++++ Parser/public/CfGrammar.hpp | 8 ++++++++ 3 files changed, 20 insertions(+) diff --git a/Containers/public/List.hpp b/Containers/public/List.hpp index 26ab926..075c45f 100644 --- a/Containers/public/List.hpp +++ b/Containers/public/List.hpp @@ -157,6 +157,7 @@ namespace tp { [[nodiscard]] Node* find(const TypeArg data) const { Node* found = mFirst; for (alni i = 0; data != found->data; i++) { + if (i == length()) return nullptr; if (!found->next) { return nullptr; } diff --git a/Parser/private/CfGrammar.cpp b/Parser/private/CfGrammar.cpp index f23ac40..b2e4b6f 100644 --- a/Parser/private/CfGrammar.cpp +++ b/Parser/private/CfGrammar.cpp @@ -128,11 +128,22 @@ bool CfGrammar::compile() { } } + List remove; for (auto nonTerminal : mNonTerminals) { if (!nonTerminal->val.references.size() && nonTerminal->key != startTerminal) { printf("Non-terminal '%s' is defined but not used\n", nonTerminal->key.read()); + remove.pushBack(nonTerminal->key); } } + for (auto rem : remove) { + auto nonTerminal = &mNonTerminals.get(rem.data()); + for (auto referencing : nonTerminal->referencing) { + referencing->val->references.remove(nonTerminal->rules.first()->data->id); + } + for (auto rule : nonTerminal->rules) { + rules.removeNode(rules.find(*rule.data())); + } + } return true; } \ No newline at end of file diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp index 391b250..e33db89 100644 --- a/Parser/public/CfGrammar.hpp +++ b/Parser/public/CfGrammar.hpp @@ -12,10 +12,18 @@ namespace tp { String id; bool isTerminal = false; bool isEpsilon = false; + + bool operator==(const Arg& in) const { + return (id == in.id) && (isEpsilon == in.isEpsilon) && (isTerminal == in.isTerminal); + } }; String id; List args; + + bool operator==(const Rule& in) const { + return (id == in.id) && (args == in.args); + } }; struct Sentence { From 616441e049649ad570b939d182f3079ecf1bf587 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 12 Aug 2023 09:09:46 +0300 Subject: [PATCH 60/68] Checking for non productive rules and loops in cfg --- Parser/private/CfGrammar.cpp | 13 +++++++++++++ Parser/private/Parser.cpp | 1 + Parser/public/CfGrammar.hpp | 26 ++++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/Parser/private/CfGrammar.cpp b/Parser/private/CfGrammar.cpp index b2e4b6f..cd925ad 100644 --- a/Parser/private/CfGrammar.cpp +++ b/Parser/private/CfGrammar.cpp @@ -145,5 +145,18 @@ bool CfGrammar::compile() { rules.removeNode(rules.find(*rule.data())); } } + + for (auto nonTerminal : mNonTerminals) { + if (!nonTerminal->val.isProductive()) { + printf("Non-terminal '%s' is not productive\n", nonTerminal->val.rules.first()->data->id.read()); + return false; + } + } + + Map processed; + if (mNonTerminals.get(startTerminal).isLooped(processed, startTerminal)) { + printf("Note that grammar is looped.\n"); + } + return true; } \ No newline at end of file diff --git a/Parser/private/Parser.cpp b/Parser/private/Parser.cpp index 3f8ad9e..61d09bb 100644 --- a/Parser/private/Parser.cpp +++ b/Parser/private/Parser.cpp @@ -1,3 +1,4 @@ +#include "NewPlacement.hpp" #include "Parser.hpp" #include "Tokenizer.hpp" diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp index e33db89..f61d9f9 100644 --- a/Parser/public/CfGrammar.hpp +++ b/Parser/public/CfGrammar.hpp @@ -24,6 +24,13 @@ namespace tp { bool operator==(const Rule& in) const { return (id == in.id) && (args == in.args); } + + [[nodiscard]] bool isProductive() const { + for (auto arg : args) { + if (arg->id == id) return false; + } + return true; + } }; struct Sentence { @@ -42,9 +49,28 @@ namespace tp { private: struct NonTerminal { + List rules; Map references; Map referencing; + + [[nodiscard]] bool isProductive() const { + for (auto rule : rules) { + if (rule->isProductive()) return true; + } + return false; + } + + [[nodiscard]] bool isLooped(Map& processed, const String& id) const { + for (auto ref : referencing) { + if (processed.presents(ref->key)) return true; + } + processed.put(id, {}); + for (auto ref : referencing) { + if (ref->val->isLooped(processed, ref->key)) return true; + } + return false; + } }; struct Terminal {}; From 01b6f9099cd3af6f8c5376467422cf70526473d7 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sat, 12 Aug 2023 11:37:41 +0300 Subject: [PATCH 61/68] LR(1) Parser Initial --- Parser/private/CLR.cpp | 26 ++++++++++++ Parser/private/CfGrammarParser.cpp | 6 ++- Parser/public/CLR.hpp | 65 ++++++++++++++++++++++++++++++ Parser/public/CfGrammar.hpp | 4 +- Parser/public/Parser.hpp | 2 +- Parser/tests/CLRTests.cpp | 10 +++++ Parser/tests/GrammarTests.cpp | 48 ++++++++++++++++++++++ Parser/tests/Tests.cpp | 46 ++------------------- 8 files changed, 161 insertions(+), 46 deletions(-) create mode 100644 Parser/private/CLR.cpp create mode 100644 Parser/public/CLR.hpp create mode 100644 Parser/tests/CLRTests.cpp create mode 100644 Parser/tests/GrammarTests.cpp diff --git a/Parser/private/CLR.cpp b/Parser/private/CLR.cpp new file mode 100644 index 0000000..673693f --- /dev/null +++ b/Parser/private/CLR.cpp @@ -0,0 +1,26 @@ +#include "CLR.hpp" +#include "NewPlacement.hpp" + +using namespace tp; + +void CLR::setGrammar(const tp::CfGrammar& grammar) { + if (grammar.isLooped()) { + mState = ParserState::FAILED; + mBuildError.description = "Cant build lalr parser from looped context free grammar"; + return; + } + + mState = ParserState::FAILED; +} + +void CLR::setTerminal(const String& name, TerminalStream::TerminalID id) { + +} + +void CLR::build() { + +} + +void CLR::parse(TerminalStream* source, List& out, ASTNode** root) { + *root = nullptr; +} \ No newline at end of file diff --git a/Parser/private/CfGrammarParser.cpp b/Parser/private/CfGrammarParser.cpp index d20b27a..3502a2f 100644 --- a/Parser/private/CfGrammarParser.cpp +++ b/Parser/private/CfGrammarParser.cpp @@ -202,4 +202,8 @@ void CfGrammar::deinitializeCfGrammarParser(CfGrammarParserState* state) { bool CfGrammar::parse(CfGrammarParserState* context, const String& source) { return ::parse(source.read(), &context->automata, &context->tokenizer, this); -} \ No newline at end of file +} + +bool CfGrammar::isLooped() const { + return mIsLooped; +} diff --git a/Parser/public/CLR.hpp b/Parser/public/CLR.hpp new file mode 100644 index 0000000..5d9d8ff --- /dev/null +++ b/Parser/public/CLR.hpp @@ -0,0 +1,65 @@ +#pragma once + +#include "CfGrammar.hpp" + +namespace tp { + class CLR { + public: + struct ASTNode { + const CfGrammar::Rule* production = nullptr; + Map terminals; + }; + + class Automation { + public: + class State { + + }; + }; + + class TerminalStream { + public: + typedef ualni TerminalID; + public: + TerminalStream() = default; + virtual TerminalID getNextTerminal() = 0; + }; + + public: + struct BuildError { + String description; + }; + + struct ParseError { + const Automation::State* state = nullptr; + String::Index location = 0; + }; + + private: + class SententialStack { + + }; + + public: + CLR() = default; + + void setGrammar(const CfGrammar& grammar); + void setTerminal(const String& name, TerminalStream::TerminalID id); + void build(); + + void parse(TerminalStream* stream, List& out, ASTNode** root); + + [[nodiscard]] bool isBuild() { return mState == ParserState::BUILD; } + [[nodiscard]] const BuildError& getBuildError() { return mBuildError; } + [[nodiscard]] const ParseError& getParseError() { return mParseError; } + + private: + enum class ParserState { NONE, BUILD, FAILED } mState = ParserState::NONE; + + ParseError mParseError; + BuildError mBuildError; + + SententialStack mStack; + Automation mAutomation; + }; +} \ No newline at end of file diff --git a/Parser/public/CfGrammar.hpp b/Parser/public/CfGrammar.hpp index f61d9f9..c99ce55 100644 --- a/Parser/public/CfGrammar.hpp +++ b/Parser/public/CfGrammar.hpp @@ -77,6 +77,7 @@ namespace tp { Map mTerminals; Map mNonTerminals; + bool mIsLooped = false; public: static struct CfGrammarParserState* initializeCfGrammarParser(); @@ -89,7 +90,6 @@ namespace tp { void generateSentences(List& out); static void printSentence(Sentence& in); - private: - void optimize(); + [[nodiscard]] bool isLooped() const; }; } \ No newline at end of file diff --git a/Parser/public/Parser.hpp b/Parser/public/Parser.hpp index 5f3f488..10544da 100644 --- a/Parser/public/Parser.hpp +++ b/Parser/public/Parser.hpp @@ -1,6 +1,6 @@ #pragma once -#include "CfGrammar.hpp" +#include "CLR.hpp" namespace tp { extern ModuleManifest gModuleParser; diff --git a/Parser/tests/CLRTests.cpp b/Parser/tests/CLRTests.cpp new file mode 100644 index 0000000..b8eff56 --- /dev/null +++ b/Parser/tests/CLRTests.cpp @@ -0,0 +1,10 @@ + +#include "NewPlacement.hpp" +#include "Testing.hpp" +#include "Parser.hpp" + +using namespace tp; + +TEST_DEF(CLR) { + TEST(false); +} \ No newline at end of file diff --git a/Parser/tests/GrammarTests.cpp b/Parser/tests/GrammarTests.cpp new file mode 100644 index 0000000..28697f5 --- /dev/null +++ b/Parser/tests/GrammarTests.cpp @@ -0,0 +1,48 @@ + +#include "NewPlacement.hpp" +#include "Testing.hpp" +#include "Parser.hpp" + +using namespace tp; + +TEST_DEF(Grammar) { + + String source = R"( +Start Body +Body : [ Function ] | List | &; +List : [ LIST ]; +)"; + + auto state = CfGrammar::initializeCfGrammarParser(); + + CfGrammar grammar; + + if (!grammar.parse(state, source)) { + TEST(0 && "Parsing is failed\n"); + CfGrammar::deinitializeCfGrammarParser(state); + return; + } + + if (!grammar.compile()) { + TEST(0 && "Compilation is failed\n"); + CfGrammar::deinitializeCfGrammarParser(state); + return; + } + + CfGrammar::deinitializeCfGrammarParser(state); + + printf("Grammar accepted.\n"); + + List sentences; + grammar.generateSentences(sentences); + + TEST_ASSERT(sentences.length() == 3); + TEST_ASSERT(sentences.first()->data.terms.length() == 1); + TEST_ASSERT(sentences.last()->data.terms.length() == 1); + + TEST(sentences.first()->data.terms.first()->data.id == "Function"); + TEST(sentences.last()->data.terms.first()->data.id == "LIST"); + + printf("Example sentences formed from grammar: \n"); + for (auto sentence : sentences) tp::CfGrammar::printSentence(sentence.data()); +} \ No newline at end of file diff --git a/Parser/tests/Tests.cpp b/Parser/tests/Tests.cpp index 892394f..fb2fd04 100644 --- a/Parser/tests/Tests.cpp +++ b/Parser/tests/Tests.cpp @@ -5,47 +5,8 @@ using namespace tp; -TEST_DEF(Simple) { - - String source = R"( -Start Body -Body : [ Function ] | List | &; -List : [ LIST ]; -)"; - - auto state = CfGrammar::initializeCfGrammarParser(); - - CfGrammar grammar; - - if (!grammar.parse(state, source)) { - TEST(0 && "Parsing is failed\n"); - CfGrammar::deinitializeCfGrammarParser(state); - return; - } - - if (!grammar.compile()) { - TEST(0 && "Compilation is failed\n"); - CfGrammar::deinitializeCfGrammarParser(state); - return; - } - - CfGrammar::deinitializeCfGrammarParser(state); - - printf("Grammar accepted.\n"); - - List sentences; - grammar.generateSentences(sentences); - - TEST_ASSERT(sentences.length() == 3); - TEST_ASSERT(sentences.first()->data.terms.length() == 1); - TEST_ASSERT(sentences.last()->data.terms.length() == 1); - - TEST(sentences.first()->data.terms.first()->data.id == "Function"); - TEST(sentences.last()->data.terms.first()->data.id == "LIST"); - - printf("Example sentences formed from grammar: \n"); - for (auto sentence : sentences) tp::CfGrammar::printSentence(sentence.data()); -} +void testGrammar(); +void testCLR(); int main(int argc, const char* argv[]) { tp::ModuleManifest* deps[] = { &tp::gModuleParser, nullptr }; @@ -55,7 +16,8 @@ int main(int argc, const char* argv[]) { return 1; } - testSimple(); + testGrammar(); + testCLR(); testModule.deinitialize(); return 0; From 5cf467a42123af7e71da043c4c55139d4ff33069 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Mon, 14 Aug 2023 20:52:50 +0300 Subject: [PATCH 62/68] Updated TODO --- Parser/tests/CLRTests.cpp | 2 +- TODO | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Parser/tests/CLRTests.cpp b/Parser/tests/CLRTests.cpp index b8eff56..b774572 100644 --- a/Parser/tests/CLRTests.cpp +++ b/Parser/tests/CLRTests.cpp @@ -6,5 +6,5 @@ using namespace tp; TEST_DEF(CLR) { - TEST(false); + //TEST(false); } \ No newline at end of file diff --git a/TODO b/TODO index 758f6a7..b5e8e26 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,10 @@ Testing !! +Merge parser and tokenizer module into grammar module +Make two grammars Regular and Context-free +For each grammar make grammar rules parser, example sentence generation and sentence parsing +Make automations itself a universal tool - NFA DFA conversions + Parser: CF Grammar: optimize generation of sentences From 2810e06b3ede86cbb4b9666492d3b0c3c3688ae3 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 20 Aug 2023 11:27:47 +0300 Subject: [PATCH 63/68] Adding outdated source code into master --- .outdated/graphics/ext/easytab.h | 943 +++++++++++++ .outdated/graphics/ext/objloader.h | 1191 +++++++++++++++++ .outdated/graphics/inc/GraphicsLibApi.h | 19 + .outdated/graphics/inc/animations.h | 53 + .outdated/graphics/inc/canvas.h | 84 ++ .outdated/graphics/inc/debugui.h | 48 + .outdated/graphics/inc/fbuffer.h | 40 + .outdated/graphics/inc/keycodes.h | 167 +++ .outdated/graphics/inc/shader.h | 36 + .outdated/graphics/inc/simplegui.h | 71 + .outdated/graphics/inc/texture.h | 31 + .outdated/graphics/inc/window.h | 114 ++ .outdated/graphics/rsc/fonts/CONSOLAB.TTF | Bin 0 -> 368720 bytes .outdated/graphics/src/android_api.h | 25 + .outdated/graphics/src/android_main.cpp | 804 +++++++++++ .../graphics/src/android_native_app_glue.c | 453 +++++++ .../graphics/src/android_native_app_glue.h | 350 +++++ .outdated/graphics/src/animations.cpp | 115 ++ .outdated/graphics/src/canvas.cpp | 378 ++++++ .outdated/graphics/src/debugui.cpp | 877 ++++++++++++ .outdated/graphics/src/fbuffer.cpp | 116 ++ .outdated/graphics/src/linux_window.cpp | 282 ++++ .outdated/graphics/src/shader.cpp | 170 +++ .outdated/graphics/src/simplegui.cpp | 164 +++ .outdated/graphics/src/texture.cpp | 216 +++ .outdated/graphics/src/windows_window.cpp | Bin 0 -> 41712 bytes .outdated/graphics/tests/tests.cpp | 107 ++ 27 files changed, 6854 insertions(+) create mode 100644 .outdated/graphics/ext/easytab.h create mode 100644 .outdated/graphics/ext/objloader.h create mode 100644 .outdated/graphics/inc/GraphicsLibApi.h create mode 100644 .outdated/graphics/inc/animations.h create mode 100644 .outdated/graphics/inc/canvas.h create mode 100644 .outdated/graphics/inc/debugui.h create mode 100644 .outdated/graphics/inc/fbuffer.h create mode 100644 .outdated/graphics/inc/keycodes.h create mode 100644 .outdated/graphics/inc/shader.h create mode 100644 .outdated/graphics/inc/simplegui.h create mode 100644 .outdated/graphics/inc/texture.h create mode 100644 .outdated/graphics/inc/window.h create mode 100644 .outdated/graphics/rsc/fonts/CONSOLAB.TTF create mode 100644 .outdated/graphics/src/android_api.h create mode 100644 .outdated/graphics/src/android_main.cpp create mode 100644 .outdated/graphics/src/android_native_app_glue.c create mode 100644 .outdated/graphics/src/android_native_app_glue.h create mode 100644 .outdated/graphics/src/animations.cpp create mode 100644 .outdated/graphics/src/canvas.cpp create mode 100644 .outdated/graphics/src/debugui.cpp create mode 100644 .outdated/graphics/src/fbuffer.cpp create mode 100644 .outdated/graphics/src/linux_window.cpp create mode 100644 .outdated/graphics/src/shader.cpp create mode 100644 .outdated/graphics/src/simplegui.cpp create mode 100644 .outdated/graphics/src/texture.cpp create mode 100644 .outdated/graphics/src/windows_window.cpp create mode 100644 .outdated/graphics/tests/tests.cpp diff --git a/.outdated/graphics/ext/easytab.h b/.outdated/graphics/ext/easytab.h new file mode 100644 index 0000000..2d39dd4 --- /dev/null +++ b/.outdated/graphics/ext/easytab.h @@ -0,0 +1,943 @@ +/* + EasyTab.h - Single-header multi-platform tablet library + https://github.com/ApoorvaJ/EasyTab + + ---------------------------------------------------------------------------- + USAGE + ---------------------------------------------------------------------------- + 1) Add the following lines in exactly one of your cpp files to compile the + implementation. + + #define EASYTAB_IMPLEMENTATION + #include "easytab.h" + + 2) Call EasyTab_Load() with correct parameters to initialize EasyTab. These + parameters vary per OS, so look at the function declarations or examples + below. Function returns EASYTAB_OK if initialization was successful. + + 3) Call EasyTab_HandleEvent() in your message-handling code. The function + returns EASYTAB_OK if the message was a tablet message, and + EASYTAB_EVENT_NOT_HANDLED otherwise. + + 4) Call EasyTab_Unload() in your shutdown code. + + 5) Once initialized, you can query tablet state using the EasyTab pointer. + e.g.: + + EasyTab->PosX // X position of the pen + EasyTab->PosY // Y position of the pen + EasyTab->Pressure // Pressure of the pen ranging from 0.0f to 1.0f + + For more info, have a look at the EasyTabInfo struct below. + + + * Add -lXi to compiler options to link XInput on Linux. + + ---------------------------------------------------------------------------- + EXAMPLES + ---------------------------------------------------------------------------- + 1) Windows: + + int CALLBACK WinMain(...) + { + HWND Window; + + ... + + if (EasyTab_Load(Window) != EASYTAB_OK) // Load + { + OutputDebugStringA("Tablet init failed\n"); + } + + ... + + // Once you've set up EasyTab loading, unloading and event handling, + // use the EasyTab variable at any point in your program to access + // the tablet state: + // EasyTab->PosX + // EasyTab->PosY + // EasyTab->Pressure + // For more tablet information, look at the EasyTabInfo struct. + + ... + + EasyTab_Unload(); // Unload + } + + LRESULT CALLBACK WindowProc( + HWND Window, + UINT Message, + WPARAM WParam, + LPARAM LParam) + { + if (EasyTab_HandleEvent(Window, Message, LParam, WParam) == EASYTAB_OK) // Event + { + return true; // Tablet event handled + } + + switch (Message) + { + ... + } + } + + + 2) Linux: + + int main(...) + { + Display* Disp; + Window Win; + + ... + + if (EasyTab_Load(Disp, Win) != EASYTAB_OK) // Load + { + printf("Tablet init failed\n"); + } + + ... + + while (XPending(Disp)) // Event loop + { + XEvent Event; + XNextEvent(XlibDisplay, &Event); + + if (EasyTab_HandleEvent(&Event) == EASYTAB_OK) // Event + { + continue; // Tablet event handled + } + + switch (Event.type) + { + ... + } + } + + ... + + // Once you've set up EasyTab loading, unloading and event handling, + // use the EasyTab variable at any point in your program to access + // the tablet state: + // EasyTab->PosX + // EasyTab->PosY + // EasyTab->Pressure + // For more tablet information, look at the EasyTabInfo struct. + + ... + + EasyTab_Unload(); // Unload + } + + ---------------------------------------------------------------------------- + CREDITS + ---------------------------------------------------------------------------- + Apoorva Joshi apoorvaj.io + Sergio Gonzalez s3rg.io + + This library is coded in the spirit of the stb libraries and follows the stb + guidelines. + +*/ + +// TODO: Null checks and warnings for EasyTab +// TODO: Differentiate between stylus and eraser in the API +// TODO: Linux support for relative mode +// TODO: Documentation for relative mode + +// ============================================================================= +// EasyTab header section +// ============================================================================= + +#ifndef EASYTAB_H +#define EASYTAB_H + +#include +#include +#include + +#ifdef __linux__ +#include +#endif // __linux__ + +#ifdef _WIN32 +#include +#endif // _WIN32 + +typedef enum +{ + EASYTAB_OK = 0, + + // Errors + EASYTAB_MEMORY_ERROR = -1, + EASYTAB_X11_ERROR = -2, + EASYTAB_DLL_LOAD_ERROR = -3, + EASYTAB_WACOM_WIN32_ERROR = -4, + EASYTAB_INVALID_FUNCTION_ERROR = -5, + + EASYTAB_EVENT_NOT_HANDLED = -16, +} EasyTabResult; + +typedef enum +{ + EASYTAB_TRACKING_MODE_SYSTEM = 0, + EASYTAB_TRACKING_MODE_RELATIVE = 1, +} EasyTabTrackingMode; + +#ifdef WIN32 +// ----------------------------------------------------------------------------- +// wintab.h +// ----------------------------------------------------------------------------- +#if 1 + + DECLARE_HANDLE(HMGR); + DECLARE_HANDLE(HCTX); + + typedef DWORD WTPKT; + typedef DWORD FIX32; + + // Messages + #if 1 + + #define WT_DEFBASE 0x7FF0 + #define WT_MAXOFFSET 0xF + + #define _WT_PACKET(b) ((b)+0) + #define _WT_CTXOPEN(b) ((b)+1) + #define _WT_CTXCLOSE(b) ((b)+2) + #define _WT_CTXUPDATE(b) ((b)+3) + #define _WT_CTXOVERLAP(b) ((b)+4) + #define _WT_PROXIMITY(b) ((b)+5) + #define _WT_INFOCHANGE(b) ((b)+6) + #define _WT_CSRCHANGE(b) ((b)+7) /* 1.1 */ + #define _WT_PACKETEXT(b) ((b)+8) /* 1.4 */ + #define _WT_MAX(b) ((b)+WT_MAXOFFSET) + + #define WT_PACKET _WT_PACKET(WT_DEFBASE) + #define WT_CTXOPEN _WT_CTXOPEN(WT_DEFBASE) + #define WT_CTXCLOSE _WT_CTXCLOSE(WT_DEFBASE) + #define WT_CTXUPDATE _WT_CTXUPDATE(WT_DEFBASE) + #define WT_CTXOVERLAP _WT_CTXOVERLAP(WT_DEFBASE) + #define WT_PROXIMITY _WT_PROXIMITY(WT_DEFBASE) + #define WT_INFOCHANGE _WT_INFOCHANGE(WT_DEFBASE) + #define WT_CSRCHANGE _WT_CSRCHANGE(WT_DEFBASE) /* 1.1 */ + #define WT_PACKETEXT _WT_PACKETEXT(WT_DEFBASE) /* 1.4 */ + #define WT_MAX _WT_MAX(WT_DEFBASE) + + #endif // Messages + + // Flags + #if 1 + + #define CTX_NAME 1 + #define CTX_OPTIONS 2 + #define CTX_STATUS 3 + #define CTX_LOCKS 4 + #define CTX_MSGBASE 5 + #define CTX_DEVICE 6 + #define CTX_PKTRATE 7 + #define CTX_PKTDATA 8 + #define CTX_PKTMODE 9 + #define CTX_MOVEMASK 10 + #define CTX_BTNDNMASK 11 + #define CTX_BTNUPMASK 12 + #define CTX_INORGX 13 + #define CTX_INORGY 14 + #define CTX_INORGZ 15 + #define CTX_INEXTX 16 + #define CTX_INEXTY 17 + #define CTX_INEXTZ 18 + #define CTX_OUTORGX 19 + #define CTX_OUTORGY 20 + #define CTX_OUTORGZ 21 + #define CTX_OUTEXTX 22 + #define CTX_OUTEXTY 23 + #define CTX_OUTEXTZ 24 + #define CTX_SENSX 25 + #define CTX_SENSY 26 + #define CTX_SENSZ 27 + #define CTX_SYSMODE 28 + #define CTX_SYSORGX 29 + #define CTX_SYSORGY 30 + #define CTX_SYSEXTX 31 + #define CTX_SYSEXTY 32 + #define CTX_SYSSENSX 33 + #define CTX_SYSSENSY 34 + #define CTX_MAX 34 + + // Context option values + #define CXO_SYSTEM 0x0001 + #define CXO_PEN 0x0002 + #define CXO_MESSAGES 0x0004 + #define CXO_MARGIN 0x8000 + #define CXO_MGNINSIDE 0x4000 + #define CXO_CSRMESSAGES 0x0008 /* 1.1 */ + + #define DVC_NAME 1 + #define DVC_HARDWARE 2 + #define DVC_NCSRTYPES 3 + #define DVC_FIRSTCSR 4 + #define DVC_PKTRATE 5 + #define DVC_PKTDATA 6 + #define DVC_PKTMODE 7 + #define DVC_CSRDATA 8 + #define DVC_XMARGIN 9 + #define DVC_YMARGIN 10 + #define DVC_ZMARGIN 11 + #define DVC_X 12 + #define DVC_Y 13 + #define DVC_Z 14 + #define DVC_NPRESSURE 15 + #define DVC_TPRESSURE 16 + #define DVC_ORIENTATION 17 + #define DVC_ROTATION 18 /* 1.1 */ + #define DVC_PNPID 19 /* 1.1 */ + #define DVC_MAX 19 + + #define PK_CONTEXT 0x0001 // reporting context + #define PK_STATUS 0x0002 // status bits + #define PK_TIME 0x0004 // time stamp + #define PK_CHANGED 0x0008 // change bit vector + #define PK_SERIAL_NUMBER 0x0010 // packet serial number + #define PK_CURSOR 0x0020 // reporting cursor + #define PK_BUTTONS 0x0040 // button information + #define PK_X 0x0080 // x axis + #define PK_Y 0x0100 // y axis + #define PK_Z 0x0200 // z axis + #define PK_NORMAL_PRESSURE 0x0400 // normal or tip pressure + #define PK_TANGENT_PRESSURE 0x0800 // tangential or barrel pressure + #define PK_ORIENTATION 0x1000 // orientation info: tilts + #define PK_ROTATION 0x2000 // rotation info; 1.1 + + // constants for use with pktdef.h + #define PKEXT_ABSOLUTE 1 + #define PKEXT_RELATIVE 2 + + #define WTI_DEFCONTEXT 3 + #define WTI_DEFSYSCTX 4 + #define WTI_DEVICES 100 + #define WTI_DDCTXS 400 /* 1.1 */ + #define WTI_DSCTXS 500 /* 1.1 */ + + #endif // Flags + + typedef struct tagAXIS { + LONG axMin; + LONG axMax; + UINT axUnits; + FIX32 axResolution; + } AXIS, *PAXIS, NEAR *NPAXIS, FAR *LPAXIS; + + #define LCNAMELEN 40 + typedef struct tagLOGCONTEXTA { + char lcName[LCNAMELEN]; + UINT lcOptions; + UINT lcStatus; + UINT lcLocks; + UINT lcMsgBase; + UINT lcDevice; + UINT lcPktRate; + WTPKT lcPktData; + WTPKT lcPktMode; + WTPKT lcMoveMask; + DWORD lcBtnDnMask; + DWORD lcBtnUpMask; + LONG lcInOrgX; + LONG lcInOrgY; + LONG lcInOrgZ; + LONG lcInExtX; + LONG lcInExtY; + LONG lcInExtZ; + LONG lcOutOrgX; + LONG lcOutOrgY; + LONG lcOutOrgZ; + LONG lcOutExtX; + LONG lcOutExtY; + LONG lcOutExtZ; + FIX32 lcSensX; + FIX32 lcSensY; + FIX32 lcSensZ; + BOOL lcSysMode; + int lcSysOrgX; + int lcSysOrgY; + int lcSysExtX; + int lcSysExtY; + FIX32 lcSysSensX; + FIX32 lcSysSensY; + } LOGCONTEXTA, *PLOGCONTEXTA, NEAR *NPLOGCONTEXTA, FAR *LPLOGCONTEXTA; + + typedef struct tagEXTENSIONBASE { /* 1.4 */ + HCTX nContext; + UINT nStatus; + DWORD nTime; + UINT nSerialNumber; + } EXTENSIONBASE; + +#endif // wintab.h +// ----------------------------------------------------------------------------- + +#define PACKETDATA PK_X | PK_Y | PK_BUTTONS | PK_NORMAL_PRESSURE +#define PACKETMODE 0 + +// ----------------------------------------------------------------------------- +// pktdef.h +// ----------------------------------------------------------------------------- +#if 1 + + // TODO: Simplify this file if we have a fixed packet format. + // The macros here are too ugly. + + #ifndef PACKETNAME + /* if no packet name prefix */ + #define __PFX(x) x + #define __IFX(x,y) x ## y + #else + /* add prefixes and infixes to packet format names */ + #define __PFX(x) __PFX2(PACKETNAME,x) + #define __PFX2(p,x) __PFX3(p,x) + #define __PFX3(p,x) p ## x + #define __IFX(x,y) __IFX2(x,PACKETNAME,y) + #define __IFX2(x,i,y) __IFX3(x,i,y) + #define __IFX3(x,i,y) x ## i ## y + #endif + + #define __SFX2(x,s) __SFX3(x,s) + #define __SFX3(x,s) x ## s + + #define __TAG __IFX(tag,PACKET) + #define __TYPES __PFX(PACKET), * __IFX(P,PACKET), NEAR * __IFX(NP,PACKET), FAR * __IFX(LP,PACKET) + + #define __TAGE __IFX(tag,PACKETEXT) + #define __TYPESE __PFX(PACKETEXT), * __IFX(P,PACKETEXT), NEAR * __IFX(NP,PACKETEXT), FAR * __IFX(LP,PACKETEXT) + + #define __DATA (__PFX(PACKETDATA)) + #define __MODE (__PFX(PACKETMODE)) + #define __EXT(x) __SFX2(__PFX(PACKET),x) + + + typedef struct __TAG { + #if (__DATA & PK_CONTEXT) + HCTX pkContext; + #endif + #if (__DATA & PK_STATUS) + UINT pkStatus; + #endif + #if (__DATA & PK_TIME) + DWORD pkTime; + #endif + #if (__DATA & PK_CHANGED) + WTPKT pkChanged; + #endif + #if (__DATA & PK_SERIAL_NUMBER) + UINT pkSerialNumber; + #endif + #if (__DATA & PK_CURSOR) + UINT pkCursor; + #endif + #if (__DATA & PK_BUTTONS) + DWORD pkButtons; + #endif + #if (__DATA & PK_X) + LONG pkX; + #endif + #if (__DATA & PK_Y) + LONG pkY; + #endif + #if (__DATA & PK_Z) + LONG pkZ; + #endif + #if (__DATA & PK_NORMAL_PRESSURE) + #if (__MODE & PK_NORMAL_PRESSURE) + /* relative */ + int pkNormalPressure; + #else + /* absolute */ + UINT pkNormalPressure; + #endif + #endif + #if (__DATA & PK_TANGENT_PRESSURE) + #if (__MODE & PK_TANGENT_PRESSURE) + /* relative */ + int pkTangentPressure; + #else + /* absolute */ + UINT pkTangentPressure; + #endif + #endif + #if (__DATA & PK_ORIENTATION) + ORIENTATION pkOrientation; + #endif + #if (__DATA & PK_ROTATION) + ROTATION pkRotation; /* 1.1 */ + #endif + + #ifndef NOWTEXTENSIONS + /* extensions begin here. */ + #if (__EXT(FKEYS) == PKEXT_RELATIVE) || (__EXT(FKEYS) == PKEXT_ABSOLUTE) + UINT pkFKeys; + #endif + #if (__EXT(TILT) == PKEXT_RELATIVE) || (__EXT(TILT) == PKEXT_ABSOLUTE) + TILT pkTilt; + #endif + #endif + + } __TYPES; + + #ifndef NOWTEXTENSIONS + typedef struct __TAGE { + EXTENSIONBASE pkBase; + + #if (__EXT(EXPKEYS) == PKEXT_RELATIVE) || (__EXT(EXPKEYS) == PKEXT_ABSOLUTE) + EXPKEYSDATA pkExpKeys; /* 1.4 */ + #endif + #if (__EXT(TOUCHSTRIP) == PKEXT_RELATIVE) || (__EXT(TOUCHSTRIP) == PKEXT_ABSOLUTE) + SLIDERDATA pkTouchStrip; /* 1.4 */ + #endif + #if (__EXT(TOUCHRING) == PKEXT_RELATIVE) || (__EXT(TOUCHRING) == PKEXT_ABSOLUTE) + SLIDERDATA pkTouchRing; /* 1.4 */ + #endif + + } __TYPESE; + #endif + + #undef PACKETNAME + #undef __TAG + #undef __TAGE + #undef __TAG2 + #undef __TYPES + #undef __TYPESE + #undef __TYPES2 + #undef __DATA + #undef __MODE + #undef __PFX + #undef __PFX2 + #undef __PFX3 + #undef __IFX + #undef __IFX2 + #undef __IFX3 + #undef __SFX2 + #undef __SFX3 + +#endif // pktdef.h +// ----------------------------------------------------------------------------- + +typedef UINT (WINAPI * WTINFOA) (UINT, UINT, LPVOID); +typedef HCTX (WINAPI * WTOPENA) (HWND, LPLOGCONTEXTA, BOOL); +typedef BOOL (WINAPI * WTGETA) (HCTX, LPLOGCONTEXTA); +typedef BOOL (WINAPI * WTSETA) (HCTX, LPLOGCONTEXTA); +typedef BOOL (WINAPI * WTCLOSE) (HCTX); +typedef BOOL (WINAPI * WTENABLE) (HCTX, BOOL); +typedef BOOL (WINAPI * WTPACKET) (HCTX, UINT, LPVOID); +typedef BOOL (WINAPI * WTOVERLAP) (HCTX, BOOL); +typedef BOOL (WINAPI * WTSAVE) (HCTX, LPVOID); +typedef BOOL (WINAPI * WTCONFIG) (HCTX, HWND); +typedef HCTX (WINAPI * WTRESTORE) (HWND, LPVOID, BOOL); +typedef BOOL (WINAPI * WTEXTSET) (HCTX, UINT, LPVOID); +typedef BOOL (WINAPI * WTEXTGET) (HCTX, UINT, LPVOID); +typedef BOOL (WINAPI * WTQUEUESIZESET) (HCTX, int); +typedef int (WINAPI * WTDATAPEEK) (HCTX, UINT, UINT, int, LPVOID, LPINT); +typedef int (WINAPI * WTPACKETSGET) (HCTX, int, LPVOID); +typedef HMGR (WINAPI * WTMGROPEN) (HWND, UINT); +typedef BOOL (WINAPI * WTMGRCLOSE) (HMGR); +typedef HCTX (WINAPI * WTMGRDEFCONTEXT) (HMGR, BOOL); +typedef HCTX (WINAPI * WTMGRDEFCONTEXTEX) (HMGR, UINT, BOOL); + +#endif // WIN32 + +// ----------------------------------------------------------------------------- +// Enums +// ----------------------------------------------------------------------------- + +/* + Use this enum in conjunction with EasyTab->Buttons to check for tablet button + presses. + e.g. To check for lower pen button press, use: + + if (EasyTab->Buttons & EasyTab_Buttons_Pen_Lower) + { + // Lower button is pressed + } +*/ +enum EasyTab_Buttons_ +{ + EasyTab_Buttons_Pen_Touch = 1 << 0, // Pen is touching tablet + EasyTab_Buttons_Pen_Lower = 1 << 1, // Lower pen button is pressed + EasyTab_Buttons_Pen_Upper = 1 << 2, // Upper pen button is pressed +}; + +// ----------------------------------------------------------------------------- +// Structs +// ----------------------------------------------------------------------------- +typedef struct +{ + int32_t PosX, PosY; + float Pressure; // Range: 0.0f to 1.0f + int32_t Buttons; // Bit field. Use with the EasyTab_Buttons_ enum. + + int32_t RangeX, RangeY; + int32_t MaxPressure; + +#ifdef __linux__ + XDevice* Device; + uint32_t MotionType; + XEventClass EventClasses[1024]; + uint32_t NumEventClasses; +#endif // __linux__ + +#ifdef WIN32 + HINSTANCE Dll; + HCTX Context; + + WTINFOA WTInfoA; + WTOPENA WTOpenA; + WTGETA WTGetA; + WTSETA WTSetA; + WTCLOSE WTClose; + WTPACKET WTPacket; + WTENABLE WTEnable; + WTOVERLAP WTOverlap; + WTSAVE WTSave; + WTCONFIG WTConfig; + WTRESTORE WTRestore; + WTEXTSET WTExtSet; + WTEXTGET WTExtGet; + WTQUEUESIZESET WTQueueSizeSet; + WTDATAPEEK WTDataPeek; + WTPACKETSGET WTPacketsGet; + WTMGROPEN WTMgrOpen; + WTMGRCLOSE WTMgrClose; + WTMGRDEFCONTEXT WTMgrDefContext; + WTMGRDEFCONTEXTEX WTMgrDefContextEx; +#endif // WIN32 +} EasyTabInfo; + +extern EasyTabInfo* EasyTab; + +// ----------------------------------------------------------------------------- +// Function declarations +// ----------------------------------------------------------------------------- +#if defined(__linux__) + + EasyTabResult EasyTab_Load(Display* Disp, Window Win); + EasyTabResult EasyTab_HandleEvent(XEvent* Event); + void EasyTab_Unload(Display* Disp); + +#elif defined(_WIN32) + + EasyTabResult EasyTab_Load(HWND Window); + EasyTabResult EasyTab_Load_Ex(HWND Window, + EasyTabTrackingMode Mode, + float RelativeModeSensitivity, + int32_t MoveCursor); + EasyTabResult EasyTab_HandleEvent(HWND Window, + UINT Message, + LPARAM LParam, + WPARAM WParam); + void EasyTab_Unload(); + +#else + + // Save some trouble when porting. + #error "Unsupported platform." + +#endif // __linux__ _WIN32 +// ----------------------------------------------------------------------------- + +#endif // EASYTAB_H + + + +// ============================================================================= +// EasyTab implementation section +// ============================================================================= + +#ifdef EASYTAB_IMPLEMENTATION + +EasyTabInfo* EasyTab; + +// ----------------------------------------------------------------------------- +// Linux implementation +// ----------------------------------------------------------------------------- +#ifdef __linux__ + +EasyTabResult EasyTab_Load(Display* Disp, Window Win) +{ + EasyTab = (EasyTabInfo*)calloc(1, sizeof(EasyTabInfo)); // We want init to zero, hence calloc. + if (!EasyTab) { return EASYTAB_MEMORY_ERROR; } + + int32_t Count; + XDeviceInfoPtr Devices = (XDeviceInfoPtr)XListInputDevices(Disp, &Count); + if (!Devices) { return EASYTAB_X11_ERROR; } + + for (int32_t i = 0; i < Count; i++) + { + if (!strstr(Devices[i].name, "stylus") && + !strstr(Devices[i].name, "eraser")) { continue; } + + EasyTab->Device = XOpenDevice(Disp, Devices[i].id); + XAnyClassPtr ClassPtr = Devices[i].inputclassinfo; + + for (int32_t j = 0; j < Devices[i].num_classes; j++) + { +#if defined(__cplusplus) + switch (ClassPtr->c_class) +#else + switch (ClassPtr->class) +#endif + { + case ValuatorClass: + { + XValuatorInfo *Info = (XValuatorInfo *)ClassPtr; + // X + if (Info->num_axes > 0) + { + int32_t min = Info->axes[0].min_value; + EasyTab->RangeX = Info->axes[0].max_value; + //printf("Max/min x values: %d, %d\n", min, EasyTab->RangeX); // TODO: Platform-print macro + } + + // Y + if (Info->num_axes > 1) + { + int32_t min = Info->axes[1].min_value; + EasyTab->RangeY = Info->axes[1].max_value; + //printf("Max/min y values: %d, %d\n", min, EasyTab->RangeY); + } + + // Pressure + if (Info->num_axes > 2) + { + int32_t min = Info->axes[2].min_value; + EasyTab->MaxPressure = Info->axes[2].max_value; + //printf("Max/min pressure values: %d, %d\n", min, EasyTab->MaxPressure); + } + + XEventClass EventClass; + DeviceMotionNotify(EasyTab->Device, EasyTab->MotionType, EventClass); + if (EventClass) + { + EasyTab->EventClasses[EasyTab->NumEventClasses] = EventClass; + EasyTab->NumEventClasses++; + } + } break; + } + + ClassPtr = (XAnyClassPtr) ((uint8_t*)ClassPtr + ClassPtr->length); // TODO: Access this as an array to avoid pointer arithmetic? + } + + XSelectExtensionEvent(Disp, Win, EasyTab->EventClasses, EasyTab->NumEventClasses); + } + + XFreeDeviceList(Devices); + + if (EasyTab->Device != 0) { return EASYTAB_OK; } + else { return EASYTAB_X11_ERROR; } +} + +EasyTabResult EasyTab_HandleEvent(XEvent* Event) +{ + if (Event->type != EasyTab->MotionType) { return EASYTAB_EVENT_NOT_HANDLED; } + + XDeviceMotionEvent* MotionEvent = (XDeviceMotionEvent*)(Event); + EasyTab->PosX = MotionEvent->x; + EasyTab->PosY = MotionEvent->y; + EasyTab->Pressure = (float)MotionEvent->axis_data[2] / (float)EasyTab->MaxPressure; + return EASYTAB_OK; +} + +void EasyTab_Unload(Display* Disp) +{ + XCloseDevice(Disp, EasyTab->Device); + free(EasyTab); + EasyTab = NULL; +} + +#endif // __linux__ + + +// ----------------------------------------------------------------------------- +// Windows implementation +// ----------------------------------------------------------------------------- +#ifdef WIN32 + +#define GETPROCADDRESS(type, func) \ + EasyTab->func = (type)GetProcAddress(EasyTab->Dll, #func); \ + if (!EasyTab->func) \ + { \ + OutputDebugStringA("Function " #func " not found in Wintab32.dll.\n"); \ + return EASYTAB_INVALID_FUNCTION_ERROR; \ + } + + +EasyTabResult EasyTab_Load(HWND Window) +{ + return EasyTab_Load_Ex(Window, EASYTAB_TRACKING_MODE_SYSTEM, 0, 1); +} + +EasyTabResult EasyTab_Load_Ex(HWND Window, + EasyTabTrackingMode TrackingMode, + float RelativeModeSensitivity, + int32_t MoveCursor) +{ + EasyTab = (EasyTabInfo*)calloc(1, sizeof(EasyTabInfo)); // We want init to zero, hence calloc. + if (!EasyTab) { return EASYTAB_MEMORY_ERROR; } + + // Load Wintab DLL and get function addresses + { + EasyTab->Dll = LoadLibraryA("Wintab32.dll"); + if (!EasyTab->Dll) + { + OutputDebugStringA("Wintab32.dll not found.\n"); + return EASYTAB_DLL_LOAD_ERROR; + } + + GETPROCADDRESS(WTINFOA , WTInfoA); + GETPROCADDRESS(WTOPENA , WTOpenA); + GETPROCADDRESS(WTGETA , WTGetA); + GETPROCADDRESS(WTSETA , WTSetA); + GETPROCADDRESS(WTCLOSE , WTClose); + GETPROCADDRESS(WTPACKET , WTPacket); + GETPROCADDRESS(WTENABLE , WTEnable); + GETPROCADDRESS(WTOVERLAP , WTOverlap); + GETPROCADDRESS(WTSAVE , WTSave); + GETPROCADDRESS(WTCONFIG , WTConfig); + GETPROCADDRESS(WTRESTORE , WTRestore); + GETPROCADDRESS(WTEXTSET , WTExtSet); + GETPROCADDRESS(WTEXTGET , WTExtGet); + GETPROCADDRESS(WTQUEUESIZESET , WTQueueSizeSet); + GETPROCADDRESS(WTDATAPEEK , WTDataPeek); + GETPROCADDRESS(WTPACKETSGET , WTPacketsGet); + GETPROCADDRESS(WTMGROPEN , WTMgrOpen); + GETPROCADDRESS(WTMGRCLOSE , WTMgrClose); + GETPROCADDRESS(WTMGRDEFCONTEXT , WTMgrDefContext); + GETPROCADDRESS(WTMGRDEFCONTEXTEX , WTMgrDefContextEx); + } + + if (!EasyTab->WTInfoA(0, 0, NULL)) + { + OutputDebugStringA("Wintab services not available.\n"); + return EASYTAB_WACOM_WIN32_ERROR; + } + + // Open context + { + LOGCONTEXTA LogContext = {0}; + AXIS RangeX = {0}; + AXIS RangeY = {0}; + AXIS Pressure = {0}; + + EasyTab->WTInfoA(WTI_DDCTXS, 0, &LogContext); + EasyTab->WTInfoA(WTI_DEVICES, DVC_X, &RangeX); + EasyTab->WTInfoA(WTI_DEVICES, DVC_Y, &RangeY); + EasyTab->WTInfoA(WTI_DEVICES, DVC_NPRESSURE, &Pressure); + + LogContext.lcPktData = PACKETDATA; // ?? + LogContext.lcOptions |= CXO_MESSAGES; + if (MoveCursor) { LogContext.lcOptions |= CXO_SYSTEM; } + LogContext.lcPktMode = PACKETMODE; + LogContext.lcMoveMask = PACKETDATA; + LogContext.lcBtnUpMask = LogContext.lcBtnDnMask; + + LogContext.lcOutOrgX = 0; + LogContext.lcOutOrgY = 0; + LogContext.lcOutExtX = GetSystemMetrics(SM_CXSCREEN); + LogContext.lcOutExtY = -GetSystemMetrics(SM_CYSCREEN); + + LogContext.lcSysOrgX = 0; + LogContext.lcSysOrgY = 0; + LogContext.lcSysExtX = GetSystemMetrics(SM_CXSCREEN); + LogContext.lcSysExtY = GetSystemMetrics(SM_CYSCREEN); + + if (TrackingMode == EASYTAB_TRACKING_MODE_RELATIVE) + { + LogContext.lcPktMode |= PK_X | PK_Y; // TODO: Should this be included in the + // PACKETMODE macro define up top? + LogContext.lcSysMode = 1; + + if (RelativeModeSensitivity > 1.0f) + { + RelativeModeSensitivity = 1.0f; + } + else if (RelativeModeSensitivity < 0.0f) + { + RelativeModeSensitivity = 0.0f; + } + + // Wintab expects sensitivity to be a 32-bit fixed point number + // with the radix point between the two words. Thus, the type + // contains 16 bits to the left of the radix point and 16 bits to + // the right of it. + // + // 0x10000 Hex + // = 65,536 Decimal + // = 0000 0000 0000 0001 . 0000 0000 0000 0000 Binary + // = 1.0 Fixed Point + uint32_t Sensitivity = (uint32_t)(0x10000 * RelativeModeSensitivity); + + if (MoveCursor) + { + LogContext.lcSysSensX = LogContext.lcSysSensY = Sensitivity; + } + else + { + LogContext.lcSensX = LogContext.lcSensY = Sensitivity; + } + } + + EasyTab->Context = EasyTab->WTOpenA(Window, &LogContext, TRUE); + + if (!EasyTab->Context) + { + OutputDebugStringA("Wintab context couldn't be opened.\n"); + return EASYTAB_WACOM_WIN32_ERROR; + } + + // Get tablet capabilites + { + EasyTab->MaxPressure = Pressure.axMax; + EasyTab->RangeX = RangeX.axMax; + EasyTab->RangeY = RangeY.axMax; + } + } + + return EASYTAB_OK; +} + +#undef GETPROCADDRESS + +EasyTabResult EasyTab_HandleEvent(HWND Window, UINT Message, LPARAM LParam, WPARAM WParam) +{ + PACKET Packet = { 0 }; + + if (Message == WT_PACKET && + (HCTX)LParam == EasyTab->Context && + EasyTab->WTPacket(EasyTab->Context, (UINT)WParam, &Packet)) + { + POINT Point = { 0 }; + Point.x = Packet.pkX; + Point.y = Packet.pkY; + ScreenToClient(Window, &Point); + EasyTab->PosX = Point.x; + EasyTab->PosY = Point.y; + + EasyTab->Pressure = (float)Packet.pkNormalPressure / (float)EasyTab->MaxPressure; + EasyTab->Buttons = Packet.pkButtons; + return EASYTAB_OK; + } + + return EASYTAB_EVENT_NOT_HANDLED; +} + +void EasyTab_Unload() +{ + if (EasyTab->Context) { EasyTab->WTClose(EasyTab->Context); } + if (EasyTab->Dll) { FreeLibrary(EasyTab->Dll); } + free(EasyTab); + EasyTab = NULL; +} + +#endif // WIN32 +// ----------------------------------------------------------------------------- + + +#endif // EASYTAB_IMPLEMENTATION diff --git a/.outdated/graphics/ext/objloader.h b/.outdated/graphics/ext/objloader.h new file mode 100644 index 0000000..5e1bad6 --- /dev/null +++ b/.outdated/graphics/ext/objloader.h @@ -0,0 +1,1191 @@ +// OBJ_Loader.h - A Single Header OBJ Model Loader + +/* +MIT License + +Copyright(c) 2016 Robert Smith + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this softwareand 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 noticeand 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. +*/ + +#pragma once + +// Iostream - STD I/O Library +#include + +// Vector - STD Vector/Array Library +#include + +// String - STD String Library +#include + +// fStream - STD File I/O Library +#include + +// Math.h - STD math Library +#include + +// Print progress to console while loading (large models) +#define OBJL_CONSOLE_OUTPUT + +// Namespace: OBJL +// +// Description: The namespace that holds eveyrthing that +// is needed and used for the OBJ Model Loader +namespace objl +{ + // Structure: Vector2 + // + // Description: A 2D Vector that Holds Positional Data + struct Vector2 + { + // Default Constructor + Vector2() + { + X = 0.0f; + Y = 0.0f; + } + // Variable Set Constructor + Vector2(float X_, float Y_) + { + X = X_; + Y = Y_; + } + // Bool Equals Operator Overload + bool operator==(const Vector2& other) const + { + return (this->X == other.X && this->Y == other.Y); + } + // Bool Not Equals Operator Overload + bool operator!=(const Vector2& other) const + { + return !(this->X == other.X && this->Y == other.Y); + } + // Addition Operator Overload + Vector2 operator+(const Vector2& right) const + { + return Vector2(this->X + right.X, this->Y + right.Y); + } + // Subtraction Operator Overload + Vector2 operator-(const Vector2& right) const + { + return Vector2(this->X - right.X, this->Y - right.Y); + } + // Float Multiplication Operator Overload + Vector2 operator*(const float& other) const + { + return Vector2(this->X *other, this->Y * other); + } + + // Positional Variables + float X; + float Y; + }; + + // Structure: Vector3 + // + // Description: A 3D Vector that Holds Positional Data + struct Vector3 + { + // Default Constructor + Vector3() + { + X = 0.0f; + Y = 0.0f; + Z = 0.0f; + } + // Variable Set Constructor + Vector3(float X_, float Y_, float Z_) + { + X = X_; + Y = Y_; + Z = Z_; + } + // Bool Equals Operator Overload + bool operator==(const Vector3& other) const + { + return (this->X == other.X && this->Y == other.Y && this->Z == other.Z); + } + // Bool Not Equals Operator Overload + bool operator!=(const Vector3& other) const + { + return !(this->X == other.X && this->Y == other.Y && this->Z == other.Z); + } + // Addition Operator Overload + Vector3 operator+(const Vector3& right) const + { + return Vector3(this->X + right.X, this->Y + right.Y, this->Z + right.Z); + } + // Subtraction Operator Overload + Vector3 operator-(const Vector3& right) const + { + return Vector3(this->X - right.X, this->Y - right.Y, this->Z - right.Z); + } + // Float Multiplication Operator Overload + Vector3 operator*(const float& other) const + { + return Vector3(this->X * other, this->Y * other, this->Z * other); + } + // Float Division Operator Overload + Vector3 operator/(const float& other) const + { + return Vector3(this->X / other, this->Y / other, this->Z / other); + } + + // Positional Variables + float X; + float Y; + float Z; + }; + + // Structure: Vertex + // + // Description: Model Vertex object that holds + // a Position, Normal, and Texture Coordinate + struct Vertex + { + // Position Vector + Vector3 Position; + + // Normal Vector + Vector3 normal; + + // Texture Coordinate Vector + Vector2 TextureCoordinate; + }; + + struct Material + { + Material() + { + name; + Ns = 0.0f; + Ni = 0.0f; + d = 0.0f; + illum = 0; + } + + // Material Name + std::string name; + // Ambient Color + Vector3 Ka; + // Diffuse Color + Vector3 Kd; + // Specular Color + Vector3 Ks; + // Specular Exponent + float Ns; + // Optical Density + float Ni; + // Dissolve + float d; + // Illumination + int illum; + // Ambient Texture Map + std::string map_Ka; + // Diffuse Texture Map + std::string map_Kd; + // Specular Texture Map + std::string map_Ks; + // Specular Hightlight Map + std::string map_Ns; + // Alpha Texture Map + std::string map_d; + // Bump Map + std::string map_bump; + }; + + // Structure: Mesh + // + // Description: A Simple Mesh Object that holds + // a name, a vertex list, and an index list + struct Mesh + { + // Default Constructor + Mesh() + { + + } + // Variable Set Constructor + Mesh(std::vector& _Vertices, std::vector& _Indices) + { + Vertices = _Vertices; + Indices = _Indices; + } + // Mesh Name + std::string MeshName; + // Vertex List + std::vector Vertices; + // Index List + std::vector Indices; + + // Material + Material MeshMaterial; + }; + + // Namespace: Math + // + // Description: The namespace that holds all of the math + // functions need for OBJL + namespace math + { + // Vector3 Cross Product + Vector3 CrossV3(const Vector3 a, const Vector3 b) + { + return Vector3(a.Y * b.Z - a.Z * b.Y, + a.Z * b.X - a.X * b.Z, + a.X * b.Y - a.Y * b.X); + } + + // Vector3 Magnitude Calculation + float MagnitudeV3(const Vector3 in) + { + return (sqrtf(powf(in.X, 2) + powf(in.Y, 2) + powf(in.Z, 2))); + } + + // Vector3 DotProduct + float DotV3(const Vector3 a, const Vector3 b) + { + return (a.X * b.X) + (a.Y * b.Y) + (a.Z * b.Z); + } + + // Angle between 2 Vector3 Objects + float AngleBetweenV3(const Vector3 a, const Vector3 b) + { + float angle = DotV3(a, b); + angle /= (MagnitudeV3(a) * MagnitudeV3(b)); + return angle = acosf(angle); + } + + // Projection Calculation of a onto b + Vector3 ProjV3(const Vector3 a, const Vector3 b) + { + Vector3 bn = b / MagnitudeV3(b); + return bn * DotV3(a, bn); + } + } + + // Namespace: Algorithm + // + // Description: The namespace that holds all of the + // Algorithms needed for OBJL + namespace algorithm + { + // Vector3 Multiplication Opertor Overload + Vector3 operator*(const float& left, const Vector3& right) + { + return Vector3(right.X * left, right.Y * left, right.Z * left); + } + + // A test to see if P1 is on the same side as P2 of a line segment ab + bool SameSide(Vector3 p1, Vector3 p2, Vector3 a, Vector3 b) + { + Vector3 cp1 = math::CrossV3(b - a, p1 - a); + Vector3 cp2 = math::CrossV3(b - a, p2 - a); + + if (math::DotV3(cp1, cp2) >= 0) + return true; + else + return false; + } + + // Generate a cross produect normal for a triangle + Vector3 GenTriNormal(Vector3 t1, Vector3 t2, Vector3 t3) + { + Vector3 u = t2 - t1; + Vector3 v = t3 - t1; + + Vector3 normal = math::CrossV3(u,v); + + return normal; + } + + // Check to see if a Vector3 Point is within a 3 Vector3 Triangle + bool inTriangle(Vector3 point, Vector3 tri1, Vector3 tri2, Vector3 tri3) + { + // Test to see if it is within an infinite prism that the triangle outlines. + bool within_tri_prisim = SameSide(point, tri1, tri2, tri3) && SameSide(point, tri2, tri1, tri3) + && SameSide(point, tri3, tri1, tri2); + + // If it isn't it will never be on the triangle + if (!within_tri_prisim) + return false; + + // Calulate Triangle's Normal + Vector3 n = GenTriNormal(tri1, tri2, tri3); + + // Project the point onto this normal + Vector3 proj = math::ProjV3(point, n); + + // If the distance from the triangle to the point is 0 + // it lies on the triangle + if (math::MagnitudeV3(proj) == 0) + return true; + else + return false; + } + + // Split a String into a string array at a given token + inline void split(const std::string &in, + std::vector &out, + std::string token) + { + out.clear(); + + std::string temp; + + for (int i = 0; i < int(in.size()); i++) + { + std::string test = in.substr(i, token.size()); + + if (test == token) + { + if (!temp.empty()) + { + out.push_back(temp); + temp.clear(); + i += (int)token.size() - 1; + } + else + { + out.push_back(""); + } + } + else if (i + token.size() >= in.size()) + { + temp += in.substr(i, token.size()); + out.push_back(temp); + break; + } + else + { + temp += in[i]; + } + } + } + + // Get tail of string after first token and possibly following spaces + inline std::string tail(const std::string &in) + { + size_t token_start = in.find_first_not_of(" \t"); + size_t space_start = in.find_first_of(" \t", token_start); + size_t tail_start = in.find_first_not_of(" \t", space_start); + size_t tail_end = in.find_last_not_of(" \t"); + if (tail_start != std::string::npos && tail_end != std::string::npos) + { + return in.substr(tail_start, tail_end - tail_start + 1); + } + else if (tail_start != std::string::npos) + { + return in.substr(tail_start); + } + return ""; + } + + // Get first token of string + inline std::string firstToken(const std::string &in) + { + if (!in.empty()) + { + size_t token_start = in.find_first_not_of(" \t"); + size_t token_end = in.find_first_of(" \t", token_start); + if (token_start != std::string::npos && token_end != std::string::npos) + { + return in.substr(token_start, token_end - token_start); + } + else if (token_start != std::string::npos) + { + return in.substr(token_start); + } + } + return ""; + } + + // Get element at given index position + template + inline const T & getElement(const std::vector &elements, std::string &index) + { + int idx = std::stoi(index); + if (idx < 0) + idx = int(elements.size()) + idx; + else + idx--; + return elements[idx]; + } + } + + // Class: Loader + // + // Description: The OBJ Model Loader + class Loader + { + public: + // Default Constructor + Loader() + { + + } + ~Loader() + { + LoadedMeshes.clear(); + } + + // Load a file into the loader + // + // If file is loaded return true + // + // If the file is unable to be found + // or unable to be loaded return false + bool LoadFile(std::string Path) + { + // If the file is not an .obj file return false + if (Path.substr(Path.size() - 4, 4) != ".obj") + return false; + + + std::ifstream file(Path); + + if (!file.is_open()) + return false; + + LoadedMeshes.clear(); + LoadedVertices.clear(); + LoadedIndices.clear(); + + std::vector Positions; + std::vector TCoords; + std::vector Normals; + + std::vector Vertices; + std::vector Indices; + + std::vector MeshMatNames; + + bool listening = false; + std::string meshname; + + Mesh tempMesh; + + #ifdef OBJL_CONSOLE_OUTPUT + const unsigned int outputEveryNth = 1000; + unsigned int outputIndicator = outputEveryNth; + #endif + + std::string curline; + while (std::getline(file, curline)) + { + #ifdef OBJL_CONSOLE_OUTPUT + if ((outputIndicator = ((outputIndicator + 1) % outputEveryNth)) == 1) + { + if (!meshname.empty()) + { + std::cout + << "\r- " << meshname + << "\t| vertices > " << Positions.size() + << "\t| texcoords > " << TCoords.size() + << "\t| normals > " << Normals.size() + << "\t| triangles > " << (Vertices.size() / 3) + << (!MeshMatNames.empty() ? "\t| material: " + MeshMatNames.back() : ""); + } + } + #endif + + // Generate a Mesh Object or Prepare for an object to be created + if (algorithm::firstToken(curline) == "o" || algorithm::firstToken(curline) == "g" || curline[0] == 'g') + { + if (!listening) + { + listening = true; + + if (algorithm::firstToken(curline) == "o" || algorithm::firstToken(curline) == "g") + { + meshname = algorithm::tail(curline); + } + else + { + meshname = "unnamed"; + } + } + else + { + // Generate the mesh to put into the array + + if (!Indices.empty() && !Vertices.empty()) + { + // Create Mesh + tempMesh = Mesh(Vertices, Indices); + tempMesh.MeshName = meshname; + + // Insert Mesh + LoadedMeshes.push_back(tempMesh); + + // Cleanup + Vertices.clear(); + Indices.clear(); + meshname.clear(); + + meshname = algorithm::tail(curline); + } + else + { + if (algorithm::firstToken(curline) == "o" || algorithm::firstToken(curline) == "g") + { + meshname = algorithm::tail(curline); + } + else + { + meshname = "unnamed"; + } + } + } + #ifdef OBJL_CONSOLE_OUTPUT + std::cout << std::endl; + outputIndicator = 0; + #endif + } + // Generate a Vertex Position + if (algorithm::firstToken(curline) == "v") + { + std::vector spos; + Vector3 vpos; + algorithm::split(algorithm::tail(curline), spos, " "); + + vpos.X = std::stof(spos[0]); + vpos.Y = std::stof(spos[1]); + vpos.Z = std::stof(spos[2]); + + Positions.push_back(vpos); + } + // Generate a Vertex Texture Coordinate + if (algorithm::firstToken(curline) == "vt") + { + std::vector stex; + Vector2 vtex; + algorithm::split(algorithm::tail(curline), stex, " "); + + vtex.X = std::stof(stex[0]); + vtex.Y = std::stof(stex[1]); + + TCoords.push_back(vtex); + } + // Generate a Vertex Normal; + if (algorithm::firstToken(curline) == "vn") + { + std::vector snor; + Vector3 vnor; + algorithm::split(algorithm::tail(curline), snor, " "); + + vnor.X = std::stof(snor[0]); + vnor.Y = std::stof(snor[1]); + vnor.Z = std::stof(snor[2]); + + Normals.push_back(vnor); + } + // Generate a Face (vertices & indices) + if (algorithm::firstToken(curline) == "f") + { + // Generate the vertices + std::vector vVerts; + GenVerticesFromRawOBJ(vVerts, Positions, TCoords, Normals, curline); + + // Add Vertices + for (int i = 0; i < int(vVerts.size()); i++) + { + Vertices.push_back(vVerts[i]); + + LoadedVertices.push_back(vVerts[i]); + } + + std::vector iIndices; + + VertexTriangluation(iIndices, vVerts); + + // Add Indices + for (int i = 0; i < int(iIndices.size()); i++) + { + unsigned int indnum = (unsigned int)((Vertices.size()) - vVerts.size()) + iIndices[i]; + Indices.push_back(indnum); + + indnum = (unsigned int)((LoadedVertices.size()) - vVerts.size()) + iIndices[i]; + LoadedIndices.push_back(indnum); + + } + } + // Get Mesh Material Name + if (algorithm::firstToken(curline) == "usemtl") + { + MeshMatNames.push_back(algorithm::tail(curline)); + + // Create new Mesh, if Material changes within a group + if (!Indices.empty() && !Vertices.empty()) + { + // Create Mesh + tempMesh = Mesh(Vertices, Indices); + tempMesh.MeshName = meshname; + int i = 2; + while(1) { + tempMesh.MeshName = meshname + "_" + std::to_string(i); + + for (auto &m : LoadedMeshes) + if (m.MeshName == tempMesh.MeshName) + continue; + break; + } + + // Insert Mesh + LoadedMeshes.push_back(tempMesh); + + // Cleanup + Vertices.clear(); + Indices.clear(); + } + + #ifdef OBJL_CONSOLE_OUTPUT + outputIndicator = 0; + #endif + } + // Load Materials + if (algorithm::firstToken(curline) == "mtllib") + { + // Generate LoadedMaterial + + // Generate a path to the material file + std::vector temp; + algorithm::split(Path, temp, "/"); + + std::string pathtomat = ""; + + if (temp.size() != 1) + { + for (int i = 0; i < temp.size() - 1; i++) + { + pathtomat += temp[i] + "/"; + } + } + + + pathtomat += algorithm::tail(curline); + + #ifdef OBJL_CONSOLE_OUTPUT + std::cout << std::endl << "- find materials in: " << pathtomat << std::endl; + #endif + + // Load Materials + LoadMaterials(pathtomat); + } + } + + #ifdef OBJL_CONSOLE_OUTPUT + std::cout << std::endl; + #endif + + // Deal with last mesh + + if (!Indices.empty() && !Vertices.empty()) + { + // Create Mesh + tempMesh = Mesh(Vertices, Indices); + tempMesh.MeshName = meshname; + + // Insert Mesh + LoadedMeshes.push_back(tempMesh); + } + + file.close(); + + // Set Materials for each Mesh + for (int i = 0; i < MeshMatNames.size(); i++) + { + std::string matname = MeshMatNames[i]; + + // Find corresponding material name in loaded materials + // when found copy material variables into mesh material + for (int j = 0; j < LoadedMaterials.size(); j++) + { + if (LoadedMaterials[j].name == matname) + { + LoadedMeshes[i].MeshMaterial = LoadedMaterials[j]; + break; + } + } + } + + if (LoadedMeshes.empty() && LoadedVertices.empty() && LoadedIndices.empty()) + { + return false; + } + else + { + return true; + } + } + + // Loaded Mesh Objects + std::vector LoadedMeshes; + // Loaded Vertex Objects + std::vector LoadedVertices; + // Loaded Index Positions + std::vector LoadedIndices; + // Loaded Material Objects + std::vector LoadedMaterials; + + private: + // Generate vertices from a list of positions, + // tcoords, normals and a face line + void GenVerticesFromRawOBJ(std::vector& oVerts, + const std::vector& iPositions, + const std::vector& iTCoords, + const std::vector& iNormals, + std::string icurline) + { + std::vector sface, svert; + Vertex vVert; + algorithm::split(algorithm::tail(icurline), sface, " "); + + bool noNormal = false; + + // For every given vertex do this + for (int i = 0; i < int(sface.size()); i++) + { + // See What type the vertex is. + int vtype; + + algorithm::split(sface[i], svert, "/"); + + // Check for just position - v1 + if (svert.size() == 1) + { + // Only position + vtype = 1; + } + + // Check for position & texture - v1/vt1 + if (svert.size() == 2) + { + // Position & Texture + vtype = 2; + } + + // Check for Position, Texture and Normal - v1/vt1/vn1 + // or if Position and Normal - v1//vn1 + if (svert.size() == 3) + { + if (svert[1] != "") + { + // Position, Texture, and Normal + vtype = 4; + } + else + { + // Position & Normal + vtype = 3; + } + } + + // Calculate and store the vertex + switch (vtype) + { + case 1: // P + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = Vector2(0, 0); + noNormal = true; + oVerts.push_back(vVert); + break; + } + case 2: // P/T + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = algorithm::getElement(iTCoords, svert[1]); + noNormal = true; + oVerts.push_back(vVert); + break; + } + case 3: // P//N + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = Vector2(0, 0); + vVert.normal = algorithm::getElement(iNormals, svert[2]); + oVerts.push_back(vVert); + break; + } + case 4: // P/T/N + { + vVert.Position = algorithm::getElement(iPositions, svert[0]); + vVert.TextureCoordinate = algorithm::getElement(iTCoords, svert[1]); + vVert.normal = algorithm::getElement(iNormals, svert[2]); + oVerts.push_back(vVert); + break; + } + default: + { + break; + } + } + } + + // take care of missing normals + // these may not be truly acurate but it is the + // best they get for not compiling a mesh with normals + if (noNormal) + { + Vector3 A = oVerts[0].Position - oVerts[1].Position; + Vector3 B = oVerts[2].Position - oVerts[1].Position; + + Vector3 normal = math::CrossV3(A, B); + + for (int i = 0; i < int(oVerts.size()); i++) + { + oVerts[i].normal = normal; + } + } + } + + // Triangulate a list of vertices into a face by printing + // inducies corresponding with triangles within it + void VertexTriangluation(std::vector& oIndices, + const std::vector& iVerts) + { + // If there are 2 or less verts, + // no triangle can be created, + // so exit + if (iVerts.size() < 3) + { + return; + } + // If it is a triangle no need to calculate it + if (iVerts.size() == 3) + { + oIndices.push_back(0); + oIndices.push_back(1); + oIndices.push_back(2); + return; + } + + // Create a list of vertices + std::vector tVerts = iVerts; + + while (true) + { + // For every vertex + for (int i = 0; i < int(tVerts.size()); i++) + { + // pPrev = the previous vertex in the list + Vertex pPrev; + if (i == 0) + { + pPrev = tVerts[tVerts.size() - 1]; + } + else + { + pPrev = tVerts[i - 1]; + } + + // pCur = the current vertex; + Vertex pCur = tVerts[i]; + + // pNext = the next vertex in the list + Vertex pNext; + if (i == tVerts.size() - 1) + { + pNext = tVerts[0]; + } + else + { + pNext = tVerts[i + 1]; + } + + // Check to see if there are only 3 verts left + // if so this is the last triangle + if (tVerts.size() == 3) + { + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(tVerts.size()); j++) + { + if (iVerts[j].Position == pCur.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + } + + tVerts.clear(); + break; + } + if (tVerts.size() == 4) + { + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(iVerts.size()); j++) + { + if (iVerts[j].Position == pCur.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + } + + Vector3 tempVec; + for (int j = 0; j < int(tVerts.size()); j++) + { + if (tVerts[j].Position != pCur.Position + && tVerts[j].Position != pPrev.Position + && tVerts[j].Position != pNext.Position) + { + tempVec = tVerts[j].Position; + break; + } + } + + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(iVerts.size()); j++) + { + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + if (iVerts[j].Position == tempVec) + oIndices.push_back(j); + } + + tVerts.clear(); + break; + } + + // If Vertex is not an interior vertex + float angle = (float)math::AngleBetweenV3(pPrev.Position - pCur.Position, pNext.Position - pCur.Position) * (float) (180 / 3.14159265359); + if (angle <= 0 && angle >= 180) + continue; + + // If any vertices are within this triangle + bool inTri = false; + for (int j = 0; j < int(iVerts.size()); j++) + { + if (algorithm::inTriangle(iVerts[j].Position, pPrev.Position, pCur.Position, pNext.Position) + && iVerts[j].Position != pPrev.Position + && iVerts[j].Position != pCur.Position + && iVerts[j].Position != pNext.Position) + { + inTri = true; + break; + } + } + if (inTri) + continue; + + // Create a triangle from pCur, pPrev, pNext + for (int j = 0; j < int(iVerts.size()); j++) + { + if (iVerts[j].Position == pCur.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pPrev.Position) + oIndices.push_back(j); + if (iVerts[j].Position == pNext.Position) + oIndices.push_back(j); + } + + // Delete pCur from the list + for (int j = 0; j < int(tVerts.size()); j++) + { + if (tVerts[j].Position == pCur.Position) + { + tVerts.erase(tVerts.begin() + j); + break; + } + } + + // reset i to the start + // -1 since loop will add 1 to it + i = -1; + } + + // if no triangles were created + if (oIndices.size() == 0) + break; + + // if no more vertices + if (tVerts.size() == 0) + break; + } + } + + // Load Materials from .mtl file + bool LoadMaterials(std::string path) + { + // If the file is not a material file return false + if (path.substr(path.size() - 4, path.size()) != ".mtl") + return false; + + std::ifstream file(path); + + // If the file is not found return false + if (!file.is_open()) + return false; + + Material tempMaterial; + + bool listening = false; + + // Go through each line looking for material variables + std::string curline; + while (std::getline(file, curline)) + { + // new material and material name + if (algorithm::firstToken(curline) == "newmtl") + { + if (!listening) + { + listening = true; + + if (curline.size() > 7) + { + tempMaterial.name = algorithm::tail(curline); + } + else + { + tempMaterial.name = "none"; + } + } + else + { + // Generate the material + + // Push Back loaded Material + LoadedMaterials.push_back(tempMaterial); + + // Clear Loaded Material + tempMaterial = Material(); + + if (curline.size() > 7) + { + tempMaterial.name = algorithm::tail(curline); + } + else + { + tempMaterial.name = "none"; + } + } + } + // Ambient Color + if (algorithm::firstToken(curline) == "Ka") + { + std::vector temp; + algorithm::split(algorithm::tail(curline), temp, " "); + + if (temp.size() != 3) + continue; + + tempMaterial.Ka.X = std::stof(temp[0]); + tempMaterial.Ka.Y = std::stof(temp[1]); + tempMaterial.Ka.Z = std::stof(temp[2]); + } + // Diffuse Color + if (algorithm::firstToken(curline) == "Kd") + { + std::vector temp; + algorithm::split(algorithm::tail(curline), temp, " "); + + if (temp.size() != 3) + continue; + + tempMaterial.Kd.X = std::stof(temp[0]); + tempMaterial.Kd.Y = std::stof(temp[1]); + tempMaterial.Kd.Z = std::stof(temp[2]); + } + // Specular Color + if (algorithm::firstToken(curline) == "Ks") + { + std::vector temp; + algorithm::split(algorithm::tail(curline), temp, " "); + + if (temp.size() != 3) + continue; + + tempMaterial.Ks.X = std::stof(temp[0]); + tempMaterial.Ks.Y = std::stof(temp[1]); + tempMaterial.Ks.Z = std::stof(temp[2]); + } + // Specular Exponent + if (algorithm::firstToken(curline) == "Ns") + { + tempMaterial.Ns = std::stof(algorithm::tail(curline)); + } + // Optical Density + if (algorithm::firstToken(curline) == "Ni") + { + tempMaterial.Ni = std::stof(algorithm::tail(curline)); + } + // Dissolve + if (algorithm::firstToken(curline) == "d") + { + tempMaterial.d = std::stof(algorithm::tail(curline)); + } + // Illumination + if (algorithm::firstToken(curline) == "illum") + { + tempMaterial.illum = std::stoi(algorithm::tail(curline)); + } + // Ambient Texture Map + if (algorithm::firstToken(curline) == "map_Ka") + { + tempMaterial.map_Ka = algorithm::tail(curline); + } + // Diffuse Texture Map + if (algorithm::firstToken(curline) == "map_Kd") + { + tempMaterial.map_Kd = algorithm::tail(curline); + } + // Specular Texture Map + if (algorithm::firstToken(curline) == "map_Ks") + { + tempMaterial.map_Ks = algorithm::tail(curline); + } + // Specular Hightlight Map + if (algorithm::firstToken(curline) == "map_Ns") + { + tempMaterial.map_Ns = algorithm::tail(curline); + } + // Alpha Texture Map + if (algorithm::firstToken(curline) == "map_d") + { + tempMaterial.map_d = algorithm::tail(curline); + } + // Bump Map + if (algorithm::firstToken(curline) == "map_Bump" || algorithm::firstToken(curline) == "map_bump" || algorithm::firstToken(curline) == "bump") + { + tempMaterial.map_bump = algorithm::tail(curline); + } + } + + // Deal with last material + + // Push Back loaded Material + LoadedMaterials.push_back(tempMaterial); + + // Test to see if anything was loaded + // If not return false + if (LoadedMaterials.empty()) + return false; + // If so return true + else + return true; + } + }; +} \ No newline at end of file diff --git a/.outdated/graphics/inc/GraphicsLibApi.h b/.outdated/graphics/inc/GraphicsLibApi.h new file mode 100644 index 0000000..8926a14 --- /dev/null +++ b/.outdated/graphics/inc/GraphicsLibApi.h @@ -0,0 +1,19 @@ + +#pragma once + +#include "env.h" + +#ifdef ENV_OS_ANDROID +#include +#include +#else +#include "GL/glew.h" +#endif + +#ifdef ENV_OS_ANDROID +#define GLW_CONTEXT_DEPTH_BITS 16 +#define GLW_CONTEXT_DEPTH_COMPONENT GL_DEPTH_COMPONENT16 +#else +#define GLW_CONTEXT_DEPTH_BITS 32 +#define GLW_CONTEXT_DEPTH_COMPONENT GL_DEPTH_COMPONENT32 +#endif \ No newline at end of file diff --git a/.outdated/graphics/inc/animations.h b/.outdated/graphics/inc/animations.h new file mode 100644 index 0000000..8f41f3d --- /dev/null +++ b/.outdated/graphics/inc/animations.h @@ -0,0 +1,53 @@ +#pragma once + +#include "rect.h" +#include "color.h" + +namespace tp { + namespace glw { + + extern bool gInTransition; + + struct AnimValue { + halnf mValPrev = 0; + halnf mVal = 0; + time_ms mTimeStart = 0; + halni mTimeAnim = 250; + + halnf interpolate() const; + + AnimValue(); + AnimValue(halnf val); + + halnf prev() { return mValPrev; } + void set(halnf val); + void setNoTransition(halnf); + void setAnimTime(halni time); + halnf get() const; + halnf getTarget() const; + bool inTransition() const; + explicit operator halnf() const; + void operator=(halnf val); + }; + + struct AnimRect : rect { + + AnimRect() { + set({ 0, 0, 0, 0 }); + setAnimTime(450); + } + + rectf get() const; + rectf getTarget() const; + void setNoTransition(rectf); + void set(const rectf&); + void setAnimTime(halni time_ms); + }; + + struct AnimColor { + AnimRect mColor; + rgba get() const; + void set(const rgba&); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/canvas.h b/.outdated/graphics/inc/canvas.h new file mode 100644 index 0000000..e40d9e7 --- /dev/null +++ b/.outdated/graphics/inc/canvas.h @@ -0,0 +1,84 @@ + +#pragma once + +#include "stringt.h" +#include "fbuffer.h" + +namespace tp { + namespace glw { + class Canvas { + + typedef rectf Rect; + typedef vec2f Vec2; + typedef rgba Col; + typedef tp::halnf Val; + + Col mColorPrimary; + Col mColorSecondary; + + void* mCtx = NULL; + tp::halnf mDpmm = 1; + tp::halnf mUIScale = 1; + + public: + + Rect mClamping; + Rect mVieport; + + enum Align : uint4 { + LEFT = 1 << 0, // Default, horizontally to left. + CENTER = 1 << 1, // horizontally to center. + RIGHT = 1 << 2, // horizontally to right. + TOP = 1 << 3, // vertically to top. + MIDDLE = 1 << 4, // vertically to middle. + BOTTOM = 1 << 5, // vertically to bottom. + BASELINE = 1 << 6, // Default, vertically to baseline. + CENTER_MIDDLE = CENTER | MIDDLE, + LEFT_MIDDLE = LEFT | MIDDLE, + }; + + Canvas(); + + Val& convert2pxls(Val&); + Rect& convert2pxls(Rect&); + Vec2& convert2pxls(Vec2&); + Val as2pxls(Val); + + // Canvas Manipulation + void beginDraw(Rect viewport, tp::halnf dpmm, tp::halnf uiscale); + void clear(Col color = 0); + void endDraw(); + + void setClamping(Rect rec); + void resetViewport(); + + // Params control + void setCol1(const Col& col); + void setCol2(const Col& col); + + // Shapes + void rect(Rect rec, halnf rounding = 0, halnf borders = 0); + void circle(Vec2 rec, halnf radius, halnf borders = 0); + void trig(Vec2 p1, Vec2 p2, Vec2 p3); + void line(Vec2 p1, Vec2 p2, halnf thikness = 2); + + // Text + void text(const string text, Rect rec, halnf size, Align align = Align::CENTER_MIDDLE); + void text(const char* start, const char* end, Rect rec, halnf size, Align align = Align::CENTER_MIDDLE); + + void drawColorwheel(Rect rec, const rgb& col); + + // image + struct ImageHandle { + halni mId = NULL; + void createFromBuff(glw::fbuffer* buff, Canvas* drawer); + void free(Canvas* drawer); + ~ImageHandle(); + }; + + void drawImage(Rect rec, ImageHandle* image, halnf angle = 0.f, halnf alpha = 1.f, halnf rounding = 0.f); + + ~Canvas(); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/debugui.h b/.outdated/graphics/inc/debugui.h new file mode 100644 index 0000000..f3cee0a --- /dev/null +++ b/.outdated/graphics/inc/debugui.h @@ -0,0 +1,48 @@ + +#include "window.h" + +namespace ImGui { + + bool SubMenuBegin(const char* desc, int level); + void SubMenuEnd(int level); + + void ToolTip(const char* desc); + + struct PopupData { + bool opened = false; + bool ishovered = false; + tp::vec2f p1 = 0; + tp::vec2f p2 = 0; + operator bool() { + return opened; + } + }; + + PopupData HoverPopupBeginButton(const char* id, tp::vec2f butsize = 200, tp::vec2f popupsize = 200); + PopupData HoverPopupBegin(const char* id, tp::vec2f size = 200, tp::vec2f pos = -1, int flags = 0); + void HoverPopupEnd(PopupData& in); + + void ApplyStyle(tp::halnf dpmm, float font_size_mm = 5, float ui_scale = 1); +}; + +namespace tp { + namespace glw { + + typedef void (DebugUiDrawCallBack)(void* cd); + + struct DebugUI { + tp::halnf mDPMM = 1; + tp::halnf mFontSizeMM = 3; + tp::halnf mUIScale = 1; + + DebugUiDrawCallBack* cb = NULL; + void* cd = NULL; + + struct DebugUiInternalContext* mCtx = NULL; + + DebugUI(Window& window, DebugUiDrawCallBack* acb, void* acd); + void drawDebugUI(tp::halnf dpmm); + ~DebugUI(); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/fbuffer.h b/.outdated/graphics/inc/fbuffer.h new file mode 100644 index 0000000..f353313 --- /dev/null +++ b/.outdated/graphics/inc/fbuffer.h @@ -0,0 +1,40 @@ + +#pragma once + +#include "rect.h" +#include "color.h" + +namespace tp { + namespace glw { + class fbuffer { + + uint4 mFrameBufferID = 0; // regroups 0, 1, or more textures, and 0 or 1 depth buffer. + uint4 mTextureId = 0; // texture we're going to render to ( colour attachement #0 ) + uint4 mDepthBufferID = 0; + uint4 mDrawBuffers[1]; + + vec2f mSize; + + public: + + rgba mClearCol = 0.f; + + fbuffer(const vec2f& size); + fbuffer(const vec2f& size, tp::uint1 samples); + + void beginDraw(); + void setViewport(const rectf& viewport); + void clear(); + void endDraw(); + + uint4 texId() const; + uint4 buffId() const; + + const vec2f& getSize() const; + uhalni sizeAllocatedMem() const; + uhalni sizeUsedMem() const; + + ~fbuffer(); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/keycodes.h b/.outdated/graphics/inc/keycodes.h new file mode 100644 index 0000000..e947363 --- /dev/null +++ b/.outdated/graphics/inc/keycodes.h @@ -0,0 +1,167 @@ + +#pragma once + +namespace tp { + + // basically copy of glfw keys + enum class Keycode { + + /* Printable keys */ + SPACE = 32, + APOSTROPHE = 39, /* ' */ + COMMA = 44, /* , */ + MINUS = 45, /* - */ + PERIOD = 46, /* . */ + SLASH = 0xBF, /* \ */ + N0 = 48, + N1 = 49, + N2 = 50, + N3 = 51, + N4 = 52, + N5 = 53, + N6 = 54, + N7 = 55, + N8 = 56, + N9 = 57, + SEMICOLON = 59, /* ; */ + EQUAL = 61, /* = */ + A = 65, + B = 66, + C = 67, + D = 68, + E = 69, + F = 70, + G = 71, + H = 72, + I = 73, + J = 74, + K = 75, + L = 76, + M = 77, + N = 78, + O = 79, + P = 80, + Q = 81, + R = 82, + S = 83, + T = 84, + U = 85, + V = 86, + W = 87, + X = 88, + Y = 89, + Z = 90, + LEFT_BRACKET = 91, /* [ */ + BACKSLASH = 92, /* \ */ + RIGHT_BRACKET = 93, /* ] */ + GRAVE_ACCENT = 96, /* ` */ + WORLD_1 = 161, /* non-US #1 */ + WORLD_2 = 162, /* non-US #2 */ + + /* function keys */ + + ESCAPE = 256, + ENTER = 257, + TAB = 258, + BACKSPACE = 259, + INSERT = 260, + DELETE = 261, + RIGHT = 262, + LEFT = 263, + DOWN = 264, + UP = 265, + PAGE_UP = 266, + PAGE_DOWN = 267, + HOME = 268, + END = 269, + CAPS_LOCK = 280, + SCROLL_LOCK = 281, + NUM_LOCK = 282, + PRINT_SCREEN = 283, + PAUSE = 284, + F1 = 290, + F2 = 291, + F3 = 292, + F4 = 293, + F5 = 294, + F6 = 295, + F7 = 296, + F8 = 297, + F9 = 298, + F10 = 299, + F11 = 300, + F12 = 301, + F13 = 302, + F14 = 303, + F15 = 304, + F16 = 305, + F17 = 306, + F18 = 307, + F19 = 308, + F20 = 309, + F21 = 310, + F22 = 311, + F23 = 312, + F24 = 313, + F25 = 314, + KP_0 = 320, + KP_1 = 321, + KP_2 = 322, + KP_3 = 323, + KP_4 = 324, + KP_5 = 325, + KP_6 = 326, + KP_7 = 327, + KP_8 = 328, + KP_9 = 329, + KP_DECIMAL = 330, + KP_DIVIDE = 331, + KP_MULTIPLY = 332, + KP_SUBTRACT = 333, + KP_ADD = 334, + KP_ENTER = 335, + KP_EQUAL = 336, + LEFT_SHIFT = 340, + LEFT_CONTROL = 341, + LEFT_ALT = 342, + LEFT_SUPER = 343, + RIGHT_SHIFT = 344, + RIGHT_CONTROL = 345, + RIGHT_ALT = 346, + RIGHT_SUPER = 347, + MENU = 348, + + INV_SLASH = 0xDC, + BRA = 0xDB, + KET = 0xDD, + TILDA = 0xC0, + DOUBLE_DOT = 0xBA, + QUOTES = 0xDE, + + MOUSE1 = 501, + MOUSE2 = 502, + MOUSE3 = 503, + MOUSE4 = 504, + MOUSE5 = 505, + MOUSE_UP = 506, + MOUSE_DOWN = 507, + }; + + + enum class Keystate { + PRESSED, + RELEASED, + HOLD, + REPEAT, + NONE, + }; + + struct KeyEvent { + Keycode code; + enum class EventState { + RELEASED = 0, + PRESSED = 1, + REPEAT = 2, + } event_state; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/shader.h b/.outdated/graphics/inc/shader.h new file mode 100644 index 0000000..8335a8b --- /dev/null +++ b/.outdated/graphics/inc/shader.h @@ -0,0 +1,36 @@ + +#pragma once + +namespace tp { + namespace glw { + class shader { + + uint4 programm; + uint4 VertexShaderID; + uint4 FragmentShaderID; + uint4 GeometryShaderID; + + public: + + bool compile_shader(const char* ShaderCode, uint4 ShaderID); + void load(const char* vert, const char* geom, const char* frag, bool paths); + + shader(); + + void vert_bind_source(const char* vert_src); + void frag_bind_source(const char* frag_src); + void geom_bind_source(const char* geom_src); + + void compile(); + + shader(const char* vertid, const char* geomid, const char* fragid, bool paths = true); + void bind(); + uint4 getu(const char* uid); + void unbind(); + ~shader(); + + alni sizeAllocatedMem(); + alni sizeUsedMem(); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/simplegui.h b/.outdated/graphics/inc/simplegui.h new file mode 100644 index 0000000..2d6eaf5 --- /dev/null +++ b/.outdated/graphics/inc/simplegui.h @@ -0,0 +1,71 @@ +#pragma once + +#include "window.h" +#include "canvas.h" +#include "animations.h" + +namespace tp { + namespace glw { + + class WindowSimpleInputs { + enum class Mouse : uint1 { NONE, PRESSED, HOLD, RELEASED } mMouse; + enum class Move : uint1 { NONE, LEFT, RIGHT, UP, DOWN } mMove; + public: + + halnf mScaleVal = 0; + vec2f mWindowSizeMM; + vec2f mCrs; + vec2f mCrsPrev; + vec2f mCrsmDelta; + halnf mPressure = 0.f; + + void update(const glw::Window& window, halnf uiscale); + bool Activated(); + bool Anticipating(); + bool Selected(); + bool MoveLeft(); + bool MoveRight(); + bool MoveUp(); + bool MoveDown(); + bool Drag(); + }; + + struct ButtonWidget { + rectf mRect = { 0.f, 10.f }; + rgba mCol = { 0.3f, 0.3f, 0.3f, 1.f }; + bool mPressed = false; + AnimRect mAnimRec; + void draw(glw::Canvas& canvas); + void proc(glw::WindowSimpleInputs& inputs); + }; + + struct CheckBoxWidget { + rectf mRect = { 0.f, 10.f }; + rgba mCol = { 0.3f, 0.3f, 0.3f, 1.f }; + rgba mColActive = { 0.5f, 0.5f, 0.5f, 1.f }; + + bool mValue = false; + AnimRect mAnimRec; + AnimColor mAnimCol; + + void draw(glw::Canvas& canvas); + void proc(glw::WindowSimpleInputs& inputs); + }; + + struct WindowsHeaderWidget { + rectf header_rec = { 10, 10, 50, 10 }; + rgba col = { 0.13f, 0.13f, 0.13f, 0.9f }; + rectf grab_rec = 0.f; + + ButtonWidget mExitButton; + ButtonWidget mMaxButton; + ButtonWidget mMinButton; + CheckBoxWidget mPinButton; + + void updRecs(); + void draw(glw::Canvas& canvas); + void proc(glw::Window& window, glw::WindowSimpleInputs& inputs); + }; + + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/texture.h b/.outdated/graphics/inc/texture.h new file mode 100644 index 0000000..6a7c3d5 --- /dev/null +++ b/.outdated/graphics/inc/texture.h @@ -0,0 +1,31 @@ + +#pragma once + +#include "array2d.h" +#include "color.h" +#include "vec.h" + +namespace tp { + namespace glw { + class texture { + uint4 id; + public: + + texture(); + ~texture(); + + uint4 getid(); + void update(const Array2D& buff); + void draw(const uint4& out = 0); + + alni sizeAllocatedMem(); + alni sizeUsedMem(); + + static void init(); + static void deinit(); + static void draw_texture(uint4 out, uint4 in); + static uint4 get_tex(const char* TexId); + static void drawCurcle(vec2f pos, double radius, rgba col); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/inc/window.h b/.outdated/graphics/inc/window.h new file mode 100644 index 0000000..23c1b32 --- /dev/null +++ b/.outdated/graphics/inc/window.h @@ -0,0 +1,114 @@ + +#pragma once + +#include "common.h" +#include "vec.h" +#include "rect.h" +#include "color.h" +#include "stringt.h" +#include "array.h" +#include "map.h" + +#include "keycodes.h" +#include "queue.h" + +namespace tp { + + extern tp::ModuleManifest gModuleGlw; + + namespace glw { + + struct PlatformContext; + + class Window { + + public: + + struct Device { + time_ms FrameRate = NULL; // monitor fps + vec2f Size; // size of the monitor + tp::halnf mDPMM = 1; + }; + + struct Events { + tp::Queue mKeysQueue; + tp::uhalni mRedraw = 2; + bool mClose = false; + + vec2f mCursor = 0; + halnf mPressure = 1.f; + + vec2f mCursorPrev = 0.f; + halnf mPressurePrev = 1.f; + }; + + struct Appearence { + vec2f mPos = { 100.f, 100.f }; // global position + vec2f mSize = { 300.f, 300.f }; // width and height of window + vec2f mSizeMin = { 100.f, 100.f }; // min size possiable + vec2f mSizeMax = { 700.f, 700.f }; // max size possiable + + bool mHiden = true; + bool mMaximized = false; + bool mMinimized = false; + bool mTopZ = false; + bool mAllDesktops = false; + + rgba mResizeColor = rgba(0.13f, 0.13f, 0.13f, 0.9f); + + rectf mMinMaxBox; + + tp::Array mCaptionsAddArea; + tp::Array mCaptionsRemoveArea; + }; + + public: + + PlatformContext* mPlatformCtx = NULL; + void platformCallback(); + void* platform_window() const; + + struct NativeEventListenerCallback { + typedef void (call_back_func)(PlatformContext* ctx, void* cd); + call_back_func* exec_begin = NULL; + call_back_func* exec = NULL; + call_back_func* exec_end = NULL; + void* cd = NULL; + }; + + tp::HashMap mNativeEventListeners; + + private: + + struct Cache { + Appearence mAppearencePrev; + vec2f mWindowSize = 0; + rectf mRectBeforResizing = 0; + bool mUserResizing = false; + bool mMinMaxHover = false; + bool mMouseTracked = false; + } mCache; + + void applyAppearance(); + void initialize(); + + public: + + static Device mDevice; + Appearence mAppearence; + Events mEvents; + + Window(); + Window(const Appearence& aAppearence); + + void pollEvents(); + void beginDraw(); + void endDraw(); + + alni sizeAllocatedMem(); + alni sizeUsedMem(); + + ~Window(); + }; + }; +}; \ No newline at end of file diff --git a/.outdated/graphics/rsc/fonts/CONSOLAB.TTF b/.outdated/graphics/rsc/fonts/CONSOLAB.TTF new file mode 100644 index 0000000000000000000000000000000000000000..ef6d5554e22e3a0500064d2fa82220dd024bb97b GIT binary patch literal 368720 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∈ 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∋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 events; + +}; + +extern AndroidApi* gAndroidApi; \ No newline at end of file diff --git a/.outdated/graphics/src/android_main.cpp b/.outdated/graphics/src/android_main.cpp new file mode 100644 index 0000000..bcc64af --- /dev/null +++ b/.outdated/graphics/src/android_main.cpp @@ -0,0 +1,804 @@ + + // Copyright (C) 2010 The Android Open Source Project + // 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. + +// own headers +#include "window.h" + +#include "GraphicsLibApi.h" + +// STL +#include +#include +#include +#include +#include +#include + +// jni +//#include +//#include +//#include +//#include +#include +//#include +//#include + +// opengl +#include +#include +//#include "GL/glew.h" + +// glue +#include +#include +#include +#include <../../../android/native_app_glue/android_native_app_glue.h> + +// AcquireASensorManagerInstance +#include + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native-activity", __VA_ARGS__)) +#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native-activity", __VA_ARGS__)) + +// application side entry point +int main(); + +// first function to be called in "main thread" +void* main_wrap(void* p); + + // AcquireASensorManagerInstance(void) + // Workaround ASensorManager_getInstance() deprecation false alarm + // for Android-N and before, when compiling with NDK-r15 +ASensorManager* AcquireASensorManagerInstance(android_app* app) { + + if (!app) + return nullptr; + + typedef ASensorManager* (*PF_GETINSTANCEFORPACKAGE)(const char* name); + void* androidHandle = dlopen("libandroid.so", RTLD_NOW); + auto getInstanceForPackageFunc = (PF_GETINSTANCEFORPACKAGE) + dlsym(androidHandle, "ASensorManager_getInstanceForPackage"); + if (getInstanceForPackageFunc) { + JNIEnv* env = nullptr; + app->activity->vm->AttachCurrentThread(&env, nullptr); + + jclass android_content_Context = env->GetObjectClass(app->activity->clazz); + jmethodID midGetPackageName = env->GetMethodID(android_content_Context, + "getPackageName", + "()Ljava/lang/String;"); + auto packageName = (jstring)env->CallObjectMethod(app->activity->clazz, + midGetPackageName); + + const char* nativePackageName = env->GetStringUTFChars(packageName, nullptr); + ASensorManager* mgr = getInstanceForPackageFunc(nativePackageName); + env->ReleaseStringUTFChars(packageName, nativePackageName); + app->activity->vm->DetachCurrentThread(); + if (mgr) { + dlclose(androidHandle); + return mgr; + } + } + + typedef ASensorManager* (*PF_GETINSTANCE)(); + auto getInstanceFunc = (PF_GETINSTANCE) + dlsym(androidHandle, "ASensorManager_getInstance"); + // by all means at this point, ASensorManager_getInstance should be available + assert(getInstanceFunc); + dlclose(androidHandle); + + return getInstanceFunc(); +} + +void GL_APIENTRY MessageCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, const void* userParam) { + DBG_BREAK(true); + LOGW("GL CALLBACK: %s type = 0x%x, severity = 0x%x, message = %s\n", (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""), type, severity, message); +} + +char const* gl_error_string(GLenum const err) { + switch (err) { + case GL_NO_ERROR: return "GL_NO_ERROR"; + case GL_INVALID_ENUM: return "GL_INVALID_ENUM"; + case GL_INVALID_VALUE: return "GL_INVALID_VALUE"; + case GL_INVALID_OPERATION: return "GL_INVALID_OPERATION"; + case GL_STACK_OVERFLOW: return "GL_STACK_OVERFLOW"; + case GL_STACK_UNDERFLOW: return "GL_STACK_UNDERFLOW"; + case GL_OUT_OF_MEMORY: return "GL_OUT_OF_MEMORY"; + case GL_INVALID_FRAMEBUFFER_OPERATION: return "GL_INVALID_FRAMEBUFFER_OPERATION"; + default: return "unknown error"; + } +} + +void glerr(GLenum type) { + DBG_BREAK(true); + const GLchar* message = gl_error_string(type); + LOGW("GL CALLBACK: %s type = 0x%x, message = %s\n", (type == GL_DEBUG_TYPE_ERROR ? "** GL ERROR **" : ""), type, message); +} + +void glerr(GLenum type); +#define AssertGL(x) { x; GLenum __gle = glGetError(); if (__gle != GL_NO_ERROR) glerr(__gle); } + +// --------------------------------- Data --------------------------------------- // + +struct MutexEvent { + pthread_mutex_t mutex; + tp::glw::Window* active_windw; + bool parent_thread_has_events = false; + bool child_whaiting = false; +} mutex_event; + +struct ANativeActivityCtx* android_ctx = NULL; + +tp::glw::Window::Device tp::glw::Window::mDevice; +extern const char* g_android_internal_data_path; + +static pthread_t worker_thread; +static pthread_mutex_t worker_finished_mutex; +static pthread_cond_t worker_finished_cond; +static bool worker_finished = false; + +namespace tp { + namespace glw { + struct PlatformContext { + + int col = 255; + + EGLint w, h, format; + EGLint numConfigs; + EGLConfig config = nullptr; + EGLSurface surface; + EGLContext context; + EGLDisplay display = nullptr; + + AInputEvent* chache_event = NULL; + + EGLint majorVersion, minorVersion; + + // Initialize an EGL context for the current display. + PlatformContext(ANativeWindow* window) { + + display = eglGetDisplay(EGL_DEFAULT_DISPLAY); + if (EGL_NO_DISPLAY == display) { + return; + } + + + if (eglInitialize(display, &majorVersion, &minorVersion) != EGL_TRUE) { + return; + } + + + // Here specify the attributes of the desired configuration. + // Below, we select an EGLConfig with at least 8 bits per color component compatible with on-screen windows + const EGLint attribs[] = { + EGL_RENDERABLE_TYPE, EGL_OPENGL_ES3_BIT, // request OpenGL ES 3.0 + EGL_BLUE_SIZE, 8, + EGL_GREEN_SIZE, 8, + EGL_RED_SIZE, 8, + EGL_DEPTH_SIZE, GLW_CONTEXT_DEPTH_BITS, + EGL_SURFACE_TYPE, EGL_WINDOW_BIT, + EGL_NONE + }; + + // Here, the application chooses the configuration it desires. + // find the best match if possible, otherwise use the very first one + { + if (eglChooseConfig(display, attribs, nullptr, 0, &numConfigs) != EGL_TRUE) { + return; + } + + std::unique_ptr supportedConfigs(new EGLConfig[numConfigs]); + assert(supportedConfigs); + + if (eglChooseConfig(display, attribs, supportedConfigs.get(), numConfigs, &numConfigs) != EGL_TRUE) { + return; + } + + assert(numConfigs); + auto i = 0; + for (; i < numConfigs; i++) { + auto& cfg = supportedConfigs[i]; + EGLint r, g, b, d; + if (eglGetConfigAttrib(display, cfg, EGL_RED_SIZE, &r) && + eglGetConfigAttrib(display, cfg, EGL_GREEN_SIZE, &g) && + eglGetConfigAttrib(display, cfg, EGL_BLUE_SIZE, &b) && + eglGetConfigAttrib(display, cfg, EGL_DEPTH_SIZE, &d) && + r == 8 && g == 8 && b == 8 && d == GLW_CONTEXT_DEPTH_BITS) { + + config = supportedConfigs[i]; + break; + } + } + + if (i == numConfigs) { + config = supportedConfigs[0]; + } + + if (config == nullptr) { + LOGW("Unable to initialize EGLConfig"); + return; + } + } + + const EGLint egl_context_attributes[] = { + EGL_CONTEXT_CLIENT_VERSION, 3, + //EGL_CONTEXT_MAJOR_VERSION, 3, + //EGL_CONTEXT_MINOR_VERSION, 0, + EGL_CONTEXT_OPENGL_PROFILE_MASK, EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT, +#ifdef ENV_BUILD_DEBUG + //EGL_CONTEXT_OPENGL_DEBUG, EGL_TRUE, +#endif + EGL_NONE + }; + + // EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is + // guaranteed to be accepted by ANativeWindow_setBuffersGeometry(). + // As soon as we picked a EGLConfig, we can safely reconfigure the + // ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID + eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format); + surface = eglCreateWindowSurface(display, config, window, nullptr); + context = eglCreateContext(display, config, EGL_NO_CONTEXT, egl_context_attributes); + + if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) { + LOGW("Unable to eglMakeCurrent"); + return; + } + + eglQuerySurface(display, surface, EGL_WIDTH, &w); + eglQuerySurface(display, surface, EGL_HEIGHT, &h); + + // Check openGL on the system + auto opengl_info = { GL_VENDOR, GL_RENDERER, GL_VERSION, GL_EXTENSIONS }; + for (auto name : opengl_info) { + auto info = glGetString(name); + LOGI("OpenGL Info: %s", info); + } + + // Initialize GL state. + //glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + AssertGL(glEnable(GL_CULL_FACE)); + //AssertGL(glShadeModel(GL_SMOOTH)); + AssertGL(glEnable(GL_DEPTH_TEST)); + AssertGL(glDepthFunc(GL_LESS)); + + GLint major = 0; + GLint minor = 0; + glGetIntegerv(GL_MAJOR_VERSION, &major); + glGetIntegerv(GL_MINOR_VERSION, &minor); + + glGetIntegerv(GL_DEPTH, &minor); + + AssertGL(glEnable(GL_DEBUG_OUTPUT)); + AssertGL(glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS)); + AssertGL(glDebugMessageCallback(MessageCallback, 0)); + + tp::glw::Window::mDevice.Size = { w, h }; + tp::glw::Window::mDevice.FrameRate = 60; + + return; + } + + void beginDraw() { + if (this->display == nullptr) { return; } + + glViewport(0, 0, tp::glw::Window::mDevice.Size.x, tp::glw::Window::mDevice.Size.y); + + //glClearColor(col / 255.f, col / 255.f, col / 255.f, 1); + //glClear(GL_COLOR_BUFFER_BIT); + + //if (col++ > 255) { + //col = 0; + //} + } + + void endDraw() { + eglSwapBuffers(display, surface); + } + + // Tear down the EGL context currently associated with the display. + ~PlatformContext() { + if (this->display != EGL_NO_DISPLAY) { + eglMakeCurrent(this->display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + if (this->context != EGL_NO_CONTEXT) { + eglDestroyContext(this->display, this->context); + } + if (this->surface != EGL_NO_SURFACE) { + eglDestroySurface(this->display, this->surface); + } + eglTerminate(this->display); + } + + display = EGL_NO_DISPLAY; + context = EGL_NO_CONTEXT; + surface = EGL_NO_SURFACE; + } + }; + }; +}; + +// ---------------------------------- Parent Thread ------------------------------------ // +#ifndef PARENT_THREAD + +// Shared state for our app. +struct ANativeActivityCtx { + + // Our saved state data. + struct saved_state { + float angle; + int32_t x; + int32_t y; + }; + + android_app* app; + + ASensorManager* sensorManager; + const ASensor* accelerometerSensor; + ASensorEventQueue* sensorEventQueue; + + int animating; + EGLDisplay display; + EGLSurface surface; + EGLContext context; + int32_t width; + int32_t height; + saved_state state; + + ANativeActivityCtx(android_app* state) { + memset(this, 0, sizeof(*this)); + + state->userData = this; + state->onAppCmd = engine_handle_cmd; + state->onInputEvent = engine_handle_input; + + app = state; + + // Prepare to monitor accelerometer + sensorManager = AcquireASensorManagerInstance(state); + accelerometerSensor = ASensorManager_getDefaultSensor(sensorManager, ASENSOR_TYPE_ACCELEROMETER); + sensorEventQueue = ASensorManager_createEventQueue(sensorManager, state->looper, LOOPER_ID_USER, 0, 0); + + // We are starting with a previous saved state; restore from it. + if (state->savedState != nullptr) { + this->state = *(saved_state*)state->savedState; + } + } + + void proc_events_util() { + int ident; + int events; + struct android_poll_source* source; + + auto window = mutex_event.active_windw; + + if (window) { + for (auto proc : window->mNativeEventListeners) { + proc->val.exec_begin(window->mPlatformCtx, proc->val.cd); + } + } + + // we loop until all events are read + while ((ident = ALooper_pollAll(0, nullptr, &events, (void**)&source)) >= 0) { + + // Process this event. + if (source != nullptr) { + source->process(this->app, source); + } + + // If a sensor has data, process it now. + if (ident == LOOPER_ID_USER) { + if (this->accelerometerSensor != nullptr) { + ASensorEvent event; + while (ASensorEventQueue_getEvents(this->sensorEventQueue, &event, 1) > 0) { + LOGI("accelerometer: x=%f y=%f z=%f", event.acceleration.x, event.acceleration.y, event.acceleration.z); + } + } + } + + // Check if we are exiting. + if (this->app->destroyRequested != 0) { + DBG_BREAK(1); + } + } + + if (window) { + for (auto proc : window->mNativeEventListeners) { + proc->val.exec_end(window->mPlatformCtx, proc->val.cd); + } + } + } + + void proc_events() { + + pthread_mutex_lock(&mutex_event.mutex); + auto threaded = mutex_event.active_windw; + pthread_mutex_unlock(&mutex_event.mutex); + + if (!threaded) { + proc_events_util(); + return; + } + + // Read all pending events. + int ident; + int events; + struct android_poll_source* source; + + // check if events exist and if so prepare to proccess them + if ((ident = ALooper_pollAll(0, nullptr, &events, (void**)&source)) >= 0) { + + // signal child thread that we need to process those events + pthread_mutex_lock(&mutex_event.mutex); + mutex_event.parent_thread_has_events = true; + pthread_mutex_unlock(&mutex_event.mutex); + + // whait until child thread pauses + bool whait = true; + + while (whait) { + pthread_mutex_lock(&mutex_event.mutex); + whait = !mutex_event.child_whaiting; + pthread_mutex_unlock(&mutex_event.mutex); + } + } + else { + return; + } + + + pthread_mutex_lock(&mutex_event.mutex); + auto window = mutex_event.active_windw; + pthread_mutex_unlock(&mutex_event.mutex); + + proc_events_util(); + + // signal to child continue to do its work + pthread_mutex_lock(&mutex_event.mutex); + mutex_event.parent_thread_has_events = false; + pthread_mutex_unlock(&mutex_event.mutex); + } + + // Process the next input event. + static int32_t engine_handle_input(struct android_app* app, AInputEvent* event) { + auto* engine = (struct ANativeActivityCtx*)app->userData; + auto window = mutex_event.active_windw; + + if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_MOTION) { + window->mEvents.mCursorPrev = window->mEvents.mCursor; + + window->mEvents.mCursor.x = AMotionEvent_getX(event, 0); + window->mEvents.mCursor.y = AMotionEvent_getY(event, 0); + + window->mEvents.mRedraw = 2; + + int32_t event_action = AMotionEvent_getAction(event); + int32_t event_pointer_index = (event_action & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; + event_action &= AMOTION_EVENT_ACTION_MASK; + + if ((AMotionEvent_getToolType(event, event_pointer_index) == AMOTION_EVENT_TOOL_TYPE_FINGER) + || (AMotionEvent_getToolType(event, event_pointer_index) == AMOTION_EVENT_TOOL_TYPE_UNKNOWN)) { + + if (event_action == AMOTION_EVENT_ACTION_DOWN) { + window->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode::MOUSE1, tp::KeyEvent::EventState::PRESSED }); + } + else if (event_action == AMOTION_EVENT_ACTION_UP) { + window->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode::MOUSE1, tp::KeyEvent::EventState::RELEASED }); + } + } + } + + if (window) { + window->mPlatformCtx->chache_event = event; + for (auto proc : window->mNativeEventListeners) { + proc->val.exec(window->mPlatformCtx, proc->val.cd); + } + } + + return 0; + } + + // Process the next main command. + static void engine_handle_cmd(struct android_app* app, int32_t cmd) { + auto* engine = (struct ANativeActivityCtx*)app->userData; + auto window = mutex_event.active_windw; + + switch (cmd) { + + // The system has asked us to save our current state. Do so. + case APP_CMD_SAVE_STATE: { + engine->app->savedState = malloc(sizeof(ANativeActivityCtx::saved_state)); + *((ANativeActivityCtx::saved_state*)engine->app->savedState) = engine->state; + engine->app->savedStateSize = sizeof(ANativeActivityCtx::saved_state); + } break; + + // The window is being shown, get it ready. + case APP_CMD_INIT_WINDOW: { + if (engine->app->window != nullptr) { + //engine->init_display(); + //engine->draw_frame(); + } + } break; + + // The window is being hidden or closed, clean it up. + case APP_CMD_TERM_WINDOW: { + //engine->term_display(); + } break; + + // When our app gains focus, we start monitoring the accelerometer. + case APP_CMD_GAINED_FOCUS: { + if (engine->accelerometerSensor != nullptr) { + ASensorEventQueue_enableSensor(engine->sensorEventQueue, + engine->accelerometerSensor); + // We'd like to get 60 events per second (in us). + ASensorEventQueue_setEventRate(engine->sensorEventQueue, + engine->accelerometerSensor, + (1000L / 60) * 1000); + } + } break; + + // When our app loses focus, we stop monitoring the accelerometer. + // This is to avoid consuming battery while not being used. + case APP_CMD_LOST_FOCUS: { + if (engine->accelerometerSensor != nullptr) { + ASensorEventQueue_disableSensor(engine->sensorEventQueue, + engine->accelerometerSensor); + } + // Also stop animating. + engine->animating = 0; + //engine->draw_frame(); + } break; + + default: break; + } + } + +}; + +#include + +void unsure_dir_exist(const char* path_to_file) { + char* temp_path = strdup(path_to_file); + + for (char* p = temp_path + 1; *p; p++) { + if (*p == '/') { + *p = '\0'; + int status = mkdir(temp_path, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + if (status != 0 && errno != EEXIST) { + // handle error + break; + } + *p = '/'; + } + } + + free(temp_path); +} + +// FIXME +void unpackAsset(AAssetManager* mgr, const char* filename, const std::string& path) { + AAsset* asset = AAssetManager_open(mgr, filename, AASSET_MODE_STREAMING); + if (asset == NULL) { + return; + } + off_t length = AAsset_getLength(asset); + char* buffer = new char[length]; + AAsset_read(asset, buffer, length); + + unsure_dir_exist(path.c_str()); + FILE* out = fopen(path.c_str(), "w"); + if (out != NULL) { + fwrite(buffer, length, 1, out); + fclose(out); + } + delete[] buffer; + AAsset_close(asset); +} + +// FIXME +void unpackDirectory(AAssetManager* mgr, const char* dirname, const std::string& path) { + + AAssetDir* assetDir = AAssetManager_openDir(mgr, dirname); + const char* filename = NULL; + + while ((filename = AAssetDir_getNextFileName(assetDir)) != NULL) { + std::string assetPath = std::string(dirname) + "/" + filename; + std::string internalPath = path + "/" + std::string(dirname) + "/" + filename; + + struct stat sb; + stat(assetPath.c_str(), &sb); + if (S_ISDIR(sb.st_mode)) { + unpackDirectory(mgr, assetPath.c_str(), internalPath); + } + else { + unpackAsset(mgr, assetPath.c_str(), internalPath); + } + } + AAssetDir_close(assetDir); +} + +extern "C" { + + // This is the main entry point of a native application that is using + // android_native_app_glue. It runs in its own thread, with its own + // event loop for receiving input events and doing other things. + void android_main(android_app* state) { + + tp::print_env_info(); + tp::alloc_init(); + + ANativeActivityCtx engine(state); + + unpackDirectory(state->activity->assetManager, "", state->activity->internalDataPath); + unpackDirectory(state->activity->assetManager, "rsc", state->activity->internalDataPath); + unpackDirectory(state->activity->assetManager, "rsc/fonts", state->activity->internalDataPath); + + android_ctx = &engine; + + bool running = true; + while (running) { + + engine.proc_events(); + + // whait until our app fully initialized + if (!engine.app->window) { + continue; + } + + // run once + static bool main_thread_started = false; + if (!main_thread_started) { + + // init types + g_android_internal_data_path = state->activity->internalDataPath; + + // create main thread + pthread_create(&worker_thread, NULL, main_wrap, NULL); + pthread_mutex_init(&worker_finished_mutex, NULL); + pthread_cond_init(&worker_finished_cond, NULL); + + main_thread_started = true; + continue; + } + + // check for exit + pthread_mutex_lock(&worker_finished_mutex); + running = !worker_finished; + pthread_mutex_unlock(&worker_finished_mutex); + } + + pthread_join(worker_thread, NULL); + + tp::alloc_uninit(); + } +}; +#endif + + +// ------------------------------- Child thread --------------------------------------- // +#ifndef CHILD_THREAD + +//#include +//#include + +AInputEvent* androidPlatformContextGetEvent(tp::glw::PlatformContext* ctx) { + return ctx->chache_event; +} + +int32_t getDensityDpi(android_app* app) { + AConfiguration* config = AConfiguration_new(); + AConfiguration_fromAssetManager(config, app->activity->assetManager); + int32_t density = AConfiguration_getDensity(config); + AConfiguration_delete(config); + return density; +} + +// statics +void tp::glw::Window::init() {} +void tp::glw::Window::deinit() {} + +void tp::glw::Window::initialize() { + mPlatformCtx = new PlatformContext(android_ctx->app->window); + applyAppearance(); + + + AConfiguration* config = AConfiguration_new(); + AConfiguration_fromAssetManager(config, android_ctx->app->activity->assetManager); + int32_t density = AConfiguration_getDensity(config); + AConfiguration_delete(config); + + mDevice.mDPMM = density / 25.4f; +} + +tp::glw::Window::Window() { + initialize(); + + pthread_mutex_lock(&mutex_event.mutex); + mutex_event.active_windw = this; + pthread_mutex_unlock(&mutex_event.mutex); +} + +tp::glw::Window::Window(const Appearence& aAppearence) { + mAppearence = aAppearence; + initialize(); +} + +tp::glw::Window::~Window() { + delete mPlatformCtx; +} + +void tp::glw::Window::applyAppearance() { + int width = ANativeWindow_getWidth(android_ctx->app->window); + int height = ANativeWindow_getHeight(android_ctx->app->window); + + if (width != mAppearence.mSize.x || height != mAppearence.mSize.y) { + mEvents.mRedraw = 2; + } + + mAppearence.mPos = mCache.mAppearencePrev.mPos = 0; + mAppearence.mSize.x = mCache.mAppearencePrev.mSize.x = tp::glw::Window::mDevice.Size.x = width; + mAppearence.mSize.y = mCache.mAppearencePrev.mSize.y = tp::glw::Window::mDevice.Size.y = height; +} + +void tp::glw::Window::pollEvents() { + applyAppearance(); + + // check if parent thread has some events to pass + + pthread_mutex_lock(&mutex_event.mutex); + bool has_event = mutex_event.parent_thread_has_events; + mutex_event.child_whaiting = has_event; + pthread_mutex_unlock(&mutex_event.mutex); + + while (has_event) { + pthread_mutex_lock(&mutex_event.mutex); + has_event = mutex_event.parent_thread_has_events; + pthread_mutex_unlock(&mutex_event.mutex); + } + + pthread_mutex_lock(&mutex_event.mutex); + mutex_event.child_whaiting = false; + pthread_mutex_unlock(&mutex_event.mutex); +} + +void tp::glw::Window::platformCallback() {} + +void tp::glw::Window::beginDraw() { + mPlatformCtx->beginDraw(); +} + +void tp::glw::Window::endDraw() { + mPlatformCtx->endDraw(); + if (mEvents.mRedraw-- < 0) mEvents.mRedraw = 0; +} + +void* tp::glw::Window::platform_window() const { return android_ctx->app->window; } + +tp::alni tp::glw::Window::sizeAllocatedMem() { return 0; } + +tp::alni tp::glw::Window::sizeUsedMem() { return 0; } + + +void* main_wrap(void* p) { + + // exec main + main(); + + // mark as doen after completion + pthread_mutex_lock(&worker_finished_mutex); + worker_finished = true; + pthread_cond_signal(&worker_finished_cond); + pthread_mutex_unlock(&worker_finished_mutex); + + // exit "main thread" + pthread_exit(NULL); + + return NULL; +} + +#endif \ No newline at end of file diff --git a/.outdated/graphics/src/android_native_app_glue.c b/.outdated/graphics/src/android_native_app_glue.c new file mode 100644 index 0000000..db624a1 --- /dev/null +++ b/.outdated/graphics/src/android_native_app_glue.c @@ -0,0 +1,453 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * 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 "android_native_app_glue.h" + +#include + +#include +#include +#include +#include + +#include + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "threaded_app", __VA_ARGS__)) +#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "threaded_app", __VA_ARGS__)) + +/* For debug builds, always enable the debug traces in this library */ +#ifndef NDEBUG +# define LOGV(...) ((void)__android_log_print(ANDROID_LOG_VERBOSE, "threaded_app", __VA_ARGS__)) +#else +# define LOGV(...) ((void)0) +#endif + + void free_saved_state(struct android_app* android_app) { + pthread_mutex_lock(&android_app->mutex); + if (android_app->savedState != NULL) { + free(android_app->savedState); + android_app->savedState = NULL; + android_app->savedStateSize = 0; + } + pthread_mutex_unlock(&android_app->mutex); +} + +int8_t android_app_read_cmd(struct android_app* android_app) { + int8_t cmd; + if (read(android_app->msgread, &cmd, sizeof(cmd)) != sizeof(cmd)) { + LOGE("No data on command pipe!"); + return -1; + } + if (cmd == APP_CMD_SAVE_STATE) free_saved_state(android_app); + return cmd; +} + + void print_cur_config(struct android_app* android_app) { + char lang[2], country[2]; + AConfiguration_getLanguage(android_app->config, lang); + AConfiguration_getCountry(android_app->config, country); + + LOGV("Config: mcc=%d mnc=%d lang=%c%c cnt=%c%c orien=%d touch=%d dens=%d " + "keys=%d nav=%d keysHid=%d navHid=%d sdk=%d size=%d long=%d " + "modetype=%d modenight=%d", + AConfiguration_getMcc(android_app->config), + AConfiguration_getMnc(android_app->config), + lang[0], lang[1], country[0], country[1], + AConfiguration_getOrientation(android_app->config), + AConfiguration_getTouchscreen(android_app->config), + AConfiguration_getDensity(android_app->config), + AConfiguration_getKeyboard(android_app->config), + AConfiguration_getNavigation(android_app->config), + AConfiguration_getKeysHidden(android_app->config), + AConfiguration_getNavHidden(android_app->config), + AConfiguration_getSdkVersion(android_app->config), + AConfiguration_getScreenSize(android_app->config), + AConfiguration_getScreenLong(android_app->config), + AConfiguration_getUiModeType(android_app->config), + AConfiguration_getUiModeNight(android_app->config)); +} + +void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd) { + switch (cmd) { + case APP_CMD_INPUT_CHANGED: + LOGV("APP_CMD_INPUT_CHANGED"); + pthread_mutex_lock(&android_app->mutex); + if (android_app->inputQueue != NULL) { + AInputQueue_detachLooper(android_app->inputQueue); + } + android_app->inputQueue = android_app->pendingInputQueue; + if (android_app->inputQueue != NULL) { + LOGV("Attaching input queue to looper"); + AInputQueue_attachLooper(android_app->inputQueue, + android_app->looper, LOOPER_ID_INPUT, NULL, + &android_app->inputPollSource); + } + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + break; + + case APP_CMD_INIT_WINDOW: + LOGV("APP_CMD_INIT_WINDOW"); + pthread_mutex_lock(&android_app->mutex); + android_app->window = android_app->pendingWindow; + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + break; + + case APP_CMD_TERM_WINDOW: + LOGV("APP_CMD_TERM_WINDOW"); + pthread_cond_broadcast(&android_app->cond); + break; + + case APP_CMD_RESUME: + case APP_CMD_START: + case APP_CMD_PAUSE: + case APP_CMD_STOP: + LOGV("activityState=%d", cmd); + pthread_mutex_lock(&android_app->mutex); + android_app->activityState = cmd; + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + break; + + case APP_CMD_CONFIG_CHANGED: + LOGV("APP_CMD_CONFIG_CHANGED"); + AConfiguration_fromAssetManager(android_app->config, + android_app->activity->assetManager); + print_cur_config(android_app); + break; + + case APP_CMD_DESTROY: + LOGV("APP_CMD_DESTROY"); + android_app->destroyRequested = 1; + break; + } +} + +void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd) { + switch (cmd) { + case APP_CMD_TERM_WINDOW: + LOGV("APP_CMD_TERM_WINDOW"); + pthread_mutex_lock(&android_app->mutex); + android_app->window = NULL; + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + break; + + case APP_CMD_SAVE_STATE: + LOGV("APP_CMD_SAVE_STATE"); + pthread_mutex_lock(&android_app->mutex); + android_app->stateSaved = 1; + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + break; + + case APP_CMD_RESUME: + free_saved_state(android_app); + break; + } +} + + void android_app_destroy(struct android_app* android_app) { + LOGV("android_app_destroy!"); + free_saved_state(android_app); + pthread_mutex_lock(&android_app->mutex); + if (android_app->inputQueue != NULL) { + AInputQueue_detachLooper(android_app->inputQueue); + } + AConfiguration_delete(android_app->config); + android_app->destroyed = 1; + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + // Can't touch android_app object after this. +} + + void process_input(struct android_app* app, struct android_poll_source* source) { + AInputEvent* event = NULL; + while (AInputQueue_getEvent(app->inputQueue, &event) >= 0) { + LOGV("New input event: type=%d", AInputEvent_getType(event)); + if (AInputQueue_preDispatchEvent(app->inputQueue, event)) { + continue; + } + int32_t handled = 0; + if (app->onInputEvent != NULL) handled = app->onInputEvent(app, event); + AInputQueue_finishEvent(app->inputQueue, event, handled); + } +} + + void process_cmd(struct android_app* app, struct android_poll_source* source) { + int8_t cmd = android_app_read_cmd(app); + android_app_pre_exec_cmd(app, cmd); + if (app->onAppCmd != NULL) app->onAppCmd(app, cmd); + android_app_post_exec_cmd(app, cmd); +} + + void* android_app_entry(void* param) { + struct android_app* android_app = (struct android_app*)param; + + android_app->config = AConfiguration_new(); + AConfiguration_fromAssetManager(android_app->config, android_app->activity->assetManager); + + print_cur_config(android_app); + + android_app->cmdPollSource.id = LOOPER_ID_MAIN; + android_app->cmdPollSource.app = android_app; + android_app->cmdPollSource.process = process_cmd; + android_app->inputPollSource.id = LOOPER_ID_INPUT; + android_app->inputPollSource.app = android_app; + android_app->inputPollSource.process = process_input; + + ALooper* looper = ALooper_prepare(ALOOPER_PREPARE_ALLOW_NON_CALLBACKS); + ALooper_addFd(looper, android_app->msgread, LOOPER_ID_MAIN, ALOOPER_EVENT_INPUT, NULL, + &android_app->cmdPollSource); + android_app->looper = looper; + + pthread_mutex_lock(&android_app->mutex); + android_app->running = 1; + pthread_cond_broadcast(&android_app->cond); + pthread_mutex_unlock(&android_app->mutex); + + android_main(android_app); + + android_app_destroy(android_app); + return NULL; +} + +// -------------------------------------------------------------------- +// Native activity interaction (called from main thread) +// -------------------------------------------------------------------- + + struct android_app* android_app_create(ANativeActivity* activity, + void* savedState, size_t savedStateSize) { + struct android_app* android_app = calloc(1, sizeof(struct android_app)); + android_app->activity = activity; + + pthread_mutex_init(&android_app->mutex, NULL); + pthread_cond_init(&android_app->cond, NULL); + + if (savedState != NULL) { + android_app->savedState = malloc(savedStateSize); + android_app->savedStateSize = savedStateSize; + memcpy(android_app->savedState, savedState, savedStateSize); + } + + int msgpipe[2]; + if (pipe(msgpipe)) { + LOGE("could not create pipe: %s", strerror(errno)); + return NULL; + } + android_app->msgread = msgpipe[0]; + android_app->msgwrite = msgpipe[1]; + + pthread_attr_t attr; + pthread_attr_init(&attr); + pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); + pthread_create(&android_app->thread, &attr, android_app_entry, android_app); + + // Wait for thread to start. + pthread_mutex_lock(&android_app->mutex); + while (!android_app->running) { + pthread_cond_wait(&android_app->cond, &android_app->mutex); + } + pthread_mutex_unlock(&android_app->mutex); + + return android_app; +} + + void android_app_write_cmd(struct android_app* android_app, int8_t cmd) { + if (write(android_app->msgwrite, &cmd, sizeof(cmd)) != sizeof(cmd)) { + LOGE("Failure writing android_app cmd: %s", strerror(errno)); + } +} + + void android_app_set_input(struct android_app* android_app, AInputQueue* inputQueue) { + pthread_mutex_lock(&android_app->mutex); + android_app->pendingInputQueue = inputQueue; + android_app_write_cmd(android_app, APP_CMD_INPUT_CHANGED); + while (android_app->inputQueue != android_app->pendingInputQueue) { + pthread_cond_wait(&android_app->cond, &android_app->mutex); + } + pthread_mutex_unlock(&android_app->mutex); +} + + void android_app_set_window(struct android_app* android_app, ANativeWindow* window) { + pthread_mutex_lock(&android_app->mutex); + if (android_app->pendingWindow != NULL) { + android_app_write_cmd(android_app, APP_CMD_TERM_WINDOW); + } + android_app->pendingWindow = window; + if (window != NULL) { + android_app_write_cmd(android_app, APP_CMD_INIT_WINDOW); + } + while (android_app->window != android_app->pendingWindow) { + pthread_cond_wait(&android_app->cond, &android_app->mutex); + } + pthread_mutex_unlock(&android_app->mutex); +} + + void android_app_set_activity_state(struct android_app* android_app, int8_t cmd) { + pthread_mutex_lock(&android_app->mutex); + android_app_write_cmd(android_app, cmd); + while (android_app->activityState != cmd) { + pthread_cond_wait(&android_app->cond, &android_app->mutex); + } + pthread_mutex_unlock(&android_app->mutex); +} + + void android_app_free(struct android_app* android_app) { + pthread_mutex_lock(&android_app->mutex); + android_app_write_cmd(android_app, APP_CMD_DESTROY); + while (!android_app->destroyed) { + pthread_cond_wait(&android_app->cond, &android_app->mutex); + } + pthread_mutex_unlock(&android_app->mutex); + + close(android_app->msgread); + close(android_app->msgwrite); + pthread_cond_destroy(&android_app->cond); + pthread_mutex_destroy(&android_app->mutex); + free(android_app); +} + + struct android_app* ToApp(ANativeActivity* activity) { + return (struct android_app*) activity->instance; +} + + void onDestroy(ANativeActivity* activity) { + LOGV("Destroy: %p", activity); + android_app_free(ToApp(activity)); +} + + void onStart(ANativeActivity* activity) { + LOGV("Start: %p", activity); + android_app_set_activity_state(ToApp(activity), APP_CMD_START); +} + + void onResume(ANativeActivity* activity) { + LOGV("Resume: %p", activity); + android_app_set_activity_state(ToApp(activity), APP_CMD_RESUME); +} + + void* onSaveInstanceState(ANativeActivity* activity, size_t* outLen) { + LOGV("SaveInstanceState: %p", activity); + + struct android_app* android_app = ToApp(activity); + void* savedState = NULL; + pthread_mutex_lock(&android_app->mutex); + android_app->stateSaved = 0; + android_app_write_cmd(android_app, APP_CMD_SAVE_STATE); + while (!android_app->stateSaved) { + pthread_cond_wait(&android_app->cond, &android_app->mutex); + } + + if (android_app->savedState != NULL) { + savedState = android_app->savedState; + *outLen = android_app->savedStateSize; + android_app->savedState = NULL; + android_app->savedStateSize = 0; + } + + pthread_mutex_unlock(&android_app->mutex); + + return savedState; +} + + void onPause(ANativeActivity* activity) { + LOGV("Pause: %p", activity); + android_app_set_activity_state(ToApp(activity), APP_CMD_PAUSE); +} + + void onStop(ANativeActivity* activity) { + LOGV("Stop: %p", activity); + android_app_set_activity_state(ToApp(activity), APP_CMD_STOP); +} + + void onConfigurationChanged(ANativeActivity* activity) { + LOGV("ConfigurationChanged: %p", activity); + android_app_write_cmd(ToApp(activity), APP_CMD_CONFIG_CHANGED); +} + + void onContentRectChanged(ANativeActivity* activity, const ARect* r) { + LOGV("ContentRectChanged: l=%d,t=%d,r=%d,b=%d", r->left, r->top, r->right, r->bottom); + struct android_app* android_app = ToApp(activity); + pthread_mutex_lock(&android_app->mutex); + android_app->contentRect = *r; + pthread_mutex_unlock(&android_app->mutex); + android_app_write_cmd(ToApp(activity), APP_CMD_CONTENT_RECT_CHANGED); +} + + void onLowMemory(ANativeActivity* activity) { + LOGV("LowMemory: %p", activity); + android_app_write_cmd(ToApp(activity), APP_CMD_LOW_MEMORY); +} + + void onWindowFocusChanged(ANativeActivity* activity, int focused) { + LOGV("WindowFocusChanged: %p -- %d", activity, focused); + android_app_write_cmd(ToApp(activity), focused ? APP_CMD_GAINED_FOCUS : APP_CMD_LOST_FOCUS); +} + + void onNativeWindowCreated(ANativeActivity* activity, ANativeWindow* window) { + LOGV("NativeWindowCreated: %p -- %p", activity, window); + android_app_set_window(ToApp(activity), window); +} + + void onNativeWindowDestroyed(ANativeActivity* activity, ANativeWindow* window) { + LOGV("NativeWindowDestroyed: %p -- %p", activity, window); + android_app_set_window(ToApp(activity), NULL); +} + + void onNativeWindowRedrawNeeded(ANativeActivity* activity, ANativeWindow* window) { + LOGV("NativeWindowRedrawNeeded: %p -- %p", activity, window); + android_app_write_cmd(ToApp(activity), APP_CMD_WINDOW_REDRAW_NEEDED); +} + + void onNativeWindowResized(ANativeActivity* activity, ANativeWindow* window) { + LOGV("NativeWindowResized: %p -- %p", activity, window); + android_app_write_cmd(ToApp(activity), APP_CMD_WINDOW_RESIZED); +} + + void onInputQueueCreated(ANativeActivity* activity, AInputQueue* queue) { + LOGV("InputQueueCreated: %p -- %p", activity, queue); + android_app_set_input(ToApp(activity), queue); +} + + void onInputQueueDestroyed(ANativeActivity* activity, AInputQueue* queue) { + LOGV("InputQueueDestroyed: %p -- %p", activity, queue); + android_app_set_input(ToApp(activity), NULL); +} + +void ILOVEU_ANativeActivity_onCreate(ANativeActivity* activity, void* savedState, size_t savedStateSize) { + LOGV("Creating: %p", activity); + + activity->callbacks->onConfigurationChanged = onConfigurationChanged; + activity->callbacks->onContentRectChanged = onContentRectChanged; + activity->callbacks->onDestroy = onDestroy; + activity->callbacks->onInputQueueCreated = onInputQueueCreated; + activity->callbacks->onInputQueueDestroyed = onInputQueueDestroyed; + activity->callbacks->onLowMemory = onLowMemory; + activity->callbacks->onNativeWindowCreated = onNativeWindowCreated; + activity->callbacks->onNativeWindowDestroyed = onNativeWindowDestroyed; + activity->callbacks->onNativeWindowRedrawNeeded = onNativeWindowRedrawNeeded; + activity->callbacks->onNativeWindowResized = onNativeWindowResized; + activity->callbacks->onPause = onPause; + activity->callbacks->onResume = onResume; + activity->callbacks->onSaveInstanceState = onSaveInstanceState; + activity->callbacks->onStart = onStart; + activity->callbacks->onStop = onStop; + activity->callbacks->onWindowFocusChanged = onWindowFocusChanged; + + activity->instance = android_app_create(activity, savedState, savedStateSize); +} diff --git a/.outdated/graphics/src/android_native_app_glue.h b/.outdated/graphics/src/android_native_app_glue.h new file mode 100644 index 0000000..89eafe3 --- /dev/null +++ b/.outdated/graphics/src/android_native_app_glue.h @@ -0,0 +1,350 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * 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. + */ + +#pragma once + +#include +#include +#include + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The native activity interface provided by + * is based on a set of application-provided callbacks that will be called + * by the Activity's main thread when certain events occur. + * + * This means that each one of this callbacks _should_ _not_ block, or they + * risk having the system force-close the application. This programming + * model is direct, lightweight, but constraining. + * + * The 'android_native_app_glue' static library is used to provide a different + * execution model where the application can implement its own main event + * loop in a different thread instead. Here's how it works: + * + * 1/ The application must provide a function named "android_main()" that + * will be called when the activity is created, in a new thread that is + * distinct from the activity's main thread. + * + * 2/ android_main() receives a pointer to a valid "android_app" structure + * that contains references to other important objects, e.g. the + * ANativeActivity obejct instance the application is running in. + * + * 3/ the "android_app" object holds an ALooper instance that already + * listens to two important things: + * + * - activity lifecycle events (e.g. "pause", "resume"). See APP_CMD_XXX + * declarations below. + * + * - input events coming from the AInputQueue attached to the activity. + * + * Each of these correspond to an ALooper identifier returned by + * ALooper_pollOnce with values of LOOPER_ID_MAIN and LOOPER_ID_INPUT, + * respectively. + * + * Your application can use the same ALooper to listen to additional + * file-descriptors. They can either be callback based, or with return + * identifiers starting with LOOPER_ID_USER. + * + * 4/ Whenever you receive a LOOPER_ID_MAIN or LOOPER_ID_INPUT event, + * the returned data will point to an android_poll_source structure. You + * can call the process() function on it, and fill in android_app->onAppCmd + * and android_app->onInputEvent to be called for your own processing + * of the event. + * + * Alternatively, you can call the low-level functions to read and process + * the data directly... look at the process_cmd() and process_input() + * implementations in the glue to see how to do this. + * + * See the sample named "native-activity" that comes with the NDK with a + * full usage example. Also look at the JavaDoc of NativeActivity. + */ + +struct android_app; + +/** + * Data associated with an ALooper fd that will be returned as the "outData" + * when that source has data ready. + */ +struct android_poll_source { + // The identifier of this source. May be LOOPER_ID_MAIN or + // LOOPER_ID_INPUT. + int32_t id; + + // The android_app this ident is associated with. + struct android_app* app; + + // Function to call to perform the standard processing of data from + // this source. + void (*process)(struct android_app* app, struct android_poll_source* source); +}; + +/** + * This is the interface for the standard glue code of a threaded + * application. In this model, the application's code is running + * in its own thread separate from the main thread of the process. + * It is not required that this thread be associated with the Java + * VM, although it will need to be in order to make JNI calls any + * Java objects. + */ +struct android_app { + // The application can place a pointer to its own state object + // here if it likes. + void* userData; + + // Fill this in with the function to process main app commands (APP_CMD_*) + void (*onAppCmd)(struct android_app* app, int32_t cmd); + + // Fill this in with the function to process input events. At this point + // the event has already been pre-dispatched, and it will be finished upon + // return. Return 1 if you have handled the event, 0 for any default + // dispatching. + int32_t (*onInputEvent)(struct android_app* app, AInputEvent* event); + + // The ANativeActivity object instance that this app is running in. + ANativeActivity* activity; + + // The current configuration the app is running in. + AConfiguration* config; + + // This is the last instance's saved state, as provided at creation time. + // It is NULL if there was no state. You can use this as you need; the + // memory will remain around until you call android_app_exec_cmd() for + // APP_CMD_RESUME, at which point it will be freed and savedState set to NULL. + // These variables should only be changed when processing a APP_CMD_SAVE_STATE, + // at which point they will be initialized to NULL and you can malloc your + // state and place the information here. In that case the memory will be + // freed for you later. + void* savedState; + size_t savedStateSize; + + // The ALooper associated with the app's thread. + ALooper* looper; + + // When non-NULL, this is the input queue from which the app will + // receive user input events. + AInputQueue* inputQueue; + + // When non-NULL, this is the window surface that the app can draw in. + ANativeWindow* window; + + // Current content rectangle of the window; this is the area where the + // window's content should be placed to be seen by the user. + ARect contentRect; + + // Current state of the app's activity. May be either APP_CMD_START, + // APP_CMD_RESUME, APP_CMD_PAUSE, or APP_CMD_STOP; see below. + int activityState; + + // This is non-zero when the application's NativeActivity is being + // destroyed and waiting for the app thread to complete. + int destroyRequested; + + // ------------------------------------------------- + // Below are "private" implementation of the glue code. + + pthread_mutex_t mutex; + pthread_cond_t cond; + + int msgread; + int msgwrite; + + pthread_t thread; + + struct android_poll_source cmdPollSource; + struct android_poll_source inputPollSource; + + int running; + int stateSaved; + int destroyed; + int redrawNeeded; + AInputQueue* pendingInputQueue; + ANativeWindow* pendingWindow; + ARect pendingContentRect; +}; + +enum { + /** + * Looper data ID of commands coming from the app's main thread, which + * is returned as an identifier from ALooper_pollOnce(). The data for this + * identifier is a pointer to an android_poll_source structure. + * These can be retrieved and processed with android_app_read_cmd() + * and android_app_exec_cmd(). + */ + LOOPER_ID_MAIN = 1, + + /** + * Looper data ID of events coming from the AInputQueue of the + * application's window, which is returned as an identifier from + * ALooper_pollOnce(). The data for this identifier is a pointer to an + * android_poll_source structure. These can be read via the inputQueue + * object of android_app. + */ + LOOPER_ID_INPUT = 2, + + /** + * Start of user-defined ALooper identifiers. + */ + LOOPER_ID_USER = 3, +}; + +enum { + /** + * Command from main thread: the AInputQueue has changed. Upon processing + * this command, android_app->inputQueue will be updated to the new queue + * (or NULL). + */ + APP_CMD_INPUT_CHANGED, + + /** + * Command from main thread: a new ANativeWindow is ready for use. Upon + * receiving this command, android_app->window will contain the new window + * surface. + */ + APP_CMD_INIT_WINDOW, + + /** + * Command from main thread: the existing ANativeWindow needs to be + * terminated. Upon receiving this command, android_app->window still + * contains the existing window; after calling android_app_exec_cmd + * it will be set to NULL. + */ + APP_CMD_TERM_WINDOW, + + /** + * Command from main thread: the current ANativeWindow has been resized. + * Please redraw with its new size. + */ + APP_CMD_WINDOW_RESIZED, + + /** + * Command from main thread: the system needs that the current ANativeWindow + * be redrawn. You should redraw the window before handing this to + * android_app_exec_cmd() in order to avoid transient drawing glitches. + */ + APP_CMD_WINDOW_REDRAW_NEEDED, + + /** + * Command from main thread: the content area of the window has changed, + * such as from the soft input window being shown or hidden. You can + * find the new content rect in android_app::contentRect. + */ + APP_CMD_CONTENT_RECT_CHANGED, + + /** + * Command from main thread: the app's activity window has gained + * input focus. + */ + APP_CMD_GAINED_FOCUS, + + /** + * Command from main thread: the app's activity window has lost + * input focus. + */ + APP_CMD_LOST_FOCUS, + + /** + * Command from main thread: the current device configuration has changed. + */ + APP_CMD_CONFIG_CHANGED, + + /** + * Command from main thread: the system is running low on memory. + * Try to reduce your memory use. + */ + APP_CMD_LOW_MEMORY, + + /** + * Command from main thread: the app's activity has been started. + */ + APP_CMD_START, + + /** + * Command from main thread: the app's activity has been resumed. + */ + APP_CMD_RESUME, + + /** + * Command from main thread: the app should generate a new saved state + * for itself, to restore from later if needed. If you have saved state, + * allocate it with malloc and place it in android_app.savedState with + * the size in android_app.savedStateSize. The will be freed for you + * later. + */ + APP_CMD_SAVE_STATE, + + /** + * Command from main thread: the app's activity has been paused. + */ + APP_CMD_PAUSE, + + /** + * Command from main thread: the app's activity has been stopped. + */ + APP_CMD_STOP, + + /** + * Command from main thread: the app's activity is being destroyed, + * and waiting for the app thread to clean up and exit before proceeding. + */ + APP_CMD_DESTROY, +}; + +/** + * Call when ALooper_pollAll() returns LOOPER_ID_MAIN, reading the next + * app command message. + */ +int8_t android_app_read_cmd(struct android_app* android_app); + +/** + * Call with the command returned by android_app_read_cmd() to do the + * initial pre-processing of the given command. You can perform your own + * actions for the command after calling this function. + */ +void android_app_pre_exec_cmd(struct android_app* android_app, int8_t cmd); + +/** + * Call with the command returned by android_app_read_cmd() to do the + * final post-processing of the given command. You must have done your own + * actions for the command before calling this function. + */ +void android_app_post_exec_cmd(struct android_app* android_app, int8_t cmd); + +/** + * No-op function that used to be used to prevent the linker from stripping app + * glue code. No longer necessary, since __attribute__((visibility("default"))) + * does this for us. + */ +__attribute__(( + deprecated("Calls to app_dummy are no longer necessary. See " + "https://github.com/android-ndk/ndk/issues/381."))) void +app_dummy(); + +/** + * This is the function that application code must implement, representing + * the main entry to the app. + */ +extern void android_main(struct android_app* app); + +#ifdef __cplusplus +} +#endif diff --git a/.outdated/graphics/src/animations.cpp b/.outdated/graphics/src/animations.cpp new file mode 100644 index 0000000..84df77a --- /dev/null +++ b/.outdated/graphics/src/animations.cpp @@ -0,0 +1,115 @@ + +#include "animations.h" +#include "timer.h" + +using namespace tp; +using namespace glw; + +bool tp::glw::gInTransition = false; + +halnf AnimValue::interpolate() const { + if (!mTimeAnim) { + return mVal; + } + + auto dt = gCurrentTime - mTimeStart; + if (dt > mTimeAnim) dt = mTimeAnim; + auto t = (halnf)dt / mTimeAnim; + t = (halnf)(0.511 + atan((t - 0.36) * 28) / 2.9); + t = clamp(t, 0.f, 1.f); + auto out = mValPrev + (mVal - mValPrev) * t; + return out; +} + +AnimValue::AnimValue() {} + +void AnimValue::setAnimTime(halni time) { + mTimeAnim = time; +} + +AnimValue::AnimValue(halnf val) { + mVal = val; + mValPrev = mVal; + mTimeStart = gCurrentTime; +} + +bool AnimValue::inTransition() const { + auto time_pased = gCurrentTime - mTimeStart >= mTimeAnim; + return !time_pased; +} + +void AnimValue::set(halnf val) { + if (!inTransition()) { + mValPrev = mVal; + } + + if (val == mVal) { + return; + } + + mValPrev = get(); + mVal = val; + + if (!inTransition()) { + mTimeStart = (halni)gCurrentTime; + } +} + +halnf AnimValue::getTarget() const { + return mVal; +} + +void AnimValue::setNoTransition(halnf val) { + mValPrev = val; + mVal = val; + mTimeStart -= mTimeStart; +} + +halnf AnimValue::get() const { + if (inTransition()) { + gInTransition = true; + } + return interpolate(); +} + +AnimValue::operator halnf() const { + return get(); +} + +rectf AnimRect::get() const { + return { x.get(), y.get() , z.get(), w.get() }; +} + +rectf AnimRect::getTarget() const { + return { x.getTarget(), y.getTarget() , z.getTarget(), w.getTarget() }; +} + +void AnimRect::setNoTransition(rectf rec) { + x.setNoTransition(rec.x); + y.setNoTransition(rec.y); + z.setNoTransition(rec.z); + w.setNoTransition(rec.w); +} + +void AnimRect::setAnimTime(const halni time) { + x.setAnimTime(time); + y.setAnimTime(time); + z.setAnimTime(time); + w.setAnimTime(time); +} + +void AnimRect::set(const rectf& in) { + x.set(in.x); + y.set(in.y); + z.set(in.z); + w.set(in.w); +} + +rgba AnimColor::get() const { + auto col = mColor.get(); + return rgba(col.x, col.y, col.z, col.w); +} + +void AnimColor::set(const rgba& col) { + mColor.set(rectf(col.r, col.g, col.b, col.a)); +} \ No newline at end of file diff --git a/.outdated/graphics/src/canvas.cpp b/.outdated/graphics/src/canvas.cpp new file mode 100644 index 0000000..899784a --- /dev/null +++ b/.outdated/graphics/src/canvas.cpp @@ -0,0 +1,378 @@ + +#include "canvas.h" + +#include "GraphicsLibApi.h" + +#ifdef ENV_OS_ANDROID +const char* get_android_abs_path(const char* path, bool second = false); +#define NANOVG_GLES3_IMPLEMENTATION // Use GLES3 implementation. +#else +#define NANOVG_GL3_IMPLEMENTATION // Use GL3 implementation. +#endif + +#include "nanovg.h" +#include "nanovg_gl.h" +#include "nanovg_gl_utils.h" + +using namespace tp; +using namespace glw; + +#define NVG ((NVGcontext*) mCtx) + +static const char* getFontPath() { +#ifdef ENV_OS_ANDROID + return get_android_abs_path("rsc/fonts/CONSOLAB.TTF"); +#else + return "./rsc/fonts/CONSOLAB.TTF"; +#endif + +} + +Canvas::Canvas() { + + // create context + mCtx = +#ifdef ENV_OS_ANDROID + nvgCreateGLES3 +#else + nvgCreateGL3 +#endif + (NVG_ANTIALIAS | NVG_STENCIL_STROKES +#ifdef ENV_BUILD_DEBUG + | NVG_DEBUG +#endif + ); + + mColorPrimary = rgba(0.5f, 0.5f, 0.5f, 0.9f); + mColorSecondary = rgba(0.2f, 0.2f, 0.2f, 0.9f); + + nvgCreateFont(NVG, "basic", getFontPath()); +} + +Canvas::Val& Canvas::convert2pxls(Val& val) { + val = val * mDpmm * mUIScale; + return val; +} + +Canvas::Val Canvas::as2pxls(Val val) { + return val * mDpmm * mUIScale; +} + +Canvas::Rect& Canvas::convert2pxls(Rect& rec) { + convert2pxls(rec.x); + convert2pxls(rec.y); + convert2pxls(rec.z); + convert2pxls(rec.w); + return rec; +} + +Canvas::Vec2& Canvas::convert2pxls(Vec2& vec) { + convert2pxls(vec.x); + convert2pxls(vec.y); + return vec; +} + +void Canvas::beginDraw(Rect viewport, tp::halnf dpmm, tp::halnf uiscale) { + convert2pxls(viewport); + nvgBeginFrame(NVG, viewport.size.x, viewport.size.y, 1); + + mVieport = { 0.f, 0.f, viewport.size.x, viewport.size.y }; + glViewport((GLsizei)mVieport.x, (GLsizei)mVieport.y, (GLsizei)mVieport.size.x, (GLsizei)mVieport.size.y); + + mDpmm = dpmm; + mUIScale = tp::clamp(uiscale, 0.03f, 100.f); + + mClamping = mVieport; +} + +void Canvas::resetViewport() { + glViewport((GLsizei)mVieport.x, (GLsizei)mVieport.y, (GLsizei)mVieport.size.x, (GLsizei)mVieport.size.y); +} + +void Canvas::clear(Col color) { + glClearColor(color.r, color.g, color.b, color.a); + //glClearDepth(0.f); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); +} + +void Canvas::endDraw() { + nvgEndFrame(NVG); +} + +void Canvas::setClamping(Rect rec) { + mClamping = rec; + convert2pxls(rec); + nvgScissor(NVG, rec.x, rec.y, rec.z, rec.w); +} + +void Canvas::setCol1(const Col& col) { + mColorPrimary = col; +} + +void Canvas::setCol2(const Col& col) { + mColorSecondary = col; +} + +void Canvas::rect(Rect rec, halnf rounding, halnf borders) { + convert2pxls(rec); + convert2pxls(rounding); + convert2pxls(borders); + + if (borders) { + nvgBeginPath(NVG); + + auto borders_rec = rec; + rec.pos += borders; + rec.size -= borders * 2; + + if (rounding) { + nvgRoundedRect(NVG, borders_rec.x, borders_rec.y, borders_rec.z, borders_rec.w, rounding); + } + else { + nvgRect(NVG, borders_rec.x, borders_rec.y, borders_rec.z, borders_rec.w); + } + + nvgFillColor(NVG, nvgRGBAf(mColorSecondary.r, mColorSecondary.g, mColorSecondary.b, mColorSecondary.a)); + nvgFill(NVG); + } + + nvgBeginPath(NVG); + + if (rounding) { + nvgRoundedRect(NVG, rec.x, rec.y, rec.z, rec.w, rounding); + } + else { + nvgRect(NVG, rec.x, rec.y, rec.z, rec.w); + } + nvgFillColor(NVG, nvgRGBAf(mColorPrimary.r, mColorPrimary.g, mColorPrimary.b, mColorPrimary.a)); + nvgFill(NVG); +} + +void Canvas::line(Vec2 p1, Vec2 p2, halnf thikness) { + convert2pxls(p1); + convert2pxls(p2); + convert2pxls(thikness); + + nvgBeginPath(NVG); + + nvgMoveTo(NVG, p1.x, p1.y); + nvgLineTo(NVG, p2.x, p2.y); + + nvgStrokeColor(NVG, nvgRGBAf(mColorPrimary.r, mColorPrimary.g, mColorPrimary.b, mColorPrimary.a)); + nvgStrokeWidth(NVG, thikness); + nvgStroke(NVG); +} + +void Canvas::trig(Vec2 p1, Vec2 p2, Vec2 p3) { + convert2pxls(p1); + convert2pxls(p2); + convert2pxls(p3); + + nvgBeginPath(NVG); + + nvgMoveTo(NVG, p1.x, p1.y); + nvgLineTo(NVG, p2.x, p2.y); + nvgLineTo(NVG, p3.x, p3.y); + + nvgFillColor(NVG, nvgRGBAf(mColorPrimary.r, mColorPrimary.g, mColorPrimary.b, mColorPrimary.a)); + nvgFill(NVG); +} + +void Canvas::circle(Vec2 rec, halnf radius, halnf borders) { + convert2pxls(rec); + convert2pxls(radius); + convert2pxls(borders); + DBG_BREAK(1); +} + +void Canvas::text(const char* start, const char* end, Rect rec, halnf size, Align align) { + convert2pxls(rec); + convert2pxls(size); + + nvgFillColor(NVG, nvgRGBAf(mColorPrimary.r, mColorPrimary.g, mColorPrimary.b, mColorPrimary.a)); + nvgFontSize(NVG, size); + nvgTextAlign(NVG, NVGalign(align)); + auto y = (align & Align::MIDDLE) ? rec.y + rec.w / 2 : rec.y; + auto x = (align & Align::CENTER) ? rec.x + rec.z / 2 : rec.x; + nvgText(NVG, x, y, start, end); +} + +void Canvas::text(const string text, Rect rec, halnf size, Align align) { + convert2pxls(rec); + convert2pxls(size); + + nvgFillColor(NVG, nvgRGBAf(mColorPrimary.r, mColorPrimary.g, mColorPrimary.b, mColorPrimary.a)); + nvgFontSize(NVG, size); + nvgTextAlign(NVG, NVGalign(align)); + + //nvgTextBounds(NVG, ); + + auto t_mid = rec.y + rec.w / 2; + auto t_top = rec.y; + auto res = bool(align & Align::MIDDLE); + auto y = res ? t_mid : t_top; + + auto x_mid = rec.x + rec.z / 2; + auto x_left = rec.x; + res = bool(align & Align::CENTER); + auto x = res ? x_mid : x_left; + + nvgText(NVG, x, y, text.cstr(), text.cstr() + text.size()); +} + + +void Canvas::ImageHandle::createFromBuff(glw::fbuffer* buff, Canvas* drawer) { + this->~ImageHandle(); + auto const size = buff->getSize(); + +#ifdef ENV_OS_ANDROID + mId = nvglCreateImageFromHandleGLES3((NVGcontext*)drawer->mCtx, buff->texId(), size.x, size.y, 0); +#else + mId = nvglCreateImageFromHandleGL3((NVGcontext*)drawer->mCtx, buff->texId(), (halni) size.x, (halni) size.y, 0); +#endif +} + +void Canvas::ImageHandle::free(Canvas* drawer) { + if (mId && (NVGcontext*)drawer->mCtx) { + nvgDeleteImage((NVGcontext*)drawer->mCtx, mId); + } +} + +Canvas::ImageHandle::~ImageHandle() {} + +void Canvas::drawImage(Rect rec, ImageHandle* image, halnf angle, halnf alpha, halnf rounding) { + convert2pxls(rec); + convert2pxls(rounding); + + + auto imgPaint = nvgImagePattern(NVG, rec.x, rec.y, rec.z, rec.w, angle, image->mId, alpha); + nvgBeginPath(NVG); + nvgRoundedRect(NVG, rec.x, rec.y, rec.z, rec.w, rounding); + nvgFillPaint(NVG, imgPaint); + nvgFill(NVG); +} + +void Canvas::drawColorwheel(Rect rec, const rgb& col) { + convert2pxls(rec); + + float const x = rec.x; + float const y = rec.y; + float const w = rec.z; + float const h = rec.w; + + hsv hsv = tp::hsv(col); + float const hue = hsv.h / (NVG_PI * 2); + + int i; + float r0, r1, ax, ay, bx, by, cx, cy, aeps, r; + NVGpaint paint; + + nvgSave(NVG); + + cx = x + w * 0.5f; + cy = y + h * 0.5f; + r1 = (w < h ? w : h) * 0.5f - as2pxls(1.0f); + r0 = r1 - as2pxls(3.0f); + aeps = 0.5f / r1; // half a pixel arc length in radians (2pi cancels out). + + for (i = 0; i < 6; i++) { + float a0 = (float)i / 6.0f * NVG_PI * 2.0f - aeps; + float a1 = (float)(i + 1.0f) / 6.0f * NVG_PI * 2.0f + aeps; + nvgBeginPath(NVG); + nvgArc(NVG, cx, cy, r0, a0, a1, NVG_CW); + nvgArc(NVG, cx, cy, r1, a1, a0, NVG_CCW); + nvgClosePath(NVG); + ax = cx + cosf(a0) * (r0 + r1) * 0.5f; + ay = cy + sinf(a0) * (r0 + r1) * 0.5f; + bx = cx + cosf(a1) * (r0 + r1) * 0.5f; + by = cy + sinf(a1) * (r0 + r1) * 0.5f; + paint = nvgLinearGradient(NVG, ax, ay, bx, by, nvgHSLA(a0 / (NVG_PI * 2), 1.0f, 0.55f, 255), nvgHSLA(a1 / (NVG_PI * 2), 1.0f, 0.55f, 255)); + nvgFillPaint(NVG, paint); + nvgFill(NVG); + } + + nvgBeginPath(NVG); + nvgCircle(NVG, cx, cy, r0 - 0.5f); + nvgCircle(NVG, cx, cy, r1 + 0.5f); + nvgStrokeColor(NVG, nvgRGBA(0, 0, 0, 64)); + nvgStrokeWidth(NVG, 1.0f); + nvgStroke(NVG); + + // Selector + nvgSave(NVG); + nvgTranslate(NVG, cx, cy); + nvgRotate(NVG, hue * NVG_PI * 2); + + // Marker on + nvgStrokeWidth(NVG, 2.0f); + nvgBeginPath(NVG); + nvgRect(NVG, r0 - 1, -3, r1 - r0 + 2, 6); + nvgStrokeColor(NVG, nvgRGBA(255, 255, 255, 192)); + nvgStroke(NVG); + + paint = nvgBoxGradient(NVG, r0 - 3, -5, r1 - r0 + 6, 10, 2, 4, nvgRGBA(0, 0, 0, 128), nvgRGBA(0, 0, 0, 0)); + nvgBeginPath(NVG); + nvgRect(NVG, r0 - 2 - 10, -4 - 10, r1 - r0 + 4 + 20, 8 + 20); + nvgRect(NVG, r0 - 2, -4, r1 - r0 + 4, 8); + nvgPathWinding(NVG, NVG_HOLE); + nvgFillPaint(NVG, paint); + nvgFill(NVG); + + // Center triangle + r = r0 - 6; + ax = cosf(120.0f / 180.0f * NVG_PI) * r; + ay = sinf(120.0f / 180.0f * NVG_PI) * r; + bx = cosf(-120.0f / 180.0f * NVG_PI) * r; + by = sinf(-120.0f / 180.0f * NVG_PI) * r; + nvgBeginPath(NVG); + nvgMoveTo(NVG, r, 0); + nvgLineTo(NVG, ax, ay); + nvgLineTo(NVG, bx, by); + nvgClosePath(NVG); + paint = nvgLinearGradient(NVG, r, 0, ax, ay, nvgHSLA(hue, 1.0f, 0.5f, 255), nvgRGBA(255, 255, 255, 255)); + nvgFillPaint(NVG, paint); + nvgFill(NVG); + paint = nvgLinearGradient(NVG, (r + ax) * 0.5f, (0 + ay) * 0.5f, bx, by, nvgRGBA(0, 0, 0, 0), nvgRGBA(0, 0, 0, 255)); + nvgFillPaint(NVG, paint); + nvgFill(NVG); + nvgStrokeColor(NVG, nvgRGBA(0, 0, 0, 64)); + nvgStroke(NVG); + + // Select circle on triangle + auto inner = as2pxls(3); + //auto outter = as2pxls(5); + + float yt = hsv.v * hsv.s; + float xt = hsv.v - 0.5f * yt; + ay = sinf(120.0f / 180.0f * NVG_PI) * r * (-1.0f + xt * 2.0f); + ax = cosf(120.0f / 180.0f * NVG_PI) * r * (1.0f - yt * 3.f); + nvgStrokeWidth(NVG, as2pxls(0.6f)); + nvgBeginPath(NVG); + nvgCircle(NVG, ax, ay, inner); + nvgStrokeColor(NVG, nvgRGBA(255, 255, 255, 192)); + nvgStroke(NVG); + + //paint = nvgRadialGradient(NVG, ax, ay, 4, 9, nvgRGBA(0, 0, 0, 64), nvgRGBA(0, 0, 0, 0)); + //nvgBeginPath(NVG); + //nvgRect(NVG, ax - outter, ay - outter, outter * 2, outter * 2); + //nvgCircle(NVG, ax, ay, outter); + //nvgPathWinding(NVG, NVG_HOLE); + //nvgFillPaint(NVG, paint); + //nvgFill(NVG); + + nvgRestore(NVG); + + nvgRestore(NVG); +} + + +Canvas::~Canvas() { + if (NVG) { +#ifdef ENV_OS_ANDROID + nvgDeleteGLES3(NVG); +#else + nvgDeleteGL3(NVG); +#endif + } + mCtx = NULL; +} diff --git a/.outdated/graphics/src/debugui.cpp b/.outdated/graphics/src/debugui.cpp new file mode 100644 index 0000000..dfcc0f3 --- /dev/null +++ b/.outdated/graphics/src/debugui.cpp @@ -0,0 +1,877 @@ + +#include "debugui.h" + +#include "typelist.h" +#include "stringt.h" +#include "stack.h" +#include "npple.h" +#include "rect.h" +#include "map.h" + +#include "imgui.h" +#include "imgui_internal.h" +#include "implot.h" + +// -------------- Platform Includes ---------------------- // + +#if defined ENV_OS_WINDOWS +#include "backends/imgui_impl_opengl3.h" +#include "backends/imgui_impl_win32.h" +#include +#elif defined ENV_OS_LINUX +#include "backends/imgui_impl_opengl3.h" +#include "backends/imgui_impl_glfw.h" +#elif defined ENV_OS_ANDROID +#include "backends/imgui_impl_opengl3.h" +#include "backends/imgui_impl_android.h" +#include +#include +#include +#include +#endif + + +#if defined ENV_OS_WINDOWS +extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); + +extern HWND windowsPlatformContextGetNativeWindow(tp::glw::PlatformContext* ctx); +extern UINT windowsPlatformContextGetMessage(tp::glw::PlatformContext* ctx); +extern WPARAM windowsPlatformContextGetWparam(tp::glw::PlatformContext* ctx); +extern LRESULT windowsPlatformContextGetLparam(tp::glw::PlatformContext* ctx); + +#elif defined ENV_OS_LINUX +#elif defined ENV_OS_ANDROID +extern AInputEvent* androidPlatformContextGetEvent(tp::glw::PlatformContext* ctx); +extern const char* get_android_abs_path(const char* path, bool second = false); + +const char* AndroidGetImGuiIniPath() { + static char imgui_path[512]; + auto tmp = get_android_abs_path("imgui.ini"); + memcpy(imgui_path, tmp, strlen(tmp)); + return imgui_path; +} +#endif + +static const char* getFontPath() { +#ifdef ENV_OS_ANDROID + return get_android_abs_path("rsc/fonts/CONSOLAB.TTF"); +#else + return "./rsc/fonts/CONSOLAB.TTF"; +#endif +} + +namespace tp { + namespace glw { + struct DebugUiInternalContext { + + DebugUiDrawCallBack* cb = NULL; + void* cd = NULL; + + ImGuiContext* ui_context = NULL; + ImGuiContext* vk_context = NULL; + + bool initialized = false; + + bool ui_first_drawn = false; + bool vk_first_drawn = false; + + bool ui_context_want_active = true; + bool ui_context_want_active_vk = false; + bool vk_context_want_active = false; + + tp::halnf dpmm; + tp::halnf font_size_mm; + tp::halnf ui_scale; + + struct VKState { + + struct InputButton { + char val = '?'; + char shift_val = '?'; + tp::halnf width = 1; + + void (*action)(InputButton* button, VKState* state) = [](InputButton* button, VKState* state) { + if (state->mShifted) { + ImGui::GetIO().AddInputCharacter(button->shift_val); + } + else { + ImGui::GetIO().AddInputCharacter(button->val); + } + }; + + const char* display_name = NULL; + }; + + struct Config { + InputButton** rows = NULL; + tp::halni nrows = NULL; + tp::halnf* rows_widths = NULL; + tp::halnf* rows_sizes = NULL; + }; + + bool mShifted = false; + + static const tp::uhalni mNConfigs = 2; + Config mConfigs[mNConfigs]; + tp::uhalni mActiveConfigIdx = 0; + + InputButton mCommonRow[7]; + //bool mActive = false; + + VKState() { + mCommonRow[0] = { '^', '^', 1 , [](InputButton* button, VKState* state) { state->mShifted = !state->mShifted; } }; + + mCommonRow[1] = { ' ', ' ', 1, + [](InputButton* button, VKState* state) { + state->mActiveConfigIdx++; + if (state->mActiveConfigIdx == state->mNConfigs) { + state->mActiveConfigIdx = 0; + } + }, + "..." + }; + + mCommonRow[2] = { ' ', ' ', 2 }; + + mCommonRow[3] = { '<', '<', 2, [](InputButton* button, VKState* state) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_Backspace, true); + ImGui::GetIO().AddKeyEvent(ImGuiKey_Backspace, false); + } }; + + mCommonRow[4] = { '.', '.', 1 }; + mCommonRow[5] = { '@', '@', 1 }; + + mCommonRow[6] = { ' ', ' ', 2, [](InputButton* button, VKState* state) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_Enter, true); + ImGui::GetIO().AddKeyEvent(ImGuiKey_Enter, false); + }, "Entrer" }; + + setupMainConfig(mConfigs[0]); + setupAdditionalConfig(mConfigs[1]); + } + + void setupMainConfig(Config& config) { + + static InputButton row1[] = { + {'1', '!'}, + {'2', '@'}, + {'3', '#'}, + {'4', '$'}, + {'5', '%'}, + {'6', '^'}, + {'7', '&'}, + {'8', '*'}, + {'9', '('}, + {'0', ')'}, + }; + + static InputButton row2[] = { + {'q', 'Q'}, + {'w', 'W'}, + {'e', 'E'}, + {'r', 'R'}, + {'t', 'T'}, + {'y', 'Y'}, + {'u', 'U'}, + {'i', 'I'}, + {'o', 'O'}, + {'p', 'P'}, + }; + + static InputButton row3[] = { + {'a', 'A'}, + {'s', 'S'}, + {'d', 'D'}, + {'f', 'F'}, + {'g', 'G'}, + {'h', 'H'}, + {'j', 'J'}, + {'k', 'K'}, + {'l', 'L'}, + }; + + static InputButton row4[] = { + {'z', 'Z'}, + {'x', 'X'}, + {'c', 'C'}, + {'v', 'V'}, + {'b', 'B'}, + {'n', 'N'}, + {'m', 'M'}, + }; + + static InputButton* rows[] = { + row1, + row2, + row3, + row4, + mCommonRow, + }; + + static tp::halnf rows_sizes[IM_ARRAYSIZE(rows)] = { + IM_ARRAYSIZE(row1), + IM_ARRAYSIZE(row2), + IM_ARRAYSIZE(row3), + IM_ARRAYSIZE(row4), + IM_ARRAYSIZE(mCommonRow), + }; + + static tp::halnf rows_widths[IM_ARRAYSIZE(rows)]; + for (auto row = 0; row < IM_ARRAYSIZE(rows); row++) { + for (auto butt = 0; butt < rows_sizes[row]; butt++) { + rows_widths[row] += rows[row][butt].width; + } + } + + config = { + rows, + IM_ARRAYSIZE(rows), + rows_widths, + rows_sizes, + }; + } + + void setupAdditionalConfig(Config& config) { + static InputButton row1[] = { + {'~', '~'}, + {'`', '`'}, + {'_', '_'}, + {'|', '|'}, + {'\\', '\\'}, + {'/', '/'}, + {'"', '"'}, + {'\'', '\''}, + }; + + static InputButton row2[] = { + {';', ';'}, + {':', ':'}, + {'?', '?'}, + {',', ','}, + {'[', '['}, + {']', ']'}, + {'{', '{'}, + {'}', '}'}, + {'(', '('}, + {')', ')'}, + }; + + static InputButton row3[] = { + {'-', '-'}, + {'=', '='}, + {'*', '*'}, + {'+', '+'}, + {'<', '<'}, + {'>', '>'}, + }; + + static InputButton row4[] = { + {' ', ' ', 1, [](InputButton* butt, VKState* state) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_UpArrow, true); + ImGui::GetIO().AddKeyEvent(ImGuiKey_UpArrow, false); + }, "up" }, + {' ', ' ', 1, [](InputButton* butt, VKState* state) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_DownArrow, true); + ImGui::GetIO().AddKeyEvent(ImGuiKey_DownArrow, false); + }, "down"}, + {' ', ' ', 1, [](InputButton* butt, VKState* state) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_LeftArrow, true); + ImGui::GetIO().AddKeyEvent(ImGuiKey_LeftArrow, false); + }, "left"}, + {' ', ' ', 1, [](InputButton* butt, VKState* state) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_RightArrow, true); + ImGui::GetIO().AddKeyEvent(ImGuiKey_RightArrow, false); + }, "right"}, + }; + + static InputButton* rows[] = { + row1, + row2, + row3, + row4, + mCommonRow, + }; + + static tp::halnf rows_sizes[IM_ARRAYSIZE(rows)] = { + IM_ARRAYSIZE(row1), + IM_ARRAYSIZE(row2), + IM_ARRAYSIZE(row3), + IM_ARRAYSIZE(row4), + IM_ARRAYSIZE(mCommonRow), + }; + + static tp::halnf rows_widths[IM_ARRAYSIZE(rows)]; + for (auto row = 0; row < IM_ARRAYSIZE(rows); row++) { + for (auto butt = 0; butt < rows_sizes[row]; butt++) { + rows_widths[row] += rows[row][butt].width; + } + } + + config = { + rows, + IM_ARRAYSIZE(rows), + rows_widths, + rows_sizes, + }; + } + + } mVKState; + + DebugUiInternalContext(Window& window, DebugUiDrawCallBack* acb, void* acd) { + + cb = acb; + cd = acd; + + ui_context = ImGui::CreateContext(); + ImGui::SetCurrentContext(ui_context); + ImGuiContextInit(window); + + vk_context = ImGui::CreateContext(); + ImGui::SetCurrentContext(vk_context); + ImGuiContextInit(window); + + initialized = true; + } + + void drawDebugUI(tp::halnf a_dpmm, tp::halnf a_font_size_mm, tp::halnf a_ui_scale) { + dpmm = a_dpmm; + font_size_mm = a_font_size_mm; + ui_scale = a_ui_scale; + + if (!initialized) return; + + ImGui::SetCurrentContext(ui_context); + ImGui::ApplyStyle(dpmm, font_size_mm, ui_scale); + ImGuiContextBeginFrame(); + cb(cd); + ImGuiContextEndFrame(); + ImGui::SetCurrentContext(NULL); + ui_first_drawn = true; + + if (ui_context_want_active_vk || vk_context_want_active) { + ImGui::SetCurrentContext(vk_context); + ImGui::ApplyStyle(dpmm, font_size_mm, ui_scale); + ImGuiContextBeginFrame(); + VirtualKeyboard(dpmm, font_size_mm, ui_scale); + ImGuiContextEndFrame(); + ImGui::SetCurrentContext(NULL); + + vk_first_drawn = true; + } + } + + ~DebugUiInternalContext() { + if (!initialized) return; + + ImGui::SetCurrentContext(ui_context); + ImGuiContextDeinit(); + ImGui::DestroyContext(ui_context); + + ImGui::SetCurrentContext(vk_context); + ImGuiContextDeinit(); + ImGui::DestroyContext(vk_context); + } + + private: + + void ImGuiContextInit(Window& window) { +#if defined ENV_OS_WINDOWS + ImGui_ImplOpenGL3_Init(); + ImGui_ImplWin32_Init(window.platform_window()); + window.mNativeEventListeners.put("imgui", { + nativeWindowEventListenerWrapBegin, + nativeWindowEventListenerWrap, + nativeWindowEventListenerWrapEnd, + this + }); +#elif defined ENV_OS_LINUX + ImGui_ImplOpenGL3_Init(); + ImGui_ImplGlfw_InitForOpenGL((GLFWwindow*)window.platform_window(), true); +#elif defined ENV_OS_ANDROID + ImGui_ImplOpenGL3_Init("#version 300 es"); + ImGui_ImplAndroid_Init((ANativeWindow*)window.platform_window()); + ImGui::GetIO().IniFilename = AndroidGetImGuiIniPath(); + window.mNativeEventListeners.put("imgui", { + nativeWindowEventListenerWrapBegin, + nativeWindowEventListenerWrap, + nativeWindowEventListenerWrapEnd, + this + }); +#endif + } + + void ImGuiContextBeginFrame() { +#if defined ENV_OS_WINDOWS + ImGui_ImplWin32_NewFrame(); + ImGui_ImplOpenGL3_NewFrame(); +#elif defined ENV_OS_LINUX + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplGlfw_NewFrame(); +#elif defined ENV_OS_ANDROID + ImGui_ImplOpenGL3_NewFrame(); + ImGui_ImplAndroid_NewFrame(); +#endif + ImGui::NewFrame(); + } + + void ImGuiContextEndFrame() { + ImGui::Render(); + +#if defined ENV_OS_WINDOWS + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +#elif defined ENV_OS_LINUX + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +#elif defined ENV_OS_ANDROID + ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); +#endif + } + + void ImGuiContextDeinit() { +#if defined ENV_OS_WINDOWS + ImGui_ImplWin32_Shutdown(); +#elif defined ENV_OS_LINUX + ImGui_ImplGlfw_Shutdown(); +#elif defined ENV_OS_ANDROID + ImGui_ImplAndroid_Shutdown(); +#endif + ImGui_ImplOpenGL3_Shutdown(); + } + + void nativeWindowEventListenerPlatform(tp::glw::PlatformContext* ctx) { +#if defined ENV_OS_WINDOWS + auto native_window = windowsPlatformContextGetNativeWindow(ctx); + auto message = windowsPlatformContextGetMessage(ctx); + auto w_param = windowsPlatformContextGetWparam(ctx); + auto l_param = windowsPlatformContextGetLparam(ctx); + // IMGUI : needs to be commented out + //if (bd->MouseButtonsDown == 0 && ::GetCapture() == nullptr) + // ::SetCapture(hwnd); + ImGui_ImplWin32_WndProcHandler(native_window, message, w_param, l_param); +#elif defined ENV_OS_LINUX +#elif defined ENV_OS_ANDROID + + auto aev = androidPlatformContextGetEvent(ctx); + + int32_t event_type = AInputEvent_getType(aev); + + ImGui_ImplAndroid_HandleInputEvent(aev); + + auto& io = ImGui::GetIO(); + + if (event_type == AINPUT_EVENT_TYPE_MOTION); { + int32_t event_action = AMotionEvent_getAction(aev); + int32_t event_pointer_index = (event_action & AMOTION_EVENT_ACTION_POINTER_INDEX_MASK) >> AMOTION_EVENT_ACTION_POINTER_INDEX_SHIFT; + event_action &= AMOTION_EVENT_ACTION_MASK; + + if ((AMotionEvent_getToolType(aev, event_pointer_index) == AMOTION_EVENT_TOOL_TYPE_FINGER) + || (AMotionEvent_getToolType(aev, event_pointer_index) == AMOTION_EVENT_TOOL_TYPE_UNKNOWN)) { + + if (event_action == AMOTION_EVENT_ACTION_DOWN) { + io.AddMousePosEvent(AMotionEvent_getX(aev, event_pointer_index), AMotionEvent_getY(aev, event_pointer_index)); + } + else if (event_action == AMOTION_EVENT_ACTION_UP) { + io.AddMousePosEvent(AMotionEvent_getX(aev, event_pointer_index), AMotionEvent_getY(aev, event_pointer_index)); + if (!ui_context_want_active_vk || vk_context_want_active) { + io.AddMousePosEvent(-1, -1); + } + } + } + } +#endif + } + + void nativeWindowEventListenerBegin(tp::glw::PlatformContext* ctx) { + vk_context_want_active = vk_context->IO.WantCaptureMouse || vk_context->IO.WantSetMousePos; + + ui_context_want_active_vk = ui_context->IO.WantTextInput; + ui_context_want_active = ui_context->IO.WantCaptureKeyboard || ui_context->IO.WantCaptureMouse || ui_context->IO.WantSetMousePos; + } + + void nativeWindowEventListener(tp::glw::PlatformContext* ctx) { + + // proc vk + if ((ui_context_want_active_vk || vk_context_want_active) && vk_first_drawn) { + ImGui::SetCurrentContext(vk_context); + nativeWindowEventListenerPlatform(ctx); + + while (vk_context->InputEventsQueue.Size) { + ImGui::ApplyStyle(dpmm, font_size_mm, ui_scale); + ImGui::NewFrame(); + VirtualKeyboard(dpmm, font_size_mm, ui_scale); + ImGui::Render(); + + vk_context_want_active |= vk_context->IO.WantCaptureMouse || vk_context->IO.WantSetMousePos; + } + + vk_context_want_active |= vk_context->IO.WantCaptureMouse || vk_context->IO.WantSetMousePos; + + ImGui::SetCurrentContext(NULL); + } + + // proc ui + if (!vk_context_want_active && ui_first_drawn) { + ImGui::SetCurrentContext(ui_context); + nativeWindowEventListenerPlatform(ctx); + + while (ui_context->InputEventsQueue.Size) { + ImGui::ApplyStyle(dpmm, font_size_mm, ui_scale); + ImGui::NewFrame(); + cb(cd); + ImGui::Render(); + + ui_context_want_active_vk |= ui_context->IO.WantTextInput; + ui_context_want_active |= ui_context->IO.WantCaptureKeyboard || ui_context->IO.WantCaptureMouse || ui_context->IO.WantSetMousePos; + } + + ImGui::SetCurrentContext(NULL); + } + } + + void nativeWindowEventListenerEnd(tp::glw::PlatformContext* ctx) {} + + static void nativeWindowEventListenerWrapBegin(tp::glw::PlatformContext* ctx, void* cd) { ((DebugUiInternalContext*)cd)->nativeWindowEventListenerBegin(ctx); } + static void nativeWindowEventListenerWrap(tp::glw::PlatformContext* ctx, void* cd) { ((DebugUiInternalContext*)cd)->nativeWindowEventListener(ctx); } + static void nativeWindowEventListenerWrapEnd(tp::glw::PlatformContext* ctx, void* cd) { ((DebugUiInternalContext*)cd)->nativeWindowEventListenerEnd(ctx); } + + void VirtualKeyboard(tp::halnf dpmm, tp::halnf font_size_mm, tp::halnf ui_scale) { + auto& config = mVKState.mConfigs[mVKState.mActiveConfigIdx]; + + ImGuiID dockspace_id = ImGui::DockSpaceOverViewport(0, ImGuiDockNodeFlags_PassthruCentralNode); + + ImGuiDockNode* node = ImGui::DockContextFindNodeByID(ImGui::GetCurrentContext(), dockspace_id); + + if (!node->IsSplitNode()) { + node->MergedFlags |= ImGuiDockNodeFlags_HiddenTabBar; + ImGuiID dock_id = ImGui::DockBuilderSplitNode(dockspace_id, ImGuiDir_Down, 0.33f, nullptr, &dockspace_id); + ImGui::DockBuilderDockWindow("VK", dock_id); + } + + + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 0.f, 0.f }); + ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.f); + ImGui::PushStyleVar(ImGuiStyleVar_WindowMinSize, { 50 * dpmm, 30 * dpmm }); + ImGui::Begin("VK"); + ImGui::PopStyleVar(3); + + auto pos = ImGui::GetCursorPos(); + + auto width = ImGui::GetWindowWidth(); + auto height = ImGui::GetWindowHeight() - pos.y; + //auto scale = dpmm * ui_scale; + auto padding = dpmm * 2 * ui_scale; + auto button_sizey = (tp::halnf)(height - (config.nrows + 1) * padding) / config.nrows; + + tp::vec2f crs = { pos.x + padding, pos.y + padding }; + + for (auto row = 0; row < config.nrows; row++) { + tp::halnf butt_scalex = (width - (config.rows_sizes[row] + 1) * padding) / config.rows_widths[row]; + + crs.x = pos.x + padding; + + for (auto butt = 0; butt < config.rows_sizes[row]; butt++) { + auto& button = config.rows[row][butt]; + + ImGui::SetCursorPos({ crs.x, crs.y }); + + char name[2] = { mVKState.mShifted ? button.shift_val : button.val, 0 }; + + ImGui::PushID(&button); + if (!ImGui::Button(button.display_name ? button.display_name: name, { butt_scalex * button.width, button_sizey })) { + crs.x += butt_scalex * button.width + padding; + ImGui::PopID(); + continue; + } + + ImGui::SetCurrentContext(ui_context); + button.action(&button, &mVKState); + ImGui::SetCurrentContext(vk_context); + + ImGui::PopID(); + } + + crs.y += button_sizey + padding; + } + + ImGui::End(); + } + }; + } +} + +tp::glw::DebugUI::DebugUI(Window& window, DebugUiDrawCallBack* acb, void* acd) { + mDPMM = window.mDevice.mDPMM; + + // map device size to font and ui size + { + auto device_max = 600.f; + auto device_min = 50.f; + auto device = tp::clamp(window.mDevice.Size.x / mDPMM, device_min, device_max); + auto device_factor = (device - device_min) / (device_max - device_min); + + auto font_min = 2.f; + auto font_max = 3.5f; + mFontSizeMM = (font_max - font_min) * device_factor + font_min; + + auto ui_max = 1.f; + auto ui_min = 0.45f; + mUIScale = (ui_max - ui_min) * device_factor + ui_min; + } + + mCtx = new DebugUiInternalContext(window, acb, acd); +} + +void tp::glw::DebugUI::drawDebugUI(tp::halnf dpmm) { + mDPMM = dpmm; + mCtx->drawDebugUI(mDPMM, mFontSizeMM, mUIScale); +} + +tp::glw::DebugUI::~DebugUI() { + delete mCtx; +} + +// ------------------------------------------------------ // + +static const int sWindowFrameFlags = (ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoBackground | ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoDecoration); + +bool ImGui::SubMenuBegin(const char* desc, int level) { + if (level == 1) { + ImGui::Separator(); + } + if (ImGui::TreeNode(desc)) { + GImGui->Style.IndentSpacing = 6; + return true; + } + return false; +} + +void ImGui::SubMenuEnd(int level) { + ImGui::TreePop(); +} + +void ImGui::ToolTip(const char* desc) { + ImGui::SameLine(); + ImGui::TextDisabled("*"); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f); + ImGui::TextUnformatted(desc); + ImGui::PopTextWrapPos(); + ImGui::EndTooltip(); + } +} + +ImGui::PopupData ImGui::HoverPopupBeginButton(const char* id, tp::vec2f butsize, tp::vec2f popupsize) { + ImVec2 curs = ImGui::GetCursorScreenPos(); + tp::vec2f popup_pos = tp::vec2f(curs.x + butsize.x / 2.f - popupsize.x / 2.f, (curs.y + butsize.y + 7)); + ImGui::Button(id, ImVec2(butsize.x, butsize.y)); ImGui::SameLine(); + return HoverPopupBegin(id, popupsize, popup_pos); +} + +ImGui::PopupData ImGui::HoverPopupBegin(const char* str_id, tp::vec2f size, tp::vec2f pos_p, ImGuiPopupFlags popup_flags) { + ImGui::PopupData out; + out.ishovered = ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup); + + if (out.ishovered) { + ImVec2 pos; + + if (pos_p == tp::vec2f(-1)) { + pos = GImGui->CurrentWindow->DC.CursorPos; + } + else { + pos.x = pos_p.x; + pos.y = pos_p.y; + } + + ImGui::SetNextWindowPos(pos); + out.p1 = { pos.x, pos.y }; + + ImGui::OpenPopup(str_id); + + out.p2 = out.p1; + out.p2.x += ImGui::GetWindowWidth(); + } + + if (BeginPopup(str_id, ImGuiWindowFlags_NoMove)) { + out.opened = true; + + auto pos = GetWindowPos(); + out.p1 = { pos.x, pos.y }; + out.p2 = out.p1; + out.p2.x += ImGui::GetWindowWidth(); + + } + return out; +} + +void ImGui::HoverPopupEnd(ImGui::PopupData& in) { + + if (!in.opened) { + return; + } + + in.ishovered |= IsWindowHovered(ImGuiHoveredFlags_AllowWhenBlockedByPopup | ImGuiHoveredFlags_AllowWhenBlockedByActiveItem | ImGuiHoveredFlags_ChildWindows); + + tp::vec2f mousepos = { ImGui::GetMousePos().x, ImGui::GetMousePos().y }; + tp::halnf tollerance = 10; + tp::rectf tollerace_rect = tp::rectf(tp::vec2f(in.p1.x, in.p1.y - tollerance), tp::vec2f(in.p2.x - in.p1.x, tollerance * 2.f)); + bool is_tollerance = tollerace_rect.inside(mousepos); + + if (!(in.ishovered || is_tollerance)) { + CloseCurrentPopup(); + } + + EndPopup(); +} + +#define VAL(val) (val * dpmm / 3 * ui_scale) +#define VEC(x, y) ImVec2(x * dpmm / 3, y * dpmm / 3 * ui_scale) + +void ImGui::ApplyStyle(tp::halnf dpmm, float font_size_mm, float ui_scale) { + + ImGuiStyle* style = &ImGui::GetStyle(); + auto& io = ImGui::GetIO(); + bool first_init = io.Fonts->Fonts.Size == 0; + auto font_path = getFontPath(); + + // supports PDMM from 0.3 to 10 + const float min_dpmm = 0.3f; + const float max_dpmm = 20.f; + dpmm = tp::clamp(dpmm, min_dpmm, max_dpmm); + + // calc font + const float font_size_mm_max = 10; + const float font_size_pixels_min = 9; + float font_size_mm_min = font_size_pixels_min / dpmm; + const int font_quality_steps = 3; + font_size_mm = tp::clamp(font_size_mm, font_size_mm_min, font_size_mm_max); + + float font_sizes[font_quality_steps]; + for (auto i = 0; i < font_quality_steps; i++) { + auto mm = font_size_mm_min + (font_size_mm_max - font_size_mm_min) * tp::pow(((tp::halnf) (i + 1) / font_quality_steps), 3); + font_sizes[i] = dpmm * mm; + } + + if (first_init) { + for (auto i = 0; i < font_quality_steps; i++) { + io.Fonts->AddFontFromFileTTF(font_path, font_sizes[i] * 1); + } + } + + // select fonts + auto const pixels_required = dpmm * font_size_mm; + auto idx = -1; + for (auto i = 0; i < font_quality_steps; i++) { + idx = i; + if (pixels_required <= font_sizes[i]) { + break; + } + } + DBG_BREAK(idx == -1); + io.FontDefault = io.Fonts->Fonts[idx]; + io.FontGlobalScale = font_size_mm / (font_size_mm_min + ((font_size_mm_max - font_size_mm_min) / font_quality_steps) * (idx + 1)); + io.FontGlobalScale = pixels_required / font_sizes[idx]; + + auto rounding = VAL(5); + auto pudding = VEC(7, 7); + + style->WindowPadding = pudding; + style->WindowRounding = rounding; + //style->WindowMinSize = VEC(11, 11); + style->ChildRounding = rounding; + style->PopupRounding = rounding; + style->FramePadding = pudding; + style->FrameRounding = rounding; + style->ItemSpacing = VEC(4, 11); + style->ItemInnerSpacing = VEC(9, 4); + style->CellPadding = pudding; + style->TouchExtraPadding = pudding; + style->IndentSpacing = VAL(25); + style->ColumnsMinSpacing = VAL(5); + style->ScrollbarSize = VAL(16); + style->ScrollbarRounding = rounding; + style->GrabMinSize = VAL(2); + style->GrabRounding = rounding; + style->LogSliderDeadzone = VAL(2); + style->TabRounding = rounding; + style->TabMinWidthForCloseButton = VAL(5); + style->DisplayWindowPadding = pudding; + style->DisplaySafeAreaPadding = pudding; + style->MouseCursorScale = VAL(5); + + style->FrameBorderSize = VAL(0); + style->WindowBorderSize = VAL(1.5f); + style->ChildBorderSize = VAL(2); + + style->WindowTitleAlign = VEC(0.5f, 0.6f); + style->WindowMenuButtonPosition = ImGuiDir_Right; + + if (!first_init) + return; + + ImVec4* colors = ImGui::GetStyle().Colors; + colors[ImGuiCol_Text] = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); + colors[ImGuiCol_TextDisabled] = ImVec4(0.86f, 0.86f, 0.86f, 1.00f); + colors[ImGuiCol_WindowBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_ChildBg] = ImVec4(0.09f, 0.09f, 0.10f, 1.00f); + colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.10f, 1.00f); + colors[ImGuiCol_Border] = ImVec4(0.06f, 0.06f, 0.06f, 1.00f); + colors[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_FrameBg] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_FrameBgHovered] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_FrameBgActive] = ImVec4(0.43f, 0.43f, 0.53f, 1.00f); + colors[ImGuiCol_TitleBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_TitleBgActive] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_MenuBarBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_ScrollbarBg] = ImVec4(0.09f, 0.09f, 0.10f, 0.00f); + colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.15f, 0.15f, 0.19f, 1.00f); + colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.21f, 0.20f, 0.25f, 1.00f); + colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.30f, 0.29f, 0.35f, 1.00f); + colors[ImGuiCol_CheckMark] = ImVec4(0.26f, 0.48f, 0.50f, 1.00f); + colors[ImGuiCol_SliderGrab] = ImVec4(0.53f, 0.57f, 0.64f, 1.00f); + colors[ImGuiCol_SliderGrabActive] = ImVec4(0.69f, 0.74f, 0.83f, 1.00f); + colors[ImGuiCol_Button] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_ButtonHovered] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_ButtonActive] = ImVec4(0.43f, 0.43f, 0.53f, 1.00f); + colors[ImGuiCol_Header] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_HeaderHovered] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_HeaderActive] = ImVec4(0.33f, 0.33f, 0.40f, 1.00f); + colors[ImGuiCol_Separator] = ImVec4(0.37f, 0.37f, 0.40f, 1.00f); + colors[ImGuiCol_SeparatorHovered] = ImVec4(0.33f, 0.35f, 0.38f, 1.00f); + colors[ImGuiCol_SeparatorActive] = ImVec4(0.37f, 0.39f, 0.42f, 1.00f); + colors[ImGuiCol_ResizeGrip] = ImVec4(0.16f, 0.17f, 0.19f, 1.00f); + colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.33f, 0.35f, 0.38f, 1.00f); + colors[ImGuiCol_ResizeGripActive] = ImVec4(0.28f, 0.34f, 0.42f, 1.00f); + colors[ImGuiCol_Tab] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_TabHovered] = ImVec4(0.23f, 0.23f, 0.28f, 1.00f); + colors[ImGuiCol_TabActive] = ImVec4(0.23f, 0.23f, 0.28f, 1.00f); + colors[ImGuiCol_TabUnfocused] = ImVec4(0.11f, 0.15f, 0.17f, 1.00f); + colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.43f, 0.45f, 0.48f, 1.00f); + colors[ImGuiCol_DockingPreview] = ImVec4(0.81f, 0.81f, 0.81f, 0.18f); + colors[ImGuiCol_DockingEmptyBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_PlotLines] = ImVec4(0.61f, 0.61f, 0.61f, 1.00f); + colors[ImGuiCol_PlotLinesHovered] = ImVec4(0.33f, 0.35f, 0.38f, 1.00f); + colors[ImGuiCol_PlotHistogram] = ImVec4(0.90f, 0.70f, 0.00f, 1.00f); + colors[ImGuiCol_PlotHistogramHovered] = ImVec4(0.49f, 0.51f, 0.54f, 1.00f); + colors[ImGuiCol_TableHeaderBg] = ImVec4(0.13f, 0.13f, 0.20f, 1.00f); + colors[ImGuiCol_TableBorderStrong] = ImVec4(0.31f, 0.31f, 0.35f, 1.00f); + colors[ImGuiCol_TableBorderLight] = ImVec4(0.23f, 0.23f, 0.25f, 1.00f); + colors[ImGuiCol_TableRowBg] = ImVec4(0.23f, 0.20f, 0.20f, 0.00f); + colors[ImGuiCol_TableRowBgAlt] = ImVec4(1.00f, 1.00f, 1.00f, 0.06f); + colors[ImGuiCol_TextSelectedBg] = ImVec4(0.26f, 0.59f, 0.98f, 0.35f); + colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 0.90f); + colors[ImGuiCol_NavHighlight] = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); + colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f); + colors[ImGuiCol_NavWindowingDimBg] = ImVec4(0.38f, 0.22f, 0.22f, 0.20f); + colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); + + colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.10f, 1.00f); + colors[ImGuiCol_DockingPreview] = ImVec4(0.64f, 0.75f, 0.83f, 0.18f); + colors[ImGuiCol_TabHovered] = ImVec4(0.39f, 0.39f, 0.47f, 1.00f); + colors[ImGuiCol_TabActive] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_TabUnfocused] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.24f, 0.24f, 0.29f, 1.00f); + colors[ImGuiCol_Border] = ImVec4(0.65f, 0.65f, 0.65f, 0.70f); + + io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; +} diff --git a/.outdated/graphics/src/fbuffer.cpp b/.outdated/graphics/src/fbuffer.cpp new file mode 100644 index 0000000..369caa0 --- /dev/null +++ b/.outdated/graphics/src/fbuffer.cpp @@ -0,0 +1,116 @@ + +#include "fbuffer.h" + +#include "GraphicsLibApi.h" + +void glerr(GLenum type); +#define AssertGL(x) { x; GLenum __gle = glGetError(); if (__gle != GL_NO_ERROR) glerr(__gle); } + +namespace tp { + + using namespace glw; + + fbuffer::fbuffer(const vec2f& size) : mSize(size) { + mDrawBuffers[0] = {GL_COLOR_ATTACHMENT0}; + + // --------- texture --------- + AssertGL(glGenTextures(1, &mTextureId)); + AssertGL(glBindTexture(GL_TEXTURE_2D, mTextureId)); + // Give an empty image to OpenGL ( the last "0" ) + AssertGL(glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)size.x, (GLsizei)size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0)); + // Poor filtering. Needed + AssertGL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + AssertGL(glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + + // --------- depth --------- + AssertGL(glGenRenderbuffers(1, &mDepthBufferID)); + AssertGL(glBindRenderbuffer(GL_RENDERBUFFER, mDepthBufferID)); + AssertGL(glRenderbufferStorage(GL_RENDERBUFFER, GLW_CONTEXT_DEPTH_COMPONENT, (GLsizei)size.x, (GLsizei)size.y)); + + // ------------ framebuffer ------------ + AssertGL(glGenFramebuffers(1, &mFrameBufferID)); + AssertGL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID)); + AssertGL(glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthBufferID)); + // Set "renderedTexture" as our colour attachement #0 + AssertGL(glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, mTextureId, 0)); + // Set the list of draw buffers. + AssertGL(glDrawBuffers(1, mDrawBuffers)); // "1" is the size of DrawBuffers + assert(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + } + + fbuffer::fbuffer(const vec2f& size, tp::uint1 samples) : mSize(size) { + mDrawBuffers[0] = { GL_COLOR_ATTACHMENT0 }; + + // ------- texture --------- + AssertGL(glGenTextures(1, &mTextureId)); + AssertGL(glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, mTextureId)); +#ifdef ENV_OS_ANDROID + AssertGL(glTexStorage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples, GL_RGBA, (GLsizei)size.x, (GLsizei)size.y, GL_TRUE)); +#else + AssertGL(glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, samples, GL_RGBA, (GLsizei)size.x, (GLsizei)size.y, GL_TRUE)); +#endif + // !? + //AssertGL(glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + //AssertGL(glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + + // ------- depth ------- + AssertGL(glGenRenderbuffers(1, &mDepthBufferID)); + AssertGL(glBindRenderbuffer(GL_RENDERBUFFER, mDepthBufferID)); + AssertGL(glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, GLW_CONTEXT_DEPTH_COMPONENT, (GLsizei)size.x, (GLsizei)size.y)); + + // ------- fbuff ------- + AssertGL(glGenFramebuffers(1, &mFrameBufferID)); + AssertGL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID)); + AssertGL(glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, mTextureId, 0)); + AssertGL(glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, mDepthBufferID)); + AssertGL(glDrawBuffers(1, mDrawBuffers)); + assert(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE); + glBindFramebuffer(GL_FRAMEBUFFER, 0); + } + + tp::uint4 fbuffer::buffId() const { + return mFrameBufferID; + } + + void fbuffer::beginDraw() { + AssertGL(glBindFramebuffer(GL_FRAMEBUFFER, mFrameBufferID)); + setViewport({ 0.f, 0.f, mSize.x, mSize.y }); + } + + void fbuffer::setViewport(const rectf& viewport) { + AssertGL(glViewport((GLsizei)viewport.x, (GLsizei)viewport.y, (GLsizei)viewport.z, (GLsizei)viewport.w)); + } + + void fbuffer::clear() { + AssertGL(glClearColor(mClearCol.r, mClearCol.g, mClearCol.b, mClearCol.a)); + AssertGL(glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)); + } + + void fbuffer::endDraw() { + glBindFramebuffer(GL_FRAMEBUFFER, 0); + glClearColor(0, 0, 0, 0); + glUseProgram(0); + } + + fbuffer::~fbuffer() { + glDeleteFramebuffers(1, &mFrameBufferID); + glDeleteTextures(1, &mTextureId); + glDeleteRenderbuffers(1, &mDepthBufferID); + } + + uhalni glw::fbuffer::sizeAllocatedMem() const { + return uhalni(sizeof(GLenum) * 4 + mSize.sizeAllocatedMem() + (sizeof(mClearCol) + 1) * (alni) mSize.x * (alni) mSize.y); + } + + uhalni glw::fbuffer::sizeUsedMem() const { + return sizeAllocatedMem(); + } + + uint4 glw::fbuffer::texId() const { + return mTextureId; + } + + const vec2f& fbuffer::getSize() const { return mSize; } + +}; \ No newline at end of file diff --git a/.outdated/graphics/src/linux_window.cpp b/.outdated/graphics/src/linux_window.cpp new file mode 100644 index 0000000..1162d2f --- /dev/null +++ b/.outdated/graphics/src/linux_window.cpp @@ -0,0 +1,282 @@ + +#include "window.h" + +#include "GL/glew.h" +#include "GLFW/glfw3.h" + +#include +#include + +tp::glw::Window::Device tp::glw::Window::mDevice; + +static void glfw_error_callback(int error, const char* description) { + std::cout << stderr << "Glfw Error" << error << " " << description << "\n"; +} + +void tp::glw::Window::init() { + tp::glw::Window::mDevice.Size; + tp::glw::Window::mDevice.FrameRate; + + // Setup window + + setenv("DISPLAY", ":0.0", 0); // does overwrite + + glfwSetErrorCallback(glfw_error_callback); + RelAssert(glfwInit()); + + + // GL 3.0 + GLSL 130 + const char* glsl_version = "#version 130"; + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only + glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // 3.0+ only + + glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); + + GLFWmonitor* primary = glfwGetPrimaryMonitor(); + auto mode = glfwGetVideoMode(primary); + + tp::glw::Window::mDevice.Size = { mode->width, mode->height }; + tp::glw::Window::mDevice.FrameRate = mode->refreshRate; +} + +#define MAP_EV(SYSKEY, code) case SYSKEY: { self->mEvents.mKeysQueue.push(tp::KeyEvent{ code, state }); break; } + +namespace tp { + namespace glw { + struct PlatformContext { + + GLFWwindow* window; + tp::glw::Window* window_ctx = NULL; + + PlatformContext(tp::glw::Window* a_window_ctx) { + + window_ctx = a_window_ctx; + + // Create window with graphics context + window = glfwCreateWindow(300, 300, " ", NULL, NULL); + RelAssert(window); + + glfwMakeContextCurrent(window); + + GLenum err = glewInit(); + if (GLEW_OK != err) + { + std::cout << stderr << "Error:" << glewGetErrorString(err); + RelAssert(0); + } + + glfwSwapInterval(1); // Enable vsync + + glfwSetWindowUserPointer(window, window_ctx); + + glfwSetKeyCallback(window, key_callback); + glfwSetMouseButtonCallback(window, mouse_button_callback); + glfwSetScrollCallback(window, scroll_callback); + } + + void applyAppearance(tp::glw::Window::Appearence& appear, tp::glw::Window::Appearence& prev, tp::glw::Window* win_ctx) { + + if (!(appear.mSize == prev.mSize)) { + glfwSetWindowSize(window, appear.mSize.x, appear.mSize.y); + prev.mSize = appear.mSize; + } + + if (!(appear.mPos == prev.mPos)) { + //glfwSetWindowPos(window, appear.mPos.x, appear.mPos.y); + + win_ctx->mEvents.mCursor -= appear.mPos - prev.mPos; + //win_ctx->mEvents.mCursorPrev -= appear.mPos - prev.mPos; + prev.mPos = appear.mPos; + } + + if (!(appear.mSizeMax == prev.mSizeMax && appear.mSizeMin == prev.mSizeMin)) { + glfwSetWindowSizeLimits(window, appear.mSizeMin.x, appear.mSizeMin.y, appear.mSizeMax.x, appear.mSizeMax.y); + prev.mSizeMax = appear.mSizeMax; + prev.mSizeMin = appear.mSizeMin; + } + + if (!(appear.mMaximized == prev.mMaximized)) { + DBG_BREAK(1); + } + + if (!(appear.mMinimized == prev.mMinimized)) { + DBG_BREAK(1); + } + + int width, height; + glfwGetWindowSize(window, &width, &height); + appear.mSize = { width, height }; + prev.mSize = appear.mSize; + + glfwGetWindowPos(window, &width, &height); + appear.mPos = { width, height }; + prev.mPos = appear.mPos; + } + + void beginDraw() { + //int display_w, display_h; + //glfwGetFramebufferSize(window, &display_w, &display_h); + //glViewport(0, 0, display_w, display_h); + //glClearColor(0, 0, 0, 0); + //glClear(GL_COLOR_BUFFER_BIT); + } + + void endDraw() { + glfwSwapBuffers(window); + } + + void pollEvents() { + + glfwPollEvents(); + + double xpos, ypos; + glfwGetCursorPos(window, &xpos, &ypos); + + window_ctx->mEvents.mCursorPrev = window_ctx->mEvents.mCursor; + window_ctx->mEvents.mCursor = { xpos, ypos }; + } + + static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) { + auto self = (tp::glw::Window*) glfwGetWindowUserPointer(window); + + if (action != GLFW_PRESS && action != GLFW_RELEASE) { + return; + } + + auto state = (action == GLFW_RELEASE) ? tp::KeyEvent::EventState::RELEASED : tp::KeyEvent::EventState::PRESSED; + + //* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) + if (key >= GLFW_KEY_0 && key <= GLFW_KEY_9) { + self->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode(key), state }); + return; + } + + //* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) + else if (key >= GLFW_KEY_A && key <= GLFW_KEY_Z) { + self->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode(key), state }); + return; + } + + switch (key) { + MAP_EV(GLFW_KEY_LEFT_SHIFT, tp::Keycode::LEFT_SHIFT); + MAP_EV(GLFW_KEY_LEFT, tp::Keycode::LEFT); + MAP_EV(GLFW_KEY_RIGHT, tp::Keycode::RIGHT); + MAP_EV(GLFW_KEY_UP, tp::Keycode::UP); + MAP_EV(GLFW_KEY_DOWN, tp::Keycode::DOWN); + MAP_EV(GLFW_KEY_BACKSPACE, tp::Keycode::BACKSPACE); + MAP_EV(GLFW_KEY_LEFT_CONTROL, tp::Keycode::LEFT_CONTROL); + MAP_EV(GLFW_KEY_MENU, tp::Keycode::LEFT_ALT); + MAP_EV(GLFW_KEY_ENTER, tp::Keycode::ENTER); + MAP_EV(GLFW_KEY_SPACE, tp::Keycode::SPACE); + MAP_EV(GLFW_KEY_COMMA, tp::Keycode::COMMA); + MAP_EV(GLFW_KEY_PERIOD, tp::Keycode::PERIOD); + MAP_EV(GLFW_KEY_TAB, tp::Keycode::TAB); + MAP_EV(GLFW_KEY_EQUAL, tp::Keycode::EQUAL); + MAP_EV(GLFW_KEY_MINUS, tp::Keycode::MINUS); + MAP_EV(GLFW_KEY_3, tp::Keycode::TILDA); + MAP_EV(GLFW_KEY_4, tp::Keycode::BRA); + MAP_EV(GLFW_KEY_5, tp::Keycode::SLASH); + MAP_EV(GLFW_KEY_6, tp::Keycode::KET); + MAP_EV(GLFW_KEY_1, tp::Keycode::DOUBLE_DOT); + MAP_EV(GLFW_KEY_7, tp::Keycode::QUOTES); + MAP_EV(GLFW_KEY_2, tp::Keycode::INV_SLASH); + MAP_EV(GLFW_KEY_ESCAPE, tp::Keycode::ESCAPE); + } + } + + static void mouse_button_callback(GLFWwindow* window, int button, int action, int mods) { + auto self = (tp::glw::Window*)glfwGetWindowUserPointer(window); + + if (action != GLFW_PRESS && action != GLFW_RELEASE) { + return; + } + + auto state = (action == GLFW_RELEASE) ? tp::KeyEvent::EventState::RELEASED : tp::KeyEvent::EventState::PRESSED; + + + switch (button) { + case GLFW_MOUSE_BUTTON_RIGHT: { + self->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode::MOUSE2, state }); + } break; + case GLFW_MOUSE_BUTTON_LEFT: { + self->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode::MOUSE1, state }); + } break; + case GLFW_MOUSE_BUTTON_MIDDLE: { + self->mEvents.mKeysQueue.push(tp::KeyEvent{ tp::Keycode::MOUSE3, state }); + } break; + } + } + + static void scroll_callback(GLFWwindow* window, double xoffset, double yoffset) { + } + + ~PlatformContext() { + glfwDestroyWindow(window); + } + }; + }; +}; + + +void tp::glw::Window::deinit() {} + +tp::glw::Window::Window() { + initialize(); + + mAppearence.mSize = tp::glw::Window::mDevice.Size / 1.5f; + mAppearence.mPos = (tp::glw::Window::mDevice.Size - mAppearence.mSize) / 2.f; + mAppearence.mSizeMax = tp::glw::Window::mDevice.Size; + + applyAppearance(); +} + +tp::glw::Window::Window(const Appearence& aAppearence) { + mAppearence = aAppearence; + initialize(); +} + +void tp::glw::Window::initialize() { + mPlatformCtx = new PlatformContext(this); + applyAppearance(); +} + +void tp::glw::Window::applyAppearance() { + mPlatformCtx->applyAppearance(mAppearence, this->mCache.mAppearencePrev, this); +} + +void tp::glw::Window::pollEvents() { + applyAppearance(); + mPlatformCtx->pollEvents(); + + mEvents.mRedraw |= (mEvents.mCursorPrev - mEvents.mCursor) != 0; + mEvents.mRedraw |= mEvents.mKeysQueue.length; +} + +void tp::glw::Window::platformCallback() {} + +void tp::glw::Window::beginDraw() { + mPlatformCtx->beginDraw(); +} + +void tp::glw::Window::endDraw() { + mPlatformCtx->endDraw(); + if (mEvents.mRedraw-- < 0) mEvents.mRedraw = 0; +} + +void* tp::glw::Window::platform_window() const { + return mPlatformCtx->window; +} + +tp::alni tp::glw::Window::sizeAllocatedMem() { + return 0; +} + +tp::alni tp::glw::Window::sizeUsedMem() { + return 0; +} + +tp::glw::Window::~Window() { + delete mPlatformCtx; +} diff --git a/.outdated/graphics/src/shader.cpp b/.outdated/graphics/src/shader.cpp new file mode 100644 index 0000000..b630b5a --- /dev/null +++ b/.outdated/graphics/src/shader.cpp @@ -0,0 +1,170 @@ + + +#include "stringt.h" + +#include "array.h" + +#include "array.h" +#include "filesystem.h" +#include "shader.h" + +#include "new.h" + +#include "GraphicsLibApi.h" + +#include + +namespace tp { + + using namespace glw; + + //string shader_path = "../rsc/shaders/"; + + shader::shader() { + programm = 0; + VertexShaderID = 0; + FragmentShaderID = 0; + GeometryShaderID = 0; + } + + void shader::vert_bind_source(const char* vert_src) { + VertexShaderID = glCreateShader(GL_VERTEX_SHADER); + compile_shader(vert_src, VertexShaderID); + } + + void shader::frag_bind_source(const char* frag_src) { + FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); + compile_shader(frag_src, FragmentShaderID); + } + + void shader::geom_bind_source(const char* geom_src) { + GeometryShaderID = glCreateShader(GL_GEOMETRY_SHADER); + compile_shader(geom_src, GeometryShaderID); + } + + void shader::compile() { + GLint Result = GL_FALSE; + int InfoLogLength; + + programm = glCreateProgram(); + glAttachShader(programm, VertexShaderID); + if (GeometryShaderID) glAttachShader(programm, GeometryShaderID); + glAttachShader(programm, FragmentShaderID); + glLinkProgram(programm); + + // Check the program + glGetProgramiv(programm, GL_LINK_STATUS, &Result); + glGetProgramiv(programm, GL_INFO_LOG_LENGTH, &InfoLogLength); + + if (InfoLogLength > 0) { + Array ProgramErrorMessage(InfoLogLength + 1); + glGetProgramInfoLog(programm, InfoLogLength, NULL, &ProgramErrorMessage[0]); + printf("%s\n", &ProgramErrorMessage[0]); + } + + glDetachShader(programm, VertexShaderID); + glDetachShader(programm, FragmentShaderID); + if (GeometryShaderID) glDetachShader(programm, GeometryShaderID); + + glDeleteShader(VertexShaderID); + glDeleteShader(FragmentShaderID); + if (GeometryShaderID) glDeleteShader(GeometryShaderID); + } + + bool shader::compile_shader(const char* ShaderCode, uint4 ShaderID) { + GLint Result = GL_FALSE; + int InfoLogLength; + + char const* SourcePointer = ShaderCode; + glShaderSource(ShaderID, 1, &SourcePointer, NULL); + glCompileShader(ShaderID); + + // Check Shader + glGetShaderiv(ShaderID, GL_COMPILE_STATUS, &Result); + glGetShaderiv(ShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); + + if (InfoLogLength > 0) { + Array VertexShaderErrorMessage(InfoLogLength + 1); + glGetShaderInfoLog(ShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); + printf("%s\n", &VertexShaderErrorMessage[0]); + } + + return Result; + } + + + void shader::load(const char* pvert, const char* pgeom, const char* pfrag, bool paths) { + + // Create the shaders + VertexShaderID = glCreateShader(GL_VERTEX_SHADER); + FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); + if (pgeom) GeometryShaderID = glCreateShader(GL_GEOMETRY_SHADER); + else GeometryShaderID = 0; + + GLint Result = GL_FALSE; + int InfoLogLength = 0; + + if (paths) { + string vert = sfmt("%c.vert", pvert); + string geom = pgeom ? sfmt("%c.geom", pgeom) : " "; + string frag = sfmt("%c.frag", pfrag); + + tp::string content; + + printf("Compiling shader : %s\n", vert.cstr()); + if (content.loadFile(vert)) { + compile_shader(content.cstr(), VertexShaderID); + } + + if (GeometryShaderID) { + printf("Compiling shader : %s\n", geom.cstr()); + if (content.loadFile(geom)) { + compile_shader(content.cstr(), GeometryShaderID); + } + } + + printf("Compiling shader : %s\n", frag.cstr()); + if (content.loadFile(frag)) { + compile_shader(content.cstr(), FragmentShaderID); + } + } + else { + compile_shader(pvert, VertexShaderID); + if (GeometryShaderID) { + compile_shader(pgeom, GeometryShaderID); + } + compile_shader(pfrag, FragmentShaderID); + } + + compile(); + } + + shader::shader(const char* vert, const char* geom, const char* frag, bool paths) { + load(vert, geom, frag, paths); + } + + void shader::bind() { + glUseProgram(programm); + } + + GLuint glw::shader::getu(const char* uid) { + return glGetUniformLocation(programm, uid); + } + + void shader::unbind() { + glUseProgram(0); + } + + shader::~shader() { + glDeleteProgram(programm); + } + + alni glw::shader::sizeAllocatedMem() { + return sizeof(GLuint) * 4; + } + + alni glw::shader::sizeUsedMem() { + return sizeof(GLuint) * 4; + } + +}; \ No newline at end of file diff --git a/.outdated/graphics/src/simplegui.cpp b/.outdated/graphics/src/simplegui.cpp new file mode 100644 index 0000000..daed0e3 --- /dev/null +++ b/.outdated/graphics/src/simplegui.cpp @@ -0,0 +1,164 @@ +#pragma once + +#include "simplegui.h" + +using namespace tp; +using namespace glw; + +void WindowSimpleInputs::update(const glw::Window& window, halnf uiscale) { + mScaleVal = (window.mDevice.mDPMM * uiscale); + mWindowSizeMM = window.mAppearence.mSize / mScaleVal; + mCrs = window.mEvents.mCursor / mScaleVal; + mCrsPrev = window.mEvents.mCursorPrev / mScaleVal; + mCrsmDelta = mCrs - mCrsPrev; + + if (mMouse == Mouse::PRESSED) { + mMouse = Mouse::HOLD; + } + else if (mMouse == Mouse::RELEASED) { + mMouse = Mouse::NONE; + } + mMove = Move::NONE; + + for (auto event : window.mEvents.mKeysQueue) { + bool press = event.data().event_state == KeyEvent::EventState::PRESSED; + if (press) { + switch (event.data().code) { + case Keycode::UP: mMove = Move::UP; break; + case Keycode::DOWN: mMove = Move::DOWN; break; + case Keycode::LEFT: mMove = Move::LEFT; break; + case Keycode::RIGHT: mMove = Move::RIGHT; break; + } + } + if (event.data().code == Keycode::MOUSE1) { + if (press) { + mMouse = Mouse::PRESSED; + } + else { + mMouse = Mouse::RELEASED; + } + } + } +} + +bool WindowSimpleInputs::Activated() { return mMouse == Mouse::PRESSED; } +bool WindowSimpleInputs::Anticipating() { return mMouse == Mouse::HOLD; } +bool WindowSimpleInputs::Selected() { return mMouse == Mouse::RELEASED; } +bool WindowSimpleInputs::MoveLeft() { return mMove == Move::LEFT; } +bool WindowSimpleInputs::MoveRight() { return mMove == Move::RIGHT; } +bool WindowSimpleInputs::MoveUp() { return mMove == Move::UP; } +bool WindowSimpleInputs::MoveDown() { return mMove == Move::DOWN; } +bool WindowSimpleInputs::Drag() { return mCrsmDelta != 0; } + +void ButtonWidget::draw(glw::Canvas& canvas) { + canvas.setCol1(mCol); + canvas.rect(mAnimRec.get(), 1.f); +} + +void ButtonWidget::proc(glw::WindowSimpleInputs& inputs) { + auto rec = mAnimRec.get(); + mPressed = false; + + mAnimRec.setAnimTime(100); + + if (rec.inside(inputs.mCrs)) { + if (inputs.Anticipating()) { + auto new_rec = mRect; + new_rec.scale_from_center(0.3f, true); + mAnimRec.setNoTransition(new_rec); + } + else { + mAnimRec.set(mRect); + } + + if (inputs.Selected()) { + mPressed = true; + } + } + else { + auto new_rec = mRect; + new_rec.scale_from_center(0.3f, true); + mAnimRec.set(new_rec); + } +} + +void CheckBoxWidget::draw(glw::Canvas& canvas) { + canvas.setCol1(mAnimCol.get()); + canvas.rect(mAnimRec.get(), 1.f); +} + +void CheckBoxWidget::proc(glw::WindowSimpleInputs& inputs) { + auto rec = mAnimRec.get(); + + mAnimRec.setAnimTime(100); + + if (rec.inside(inputs.mCrs)) { + if (inputs.Anticipating()) { + auto new_rec = mRect; + new_rec.scale_from_center(0.3f, true); + mAnimRec.setNoTransition(new_rec); + } + else { + mAnimRec.set(mRect); + } + + if (inputs.Selected()) { + mValue = !mValue; + } + } + else { + auto new_rec = mRect; + new_rec.scale_from_center(0.3f, true); + mAnimRec.set(new_rec); + } + + if (mValue) { + mAnimCol.set(mColActive); + } + else { + mAnimCol.set(mCol); + } +} + +void WindowsHeaderWidget::updRecs() { + auto padding = 0.7f; + auto butt_size = header_rec.w - padding * 2.f; + grab_rec = { header_rec.pos, { header_rec.z - header_rec.w * 4, header_rec.w } }; + mPinButton.mRect = { { grab_rec.pos.x + grab_rec.size.x + padding, grab_rec.y + padding }, butt_size }; + mMinButton.mRect = { { mPinButton.mRect.pos.x + mPinButton.mRect.size.x + padding * 2, mPinButton.mRect.y }, butt_size }; + mMaxButton.mRect = { { mMinButton.mRect.pos.x + mMinButton.mRect.size.x + padding * 2, mPinButton.mRect.y }, butt_size }; + mExitButton.mRect = { { mMaxButton.mRect.pos.x + mMaxButton.mRect.size.x + padding * 2, mPinButton.mRect.y }, butt_size }; + + mPinButton.mCol = { 0.3f, 0.3f, 0.3f, 0.9f}; + mMinButton.mCol = { 0.3f, 0.3f, 0.8f, 0.9f }; + mMaxButton.mCol = { 0.3f, 0.8f, 0.3f, 0.9f }; + mExitButton.mCol = { 0.8f, 0.3f, 0.3f, 0.9f }; +} + +void WindowsHeaderWidget::draw(glw::Canvas& canvas) { + updRecs(); + canvas.setCol1(col); + canvas.rect(header_rec, 1.f); + canvas.setCol1(1.f); + canvas.text("MemLeaks", grab_rec, 4.f); + + mExitButton.draw(canvas); + mMaxButton.draw(canvas); + mMinButton.draw(canvas); + mPinButton.draw(canvas); +} + +void WindowsHeaderWidget::proc(glw::Window& window, glw::WindowSimpleInputs& inputs) { + get_time(); + + mExitButton.proc(inputs); + mMaxButton.proc(inputs); + mMinButton.proc(inputs); + mPinButton.proc(inputs); + + window.mAppearence.mMinMaxBox = mMaxButton.mRect * inputs.mScaleVal; + window.mAppearence.mCaptionsAddArea = { grab_rec * inputs.mScaleVal }; + window.mAppearence.mMinimized = mMinButton.mPressed; + window.mEvents.mClose = mExitButton.mPressed; + window.mAppearence.mTopZ = mPinButton.mValue; +} \ No newline at end of file diff --git a/.outdated/graphics/src/texture.cpp b/.outdated/graphics/src/texture.cpp new file mode 100644 index 0000000..94fa96e --- /dev/null +++ b/.outdated/graphics/src/texture.cpp @@ -0,0 +1,216 @@ + +#include "texture.h" + +#include "map.h" + +#include "stringt.h" + +#include "shader.h" + +#include "GraphicsLibApi.h" + +const char* texture_vertex = +#ifdef ENV_OS_ANDROID +"#version 300 es\n" +"precision mediump float;\n" +#else +"#version 330 core\n" +#endif +"layout(location = 0) in vec3 vPos;\n" +"out vec2 UV;\n" +"void main() {\n" +" gl_Position = vec4(vPos, 1);\n" +" UV = (vPos.xy + vec2(1, 1)) / 2.0;\n" +"}\n"; + +const char* texture_fragment = +#ifdef ENV_OS_ANDROID +"#version 300 es\n" +"precision mediump float;\n" +#else +"#version 330 core\n" +#endif +"in vec2 UV;\n" +"out vec4 color;\n" +"uniform sampler2D renderedTexture;\n" +"uniform float time;\n" +"void main() {\n" +" vec4 texColor = texture(renderedTexture, UV);\n" +" if (texColor.a < 0.2)\n" +" discard;\n" +" color = texColor;\n" +"}\n"; + +namespace tp { + + using namespace glw; + + GLuint texture::getid() { return id; } + + texture::texture() { + glGenTextures(1, &id); + glBindTexture(GL_TEXTURE_2D, id); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glBindTexture(GL_TEXTURE_2D, 0); + } + + texture::~texture() { glDeleteTextures(1, &id); } + + alni texture::sizeAllocatedMem() { + return sizeof(GLuint); + } + + alni texture::sizeUsedMem() { + return sizeof(GLuint); + } + + + void texture::update(const Array2D& buff) { + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)buff.size().x, (GLsizei)buff.size().y, 0, GL_RGBA, GL_FLOAT, buff.buff()); + } + + void texture::draw(const GLuint& out) { + draw_texture(out, id); + } + + + struct texture_drawer_data { + + HashMap textures; + + GLuint quad_VertexArrayID; + GLuint quad_vertexbuffer; + GLuint texID; + glw::shader shader; + + const GLfloat g_quad_vertex_buffer_data[18] = { + -1.0f, -1.0f, 0.0f, 1.0f, -1.0f, 0.0f, -1.0f, 1.0f, 0.0f, + -1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, 0.0f, + }; + + texture_drawer_data() : shader(texture_vertex, NULL, texture_fragment, false) { + // The fullscreen quad's FBO + glGenVertexArrays(1, &quad_VertexArrayID); + glBindVertexArray(quad_VertexArrayID); + + glGenBuffers(1, &quad_vertexbuffer); + glBindBuffer(GL_ARRAY_BUFFER, quad_vertexbuffer); + glBufferData(GL_ARRAY_BUFFER, sizeof(g_quad_vertex_buffer_data), + g_quad_vertex_buffer_data, GL_STATIC_DRAW); + + texID = shader.getu("renderedTexture"); + } + + ~texture_drawer_data() { + glDeleteBuffers(1, &quad_vertexbuffer); + glDeleteVertexArrays(1, &quad_VertexArrayID); + + for (auto tex : textures) { + glDeleteTextures(1, &tex->val); + } + } + }; + + texture_drawer_data* texdd = NULL; + + void texture::init() { + if (!texdd) texdd = new texture_drawer_data(); + } + + void texture::deinit() { + if (texdd) delete texdd; + texdd = NULL; + } + + void texture::draw_texture(uint4 out, uint4 in) { + assert(in); + + // Render to the screen + glBindFramebuffer(GL_FRAMEBUFFER, out); + + // Use our shader + texdd->shader.bind(); + + // Bind our texture in Texture Unit 0 + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, in); + // Set our "renderedTexture" sampler to use Texture Unit 0 + glUniform1i(texdd->texID, 0); + + // glUniformMatrix4fv(texdd->rect_mat, 1, GL_FALSE, &tmat[0][0]); + + // 1rst attribute buffer : vertices + glEnableVertexAttribArray(0); + glBindBuffer(GL_ARRAY_BUFFER, texdd->quad_vertexbuffer); + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (void*)0); + + // Draw the triangles. 2*3 indices starting at 0 -> 2 triangles + glDrawArrays(GL_TRIANGLES, 0, 6); + + glDisableVertexAttribArray(0); + + texdd->shader.unbind(); + } + + GLuint load_texture(string name) { + GLuint tex_2d = 0; + RelAssert(0 && "incomplete compilation - no SOIL support added"); + + if (0) { + //auto document = lunasvg::Document::loadFromFile("tiger.svg"); + //auto bitmap = document->renderToBitmap(); + } + else { + /* + tex_2d = SOIL_load_OGL_texture( + name.cstr(), SOIL_LOAD_RGBA, SOIL_CREATE_NEW_ID, + SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | + SOIL_FLAG_COMPRESS_TO_DXT); + + if (0 == tex_2d) { + printf("SOIL loading error: '%s'\n", SOIL_last_result()); + } + */ + } + + return tex_2d; + } + + GLuint texture::get_tex(const char* TexId) { + GLuint out = 0; + alni idx = texdd->textures.presents(TexId); + if (idx != -1) { + out = texdd->textures.get(TexId); + } + else { + out = load_texture(TexId); + texdd->textures.put(TexId, out); + } + return out; + } + + void texture::drawCurcle(vec2f pos, double radius, rgba col) { +#ifndef ENV_OS_ANDROID + static alni precision = 40; + + glColor4f(col.r, col.g, col.b, col.a); + + double twicePi = 2.0 * 3.142; + + glBegin(GL_TRIANGLE_FAN); // BEGIN CIRCLE + glVertex2f(pos.x, pos.y); // center of circle + + for (alni i = 0; i <= precision; i++) { + glVertex2f((GLfloat)(pos.x + (radius * cos(i * twicePi / precision))), + (GLfloat)(pos.y + (radius * sin(i * twicePi / precision)))); + } + glEnd(); // END +#endif + } +}; + + diff --git a/.outdated/graphics/src/windows_window.cpp b/.outdated/graphics/src/windows_window.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ca721cc52c603e48ffe1f40b3f86fce289643af2 GIT binary patch literal 41712 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 b8zMQuiuCY#WXMr{4q1(5jo%QY(9Qn?Nf5ox literal 0 HcmV?d00001 diff --git a/.outdated/graphics/tests/tests.cpp b/.outdated/graphics/tests/tests.cpp new file mode 100644 index 0000000..b1d5304 --- /dev/null +++ b/.outdated/graphics/tests/tests.cpp @@ -0,0 +1,107 @@ + +#include "SimpleGui.h" +#include "debugui.h" +#include "texture.h" +#include "timer.h" +#include "imgui.h" + +struct CollorWheelWidget { + tp::rgba col = { 0.3f, 0.3f, 0.3f, 0.9f }; + tp::rectf rec = { 10, 30, 40, 40 }; + + void draw(tp::glw::Canvas& canvas) { + canvas.setCol1(col); + canvas.rect(rec, 3.f); + canvas.drawColorwheel(rec, col.rgbs); + } +}; + +struct Test { + + tp::glw::Window window; + tp::glw::DebugUI ui; + tp::glw::Canvas canvas; + tp::glw::WindowsHeaderWidget header; + tp::glw::WindowSimpleInputs inputs; + tp::halnf mHeaderHeight = 6.5f; + + CollorWheelWidget colorwheel; + tp::halnf uiscale = 1.f; + tp::Timer time; + tp::halni frames = 0; + tp::halni fps = 0; + + Test() : window(), ui(window, debuguiCallBack, this), time(1000) { + tp::glw::texture::init(); + canvas.setCol1({ 0.5f, 0.5f, 0.5f, 0.5f }); + window.mAppearence.mHiden = false; + } + + void proc() { + window.pollEvents(); + inputs.update(window, uiscale); + + header.header_rec = { (inputs.mWindowSizeMM.x - 60.f) / 2.f, 3.f, 60.f, mHeaderHeight }; + header.proc(window, inputs); + } + + void draw() { + // window frame + window.beginDraw(); { + // canvas draw + canvas.beginDraw({ { 0, 0 }, inputs.mWindowSizeMM }, window.mDevice.mDPMM, uiscale); { + canvas.clear(); + header.draw(canvas); + colorwheel.draw(canvas); + } canvas.endDraw(); + // debug draw + ui.drawDebugUI(window.mDevice.mDPMM); + } window.endDraw(); + } + + void run() { + while (!window.mEvents.mClose) { + proc(); + if (window.mEvents.mRedraw || tp::glw::gInTransition) { + draw(); + } + if (time.isTimeout()) { + fps = frames; + frames = 0; + time.reset(); + } + frames++; + } + } + + void debugui() { + static char buff[100]; + ImGui::DragFloat("UI SCale", &uiscale, 0.02); + ImGui::Text("Fps: %i", fps); + ImGui::InputText("Fps: %i", buff, 100); + } + + static void debuguiCallBack(void* self) { + ((Test*)self)->debugui(); + } + + ~Test() { + tp::glw::texture::deinit(); + } +}; + +CROSSPLATFORM_MAIN +int main() { + tp::ModuleManifest* ModuleDependencies[] = { &tp::gModuleGlw, NULL }; + tp::ModuleManifest TestModule("Test", NULL, NULL, ModuleDependencies); + if (!TestModule.initialize()) { + return 1; + } + + { + Test test; + test.run(); + } + + TestModule.deinitialize(); +} \ No newline at end of file From b959afe8c2937e088ed070e3bb8d7ec2ef72e6a0 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 20 Aug 2023 19:42:22 +0300 Subject: [PATCH 64/68] Enable docking --- Graphics/private/bindings/DebugGUI.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Graphics/private/bindings/DebugGUI.cpp b/Graphics/private/bindings/DebugGUI.cpp index 5254806..e0d075c 100644 --- a/Graphics/private/bindings/DebugGUI.cpp +++ b/Graphics/private/bindings/DebugGUI.cpp @@ -27,9 +27,12 @@ Graphics::GUI::~GUI() { void Graphics::GUI::init(Window* window) { IMGUI_CHECKVERSION(); + mContext->ctx = ImGui::CreateContext(); mContext->io = &ImGui::GetIO(); + mContext->io->ConfigFlags |= ImGuiConfigFlags_DockingEnable; + // Initialize ImGui with GLFW and OpenGL ImGui_ImplGlfw_InitForOpenGL(window->getContext()->window, true); ImGui_ImplOpenGL3_Init("#version 330"); From c00750c95a9e701226d31efcc2e9d3142a001dc2 Mon Sep 17 00:00:00 2001 From: IlushaShurupov Date: Sun, 20 Aug 2023 20:20:50 +0300 Subject: [PATCH 65/68] Debug UI tunes --- Graphics/examples/Example.cpp | 2 +- Graphics/private/bindings/DebugGUI.cpp | 208 +- Graphics/private/bindings/DefaultFont.bin | 30730 ++++++++++++++++ Graphics/private/bindings/Window.cpp | 10 + Graphics/public/Graphics.hpp | 14 +- Graphics/public/Window.hpp | 12 +- .../rsc/fonts => Graphics/rsc}/CONSOLAB.TTF | Bin 7 files changed, 30970 insertions(+), 6 deletions(-) create mode 100644 Graphics/private/bindings/DefaultFont.bin rename {.outdated/graphics/rsc/fonts => Graphics/rsc}/CONSOLAB.TTF (100%) diff --git a/Graphics/examples/Example.cpp b/Graphics/examples/Example.cpp index a074ff3..8e576ab 100644 --- a/Graphics/examples/Example.cpp +++ b/Graphics/examples/Example.cpp @@ -18,7 +18,7 @@ int main() { while (!window->shouldClose()) { window->processEvents(); - ImGui::Text("Hello!"); + window->getGraphics().getDebugGui().drawDebugInfoWindow(); window->draw(); } diff --git a/Graphics/private/bindings/DebugGUI.cpp b/Graphics/private/bindings/DebugGUI.cpp index e0d075c..cc37a9d 100644 --- a/Graphics/private/bindings/DebugGUI.cpp +++ b/Graphics/private/bindings/DebugGUI.cpp @@ -1,5 +1,7 @@ #include "Window.hpp" +#include "Timing.hpp" + #include "WindowContext.hpp" // -------- Debug UI -------- // @@ -7,11 +9,21 @@ #include #include +#include "DefaultFont.bin" + namespace tp { class Graphics::GUI::Context { public: ImGuiIO* io{}; ImGuiContext* ctx{}; + + halnf dpmm = 3; + halnf uiScale = 1; + halnf fontSizeMM = 3.55f; + + Timer timer = Timer(1000); + ualni fps {}; + ualni frames = 0; }; } @@ -36,6 +48,10 @@ void Graphics::GUI::init(Window* window) { // Initialize ImGui with GLFW and OpenGL ImGui_ImplGlfw_InitForOpenGL(window->getContext()->window, true); ImGui_ImplOpenGL3_Init("#version 330"); + + mContext->dpmm = (window->getMonitor().pixelSize.x / window->getMonitor().mmSize.x); + + setStyle(); } void Graphics::GUI::deinit() { @@ -53,12 +69,198 @@ void Graphics::GUI::proc() { tp::HeapAllocGlobal::stopIgnore(); - // ImGui code goes here - ImGui::Begin("Window"); - ImGui::End(); + // ImGui::DockSpaceOverViewport(NULL, ImGuiDockNodeFlags_PassthruCentralNode); } void Graphics::GUI::draw() { ImGui::Render(); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); + + mContext->frames++; + + if (mContext->timer.isTimeout()) { + mContext->fps = mContext->frames; + mContext->frames = 0; + mContext->timer.reset(); + } +} + +halnf Graphics::GUI::getFontSize() const { return mContext->fontSizeMM; } +halnf Graphics::GUI::getUIScale() const { return mContext->uiScale; } + +void Graphics::GUI::setDPMM(ualni dpmm) { mContext->dpmm = dpmm; } +void Graphics::GUI::setFontSize(ualni size) { mContext->fontSizeMM = size; } +void Graphics::GUI::setUIScale(ualni scale) { mContext->uiScale = scale; } + +void Graphics::GUI::drawDebugInfoWindow() { + ImGui::Begin("Debug Info"); + + ImGui::Text("FPS : %llu", mContext->fps); + + ImGui::SliderFloat("UI Scale", &mContext->uiScale, 0, 10); + ImGui::SliderFloat("Font Size MM", &mContext->fontSizeMM, 3, 20); + + setStyle(); + + ImGui::End(); +} + +void Graphics::GUI::setStyle() { + auto dpmm = mContext->dpmm; + auto font_size_mm = mContext->fontSizeMM; + auto ui_scale = mContext->uiScale; + + #define VAL(val) (val * dpmm / 3 * ui_scale) + #define VEC(x, y) ImVec2(x * dpmm / 3, y * dpmm / 3 * ui_scale) + + ImGuiStyle* style = &ImGui::GetStyle(); + auto& io = *mContext->io; + bool first_init = io.Fonts->Fonts.Size == 0; + auto font_path = "."; + //auto font_path = getFontPath(); + + // supports PDMM from 0.3 to 10 + const float min_dpmm = 0.3f; + const float max_dpmm = 20.f; + dpmm = tp::clamp(dpmm, min_dpmm, max_dpmm); + + // calc font + const float font_size_mm_max = 10; + const float font_size_pixels_min = 9; + float font_size_mm_min = font_size_pixels_min / dpmm; + const int font_quality_steps = 3; + font_size_mm = tp::clamp(font_size_mm, font_size_mm_min, font_size_mm_max); + + float font_sizes[font_quality_steps]; + for (auto i = 0; i < font_quality_steps; i++) { + auto mm = font_size_mm_min + (font_size_mm_max - font_size_mm_min) * tp::pow(((tp::halnf) (i + 1) / font_quality_steps), 3); + font_sizes[i] = dpmm * mm; + } + + if (first_init) { + for (auto i = 0; i < font_quality_steps; i++) { + //io.Fonts->AddFontFromFileTTF(font_path, font_sizes[i] * 1); + ImFontConfig font_cfg_template; + font_cfg_template.FontDataOwnedByAtlas = false; + io.Fonts->AddFontFromMemoryTTF(CONSOLAB_TTF, CONSOLAB_TTF_len, font_sizes[i] * 1, &font_cfg_template); + } + } + + // select fonts + auto const pixels_required = dpmm * font_size_mm; + auto idx = -1; + for (auto i = 0; i < font_quality_steps; i++) { + idx = i; + if (pixels_required <= font_sizes[i]) { + break; + } + } + + io.FontDefault = io.Fonts->Fonts[idx]; + io.FontGlobalScale = font_size_mm / (font_size_mm_min + ((font_size_mm_max - font_size_mm_min) / font_quality_steps) * (idx + 1)); + io.FontGlobalScale = pixels_required / font_sizes[idx]; + + auto rounding = VAL(5); + auto pudding = VEC(7, 7); + + style->WindowPadding = pudding; + style->WindowRounding = rounding; + //style->WindowMinSize = VEC(11, 11); + style->ChildRounding = rounding; + style->PopupRounding = rounding; + style->FramePadding = pudding; + style->FrameRounding = rounding; + style->ItemSpacing = VEC(4, 11); + style->ItemInnerSpacing = VEC(9, 4); + style->CellPadding = pudding; + style->TouchExtraPadding = pudding; + style->IndentSpacing = VAL(25); + style->ColumnsMinSpacing = VAL(5); + style->ScrollbarSize = VAL(16); + style->ScrollbarRounding = rounding; + style->GrabMinSize = VAL(2); + style->GrabRounding = rounding; + style->LogSliderDeadzone = VAL(2); + style->TabRounding = rounding; + style->TabMinWidthForCloseButton = VAL(5); + style->DisplayWindowPadding = pudding; + style->DisplaySafeAreaPadding = pudding; + style->MouseCursorScale = VAL(5); + + style->FrameBorderSize = VAL(0); + style->WindowBorderSize = VAL(1.5f); + style->ChildBorderSize = VAL(2); + + style->WindowTitleAlign = VEC(0.5f, 0.6f); + style->WindowMenuButtonPosition = ImGuiDir_Right; + + if (!first_init) + return; + + ImVec4* colors = ImGui::GetStyle().Colors; + colors[ImGuiCol_Text] = ImVec4(1.00f, 1.00f, 1.00f, 1.00f); + colors[ImGuiCol_TextDisabled] = ImVec4(0.86f, 0.86f, 0.86f, 1.00f); + colors[ImGuiCol_WindowBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_ChildBg] = ImVec4(0.09f, 0.09f, 0.10f, 1.00f); + colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.10f, 1.00f); + colors[ImGuiCol_Border] = ImVec4(0.06f, 0.06f, 0.06f, 1.00f); + colors[ImGuiCol_BorderShadow] = ImVec4(0.00f, 0.00f, 0.00f, 0.00f); + colors[ImGuiCol_FrameBg] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_FrameBgHovered] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_FrameBgActive] = ImVec4(0.43f, 0.43f, 0.53f, 1.00f); + colors[ImGuiCol_TitleBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_TitleBgActive] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_MenuBarBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_ScrollbarBg] = ImVec4(0.09f, 0.09f, 0.10f, 0.00f); + colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.15f, 0.15f, 0.19f, 1.00f); + colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.21f, 0.20f, 0.25f, 1.00f); + colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.30f, 0.29f, 0.35f, 1.00f); + colors[ImGuiCol_CheckMark] = ImVec4(0.26f, 0.48f, 0.50f, 1.00f); + colors[ImGuiCol_SliderGrab] = ImVec4(0.53f, 0.57f, 0.64f, 1.00f); + colors[ImGuiCol_SliderGrabActive] = ImVec4(0.69f, 0.74f, 0.83f, 1.00f); + colors[ImGuiCol_Button] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_ButtonHovered] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_ButtonActive] = ImVec4(0.43f, 0.43f, 0.53f, 1.00f); + colors[ImGuiCol_Header] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_HeaderHovered] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_HeaderActive] = ImVec4(0.33f, 0.33f, 0.40f, 1.00f); + colors[ImGuiCol_Separator] = ImVec4(0.37f, 0.37f, 0.40f, 1.00f); + colors[ImGuiCol_SeparatorHovered] = ImVec4(0.33f, 0.35f, 0.38f, 1.00f); + colors[ImGuiCol_SeparatorActive] = ImVec4(0.37f, 0.39f, 0.42f, 1.00f); + colors[ImGuiCol_ResizeGrip] = ImVec4(0.16f, 0.17f, 0.19f, 1.00f); + colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.33f, 0.35f, 0.38f, 1.00f); + colors[ImGuiCol_ResizeGripActive] = ImVec4(0.28f, 0.34f, 0.42f, 1.00f); + colors[ImGuiCol_Tab] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_TabHovered] = ImVec4(0.23f, 0.23f, 0.28f, 1.00f); + colors[ImGuiCol_TabActive] = ImVec4(0.23f, 0.23f, 0.28f, 1.00f); + colors[ImGuiCol_TabUnfocused] = ImVec4(0.11f, 0.15f, 0.17f, 1.00f); + colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.43f, 0.45f, 0.48f, 1.00f); + colors[ImGuiCol_DockingPreview] = ImVec4(0.81f, 0.81f, 0.81f, 0.18f); + colors[ImGuiCol_DockingEmptyBg] = ImVec4(0.10f, 0.10f, 0.12f, 1.00f); + colors[ImGuiCol_PlotLines] = ImVec4(0.61f, 0.61f, 0.61f, 1.00f); + colors[ImGuiCol_PlotLinesHovered] = ImVec4(0.33f, 0.35f, 0.38f, 1.00f); + colors[ImGuiCol_PlotHistogram] = ImVec4(0.90f, 0.70f, 0.00f, 1.00f); + colors[ImGuiCol_PlotHistogramHovered] = ImVec4(0.49f, 0.51f, 0.54f, 1.00f); + colors[ImGuiCol_TableHeaderBg] = ImVec4(0.13f, 0.13f, 0.20f, 1.00f); + colors[ImGuiCol_TableBorderStrong] = ImVec4(0.31f, 0.31f, 0.35f, 1.00f); + colors[ImGuiCol_TableBorderLight] = ImVec4(0.23f, 0.23f, 0.25f, 1.00f); + colors[ImGuiCol_TableRowBg] = ImVec4(0.23f, 0.20f, 0.20f, 0.00f); + colors[ImGuiCol_TableRowBgAlt] = ImVec4(1.00f, 1.00f, 1.00f, 0.06f); + colors[ImGuiCol_TextSelectedBg] = ImVec4(0.26f, 0.59f, 0.98f, 0.35f); + colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 0.90f); + colors[ImGuiCol_NavHighlight] = ImVec4(0.26f, 0.59f, 0.98f, 1.00f); + colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 0.70f); + colors[ImGuiCol_NavWindowingDimBg] = ImVec4(0.38f, 0.22f, 0.22f, 0.20f); + colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 0.35f); + + colors[ImGuiCol_PopupBg] = ImVec4(0.08f, 0.08f, 0.10f, 1.00f); + colors[ImGuiCol_DockingPreview] = ImVec4(0.64f, 0.75f, 0.83f, 0.18f); + colors[ImGuiCol_TabHovered] = ImVec4(0.39f, 0.39f, 0.47f, 1.00f); + colors[ImGuiCol_TabActive] = ImVec4(0.27f, 0.27f, 0.33f, 1.00f); + colors[ImGuiCol_TabUnfocused] = ImVec4(0.14f, 0.14f, 0.17f, 1.00f); + colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.24f, 0.24f, 0.29f, 1.00f); + colors[ImGuiCol_Border] = ImVec4(0.65f, 0.65f, 0.65f, 0.70f); + + io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; } \ No newline at end of file diff --git a/Graphics/private/bindings/DefaultFont.bin b/Graphics/private/bindings/DefaultFont.bin new file mode 100644 index 0000000..0d320a6 --- /dev/null +++ b/Graphics/private/bindings/DefaultFont.bin @@ -0,0 +1,30730 @@ +unsigned char CONSOLAB_TTF[] = { + 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x01, 0x00, 0x00, 0x04, 0x00, 0x30, + 0x44, 0x53, 0x49, 0x47, 0x19, 0x47, 0x0a, 0xe6, 0x00, 0x05, 0x85, 0x84, + 0x00, 0x00, 0x1a, 0xcc, 0x47, 0x44, 0x45, 0x46, 0xa3, 0xfe, 0xac, 0xae, + 0x00, 0x04, 0xed, 0x00, 0x00, 0x00, 0x03, 0x76, 0x47, 0x50, 0x4f, 0x53, + 0xd3, 0xb1, 0x9c, 0xc0, 0x00, 0x04, 0xf0, 0x78, 0x00, 0x00, 0x6a, 0xa2, + 0x47, 0x53, 0x55, 0x42, 0xd7, 0x65, 0xaf, 0xe6, 0x00, 0x05, 0x5b, 0x1c, + 0x00, 0x00, 0x2a, 0x5a, 0x4d, 0x45, 0x52, 0x47, 0x00, 0x16, 0x00, 0x01, + 0x00, 0x05, 0x85, 0x78, 0x00, 0x00, 0x00, 0x0c, 0x4f, 0x53, 0x2f, 0x32, + 0x4a, 0x82, 0xda, 0x05, 0x00, 0x00, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x60, + 0x63, 0x6d, 0x61, 0x70, 0x73, 0x90, 0x9d, 0x7f, 0x00, 0x00, 0x2c, 0x14, + 0x00, 0x00, 0x26, 0x4e, 0x63, 0x76, 0x74, 0x20, 0x2e, 0xf9, 0x08, 0xb6, + 0x00, 0x00, 0x6b, 0xcc, 0x00, 0x00, 0x05, 0x0e, 0x66, 0x70, 0x67, 0x6d, + 0x20, 0xa4, 0x26, 0xc0, 0x00, 0x00, 0x52, 0x64, 0x00, 0x00, 0x09, 0x10, + 0x67, 0x61, 0x73, 0x70, 0x00, 0x18, 0x00, 0x23, 0x00, 0x04, 0xec, 0xf0, + 0x00, 0x00, 0x00, 0x10, 0x67, 0x6c, 0x79, 0x66, 0xcd, 0x25, 0xfb, 0x05, + 0x00, 0x00, 0x9b, 0x9c, 0x00, 0x04, 0x3f, 0xa0, 0x68, 0x65, 0x61, 0x64, + 0xea, 0x1b, 0x27, 0x96, 0x00, 0x00, 0x01, 0x3c, 0x00, 0x00, 0x00, 0x36, + 0x68, 0x68, 0x65, 0x61, 0x09, 0x1d, 0x0a, 0xf7, 0x00, 0x00, 0x01, 0x74, + 0x00, 0x00, 0x00, 0x24, 0x68, 0x6d, 0x74, 0x78, 0x43, 0x35, 0x2a, 0x82, + 0x00, 0x00, 0x02, 0x18, 0x00, 0x00, 0x29, 0xfa, 0x6c, 0x6f, 0x63, 0x61, + 0x15, 0xfc, 0xc8, 0x5e, 0x00, 0x00, 0x70, 0xdc, 0x00, 0x00, 0x2a, 0xc0, + 0x6d, 0x61, 0x78, 0x70, 0x14, 0xdb, 0x12, 0x3b, 0x00, 0x00, 0x01, 0x98, + 0x00, 0x00, 0x00, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x24, 0x71, 0x8e, 0xd5, + 0x00, 0x04, 0xdb, 0x3c, 0x00, 0x00, 0x11, 0x94, 0x70, 0x6f, 0x73, 0x74, + 0xff, 0x2a, 0x00, 0xc3, 0x00, 0x04, 0xec, 0xd0, 0x00, 0x00, 0x00, 0x20, + 0x70, 0x72, 0x65, 0x70, 0x29, 0xc4, 0x76, 0x4f, 0x00, 0x00, 0x5b, 0x74, + 0x00, 0x00, 0x10, 0x58, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x54, 0x7b, + 0xb8, 0x14, 0xb9, 0x13, 0x5f, 0x0f, 0x3c, 0xf5, 0x00, 0x09, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0xe3, 0x1b, 0x28, 0x00, 0x00, 0x00, 0x00, + 0xcd, 0x4a, 0x6d, 0x94, 0xfc, 0x31, 0xfd, 0xa1, 0x05, 0x9a, 0x07, 0xc0, + 0x00, 0x01, 0x00, 0x08, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x05, 0xf1, 0xfd, 0xf1, 0x01, 0x5e, 0x04, 0x66, + 0xfc, 0x31, 0xfe, 0x51, 0x05, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x4e, + 0x00, 0x01, 0x00, 0x00, 0x0a, 0xaf, 0x01, 0x3b, 0x00, 0x4e, 0x00, 0x76, + 0x00, 0x07, 0x00, 0x02, 0x00, 0x10, 0x00, 0x2f, 0x00, 0x60, 0x00, 0x00, + 0x09, 0x63, 0x10, 0x58, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x04, 0x66, + 0x02, 0xbc, 0x00, 0x05, 0x00, 0x08, 0x05, 0x99, 0x05, 0x33, 0x00, 0x00, + 0x01, 0x1e, 0x05, 0x99, 0x05, 0x33, 0x00, 0x00, 0x03, 0xd0, 0x00, 0xc2, + 0x02, 0x00, 0x08, 0x09, 0x02, 0x0b, 0x07, 0x09, 0x02, 0x02, 0x04, 0x03, + 0x02, 0x04, 0xe1, 0x00, 0x02, 0xff, 0x40, 0x00, 0xfc, 0xff, 0x00, 0x00, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x4d, 0x53, 0x20, 0x20, 0x00, 0x20, + 0x00, 0x00, 0xfe, 0xff, 0x05, 0xf1, 0xfd, 0xf1, 0x01, 0x5e, 0x07, 0x5c, + 0x02, 0x02, 0x60, 0x00, 0x01, 0x9f, 0xdf, 0xd7, 0x00, 0x00, 0x03, 0xf8, + 0x05, 0x1b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x03, 0x04, 0x66, 0x00, 0x4e, + 0x04, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x56, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0xb8, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0xac, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0xc5, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x81, + 0x04, 0x66, 0x00, 0x62, 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x57, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x08, + 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x68, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0xff, 0xd7, 0x04, 0x66, 0xff, 0xd7, 0x04, 0x66, 0x00, 0x29, + 0x04, 0x66, 0x00, 0x3d, 0x04, 0x66, 0x00, 0x3d, 0x04, 0x66, 0x00, 0x3d, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0xff, 0xd9, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x60, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x0c, + 0x04, 0x66, 0x00, 0xc5, 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x9e, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0xff, 0x35, + 0x04, 0x66, 0x00, 0x1b, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0xff, 0xd9, + 0x04, 0x66, 0xff, 0xd9, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x62, + 0x04, 0x66, 0x00, 0x62, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x4f, + 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x57, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x66, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x77, 0x04, 0x66, 0x00, 0x95, + 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x3b, + 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x08, + 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x12, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x29, 0x04, 0x66, 0x00, 0x29, 0x04, 0x66, 0x00, 0x29, + 0x04, 0x66, 0x00, 0x29, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x68, 0x04, 0x66, 0x00, 0x77, + 0x04, 0x66, 0x00, 0x11, 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x7b, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x55, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0xff, 0xc5, + 0x04, 0x66, 0x00, 0x1d, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x9c, + 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x01, 0x06, + 0x04, 0x66, 0xff, 0x64, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x7b, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x7b, + 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x79, + 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x37, 0x04, 0x66, 0x00, 0x37, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x17, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0xff, 0x07, 0x04, 0x66, 0x01, 0x17, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0xc8, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0xff, 0x9d, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x79, + 0x04, 0x66, 0xff, 0xf8, 0x04, 0x66, 0x00, 0x54, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x54, 0x04, 0x66, 0x00, 0xa0, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xa0, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x1f, 0x04, 0x66, 0x00, 0x21, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0xa4, 0x04, 0x66, 0x02, 0x87, 0x04, 0x66, 0x01, 0x8d, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xd3, + 0x04, 0x66, 0x00, 0xdf, 0x04, 0x66, 0x01, 0x7f, 0x04, 0x66, 0x01, 0x6d, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0xfc, 0x04, 0x66, 0x00, 0xfc, + 0x04, 0x66, 0x01, 0x98, 0x04, 0x66, 0x01, 0x98, 0x04, 0x66, 0x01, 0x98, + 0x04, 0x66, 0x01, 0x19, 0x04, 0x66, 0x00, 0xa2, 0x04, 0x66, 0x00, 0xa2, + 0x04, 0x66, 0x00, 0xb7, 0x04, 0x66, 0x01, 0x75, 0x04, 0x66, 0x00, 0xd3, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x37, 0x04, 0x66, 0x00, 0xd3, + 0x04, 0x66, 0x00, 0x37, 0x04, 0x66, 0x01, 0x04, 0x04, 0x66, 0x01, 0x3a, + 0x04, 0x66, 0x01, 0x04, 0x04, 0x66, 0x01, 0x3a, 0x04, 0x66, 0x00, 0x73, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x73, 0x04, 0x66, 0x00, 0x81, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x01, 0xc3, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0xff, 0xfc, 0x04, 0x66, 0xff, 0xfc, + 0x04, 0x66, 0xff, 0xfc, 0x04, 0x66, 0x00, 0xc9, 0x04, 0x66, 0x01, 0x73, + 0x04, 0x66, 0x01, 0x73, 0x04, 0x66, 0x01, 0x10, 0x04, 0x66, 0x00, 0xe5, + 0x04, 0x66, 0x01, 0x10, 0x04, 0x66, 0x00, 0xe5, 0x04, 0x66, 0x01, 0x31, + 0x04, 0x66, 0x01, 0x08, 0x04, 0x66, 0x01, 0x31, 0x04, 0x66, 0x01, 0x08, + 0x04, 0x66, 0x00, 0x98, 0x04, 0x66, 0x00, 0xd9, 0x04, 0x66, 0x00, 0x98, + 0x04, 0x66, 0x00, 0xd9, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0xa0, + 0x04, 0x66, 0x00, 0xa0, 0x04, 0x66, 0x00, 0x5a, 0x04, 0x66, 0x00, 0x4a, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0xc5, + 0x04, 0x66, 0x00, 0x39, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0x68, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x2d, + 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x66, + 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0x23, + 0x04, 0x66, 0xff, 0xc5, 0x04, 0x66, 0xff, 0x5e, 0x04, 0x66, 0xff, 0x21, + 0x04, 0x66, 0xff, 0x35, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x3f, + 0x04, 0x66, 0xfe, 0xf0, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x4a, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x29, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x64, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x0e, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x1b, + 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x1f, + 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x33, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x19, + 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x11, 0x04, 0x66, 0x00, 0x33, + 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x21, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x73, 0x04, 0x66, 0x01, 0x73, 0x04, 0x66, 0x00, 0xdf, + 0x04, 0x66, 0x00, 0xcb, 0x04, 0x66, 0x00, 0xbc, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0xc5, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0xff, 0xf8, + 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0x00, 0x5d, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x2d, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x61, + 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x4f, + 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x08, + 0x04, 0x66, 0x00, 0x58, 0x04, 0x66, 0x00, 0x50, 0x04, 0x66, 0x00, 0x31, + 0x04, 0x66, 0x00, 0x31, 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x39, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x35, + 0x04, 0x66, 0x00, 0x3e, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xc5, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x50, 0x04, 0x66, 0x00, 0x62, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xac, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xf2, 0x04, 0x66, 0x00, 0x31, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x61, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x62, 0x04, 0x66, 0x00, 0x7d, + 0x04, 0x66, 0x00, 0xcd, 0x04, 0x66, 0x00, 0x10, 0x04, 0x66, 0x00, 0x66, + 0x04, 0x66, 0xff, 0xfa, 0x04, 0x66, 0x00, 0x69, 0x04, 0x66, 0x00, 0x7e, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x10, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x55, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x19, + 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x75, 0x04, 0x66, 0x00, 0x50, + 0x04, 0x66, 0x00, 0x39, 0x04, 0x66, 0x00, 0x39, 0x04, 0x66, 0x00, 0x0a, + 0x04, 0x66, 0x00, 0x3f, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x8d, + 0x04, 0x66, 0x00, 0x3f, 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0xcb, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x77, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x3f, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x7e, 0x04, 0x66, 0x00, 0x10, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x55, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x01, 0xc3, 0x04, 0x66, 0x00, 0x77, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0xaa, 0x04, 0x66, 0x00, 0xe3, 0x04, 0x66, 0x00, 0x09, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x10, 0x04, 0x66, 0x00, 0x10, + 0x04, 0x66, 0x00, 0x44, 0x04, 0x66, 0x00, 0x0e, 0x04, 0x66, 0x00, 0x19, + 0x04, 0x66, 0x00, 0x29, 0x04, 0x66, 0x00, 0x2b, 0x04, 0x66, 0x00, 0x5a, + 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x71, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0xd9, + 0x04, 0x66, 0x00, 0xc9, 0x04, 0x66, 0x00, 0x1f, 0x04, 0x66, 0x00, 0x29, + 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x35, + 0x04, 0x66, 0x00, 0x73, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x62, + 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x35, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x8c, + 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0xac, 0x04, 0x66, 0x00, 0x62, + 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x56, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0xe7, 0x04, 0x66, 0x00, 0xe5, + 0x04, 0x66, 0x00, 0xec, 0x04, 0x66, 0x00, 0xc7, 0x04, 0x66, 0x01, 0x17, + 0x04, 0x66, 0x00, 0xe1, 0x04, 0x66, 0x00, 0xf8, 0x04, 0x66, 0x00, 0xe7, + 0x04, 0x66, 0x00, 0xe1, 0x04, 0x66, 0x00, 0xa6, 0x04, 0x66, 0x00, 0xa6, + 0x04, 0x66, 0x00, 0xa6, 0x04, 0x66, 0x01, 0x2f, 0x04, 0x66, 0x00, 0xee, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0xe7, 0x04, 0x66, 0x00, 0xe5, + 0x04, 0x66, 0x00, 0xec, 0x04, 0x66, 0x00, 0xc7, 0x04, 0x66, 0x01, 0x17, + 0x04, 0x66, 0x00, 0xe1, 0x04, 0x66, 0x00, 0xf8, 0x04, 0x66, 0x00, 0xe7, + 0x04, 0x66, 0x00, 0xe1, 0x04, 0x66, 0x00, 0xa6, 0x04, 0x66, 0x00, 0xa6, + 0x04, 0x66, 0x00, 0xa6, 0x04, 0x66, 0x01, 0x2f, 0x04, 0x66, 0x00, 0xee, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0xe7, 0x04, 0x66, 0x00, 0xe5, + 0x04, 0x66, 0x00, 0xec, 0x04, 0x66, 0x00, 0xc7, 0x04, 0x66, 0x01, 0x17, + 0x04, 0x66, 0x00, 0xe1, 0x04, 0x66, 0x00, 0xf8, 0x04, 0x66, 0x00, 0xe7, + 0x04, 0x66, 0x00, 0xe1, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x68, 0x04, 0x66, 0x00, 0x75, 0x04, 0x66, 0x00, 0x4e, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x62, + 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0xc3, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0xbe, + 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x39, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x28, + 0x04, 0x66, 0x01, 0x9c, 0x04, 0x66, 0x01, 0x9c, 0x04, 0x66, 0x00, 0xf5, + 0x04, 0x66, 0x00, 0xf5, 0x04, 0x66, 0xff, 0xb4, 0x04, 0x66, 0xff, 0xb4, + 0x04, 0x66, 0x00, 0xf5, 0x04, 0x66, 0x00, 0xf5, 0x04, 0x66, 0x00, 0xce, + 0x04, 0x66, 0x00, 0xcd, 0x04, 0x66, 0x01, 0x0d, 0x04, 0x66, 0x01, 0x0d, + 0x04, 0x66, 0x00, 0xe2, 0x04, 0x66, 0x00, 0xe2, 0x04, 0x66, 0x01, 0x0d, + 0x04, 0x66, 0x01, 0x0d, 0x04, 0x66, 0x00, 0xba, 0x04, 0x66, 0x00, 0xba, + 0x04, 0x66, 0x01, 0x98, 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0xff, 0xb4, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0xb8, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0xff, 0xb4, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0xff, 0xb4, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x57, 0x04, 0x66, 0x00, 0x57, 0x04, 0x66, 0x00, 0x43, + 0x04, 0x66, 0xff, 0x9d, 0x04, 0x66, 0xff, 0xcf, 0x04, 0x66, 0x00, 0x43, + 0x04, 0x66, 0xff, 0xbb, 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x0a, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x6d, + 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0xff, 0xb4, 0x04, 0x66, 0x00, 0x6d, + 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x6d, + 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x6d, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x66, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0xff, 0xb4, + 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0xff, 0xb4, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x34, 0x04, 0x66, 0xff, 0xed, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x34, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x34, + 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x6b, + 0x04, 0x66, 0xff, 0x9a, 0x04, 0x66, 0xff, 0xe8, 0x04, 0x66, 0x00, 0x6b, + 0x04, 0x66, 0xff, 0xc0, 0x04, 0x66, 0x00, 0x6b, 0x04, 0x66, 0x00, 0x17, + 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x38, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xf3, 0x04, 0x66, 0x00, 0xb0, + 0x04, 0x66, 0x00, 0x4d, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x32, + 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x62, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x01, 0xc3, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x2e, + 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x0e, 0x04, 0x66, 0x00, 0x64, + 0x04, 0x66, 0x00, 0x1f, 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x24, + 0x04, 0x66, 0x00, 0x29, 0x04, 0x66, 0x00, 0xa8, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x3e, 0x04, 0x66, 0x00, 0x2b, 0x04, 0x66, 0x00, 0x69, + 0x04, 0x66, 0x01, 0x08, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x12, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x11, 0x04, 0x66, 0x00, 0xcb, + 0x04, 0x66, 0x00, 0xcb, 0x04, 0x66, 0x00, 0xfb, 0x04, 0x66, 0x00, 0xfb, + 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0xa8, + 0x04, 0x66, 0x00, 0xa8, 0x04, 0x66, 0x00, 0xa8, 0x04, 0x66, 0x00, 0xa8, + 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x0a, + 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x02, 0x33, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xe8, + 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x52, 0x04, 0x66, 0x00, 0x32, + 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x5e, + 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0xf4, 0x04, 0x66, 0x01, 0x3c, 0x04, 0x66, 0x01, 0x21, + 0x04, 0x66, 0x01, 0x23, 0x04, 0x66, 0x01, 0x5b, 0x04, 0x66, 0x01, 0x5b, + 0x04, 0x66, 0x01, 0x0d, 0x04, 0x66, 0x01, 0x28, 0x04, 0x66, 0x01, 0x48, + 0x04, 0x66, 0x01, 0x54, 0x04, 0x66, 0x01, 0x3c, 0x04, 0x66, 0x01, 0x62, + 0x04, 0x66, 0x00, 0xfc, 0x04, 0x66, 0x01, 0x28, 0x04, 0x66, 0x01, 0x07, + 0x04, 0x66, 0x01, 0x3f, 0x04, 0x66, 0x01, 0x07, 0x04, 0x66, 0x01, 0x3c, + 0x04, 0x66, 0x01, 0x2a, 0x04, 0x66, 0x01, 0x1f, 0x04, 0x66, 0x01, 0x24, + 0x04, 0x66, 0x00, 0xf2, 0x04, 0x66, 0x00, 0xfc, 0x04, 0x66, 0x00, 0xf7, + 0x04, 0x66, 0x00, 0xf3, 0x04, 0x66, 0x01, 0x2d, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xf3, + 0x04, 0x66, 0xff, 0x9d, 0x04, 0x66, 0x00, 0xaf, 0x04, 0x66, 0x00, 0xaf, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x60, + 0x04, 0x66, 0x01, 0x76, 0x04, 0x66, 0x01, 0x76, 0x04, 0x66, 0xff, 0xf9, + 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x60, + 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x66, 0x04, 0x66, 0x01, 0x66, + 0x04, 0x66, 0x00, 0xd9, 0x04, 0x66, 0x01, 0x43, 0x04, 0x66, 0x01, 0xda, + 0x04, 0x66, 0x00, 0xf1, 0x04, 0x66, 0x00, 0xf1, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0xd2, 0x04, 0x66, 0x00, 0xd2, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0x92, 0x04, 0x66, 0xff, 0x92, 0x04, 0x66, 0xff, 0xf9, + 0x04, 0x66, 0x00, 0xf1, 0x04, 0x66, 0x01, 0x6d, 0x04, 0x66, 0x00, 0xf3, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x76, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x46, 0x04, 0x66, 0x01, 0x7a, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xaf, 0x04, 0x66, 0x00, 0xaf, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0xa7, 0x04, 0x66, 0x01, 0xa7, + 0x04, 0x66, 0x00, 0xe2, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x7e, + 0x04, 0x66, 0x00, 0xde, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x03, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x06, 0x04, 0x66, 0x01, 0x35, + 0x04, 0x66, 0x01, 0x35, 0x04, 0x66, 0x01, 0x33, 0x04, 0x66, 0x01, 0x33, + 0x04, 0x66, 0x01, 0x66, 0x04, 0x66, 0x01, 0x66, 0x04, 0x66, 0x01, 0x47, + 0x04, 0x66, 0x01, 0x47, 0x04, 0x66, 0x01, 0x69, 0x04, 0x66, 0x01, 0x69, + 0x04, 0x66, 0x01, 0x53, 0x04, 0x66, 0x01, 0x53, 0x04, 0x66, 0x01, 0x3d, + 0x04, 0x66, 0x01, 0x3d, 0x04, 0x66, 0x01, 0x4d, 0x04, 0x66, 0x01, 0x4d, + 0x04, 0x66, 0x01, 0x1a, 0x04, 0x66, 0x01, 0x1a, 0x04, 0x66, 0x01, 0x4b, + 0x04, 0x66, 0x01, 0x4b, 0x04, 0x66, 0x01, 0x3c, 0x04, 0x66, 0x01, 0x3c, + 0x04, 0x66, 0x01, 0x0e, 0x04, 0x66, 0x01, 0x0e, 0x04, 0x66, 0x01, 0x12, + 0x04, 0x66, 0x01, 0x12, 0x04, 0x66, 0x00, 0x9d, 0x04, 0x66, 0x00, 0x9d, + 0x04, 0x66, 0x00, 0x9d, 0x04, 0x66, 0x00, 0x9d, 0x04, 0x66, 0x01, 0xd0, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x6e, + 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x99, + 0x04, 0x66, 0x00, 0x99, 0x04, 0x66, 0x00, 0x99, 0x04, 0x66, 0x00, 0x99, + 0x04, 0x66, 0xff, 0xda, 0x04, 0x66, 0xff, 0xdb, 0x04, 0x66, 0xff, 0xda, + 0x04, 0x66, 0xff, 0xda, 0x04, 0x66, 0x01, 0x4b, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xe2, 0x04, 0x66, 0xff, 0xda, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x7a, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xda, + 0x04, 0x66, 0x00, 0x4d, 0x04, 0x66, 0x00, 0x9b, 0x04, 0x66, 0x00, 0x2a, + 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0xff, 0xa1, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x84, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0xff, 0x94, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x51, 0x04, 0x66, 0xff, 0xda, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x62, 0x04, 0x66, 0x00, 0x66, + 0x04, 0x66, 0xff, 0xf1, 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x23, + 0x04, 0x66, 0x00, 0x57, 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x68, + 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0x00, 0x35, + 0x04, 0x66, 0x00, 0x4d, 0x04, 0x66, 0x00, 0x4d, 0x04, 0x66, 0x00, 0x4e, + 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x32, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xd7, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x1e, 0x04, 0x66, 0xff, 0xf2, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x02, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x4d, + 0x04, 0x66, 0x00, 0x4d, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x55, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0xff, 0xb5, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xb5, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xb5, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xb5, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xb5, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xb5, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x5c, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x5e, + 0x04, 0x66, 0x00, 0x68, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb8, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x92, + 0x04, 0x66, 0xff, 0x92, 0x04, 0x66, 0x00, 0x0c, 0x04, 0x66, 0xff, 0x92, + 0x04, 0x66, 0x01, 0x15, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0xff, 0x92, 0x04, 0x66, 0x00, 0xac, + 0x04, 0x66, 0x00, 0x39, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x81, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x56, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x24, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0xc5, 0x04, 0x66, 0x00, 0x28, 0x04, 0x66, 0x00, 0x32, + 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x5e, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x62, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x57, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xff, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x21, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x68, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xdf, 0x04, 0x66, 0xff, 0x19, 0x04, 0x66, 0xff, 0x89, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x81, + 0x04, 0x66, 0x00, 0x68, 0x04, 0x66, 0x00, 0x7a, 0x04, 0x66, 0x00, 0xaa, + 0x04, 0x66, 0x00, 0x73, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x4a, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x30, 0x04, 0x66, 0x00, 0x57, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x0e, + 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x9b, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x3b, + 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x74, + 0x04, 0x66, 0x00, 0x83, 0x04, 0x66, 0x00, 0x4d, 0x04, 0x66, 0x00, 0x2c, + 0x04, 0x66, 0x00, 0x2a, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xec, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x0c, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x2c, 0x04, 0x66, 0x00, 0x02, 0x04, 0x66, 0x00, 0x34, + 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0x00, 0x0e, 0x04, 0x66, 0xff, 0xf3, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0xff, 0xf3, + 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0xff, 0xf3, + 0x04, 0x66, 0xff, 0xf3, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xf3, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x5e, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x32, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x01, 0x19, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x77, + 0x04, 0x66, 0x00, 0x37, 0x04, 0x66, 0x00, 0x77, 0x04, 0x66, 0x00, 0x37, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x10, 0x04, 0x66, 0x00, 0x89, + 0x04, 0x66, 0x00, 0x10, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x1c, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0xe1, + 0x04, 0x66, 0x01, 0xc3, 0x04, 0x66, 0x00, 0xfb, 0x04, 0x66, 0x00, 0xd1, + 0x04, 0x66, 0x01, 0x98, 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x64, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0x9d, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x28, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x61, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x51, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x01, 0x17, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0xff, 0xe4, + 0x04, 0x66, 0xff, 0x62, 0x04, 0x66, 0xff, 0xe4, 0x04, 0x66, 0x00, 0x19, + 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x16, + 0x04, 0x66, 0x00, 0x3e, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x94, 0x04, 0x66, 0x00, 0x54, + 0x04, 0x66, 0x00, 0x82, 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0x00, 0x04, 0x66, 0xff, 0x77, 0x04, 0x66, 0xfe, 0xec, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x9c, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0x9c, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x19, + 0x04, 0x66, 0x00, 0x50, 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x33, + 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0xa5, 0x04, 0x66, 0x00, 0xb1, + 0x04, 0x66, 0x00, 0xb6, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0xa5, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x66, + 0x04, 0x66, 0x00, 0x3e, 0x04, 0x66, 0x00, 0x64, 0x04, 0x66, 0x00, 0x69, + 0x04, 0x66, 0x00, 0x69, 0x04, 0x66, 0x00, 0x55, 0x04, 0x66, 0x00, 0x77, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x1c, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x89, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x00, 0x7b, + 0x04, 0x66, 0x00, 0x9b, 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x97, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x3b, + 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0xff, 0xa1, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x72, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x19, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0xb4, + 0x04, 0x66, 0x00, 0x58, 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0xb4, + 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x7b, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x06, 0x04, 0x66, 0x00, 0x95, + 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x16, 0x04, 0x66, 0x00, 0x2d, + 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x4b, + 0x04, 0x66, 0x01, 0x15, 0x04, 0x66, 0x00, 0x97, 0x04, 0x66, 0x01, 0x15, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x9f, + 0x04, 0x66, 0x00, 0x55, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0xef, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x83, 0x04, 0x66, 0x00, 0x97, + 0x04, 0x66, 0x00, 0x2c, 0x04, 0x66, 0x00, 0x2c, 0x04, 0x66, 0x00, 0x2c, + 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x0c, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x2a, + 0x04, 0x66, 0x00, 0x93, 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0xff, 0x91, + 0x04, 0x66, 0xff, 0x91, 0x04, 0x66, 0x00, 0x24, 0x04, 0x66, 0x00, 0x04, + 0x04, 0x66, 0x00, 0x1f, 0x04, 0x66, 0x00, 0x33, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x94, 0x04, 0x66, 0x00, 0x34, 0x04, 0x66, 0x00, 0xb9, + 0x04, 0x66, 0x00, 0x8c, 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0x00, 0xdc, + 0x04, 0x66, 0x00, 0xa9, 0x04, 0x66, 0x00, 0x60, 0x04, 0x66, 0x00, 0x2d, + 0x04, 0x66, 0x00, 0x7e, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0x20, 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x15, 0x04, 0x66, 0x00, 0x74, 0x04, 0x66, 0x00, 0x2b, + 0x04, 0x66, 0x00, 0x2b, 0x04, 0x66, 0x00, 0xa9, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0xac, 0x04, 0x66, 0x00, 0x61, 0x04, 0x66, 0x00, 0x7f, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x4b, + 0x04, 0x66, 0x00, 0x22, 0x04, 0x66, 0x00, 0x0e, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x99, 0x04, 0x66, 0x00, 0x46, + 0x04, 0x66, 0x00, 0xcc, 0x04, 0x66, 0x00, 0x11, 0x04, 0x66, 0x00, 0x86, + 0x04, 0x66, 0x00, 0xb9, 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0xff, 0xf9, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0x79, 0x04, 0x66, 0x01, 0x0f, + 0x04, 0x66, 0x00, 0xa8, 0x04, 0x66, 0x01, 0x10, 0x04, 0x66, 0x01, 0x2c, + 0x04, 0x66, 0x01, 0x2a, 0x04, 0x66, 0x00, 0xd2, 0x04, 0x66, 0x00, 0xf5, + 0x04, 0x66, 0x01, 0x20, 0x04, 0x66, 0x01, 0x0d, 0x04, 0x66, 0x01, 0x0b, + 0x04, 0x66, 0x01, 0x4e, 0x04, 0x66, 0x00, 0xc5, 0x04, 0x66, 0x00, 0xfb, + 0x04, 0x66, 0x00, 0xfd, 0x04, 0x66, 0x00, 0xcc, 0x04, 0x66, 0x00, 0xf2, + 0x04, 0x66, 0x01, 0x1d, 0x04, 0x66, 0x01, 0x13, 0x04, 0x66, 0x00, 0xe9, + 0x04, 0x66, 0x00, 0xf7, 0x04, 0x66, 0x00, 0xc3, 0x04, 0x66, 0x01, 0x13, + 0x04, 0x66, 0x01, 0x13, 0x04, 0x66, 0x01, 0x03, 0x04, 0x66, 0x00, 0xb9, + 0x04, 0x66, 0x01, 0x14, 0x04, 0x66, 0x01, 0x03, 0x04, 0x66, 0x00, 0xff, + 0x04, 0x66, 0x00, 0xff, 0x04, 0x66, 0x01, 0x0d, 0x04, 0x66, 0x01, 0x08, + 0x04, 0x66, 0x00, 0xf2, 0x04, 0x66, 0x01, 0x19, 0x04, 0x66, 0x01, 0x2a, + 0x04, 0x66, 0x00, 0xc1, 0x04, 0x66, 0x01, 0x19, 0x04, 0x66, 0x00, 0xf9, + 0x04, 0x66, 0x01, 0x25, 0x04, 0x66, 0x00, 0xea, 0x04, 0x66, 0x00, 0xea, + 0x04, 0x66, 0x01, 0x14, 0x04, 0x66, 0x00, 0xe8, 0x04, 0x66, 0x01, 0x19, + 0x04, 0x66, 0x00, 0xf0, 0x04, 0x66, 0x00, 0xcb, 0x04, 0x66, 0x00, 0xda, + 0x04, 0x66, 0x00, 0xee, 0x04, 0x66, 0x01, 0x06, 0x04, 0x66, 0x00, 0xe8, + 0x04, 0x66, 0x00, 0xf2, 0x04, 0x66, 0x00, 0xc7, 0x04, 0x66, 0x00, 0xc0, + 0x04, 0x66, 0x01, 0x18, 0x04, 0x66, 0x01, 0x34, 0x04, 0x66, 0x01, 0x19, + 0x04, 0x66, 0x00, 0xda, 0x04, 0x66, 0x01, 0x06, 0x04, 0x66, 0x00, 0xe8, + 0x04, 0x66, 0x01, 0x14, 0x04, 0x66, 0x00, 0xc7, 0x04, 0x66, 0x00, 0xc0, + 0x04, 0x66, 0x00, 0x41, 0x04, 0x66, 0xfe, 0xd5, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0xff, 0xc2, 0x04, 0x66, 0xff, 0xb3, 0x04, 0x66, 0xff, 0xb3, + 0x04, 0x66, 0xfe, 0xca, 0x04, 0x66, 0xff, 0x11, 0x04, 0x66, 0xfe, 0xf3, + 0x04, 0x66, 0x00, 0x11, 0x04, 0x66, 0xff, 0xa7, 0x04, 0x66, 0x00, 0x8f, + 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0xef, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0xff, 0x92, 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0x7b, + 0x04, 0x66, 0xff, 0x96, 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x0a, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x16, 0x04, 0x66, 0x00, 0x95, 0x04, 0x66, 0x00, 0x91, + 0x04, 0x66, 0x00, 0x1e, 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x8b, + 0x04, 0x66, 0x00, 0xb4, 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x7b, + 0x04, 0x66, 0x00, 0x17, 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x6d, 0x04, 0x66, 0x00, 0x4c, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0x00, 0x69, + 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x91, 0x04, 0x66, 0x00, 0xa5, + 0x04, 0x66, 0x00, 0x7b, 0x04, 0x66, 0x00, 0x89, 0x04, 0x66, 0x00, 0x6e, + 0x04, 0x66, 0x01, 0x0b, 0x04, 0x66, 0x01, 0x11, 0x04, 0x66, 0x01, 0x04, + 0x04, 0x66, 0x01, 0x00, 0x04, 0x66, 0x01, 0x08, 0x04, 0x66, 0x00, 0xf3, + 0x04, 0x66, 0x00, 0xf3, 0x04, 0x66, 0x00, 0xf2, 0x04, 0x66, 0x01, 0x1e, + 0x04, 0x66, 0x01, 0x1b, 0x04, 0x66, 0x01, 0x0b, 0x04, 0x66, 0x01, 0x23, + 0x04, 0x66, 0x01, 0x23, 0x04, 0x66, 0x00, 0xeb, 0x04, 0x66, 0x01, 0x21, + 0x04, 0x66, 0x01, 0x02, 0x04, 0x66, 0x01, 0x48, 0x04, 0x66, 0x00, 0xc1, + 0x04, 0x66, 0x00, 0xc1, 0x04, 0x66, 0x00, 0x92, 0x04, 0x66, 0x01, 0x22, + 0x04, 0x66, 0x01, 0x08, 0x04, 0x66, 0x00, 0xfa, 0x04, 0x66, 0x00, 0xda, + 0x04, 0x66, 0x01, 0x30, 0x04, 0x66, 0x01, 0x0d, 0x04, 0x66, 0x00, 0xea, + 0x04, 0x66, 0x00, 0xc2, 0x04, 0x66, 0x00, 0xe7, 0x04, 0x66, 0x01, 0x06, + 0x04, 0x66, 0x01, 0x06, 0x04, 0x66, 0x00, 0xca, 0x04, 0x66, 0x01, 0x20, + 0x04, 0x66, 0x01, 0x20, 0x04, 0x66, 0x01, 0x18, 0x04, 0x66, 0x01, 0x2c, + 0x04, 0x66, 0x00, 0xf2, 0x04, 0x66, 0x00, 0xfe, 0x04, 0x66, 0x00, 0xfe, + 0x04, 0x66, 0x01, 0x0f, 0x04, 0x66, 0x00, 0xfe, 0x04, 0x66, 0x01, 0x01, + 0x04, 0x66, 0x01, 0x00, 0x04, 0x66, 0x00, 0xfe, 0x04, 0x66, 0x00, 0x92, + 0x04, 0x66, 0x00, 0xc1, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0x07, + 0x04, 0x66, 0x01, 0x75, 0x04, 0x66, 0x00, 0xd3, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x3a, + 0x04, 0x66, 0x01, 0x3a, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0xc3, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0xae, 0x04, 0x66, 0x01, 0xae, 0x04, 0x66, 0xff, 0xf9, + 0x04, 0x66, 0xff, 0xf9, 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x60, + 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x60, 0x04, 0x66, 0x01, 0x58, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xbc, 0x04, 0x66, 0x01, 0x24, + 0x04, 0x66, 0x01, 0x29, 0x04, 0x66, 0x00, 0xed, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x41, 0x04, 0x66, 0x01, 0x41, 0x04, 0x66, 0x01, 0x41, + 0x04, 0x66, 0x01, 0x41, 0x04, 0x66, 0x01, 0x41, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x43, + 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x43, + 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, + 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x26, + 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x26, + 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x26, + 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x26, + 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x26, 0x04, 0x66, 0x00, 0x23, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x23, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x4b, + 0x04, 0x66, 0x00, 0x4b, 0x04, 0x66, 0x00, 0x4b, 0x04, 0x66, 0x00, 0x4b, + 0x04, 0x66, 0x00, 0x4b, 0x04, 0x66, 0x00, 0x4b, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, 0x04, 0x66, 0x00, 0x42, + 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, + 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, 0x04, 0x66, 0x00, 0x1a, + 0x04, 0x66, 0x00, 0x24, 0x04, 0x66, 0x00, 0x24, 0x04, 0x66, 0x00, 0x24, + 0x04, 0x66, 0x00, 0x24, 0x04, 0x66, 0x00, 0x24, 0x04, 0x66, 0x00, 0x24, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x4e, + 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x4e, 0x04, 0x66, 0x00, 0x4e, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x01, 0x40, 0x04, 0x66, 0x01, 0x40, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x37, + 0x04, 0x66, 0x01, 0x64, 0x04, 0x66, 0x01, 0x64, 0x04, 0x66, 0x01, 0xa7, + 0x04, 0x66, 0x01, 0xa7, 0x04, 0x66, 0x01, 0x6e, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xfe, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x7f, 0x04, 0x66, 0x01, 0x76, 0x04, 0x66, 0x01, 0x76, + 0x04, 0x66, 0x01, 0x76, 0x04, 0x66, 0x01, 0x76, 0x04, 0x66, 0x00, 0x1e, + 0x04, 0x66, 0x00, 0x1e, 0x04, 0x66, 0x01, 0x48, 0x04, 0x66, 0x01, 0x32, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x3c, 0x04, 0x66, 0x00, 0x3c, 0x04, 0x66, 0x01, 0x13, + 0x04, 0x66, 0x00, 0xff, 0x04, 0x66, 0x00, 0xf9, 0x04, 0x66, 0x00, 0xec, + 0x04, 0x66, 0x00, 0xff, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x05, 0x04, 0x66, 0x00, 0x05, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x66, 0x04, 0x66, 0x01, 0x66, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x7a, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x7a, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0xfc, 0xd7, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0x20, + 0x04, 0x66, 0x00, 0x46, 0x04, 0x66, 0x00, 0x46, 0x04, 0x66, 0x00, 0x46, + 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x9c, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x06, 0x04, 0x66, 0xff, 0xb9, 0x04, 0x66, 0x00, 0x89, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0xa5, + 0x04, 0x66, 0x00, 0x6f, 0x04, 0x66, 0xff, 0x96, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0xb8, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x46, + 0x04, 0x66, 0x00, 0x64, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x77, 0x04, 0x66, 0xff, 0xa1, 0x04, 0x66, 0x00, 0x06, + 0x04, 0x66, 0xfe, 0x4e, 0x04, 0x66, 0xfd, 0x93, 0x04, 0x66, 0xfd, 0x68, + 0x04, 0x66, 0xfe, 0x4e, 0x04, 0x66, 0xfe, 0x4e, 0x04, 0x66, 0xfd, 0x93, + 0x04, 0x66, 0xfd, 0x67, 0x04, 0x66, 0xfe, 0x4e, 0x04, 0x66, 0xfe, 0x1e, + 0x04, 0x66, 0xfe, 0x1b, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0xfe, 0x4e, 0x04, 0x66, 0xfd, 0x9a, + 0x04, 0x66, 0xfd, 0x68, 0x04, 0x66, 0xfe, 0x4e, 0x04, 0x66, 0xfe, 0x4e, + 0x04, 0x66, 0xfd, 0x93, 0x04, 0x66, 0xfd, 0x67, 0x04, 0x66, 0xfe, 0x4e, + 0x04, 0x66, 0xfd, 0xc0, 0x04, 0x66, 0xfc, 0xe4, 0x04, 0x66, 0xfc, 0xf1, + 0x04, 0x66, 0xfd, 0xc4, 0x04, 0x66, 0xfc, 0xe3, 0x04, 0x66, 0xfc, 0xf0, + 0x04, 0x66, 0xfd, 0x70, 0x04, 0x66, 0xfd, 0x98, 0x04, 0x66, 0xfd, 0x68, + 0x04, 0x66, 0xfc, 0x8d, 0x04, 0x66, 0xfc, 0x97, 0x04, 0x66, 0xfd, 0x6d, + 0x04, 0x66, 0xfd, 0x6a, 0x04, 0x66, 0xfc, 0x8d, 0x04, 0x66, 0xfc, 0x97, + 0x04, 0x66, 0xfd, 0x6e, 0x04, 0x66, 0xfd, 0x18, 0x04, 0x66, 0xfd, 0x4f, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0xfd, 0x68, 0x04, 0x66, 0xfc, 0x8d, + 0x04, 0x66, 0xfc, 0x97, 0x04, 0x66, 0xfd, 0x6d, 0x04, 0x66, 0xfd, 0x6a, + 0x04, 0x66, 0xfc, 0x8d, 0x04, 0x66, 0xfc, 0x97, 0x04, 0x66, 0xfd, 0x6e, + 0x04, 0x66, 0xfd, 0x97, 0x04, 0x66, 0xfc, 0xc8, 0x04, 0x66, 0xfc, 0xf0, + 0x04, 0x66, 0xfd, 0x9c, 0x04, 0x66, 0xfd, 0x9a, 0x04, 0x66, 0xfc, 0xc8, + 0x04, 0x66, 0xfc, 0xf0, 0x04, 0x66, 0xfd, 0x9d, 0x04, 0x66, 0xfd, 0x53, + 0x04, 0x66, 0xfd, 0xa5, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xfd, 0x86, 0x04, 0x66, 0xfd, 0x11, 0x04, 0x66, 0xfc, 0x87, + 0x04, 0x66, 0xfd, 0x88, 0x04, 0x66, 0xfd, 0x11, 0x04, 0x66, 0xfc, 0x87, + 0x04, 0x66, 0xfd, 0xad, 0x04, 0x66, 0xfd, 0x59, 0x04, 0x66, 0xfd, 0x93, + 0x04, 0x66, 0xfd, 0x2b, 0x04, 0x66, 0xfc, 0x31, 0x04, 0x66, 0xfc, 0xa0, + 0x04, 0x66, 0xfd, 0x2f, 0x04, 0x66, 0xfc, 0xcb, 0x04, 0x66, 0xfd, 0x4d, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xfd, 0x99, + 0x04, 0x66, 0xfd, 0x22, 0x04, 0x66, 0xfc, 0x9b, 0x04, 0x66, 0xfd, 0x9e, + 0x04, 0x66, 0xfd, 0x9b, 0x04, 0x66, 0xfd, 0x22, 0x04, 0x66, 0xfc, 0x9b, + 0x04, 0x66, 0xfd, 0x9e, 0x04, 0x66, 0xfd, 0xac, 0x04, 0x66, 0xfd, 0x4f, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0xfd, 0x99, 0x04, 0x66, 0xfd, 0x22, + 0x04, 0x66, 0xfc, 0x9b, 0x04, 0x66, 0xfd, 0x9e, 0x04, 0x66, 0xfd, 0x9b, + 0x04, 0x66, 0xfd, 0x22, 0x04, 0x66, 0xfc, 0x9b, 0x04, 0x66, 0xfd, 0x9e, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x27, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xbd, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x79, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x32, + 0x04, 0x66, 0xff, 0xc7, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x05, + 0x04, 0x66, 0xff, 0xff, 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0xff, 0xca, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x0e, 0x04, 0x66, 0xff, 0xcc, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x05, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x1f, 0x04, 0x66, 0xff, 0xda, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0xff, 0xda, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x19, 0x04, 0x66, 0xff, 0xc8, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x05, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0xa8, 0x04, 0x66, 0x01, 0x0b, 0x04, 0x66, 0x00, 0x5d, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x87, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0xff, 0xf8, 0x04, 0x66, 0x00, 0x5c, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x10, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x5f, + 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x0a, + 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0xff, 0xff, 0x04, 0x66, 0x00, 0x50, + 0x04, 0x66, 0x00, 0x50, 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0xff, 0xc0, + 0x04, 0x66, 0xff, 0xc0, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0xff, 0xf8, + 0x04, 0x66, 0x00, 0x81, 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x5f, + 0x04, 0x66, 0x00, 0x5f, 0x04, 0x66, 0x00, 0x50, 0x04, 0x66, 0x00, 0x2d, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xd7, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x2a, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0xff, 0xf8, 0x04, 0x66, 0xff, 0xe3, 0x04, 0x66, 0x00, 0x5c, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x25, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xc9, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0xc5, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x08, + 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x2c, 0x04, 0x66, 0x00, 0x2e, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x01, 0x04, 0x66, 0x00, 0x49, + 0x04, 0x66, 0x00, 0x2f, 0x04, 0x66, 0x00, 0x31, 0x04, 0x66, 0x00, 0x6a, + 0x04, 0x66, 0x00, 0x08, 0x04, 0x66, 0x00, 0x7e, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x0a, 0x04, 0x66, 0x00, 0x87, + 0x04, 0x66, 0xff, 0xfa, 0x04, 0x66, 0x00, 0x69, 0x04, 0x66, 0x00, 0x96, + 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x41, + 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x55, + 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x21, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x50, 0x04, 0x66, 0x00, 0x50, + 0x04, 0x66, 0x00, 0x7d, 0x04, 0x66, 0xff, 0xe3, 0x04, 0x66, 0xff, 0xe3, + 0x04, 0x66, 0xff, 0xfa, 0x04, 0x66, 0x00, 0x82, 0x04, 0x66, 0x00, 0x10, + 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x7f, 0x04, 0x66, 0x00, 0x50, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x96, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x12, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xfa, + 0x04, 0x66, 0xff, 0xed, 0x04, 0x66, 0x00, 0x6e, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x48, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0xcd, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x0a, + 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x4c, + 0x04, 0x66, 0x00, 0x2c, 0x04, 0x66, 0x00, 0x3e, 0x04, 0x66, 0x00, 0x67, + 0x04, 0x66, 0x00, 0x05, 0x04, 0x66, 0x00, 0x5a, 0x04, 0x66, 0x00, 0x67, + 0x04, 0x66, 0x00, 0x2d, 0x04, 0x66, 0x00, 0x6a, 0x04, 0x66, 0x00, 0x10, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xdc, 0x00, 0x00, 0xff, 0x25, 0x04, 0x66, 0x00, 0x85, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0xe6, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x74, 0x04, 0x66, 0x00, 0x39, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x21, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x52, 0x04, 0x66, 0x00, 0x01, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x53, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x4f, 0x04, 0x66, 0xff, 0xfc, + 0x04, 0x66, 0x00, 0x18, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x2f, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x14, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0xff, 0xed, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x03, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x3b, 0x04, 0x66, 0x00, 0x54, + 0x04, 0x66, 0x00, 0x8b, 0x04, 0x66, 0x00, 0x66, 0x04, 0x66, 0x00, 0x14, + 0x04, 0x66, 0x00, 0x44, 0x04, 0x66, 0x00, 0x5c, 0x04, 0x66, 0x00, 0x3b, + 0x04, 0x66, 0x00, 0x54, 0x04, 0x66, 0x00, 0x3f, 0x04, 0x66, 0x00, 0xac, + 0x04, 0x66, 0x00, 0x3c, 0x04, 0x66, 0x00, 0x5a, 0x04, 0x66, 0x00, 0x3c, + 0x04, 0x66, 0x00, 0xae, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0xb7, 0x04, 0x66, 0x01, 0xb7, 0x04, 0x66, 0x01, 0xb6, + 0x04, 0x66, 0x01, 0xb6, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x2b, 0x04, 0x66, 0x00, 0x09, 0x04, 0x66, 0xff, 0xfb, + 0x04, 0x66, 0xff, 0xfb, 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x35, + 0x04, 0x66, 0x00, 0x04, 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0xff, 0xfa, + 0x04, 0x66, 0x00, 0x35, 0x04, 0x66, 0x00, 0x53, 0x04, 0x66, 0x00, 0x27, + 0x04, 0x66, 0xff, 0xb5, 0x04, 0x66, 0x00, 0x27, 0x04, 0x66, 0x00, 0x25, + 0x04, 0x66, 0x00, 0x23, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x52, + 0x04, 0x66, 0x00, 0x3c, 0x04, 0x66, 0x00, 0x3f, 0x04, 0x66, 0x00, 0x1e, + 0x04, 0x66, 0x00, 0x32, 0x04, 0x66, 0x00, 0x12, 0x04, 0x66, 0x00, 0x34, + 0x04, 0x66, 0x00, 0x44, 0x04, 0x66, 0x00, 0x33, 0x04, 0x66, 0xff, 0xf4, + 0x04, 0x66, 0x00, 0x43, 0x04, 0x66, 0x00, 0x48, 0x04, 0x66, 0x00, 0x30, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x85, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x84, + 0x04, 0x66, 0x01, 0xac, 0x04, 0x66, 0x01, 0x6a, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x00, 0x81, 0x00, 0x00, 0xff, 0xdc, 0x00, 0x00, 0xfe, 0x51, + 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x01, 0x6d, 0x04, 0x66, 0x00, 0x00, + 0x04, 0x66, 0x01, 0x2e, 0x04, 0x66, 0x00, 0x00, 0x04, 0x66, 0x00, 0x5b, + 0x04, 0x66, 0x01, 0x4b, 0x04, 0x66, 0x00, 0x7a, 0x04, 0x66, 0x01, 0x38, + 0x04, 0x66, 0x00, 0x03, 0x04, 0x66, 0xff, 0xfe, 0x04, 0x66, 0x00, 0x40, + 0x04, 0x66, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x01, 0x57, + 0x01, 0x02, 0x00, 0xd6, 0x01, 0x3a, 0x01, 0x1c, 0x01, 0x57, 0x01, 0xa0, + 0x01, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0xca, 0x01, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xd2, 0xff, 0x92, 0x00, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xb5, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7b, 0x00, 0x79, 0x00, 0x91, 0x00, 0x7b, 0x00, 0x79, 0x00, 0x7b, + 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x4f, 0x00, 0x7c, + 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x12, 0x30, + 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x14, 0x3a, 0x00, 0x04, 0x12, 0x14, + 0x00, 0x00, 0x01, 0x08, 0x01, 0x00, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x0d, 0x00, 0x7e, 0x02, 0x68, 0x02, 0xaf, 0x03, 0x6f, 0x03, 0x75, + 0x03, 0x7e, 0x03, 0x8a, 0x03, 0x8c, 0x03, 0xa1, 0x03, 0xce, 0x04, 0x0f, + 0x04, 0x2f, 0x04, 0x4f, 0x04, 0x86, 0x05, 0x13, 0x0e, 0x3f, 0x1d, 0xbf, + 0x1d, 0xca, 0x1e, 0x9b, 0x1e, 0x9e, 0x1e, 0xf9, 0x1f, 0x15, 0x1f, 0x1d, + 0x1f, 0x45, 0x1f, 0x4d, 0x1f, 0x57, 0x1f, 0x59, 0x1f, 0x5b, 0x1f, 0x5d, + 0x1f, 0x7d, 0x1f, 0xb4, 0x1f, 0xc4, 0x1f, 0xd3, 0x1f, 0xdb, 0x1f, 0xef, + 0x1f, 0xf4, 0x1f, 0xfe, 0x20, 0x10, 0x20, 0x22, 0x20, 0x26, 0x20, 0x30, + 0x20, 0x34, 0x20, 0x3a, 0x20, 0x3e, 0x20, 0x44, 0x20, 0x5f, 0x20, 0x71, + 0x20, 0x8e, 0x20, 0x94, 0x20, 0xb5, 0x20, 0xba, 0x20, 0xdd, 0x21, 0x05, + 0x21, 0x13, 0x21, 0x17, 0x21, 0x22, 0x21, 0x26, 0x21, 0x2e, 0x21, 0x32, + 0x21, 0x4e, 0x21, 0x5e, 0x21, 0x84, 0x21, 0x95, 0x21, 0xa8, 0x22, 0x02, + 0x22, 0x06, 0x22, 0x0f, 0x22, 0x12, 0x22, 0x15, 0x22, 0x1a, 0x22, 0x1f, + 0x22, 0x29, 0x22, 0x2b, 0x22, 0x48, 0x22, 0x61, 0x22, 0x65, 0x23, 0x02, + 0x23, 0x10, 0x23, 0x21, 0x24, 0x73, 0x24, 0xf4, 0x25, 0x00, 0x25, 0x02, + 0x25, 0x0c, 0x25, 0x10, 0x25, 0x14, 0x25, 0x18, 0x25, 0x1c, 0x25, 0x24, + 0x25, 0x2c, 0x25, 0x34, 0x25, 0x3c, 0x25, 0x6c, 0x25, 0x80, 0x25, 0x84, + 0x25, 0x88, 0x25, 0x8c, 0x25, 0x93, 0x25, 0xa1, 0x25, 0xac, 0x25, 0xb2, + 0x25, 0xb4, 0x25, 0xb8, 0x25, 0xba, 0x25, 0xbc, 0x25, 0xbe, 0x25, 0xc2, + 0x25, 0xc4, 0x25, 0xcc, 0x25, 0xcf, 0x25, 0xd9, 0x25, 0xe6, 0x26, 0x3c, + 0x26, 0x40, 0x26, 0x42, 0x26, 0x60, 0x26, 0x63, 0x26, 0x66, 0x26, 0x6b, + 0x27, 0x36, 0x27, 0x7f, 0x2c, 0x6c, 0x2c, 0x77, 0x2e, 0x17, 0xa7, 0x1a, + 0xa7, 0x21, 0xfb, 0x02, 0xfe, 0x23, 0xfe, 0xff, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0d, 0x00, 0x20, 0x00, 0xa0, 0x02, 0x69, 0x02, 0xb0, + 0x03, 0x74, 0x03, 0x7a, 0x03, 0x84, 0x03, 0x8c, 0x03, 0x8e, 0x03, 0xa3, + 0x03, 0xd0, 0x04, 0x10, 0x04, 0x30, 0x04, 0x50, 0x04, 0x88, 0x0e, 0x3f, + 0x1d, 0x00, 0x1d, 0xc0, 0x1d, 0xfe, 0x1e, 0x9e, 0x1e, 0xa0, 0x1f, 0x00, + 0x1f, 0x18, 0x1f, 0x20, 0x1f, 0x48, 0x1f, 0x50, 0x1f, 0x59, 0x1f, 0x5b, + 0x1f, 0x5d, 0x1f, 0x5f, 0x1f, 0x80, 0x1f, 0xb6, 0x1f, 0xc6, 0x1f, 0xd6, + 0x1f, 0xdd, 0x1f, 0xf2, 0x1f, 0xf6, 0x20, 0x00, 0x20, 0x12, 0x20, 0x26, + 0x20, 0x2f, 0x20, 0x32, 0x20, 0x39, 0x20, 0x3c, 0x20, 0x43, 0x20, 0x5e, + 0x20, 0x70, 0x20, 0x74, 0x20, 0x90, 0x20, 0xa0, 0x20, 0xb8, 0x20, 0xdd, + 0x21, 0x05, 0x21, 0x13, 0x21, 0x16, 0x21, 0x22, 0x21, 0x26, 0x21, 0x2e, + 0x21, 0x32, 0x21, 0x4d, 0x21, 0x53, 0x21, 0x83, 0x21, 0x90, 0x21, 0xa8, + 0x22, 0x02, 0x22, 0x06, 0x22, 0x0f, 0x22, 0x11, 0x22, 0x15, 0x22, 0x19, + 0x22, 0x1e, 0x22, 0x29, 0x22, 0x2b, 0x22, 0x48, 0x22, 0x60, 0x22, 0x64, + 0x23, 0x02, 0x23, 0x10, 0x23, 0x20, 0x24, 0x60, 0x24, 0xea, 0x24, 0xff, + 0x25, 0x02, 0x25, 0x0c, 0x25, 0x10, 0x25, 0x14, 0x25, 0x18, 0x25, 0x1c, + 0x25, 0x24, 0x25, 0x2c, 0x25, 0x34, 0x25, 0x3c, 0x25, 0x50, 0x25, 0x80, + 0x25, 0x84, 0x25, 0x88, 0x25, 0x8c, 0x25, 0x90, 0x25, 0xa0, 0x25, 0xaa, + 0x25, 0xb2, 0x25, 0xb4, 0x25, 0xb8, 0x25, 0xba, 0x25, 0xbc, 0x25, 0xbe, + 0x25, 0xc2, 0x25, 0xc4, 0x25, 0xca, 0x25, 0xcf, 0x25, 0xd8, 0x25, 0xe6, + 0x26, 0x3a, 0x26, 0x40, 0x26, 0x42, 0x26, 0x60, 0x26, 0x63, 0x26, 0x65, + 0x26, 0x6a, 0x27, 0x36, 0x27, 0x76, 0x2c, 0x60, 0x2c, 0x74, 0x2e, 0x17, + 0xa7, 0x17, 0xa7, 0x20, 0xfb, 0x01, 0xfe, 0x20, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x01, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x03, 0xac, 0x00, 0x00, + 0xfe, 0x6a, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xfd, 0xd0, 0xfd, 0xe4, 0x00, 0x00, 0x00, 0x00, 0xfb, 0xfd, + 0xe9, 0x5c, 0x00, 0x00, 0x00, 0x00, 0xec, 0x0d, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x39, 0xe9, 0x39, + 0xe9, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0x37, + 0x00, 0x00, 0xe9, 0xa3, 0xe1, 0x34, 0x00, 0x00, 0x00, 0x00, 0xe9, 0xe2, + 0x00, 0x00, 0x00, 0x00, 0xe7, 0x65, 0x00, 0x00, 0xe9, 0xf4, 0xe9, 0x30, + 0xe8, 0xe6, 0xe1, 0xa6, 0x00, 0x00, 0xe1, 0x35, 0xe1, 0x99, 0xe1, 0x2a, + 0xe3, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe1, 0xbb, + 0xe0, 0xb9, 0xe0, 0xb8, 0xe0, 0xb2, 0x00, 0x00, 0xe8, 0x2e, 0x00, 0x00, + 0x00, 0x00, 0xe1, 0x18, 0xe0, 0x91, 0xe0, 0x6a, 0x00, 0x00, 0xe0, 0x51, + 0xe0, 0x4f, 0xe0, 0x30, 0xe0, 0x23, 0xe6, 0x2c, 0x00, 0x00, 0x00, 0x00, + 0xde, 0x6f, 0xde, 0x6e, 0xde, 0x69, 0xde, 0x63, 0xde, 0x5e, 0xde, 0x58, + 0xde, 0x4f, 0xde, 0x4c, 0xde, 0x41, 0xde, 0x36, 0x00, 0x00, 0xdd, 0xea, + 0xdd, 0xe9, 0xdd, 0xe1, 0xdd, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdd, 0xa5, 0xdd, 0xa6, 0xdd, 0xa5, 0xdd, 0xa5, 0xdd, 0x9c, 0xdd, 0x9d, + 0xdd, 0x9a, 0xdd, 0x9a, 0x00, 0x00, 0xe4, 0x77, 0x00, 0x00, 0xe4, 0x61, + 0x00, 0x00, 0xdd, 0x08, 0xdd, 0x05, 0xdc, 0xec, 0xdc, 0xe8, 0xdc, 0xe4, + 0xdc, 0xe3, 0xdc, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdb, 0xc2, + 0x60, 0xd8, 0x60, 0xd3, 0x05, 0xb9, 0x0c, 0x28, 0x0b, 0x4d, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0xc0, 0x00, 0x00, 0x05, 0x4e, + 0x00, 0x00, 0x06, 0xca, 0x06, 0xd2, 0x00, 0x00, 0x06, 0xdc, 0x07, 0x02, + 0x07, 0x58, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd2, 0x08, 0x3e, 0x00, 0x00, + 0x00, 0x00, 0x09, 0x50, 0x09, 0x64, 0x00, 0x00, 0x0a, 0x9c, 0x0b, 0x4e, + 0x0b, 0x78, 0x0b, 0x82, 0x0b, 0xcc, 0x0b, 0xd6, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0b, 0xde, 0x0c, 0x1a, 0x0c, 0x82, 0x0c, 0x9e, 0x0c, 0xb8, + 0x0c, 0xc2, 0x0c, 0xe6, 0x0c, 0xea, 0x0c, 0xfa, 0x0d, 0x1a, 0x00, 0x00, + 0x0d, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x36, 0x0d, 0x3a, 0x00, 0x00, + 0x0d, 0x3a, 0x0d, 0x3c, 0x00, 0x00, 0x0d, 0x6e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0d, 0x8a, 0x0d, 0x8c, 0x0d, 0xa2, 0x0d, 0xa4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xa6, 0x00, 0x00, 0x0d, 0xa6, + 0x0d, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xa4, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x9c, 0x0d, 0xb0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x9e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xce, 0x0d, 0xd4, 0x0d, 0xd6, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0xca, 0x00, 0x00, 0x0d, 0xcc, 0x00, 0x00, + 0x0d, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0xc2, 0x0d, 0xd4, 0x0d, 0xec, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x01, 0x60, 0x02, 0x51, 0x02, 0x64, 0x02, 0x5b, 0x02, 0xa9, + 0x01, 0x3a, 0x02, 0x50, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x8b, 0x02, 0xab, + 0x01, 0x59, 0x01, 0x5e, 0x01, 0x5c, 0x01, 0x75, 0x02, 0x65, 0x02, 0x68, + 0x02, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x6e, + 0x02, 0x6f, 0x02, 0x70, 0x01, 0x5b, 0x01, 0x5a, 0x02, 0xb3, 0x02, 0xb0, + 0x02, 0xb4, 0x01, 0x63, 0x02, 0x52, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, + 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, + 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, 0x01, 0x83, + 0x02, 0x4e, 0x01, 0x84, 0x02, 0x4b, 0x02, 0x4f, 0x01, 0x3c, 0x00, 0x83, + 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, + 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, + 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, + 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, + 0x00, 0x9c, 0x01, 0x87, 0x01, 0x76, 0x01, 0x88, 0x02, 0x4c, 0x00, 0x03, + 0x01, 0x61, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x59, 0x02, 0x60, 0x02, 0x4d, + 0x01, 0x8e, 0x01, 0x47, 0x02, 0x54, 0x02, 0x61, 0x01, 0x71, 0x02, 0xb7, + 0x01, 0x5e, 0x02, 0x56, 0x01, 0x49, 0x02, 0xb8, 0x02, 0xad, 0x02, 0x7f, + 0x02, 0x80, 0x01, 0x3e, 0x02, 0xc0, 0x01, 0x8f, 0x01, 0x7d, 0x01, 0x54, + 0x02, 0x7e, 0x02, 0x62, 0x01, 0x72, 0x02, 0xa6, 0x02, 0xa7, 0x02, 0xa8, + 0x01, 0x64, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, + 0x00, 0x25, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, + 0x00, 0x36, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x45, 0x00, 0x30, + 0x00, 0x54, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, + 0x02, 0xae, 0x00, 0x5f, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x72, + 0x00, 0x7d, 0x00, 0x62, 0x00, 0xef, 0x00, 0x9d, 0x00, 0x9e, 0x00, 0x9f, + 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa4, 0x00, 0xa7, 0x00, 0xad, 0x00, 0xb1, + 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, + 0x00, 0xc6, 0x00, 0xaf, 0x00, 0xd7, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd, + 0x00, 0xde, 0x00, 0xdf, 0x02, 0xaf, 0x00, 0xe3, 0x00, 0xf4, 0x00, 0xf5, + 0x00, 0xf6, 0x00, 0xf8, 0x01, 0x03, 0x00, 0xe6, 0x01, 0x05, 0x00, 0x23, + 0x00, 0xa2, 0x00, 0x24, 0x00, 0xa3, 0x00, 0x27, 0x00, 0xa6, 0x00, 0x2a, + 0x00, 0xa9, 0x00, 0x2b, 0x00, 0xaa, 0x00, 0x2d, 0x00, 0xac, 0x00, 0x2c, + 0x00, 0xab, 0x00, 0x2f, 0x00, 0xae, 0x00, 0x31, 0x00, 0xb0, 0x00, 0x37, + 0x00, 0xb6, 0x00, 0x38, 0x00, 0xb7, 0x00, 0x39, 0x00, 0xb8, 0x00, 0x3a, + 0x00, 0xb9, 0x00, 0x35, 0x00, 0xb4, 0x00, 0x3b, 0x00, 0xbc, 0x00, 0x3c, + 0x00, 0xbd, 0x00, 0x3d, 0x00, 0xbe, 0x00, 0x3e, 0x00, 0xbf, 0x00, 0x3f, + 0x00, 0xc0, 0x00, 0x40, 0x00, 0xc1, 0x00, 0x44, 0x00, 0xc5, 0x00, 0x46, + 0x00, 0xc7, 0x00, 0x47, 0x00, 0xc8, 0x00, 0x49, 0x00, 0xc9, 0x00, 0x48, + 0x00, 0xca, 0x00, 0x4a, 0x00, 0xcb, 0x00, 0x4b, 0x00, 0xcd, 0x00, 0x4c, + 0x00, 0xce, 0x00, 0xcf, 0x00, 0x4d, 0x00, 0xd0, 0x00, 0x4f, 0x00, 0xd2, + 0x00, 0x4e, 0x00, 0xd1, 0x00, 0x51, 0x00, 0xd4, 0x00, 0x50, 0x00, 0xd3, + 0x00, 0x52, 0x00, 0xd5, 0x00, 0x55, 0x00, 0xd8, 0x00, 0x53, 0x00, 0xd6, + 0x00, 0xd9, 0x00, 0x56, 0x00, 0xda, 0x00, 0x5c, 0x00, 0xe0, 0x00, 0x5d, + 0x00, 0xe1, 0x00, 0x5e, 0x00, 0xe2, 0x00, 0x61, 0x00, 0xe5, 0x00, 0x63, + 0x00, 0xe7, 0x00, 0x65, 0x00, 0xe9, 0x00, 0x64, 0x00, 0xe8, 0x00, 0x66, + 0x00, 0xea, 0x00, 0x67, 0x00, 0xeb, 0x00, 0x69, 0x00, 0xed, 0x00, 0x68, + 0x00, 0xec, 0x03, 0x9d, 0x03, 0x9e, 0x00, 0x6b, 0x00, 0xf1, 0x00, 0x6d, + 0x00, 0xf3, 0x00, 0x71, 0x00, 0xf7, 0x00, 0x73, 0x00, 0xf9, 0x00, 0x74, + 0x00, 0xfa, 0x00, 0x75, 0x00, 0xfb, 0x00, 0x76, 0x00, 0xfc, 0x00, 0x77, + 0x00, 0xfd, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x7e, 0x01, 0x04, 0x00, 0x7f, + 0x00, 0x80, 0x01, 0x06, 0x00, 0x82, 0x01, 0x08, 0x00, 0x81, 0x01, 0x07, + 0x00, 0xf0, 0x05, 0x0f, 0x04, 0x59, 0x04, 0x5a, 0x05, 0x10, 0x04, 0x5b, + 0x05, 0x11, 0x04, 0x5c, 0x04, 0x5d, 0x05, 0x12, 0x04, 0x5e, 0x04, 0x5f, + 0x04, 0x60, 0x05, 0x13, 0x05, 0x14, 0x04, 0x61, 0x04, 0x62, 0x04, 0x63, + 0x04, 0x64, 0x02, 0x5f, 0x04, 0x65, 0x04, 0x66, 0x05, 0x16, 0x04, 0x67, + 0x04, 0x68, 0x04, 0x69, 0x05, 0x18, 0x05, 0x19, 0x05, 0x1c, 0x04, 0x6a, + 0x04, 0x6b, 0x05, 0x1d, 0x04, 0x6c, 0x02, 0xf5, 0x03, 0x22, 0x04, 0x6d, + 0x05, 0x1e, 0x04, 0x6e, 0x05, 0x1f, 0x04, 0x6f, 0x04, 0x70, 0x05, 0x20, + 0x04, 0x71, 0x05, 0x7a, 0x05, 0x21, 0x04, 0x72, 0x05, 0x22, 0x04, 0x73, + 0x02, 0xfd, 0x03, 0x2a, 0x04, 0x74, 0x04, 0x75, 0x04, 0x76, 0x05, 0x23, + 0x04, 0x77, 0x05, 0x24, 0x04, 0x78, 0x04, 0x79, 0x05, 0x25, 0x05, 0x26, + 0x05, 0x7b, 0x04, 0x7a, 0x05, 0x27, 0x05, 0x7c, 0x05, 0x17, 0x05, 0x7d, + 0x05, 0x7e, 0x05, 0x7f, 0x05, 0x80, 0x04, 0x7b, 0x04, 0x7c, 0x05, 0x28, + 0x04, 0x7d, 0x04, 0x7e, 0x05, 0x29, 0x04, 0x7f, 0x04, 0x80, 0x05, 0x2a, + 0x04, 0x81, 0x05, 0x2b, 0x04, 0x82, 0x05, 0x2c, 0x04, 0x83, 0x05, 0x2f, + 0x04, 0x84, 0x05, 0x30, 0x04, 0x85, 0x05, 0x31, 0x04, 0x86, 0x05, 0x32, + 0x04, 0x87, 0x05, 0x33, 0x04, 0x88, 0x05, 0x34, 0x05, 0x35, 0x04, 0x89, + 0x05, 0x36, 0x04, 0x8a, 0x05, 0x37, 0x04, 0x8b, 0x05, 0x38, 0x04, 0x8c, + 0x05, 0x39, 0x04, 0x8d, 0x05, 0x3a, 0x04, 0x8e, 0x05, 0x3b, 0x04, 0x8f, + 0x05, 0x3c, 0x04, 0x90, 0x05, 0x3d, 0x04, 0x91, 0x05, 0x3e, 0x05, 0x3f, + 0x04, 0x92, 0x04, 0x93, 0x05, 0x41, 0x04, 0x94, 0x05, 0x42, 0x04, 0x95, + 0x04, 0x96, 0x04, 0x97, 0x05, 0x43, 0x00, 0x26, 0x00, 0xa5, 0x00, 0x29, + 0x00, 0xa8, 0x00, 0x60, 0x00, 0xe4, 0x04, 0x98, 0x05, 0x44, 0x04, 0x99, + 0x05, 0x45, 0x04, 0x9a, 0x05, 0x46, 0x04, 0x9b, 0x05, 0x47, 0x04, 0x9c, + 0x05, 0x48, 0x04, 0x9d, 0x05, 0x4b, 0x04, 0x9e, 0x05, 0x4e, 0x04, 0x9f, + 0x05, 0x4f, 0x04, 0xa0, 0x05, 0x50, 0x04, 0xa1, 0x05, 0x54, 0x04, 0xa2, + 0x05, 0x58, 0x04, 0xa3, 0x05, 0x59, 0x00, 0x6a, 0x00, 0xee, 0x00, 0x6c, + 0x00, 0xf2, 0x04, 0xa4, 0x05, 0x5a, 0x04, 0xa5, 0x05, 0x5b, 0x04, 0xa6, + 0x05, 0x5c, 0x04, 0xa7, 0x05, 0x5d, 0x04, 0xa8, 0x05, 0x5e, 0x04, 0xa9, + 0x05, 0x5f, 0x04, 0xaa, 0x05, 0x60, 0x04, 0xab, 0x05, 0x61, 0x04, 0xac, + 0x05, 0x62, 0x04, 0xad, 0x05, 0x63, 0x04, 0xae, 0x05, 0x64, 0x04, 0xaf, + 0x05, 0x65, 0x05, 0x66, 0x05, 0x67, 0x05, 0x68, 0x00, 0xcc, 0x05, 0x69, + 0x05, 0x6a, 0x04, 0xb0, 0x04, 0xb1, 0x05, 0x6b, 0x04, 0xb2, 0x04, 0xb3, + 0x05, 0x6c, 0x05, 0x6d, 0x04, 0xb4, 0x05, 0x6e, 0x04, 0xb5, 0x04, 0xb6, + 0x04, 0xb7, 0x04, 0xb8, 0x05, 0x6f, 0x04, 0xb9, 0x05, 0x70, 0x04, 0xba, + 0x05, 0x74, 0x04, 0xbb, 0x05, 0x75, 0x04, 0xbc, 0x05, 0x79, 0x05, 0xf7, + 0x05, 0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, 0x05, 0xfc, 0x05, 0xfd, + 0x05, 0xfe, 0x05, 0xff, 0x06, 0x00, 0x06, 0x01, 0x06, 0x02, 0x06, 0x03, + 0x06, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x07, 0x06, 0x08, 0x06, 0x09, + 0x06, 0x0a, 0x06, 0x0b, 0x06, 0x0c, 0x06, 0x0d, 0x06, 0x0e, 0x06, 0x0f, + 0x07, 0x1c, 0x07, 0x1d, 0x07, 0x1e, 0x07, 0x1f, 0x07, 0x20, 0x07, 0x21, + 0x07, 0x22, 0x07, 0x23, 0x07, 0x24, 0x09, 0xd5, 0x0a, 0x2c, 0x07, 0x27, + 0x07, 0x28, 0x07, 0x29, 0x07, 0x2a, 0x07, 0x2b, 0x07, 0x2c, 0x07, 0x2d, + 0x07, 0x2e, 0x07, 0x2f, 0x07, 0x30, 0x07, 0x31, 0x01, 0x40, 0x01, 0x42, + 0x07, 0x32, 0x01, 0x49, 0x07, 0x33, 0x07, 0x34, 0x07, 0x35, 0x07, 0x36, + 0x07, 0x37, 0x07, 0x38, 0x07, 0x39, 0x07, 0x3a, 0x07, 0x3b, 0x07, 0x3c, + 0x07, 0x3d, 0x07, 0x3e, 0x07, 0x3f, 0x07, 0x40, 0x01, 0x4b, 0x01, 0x52, + 0x01, 0x4d, 0x01, 0x55, 0x01, 0x45, 0x01, 0x50, 0x07, 0x41, 0x07, 0x42, + 0x07, 0x43, 0x07, 0x44, 0x07, 0x45, 0x07, 0x46, 0x07, 0x47, 0x07, 0x48, + 0x07, 0x49, 0x07, 0x4a, 0x07, 0x4b, 0x07, 0x4c, 0x07, 0xd9, 0x07, 0xda, + 0x07, 0xdb, 0x07, 0xdc, 0x07, 0xdd, 0x07, 0xde, 0x07, 0xdf, 0x07, 0xe0, + 0x07, 0xe1, 0x07, 0xe2, 0x07, 0xe3, 0x07, 0xe4, 0x07, 0xe5, 0x07, 0xe6, + 0x07, 0xe7, 0x07, 0xe8, 0x07, 0xe9, 0x07, 0xea, 0x07, 0xeb, 0x07, 0xec, + 0x07, 0xed, 0x07, 0xee, 0x0a, 0x2d, 0x0a, 0x2e, 0x0a, 0x2f, 0x0a, 0x30, + 0x0a, 0x31, 0x03, 0xba, 0x0a, 0x32, 0x0a, 0x33, 0x0a, 0x34, 0x02, 0xc5, + 0x0a, 0x35, 0x0a, 0x36, 0x0a, 0x37, 0x03, 0xbc, 0x03, 0xbe, 0x03, 0xc0, + 0x03, 0xc2, 0x03, 0xc4, 0x01, 0x57, 0x03, 0xc8, 0x03, 0xca, 0x01, 0x44, + 0x03, 0xcc, 0x03, 0xcd, 0x03, 0xce, 0x03, 0xcf, 0x03, 0xd0, 0x0a, 0x38, + 0x03, 0xd2, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xd5, 0x03, 0xd6, 0x03, 0xd7, + 0x03, 0xd8, 0x02, 0xd7, 0x03, 0xd9, 0x03, 0xda, 0x01, 0x56, 0x0a, 0x39, + 0x0a, 0x3a, 0x03, 0xdb, 0x03, 0xdc, 0x03, 0xdd, 0x03, 0xde, 0x03, 0xdf, + 0x03, 0xe0, 0x03, 0xe1, 0x03, 0xe2, 0x03, 0xe3, 0x03, 0xe4, 0x03, 0xe5, + 0x03, 0xe6, 0x03, 0xe8, 0x03, 0xea, 0x03, 0xec, 0x03, 0xee, 0x03, 0xf0, + 0x03, 0xf1, 0x03, 0xf2, 0x03, 0xf3, 0x03, 0xf4, 0x03, 0xf6, 0x03, 0xf8, + 0x03, 0xfa, 0x03, 0xfc, 0x08, 0x02, 0x08, 0x18, 0x0a, 0x3b, 0x08, 0x26, + 0x03, 0xfe, 0x04, 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, 0x04, 0x05, + 0x04, 0x07, 0x04, 0x09, 0x04, 0x0a, 0x04, 0x0b, 0x04, 0x0c, 0x04, 0x0e, + 0x04, 0x10, 0x04, 0x12, 0x04, 0x13, 0x04, 0x14, 0x04, 0x15, 0x04, 0x16, + 0x04, 0x18, 0x04, 0x1a, 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1e, 0x04, 0x1f, + 0x04, 0x21, 0x04, 0x23, 0x04, 0x24, 0x04, 0x26, 0x04, 0x28, 0x04, 0x29, + 0x04, 0x2b, 0x04, 0x2d, 0x04, 0x2f, 0x04, 0x31, 0x04, 0x33, 0x04, 0x35, + 0x04, 0x37, 0x04, 0x39, 0x04, 0x3b, 0x04, 0x3d, 0x04, 0x3f, 0x04, 0x41, + 0x09, 0x37, 0x08, 0x40, 0x08, 0x41, 0x08, 0x42, 0x01, 0xdd, 0x01, 0xd8, + 0x01, 0xda, 0x01, 0xa8, 0x01, 0xdb, 0x01, 0xa9, 0x01, 0xaa, 0x01, 0xab, + 0x01, 0xae, 0x01, 0xb0, 0x01, 0xd2, 0x01, 0x90, 0x01, 0x91, 0x01, 0x92, + 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, 0x01, 0x98, + 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, 0x01, 0x9e, + 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, 0x01, 0xa4, + 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xac, 0x01, 0xaf, 0x01, 0xcd, + 0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd5, 0x01, 0xb1, 0x01, 0xb2, + 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, 0x01, 0xb9, + 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0xbf, 0x01, 0xc0, + 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xc5, 0x01, 0xc4, 0x01, 0xc6, + 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, 0x01, 0xd1, + 0x01, 0xd6, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd7, 0x08, 0x37, 0x08, 0x3a, + 0x08, 0x2d, 0x08, 0x2e, 0x08, 0x2f, 0x08, 0x43, 0x08, 0x3c, 0x08, 0x4c, + 0x08, 0x31, 0x08, 0x45, 0x08, 0x35, 0x08, 0x49, 0x08, 0x30, 0x08, 0x44, + 0x08, 0x32, 0x08, 0x46, 0x08, 0x34, 0x08, 0x48, 0x09, 0xf5, 0x09, 0xfc, + 0x09, 0xf6, 0x09, 0xfd, 0x09, 0xf7, 0x09, 0xfe, 0x09, 0xf8, 0x09, 0xff, + 0x09, 0xf9, 0x0a, 0x00, 0x09, 0xfa, 0x0a, 0x01, 0x09, 0xfb, 0x0a, 0x02, + 0x08, 0x3b, 0x08, 0x3d, 0x08, 0x3f, 0x08, 0x4a, 0x08, 0x28, 0x08, 0x38, + 0x08, 0x39, 0x08, 0x36, 0x08, 0x4b, 0x08, 0x29, 0x08, 0x33, 0x08, 0x47, + 0x08, 0x3e, 0x08, 0x2a, 0x08, 0x2b, 0x08, 0x2c, 0x02, 0x05, 0x02, 0x06, + 0x02, 0x02, 0x02, 0x00, 0x02, 0x03, 0x02, 0x04, 0x02, 0x07, 0x02, 0x08, + 0x02, 0x09, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0b, 0x02, 0x0a, + 0x02, 0x0f, 0x02, 0x10, 0x02, 0x39, 0x02, 0x3a, 0x02, 0x36, 0x02, 0x34, + 0x02, 0x37, 0x02, 0x38, 0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, 0x02, 0x40, + 0x02, 0x41, 0x02, 0x42, 0x02, 0x3f, 0x02, 0x3e, 0x02, 0x43, 0x02, 0x44, + 0x0a, 0x10, 0x0a, 0x1e, 0x02, 0x11, 0x02, 0x45, 0x0a, 0x11, 0x0a, 0x1f, + 0x0a, 0x12, 0x0a, 0x20, 0x0a, 0x13, 0x0a, 0x21, 0x0a, 0x14, 0x0a, 0x22, + 0x0a, 0x15, 0x0a, 0x23, 0x0a, 0x16, 0x0a, 0x24, 0x0a, 0x17, 0x0a, 0x25, + 0x02, 0x12, 0x02, 0x46, 0x02, 0x13, 0x02, 0x47, 0x0a, 0x18, 0x0a, 0x26, + 0x0a, 0x19, 0x0a, 0x27, 0x0a, 0x1a, 0x0a, 0x28, 0x0a, 0x1b, 0x0a, 0x29, + 0x0a, 0x1c, 0x0a, 0x2a, 0x0a, 0x1d, 0x0a, 0x2b, 0x0a, 0x0c, 0x0a, 0x03, + 0x0a, 0x04, 0x0a, 0x06, 0x0a, 0x08, 0x0a, 0x0e, 0x0a, 0x0f, 0x09, 0x39, + 0x09, 0x7d, 0x09, 0x3a, 0x09, 0x7e, 0x09, 0x3b, 0x09, 0x7f, 0x02, 0x01, + 0x02, 0x35, 0x09, 0x3c, 0x09, 0x80, 0x09, 0x3d, 0x09, 0x81, 0x09, 0x3e, + 0x09, 0x82, 0x09, 0x3f, 0x09, 0x83, 0x09, 0x40, 0x09, 0x84, 0x09, 0x41, + 0x09, 0x85, 0x09, 0x42, 0x09, 0x86, 0x09, 0x43, 0x09, 0x87, 0x09, 0x44, + 0x09, 0x88, 0x09, 0x45, 0x09, 0x89, 0x09, 0x46, 0x09, 0x8a, 0x09, 0x47, + 0x09, 0x8b, 0x09, 0x48, 0x09, 0x8c, 0x09, 0x49, 0x09, 0x8d, 0x09, 0x4a, + 0x09, 0x8e, 0x09, 0x4b, 0x09, 0x8f, 0x09, 0x4c, 0x09, 0x90, 0x09, 0x4d, + 0x09, 0x91, 0x09, 0x4e, 0x09, 0x92, 0x09, 0x4f, 0x09, 0x93, 0x09, 0x50, + 0x09, 0x94, 0x09, 0x51, 0x09, 0x95, 0x09, 0x52, 0x09, 0x96, 0x09, 0x53, + 0x09, 0x54, 0x09, 0x97, 0x09, 0x55, 0x09, 0x98, 0x09, 0x56, 0x09, 0x99, + 0x09, 0x57, 0x09, 0x9a, 0x09, 0x58, 0x09, 0x9b, 0x09, 0x59, 0x09, 0x9c, + 0x09, 0x5a, 0x09, 0x9d, 0x09, 0x9e, 0x09, 0x5b, 0x09, 0x9f, 0x09, 0x5c, + 0x09, 0xa0, 0x09, 0x5d, 0x09, 0xa1, 0x09, 0x5e, 0x09, 0xa2, 0x09, 0x5f, + 0x09, 0xa3, 0x09, 0x60, 0x09, 0xa4, 0x09, 0x61, 0x09, 0xa5, 0x09, 0x62, + 0x09, 0xa6, 0x09, 0x63, 0x09, 0xa7, 0x09, 0x64, 0x09, 0xa8, 0x09, 0x65, + 0x09, 0xa9, 0x09, 0x66, 0x09, 0xaa, 0x09, 0x67, 0x09, 0xab, 0x09, 0x68, + 0x09, 0xac, 0x09, 0x69, 0x09, 0xad, 0x09, 0x6a, 0x09, 0xae, 0x09, 0x6b, + 0x09, 0xaf, 0x09, 0x6c, 0x09, 0xb0, 0x09, 0x6d, 0x09, 0xb1, 0x09, 0x6e, + 0x09, 0xb2, 0x09, 0x6f, 0x09, 0xb3, 0x09, 0x70, 0x09, 0xb4, 0x09, 0x71, + 0x09, 0xb5, 0x09, 0x72, 0x09, 0xb6, 0x09, 0x73, 0x09, 0xb7, 0x09, 0x74, + 0x09, 0xb8, 0x09, 0x75, 0x09, 0xb9, 0x09, 0x76, 0x09, 0xba, 0x09, 0x77, + 0x09, 0xbb, 0x09, 0x78, 0x09, 0xbc, 0x09, 0x79, 0x09, 0xbd, 0x09, 0x7a, + 0x09, 0xbe, 0x09, 0x7b, 0x09, 0xbf, 0x09, 0x7c, 0x09, 0xc0, 0x04, 0x43, + 0x04, 0x45, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4b, 0x04, 0x4d, + 0x04, 0x4f, 0x04, 0x51, 0x04, 0x53, 0x04, 0x55, 0x04, 0x56, 0x04, 0x58, + 0x04, 0xbd, 0x05, 0x81, 0x04, 0xbe, 0x05, 0x82, 0x04, 0xbf, 0x05, 0x83, + 0x04, 0xc0, 0x05, 0x84, 0x04, 0xc1, 0x05, 0x85, 0x04, 0xc2, 0x05, 0x86, + 0x04, 0xc3, 0x05, 0x87, 0x04, 0xc4, 0x05, 0x88, 0x04, 0xc5, 0x05, 0x89, + 0x04, 0xc6, 0x05, 0x8a, 0x04, 0xc7, 0x05, 0x8b, 0x04, 0xc8, 0x05, 0x8c, + 0x04, 0xc9, 0x05, 0x8d, 0x04, 0xca, 0x05, 0x8e, 0x04, 0xcb, 0x05, 0x8f, + 0x04, 0xcc, 0x05, 0x90, 0x04, 0xcd, 0x05, 0x93, 0x04, 0xce, 0x05, 0x94, + 0x04, 0xcf, 0x05, 0x95, 0x04, 0xd0, 0x05, 0x96, 0x04, 0xd1, 0x05, 0x97, + 0x04, 0xd2, 0x05, 0x98, 0x04, 0xd3, 0x05, 0x99, 0x04, 0xd4, 0x05, 0x9f, + 0x04, 0xd5, 0x05, 0xa0, 0x04, 0xd6, 0x05, 0xa1, 0x04, 0xd7, 0x05, 0xa2, + 0x04, 0xd8, 0x05, 0xa3, 0x04, 0xd9, 0x05, 0xa6, 0x04, 0xda, 0x05, 0xa9, + 0x04, 0xdb, 0x05, 0xac, 0x04, 0xdc, 0x05, 0xaf, 0x04, 0xdd, 0x05, 0xb0, + 0x04, 0xde, 0x05, 0xb1, 0x04, 0xdf, 0x05, 0xb2, 0x04, 0xe0, 0x05, 0xb3, + 0x04, 0xe1, 0x05, 0xb4, 0x04, 0xe2, 0x05, 0xb5, 0x04, 0xe3, 0x05, 0xb6, + 0x04, 0xe4, 0x05, 0xb7, 0x04, 0xe5, 0x05, 0xb8, 0x04, 0xe6, 0x05, 0xb9, + 0x04, 0xe7, 0x05, 0xba, 0x04, 0xe8, 0x05, 0xbb, 0x04, 0xe9, 0x05, 0xbc, + 0x04, 0xea, 0x05, 0xc0, 0x04, 0xeb, 0x05, 0xc4, 0x04, 0xec, 0x05, 0xc8, + 0x04, 0xed, 0x05, 0xcc, 0x04, 0xee, 0x05, 0xcd, 0x04, 0xef, 0x05, 0xce, + 0x04, 0xf0, 0x05, 0xcf, 0x04, 0xf1, 0x05, 0xd0, 0x04, 0xf2, 0x05, 0xd1, + 0x04, 0xf3, 0x05, 0xd2, 0x04, 0xf4, 0x05, 0xd3, 0x04, 0xf5, 0x05, 0xd4, + 0x04, 0xf6, 0x05, 0xd5, 0x04, 0xf7, 0x05, 0xd6, 0x04, 0xf8, 0x05, 0xd7, + 0x04, 0xf9, 0x05, 0xd8, 0x04, 0xfa, 0x05, 0xd9, 0x04, 0xfb, 0x05, 0xda, + 0x04, 0xfc, 0x05, 0xdb, 0x00, 0x78, 0x00, 0xfe, 0x00, 0x79, 0x00, 0xff, + 0x00, 0x7b, 0x01, 0x01, 0x04, 0xfd, 0x05, 0xdc, 0x04, 0xfe, 0x05, 0xdd, + 0x04, 0xff, 0x05, 0xde, 0x05, 0x00, 0x05, 0xdf, 0x05, 0x01, 0x05, 0xe0, + 0x05, 0x02, 0x05, 0xe1, 0x05, 0x03, 0x05, 0xe2, 0x05, 0x04, 0x05, 0xe3, + 0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe6, 0x05, 0xe7, 0x05, 0xe8, 0x05, 0xe9, + 0x02, 0xd8, 0x03, 0x05, 0x02, 0xd9, 0x03, 0x06, 0x02, 0xda, 0x03, 0x07, + 0x02, 0xdb, 0x03, 0x08, 0x02, 0xdc, 0x03, 0x09, 0x02, 0xdd, 0x03, 0x0a, + 0x02, 0xde, 0x03, 0x0b, 0x02, 0xdf, 0x03, 0x0c, 0x02, 0xe0, 0x03, 0x0d, + 0x02, 0xe1, 0x03, 0x0e, 0x02, 0xe2, 0x03, 0x0f, 0x02, 0xe3, 0x03, 0x10, + 0x02, 0xe4, 0x03, 0x11, 0x02, 0xe5, 0x03, 0x12, 0x02, 0xe6, 0x03, 0x13, + 0x02, 0xe7, 0x03, 0x14, 0x02, 0xe8, 0x03, 0x15, 0x02, 0xe9, 0x03, 0x16, + 0x02, 0xea, 0x03, 0x17, 0x02, 0xeb, 0x03, 0x18, 0x02, 0xec, 0x03, 0x19, + 0x02, 0xed, 0x03, 0x1a, 0x02, 0xee, 0x03, 0x1b, 0x02, 0xef, 0x03, 0x1c, + 0x02, 0xf0, 0x03, 0x1d, 0x02, 0xf1, 0x03, 0x1e, 0x02, 0xf2, 0x03, 0x1f, + 0x02, 0xf3, 0x03, 0x20, 0x02, 0xf4, 0x03, 0x21, 0x02, 0xf6, 0x03, 0x23, + 0x02, 0xf7, 0x03, 0x24, 0x02, 0xf8, 0x03, 0x25, 0x02, 0xf9, 0x03, 0x26, + 0x02, 0xfa, 0x03, 0x27, 0x02, 0xfb, 0x03, 0x28, 0x02, 0xfc, 0x03, 0x29, + 0x02, 0xfe, 0x03, 0x2b, 0x02, 0xff, 0x03, 0x2c, 0x03, 0x00, 0x03, 0x2d, + 0x03, 0x01, 0x03, 0x2e, 0x03, 0x02, 0x03, 0x2f, 0x00, 0x7c, 0x01, 0x02, + 0x03, 0x03, 0x03, 0x30, 0x03, 0x31, 0x03, 0x32, 0x03, 0x04, 0x03, 0x33, + 0x08, 0xad, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xb3, 0x08, 0xae, 0x08, 0xb2, + 0x08, 0xb0, 0x08, 0xb4, 0x08, 0x4d, 0x08, 0x51, 0x08, 0x4f, 0x08, 0x53, + 0x08, 0x4e, 0x08, 0x52, 0x08, 0x50, 0x08, 0x54, 0x08, 0xc6, 0x08, 0xc9, + 0x08, 0xc8, 0x08, 0xcb, 0x08, 0xc7, 0x08, 0xca, 0x08, 0x62, 0x08, 0x65, + 0x08, 0x64, 0x08, 0x67, 0x08, 0x63, 0x08, 0x66, 0x08, 0xce, 0x08, 0xd2, + 0x08, 0xd0, 0x08, 0xd4, 0x08, 0xcf, 0x08, 0xd3, 0x08, 0xd1, 0x08, 0xd5, + 0x08, 0x6a, 0x08, 0x6e, 0x08, 0x6c, 0x08, 0x70, 0x08, 0x6b, 0x08, 0x6f, + 0x08, 0x6d, 0x08, 0x71, 0x08, 0xe5, 0x08, 0xe9, 0x08, 0xe7, 0x08, 0xeb, + 0x08, 0xe6, 0x08, 0xea, 0x08, 0xe8, 0x08, 0xec, 0x08, 0x7d, 0x08, 0x81, + 0x08, 0x7f, 0x08, 0x83, 0x08, 0x7e, 0x08, 0x82, 0x08, 0x80, 0x08, 0x84, + 0x08, 0xf5, 0x08, 0xf8, 0x08, 0xf7, 0x08, 0xfa, 0x08, 0xf6, 0x08, 0xf9, + 0x08, 0x89, 0x08, 0x8c, 0x08, 0x8b, 0x08, 0x8e, 0x08, 0x8a, 0x08, 0x8d, + 0x08, 0xff, 0x09, 0x03, 0x09, 0x01, 0x09, 0x05, 0x09, 0x00, 0x09, 0x04, + 0x09, 0x02, 0x09, 0x06, 0x08, 0x95, 0x09, 0x0f, 0x09, 0x13, 0x09, 0x11, + 0x09, 0x15, 0x09, 0x10, 0x09, 0x14, 0x09, 0x12, 0x09, 0x16, 0x08, 0x9a, + 0x08, 0x9e, 0x08, 0x9c, 0x08, 0xa0, 0x08, 0x9b, 0x08, 0x9f, 0x08, 0x9d, + 0x08, 0xa1, 0x08, 0xb6, 0x08, 0xb5, 0x08, 0xcd, 0x08, 0xcc, 0x08, 0xd7, + 0x08, 0xd6, 0x08, 0xf1, 0x08, 0xf0, 0x08, 0xfc, 0x08, 0xfb, 0x09, 0x0b, + 0x09, 0x0a, 0x09, 0x18, 0x09, 0x17, 0x08, 0xbb, 0x08, 0xbf, 0x08, 0xbd, + 0x08, 0xc1, 0x08, 0xbc, 0x08, 0xc0, 0x08, 0xbe, 0x08, 0xc2, 0x08, 0x5a, + 0x08, 0x5e, 0x08, 0x5c, 0x08, 0x60, 0x08, 0x5b, 0x08, 0x5f, 0x08, 0x5d, + 0x08, 0x61, 0x08, 0xda, 0x08, 0xde, 0x08, 0xdc, 0x08, 0xe0, 0x08, 0xdb, + 0x08, 0xdf, 0x08, 0xdd, 0x08, 0xe1, 0x08, 0x75, 0x08, 0x79, 0x08, 0x77, + 0x08, 0x7b, 0x08, 0x76, 0x08, 0x7a, 0x08, 0x78, 0x08, 0x7c, 0x09, 0x1b, + 0x09, 0x1f, 0x09, 0x1d, 0x09, 0x21, 0x09, 0x1c, 0x09, 0x20, 0x09, 0x1e, + 0x09, 0x22, 0x08, 0xa5, 0x08, 0xa9, 0x08, 0xa7, 0x08, 0xab, 0x08, 0xa6, + 0x08, 0xaa, 0x08, 0xa8, 0x08, 0xac, 0x08, 0xb9, 0x08, 0xb8, 0x08, 0xc4, + 0x08, 0xba, 0x08, 0xc3, 0x08, 0xb7, 0x08, 0xc5, 0x08, 0x58, 0x08, 0x57, + 0x08, 0x56, 0x08, 0x55, 0x08, 0x59, 0x09, 0x34, 0x09, 0x37, 0x09, 0x26, + 0x09, 0x2a, 0x09, 0x33, 0x08, 0xe3, 0x08, 0xd9, 0x08, 0xe2, 0x08, 0xd8, + 0x08, 0xe4, 0x08, 0x69, 0x08, 0x68, 0x08, 0x73, 0x08, 0x72, 0x08, 0x74, + 0x09, 0x2c, 0x09, 0x2b, 0x09, 0x2d, 0x08, 0xf4, 0x08, 0xf3, 0x08, 0xee, + 0x08, 0xed, 0x08, 0xf2, 0x08, 0xef, 0x08, 0x88, 0x08, 0x87, 0x08, 0x86, + 0x08, 0x85, 0x09, 0x2f, 0x09, 0x2e, 0x09, 0x30, 0x09, 0x0e, 0x09, 0x0d, + 0x09, 0x08, 0x09, 0x07, 0x08, 0xfd, 0x08, 0xfe, 0x09, 0x0c, 0x09, 0x09, + 0x08, 0x99, 0x08, 0x98, 0x08, 0x97, 0x08, 0x96, 0x08, 0x91, 0x09, 0x32, + 0x09, 0x31, 0x09, 0x29, 0x09, 0x24, 0x09, 0x1a, 0x09, 0x23, 0x09, 0x19, + 0x09, 0x25, 0x08, 0x90, 0x08, 0x8f, 0x08, 0xa3, 0x08, 0xa2, 0x08, 0xa4, + 0x09, 0x28, 0x09, 0x27, 0x09, 0xc1, 0x09, 0xc2, 0x09, 0xc3, 0x09, 0xc4, + 0x09, 0xc5, 0x09, 0xc6, 0x09, 0xc7, 0x09, 0xc8, 0x09, 0xc9, 0x09, 0xca, + 0x09, 0xcb, 0x09, 0xcc, 0x09, 0xcd, 0x09, 0xce, 0x0a, 0x3d, 0x0a, 0x3e, + 0x01, 0x5e, 0x09, 0xcf, 0x01, 0x77, 0x01, 0x79, 0x01, 0x7b, 0x09, 0xd1, + 0x03, 0x36, 0x01, 0x67, 0x01, 0x68, 0x01, 0x6b, 0x09, 0xd3, 0x01, 0x69, + 0x01, 0x6a, 0x01, 0x6c, 0x09, 0xd4, 0x01, 0x8c, 0x01, 0x8d, 0x01, 0x7c, + 0x0a, 0x3f, 0x02, 0xaa, 0x03, 0x3c, 0x01, 0x66, 0x09, 0xd8, 0x03, 0x52, + 0x02, 0xa5, 0x02, 0x7d, 0x0a, 0x42, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, + 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, + 0x02, 0x8a, 0x02, 0x8b, 0x03, 0x3b, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, + 0x02, 0x8f, 0x02, 0x90, 0x02, 0x91, 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, + 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, 0x02, 0x9a, + 0x09, 0xda, 0x09, 0xdb, 0x09, 0xdc, 0x03, 0x3d, 0x03, 0x3e, 0x09, 0xdd, + 0x09, 0xde, 0x03, 0x3f, 0x09, 0xdf, 0x09, 0xe0, 0x09, 0xe1, 0x03, 0x34, + 0x02, 0x5a, 0x09, 0xe2, 0x09, 0xe3, 0x09, 0xe4, 0x09, 0xe5, 0x09, 0xe6, + 0x09, 0xe7, 0x09, 0xe8, 0x09, 0xe9, 0x09, 0xea, 0x02, 0x63, 0x02, 0x55, + 0x09, 0xec, 0x05, 0xf4, 0x09, 0xed, 0x09, 0xee, 0x09, 0xef, 0x09, 0xf0, + 0x09, 0xf1, 0x09, 0xf2, 0x09, 0xf3, 0x09, 0xf4, 0x03, 0x37, 0x03, 0x38, + 0x03, 0x39, 0x03, 0x3a, 0x05, 0x0c, 0x05, 0xf3, 0x03, 0x64, 0x03, 0x60, + 0x03, 0x65, 0x03, 0x61, 0x03, 0x66, 0x03, 0x62, 0x02, 0xc2, 0x02, 0xac, + 0x01, 0x7d, 0x02, 0xbd, 0x02, 0xba, 0x03, 0x67, 0x02, 0xb1, 0x03, 0x42, + 0x0a, 0x8b, 0x0a, 0xa1, 0x0a, 0xa2, 0x0a, 0xa3, 0x0a, 0xa4, 0x0a, 0xa5, + 0x0a, 0xa6, 0x0a, 0xa7, 0x0a, 0xa8, 0x0a, 0xa9, 0x0a, 0xaa, 0x0a, 0x7a, + 0x03, 0x7b, 0x03, 0x8f, 0x03, 0x85, 0x03, 0x84, 0x03, 0x98, 0x03, 0x8e, + 0x03, 0x83, 0x03, 0x97, 0x03, 0x8d, 0x03, 0x81, 0x03, 0x95, 0x03, 0x8b, + 0x03, 0x80, 0x03, 0x94, 0x03, 0x8a, 0x03, 0x7e, 0x03, 0x92, 0x03, 0x88, + 0x03, 0x7d, 0x03, 0x91, 0x03, 0x87, 0x03, 0x82, 0x03, 0x96, 0x03, 0x8c, + 0x03, 0x7f, 0x03, 0x93, 0x03, 0x89, 0x03, 0x7c, 0x03, 0x90, 0x03, 0x86, + 0x03, 0x6c, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x56, 0x0a, 0x44, + 0x03, 0x59, 0x0a, 0x45, 0x03, 0x68, 0x02, 0xc3, 0x03, 0x35, 0x03, 0x99, + 0x03, 0x53, 0x03, 0x55, 0x03, 0x45, 0x03, 0x46, 0x03, 0x4f, 0x0a, 0x7b, + 0x0a, 0x7c, 0x0a, 0x7d, 0x0a, 0x7e, 0x0a, 0x7f, 0x0a, 0x80, 0x0a, 0x81, + 0x0a, 0x82, 0x0a, 0x83, 0x0a, 0xa0, 0x05, 0x05, 0x05, 0xea, 0x05, 0x06, + 0x05, 0x07, 0x05, 0x08, 0x05, 0xed, 0x05, 0xee, 0x05, 0x09, 0x05, 0xef, + 0x05, 0x0a, 0x05, 0xf0, 0x05, 0x0b, 0x05, 0xf1, 0x05, 0xf2, 0x05, 0x0e, + 0x05, 0xf5, 0x05, 0xf6, 0x00, 0x06, 0x02, 0x0a, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x60, 0x02, 0x51, + 0x02, 0x64, 0x02, 0x5b, 0x02, 0xa9, 0x01, 0x3a, 0x02, 0x50, 0x01, 0x7f, + 0x01, 0x80, 0x01, 0x8b, 0x02, 0xab, 0x01, 0x59, 0x01, 0x5e, 0x01, 0x5c, + 0x01, 0x75, 0x02, 0x65, 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, 0x02, 0x6b, + 0x02, 0x6c, 0x02, 0x6d, 0x02, 0x6e, 0x02, 0x6f, 0x02, 0x70, 0x01, 0x5b, + 0x01, 0x5a, 0x02, 0xb3, 0x02, 0xb0, 0x02, 0xb4, 0x01, 0x63, 0x02, 0x52, + 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, + 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, + 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, + 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, + 0x00, 0x1c, 0x00, 0x1d, 0x01, 0x83, 0x02, 0x4e, 0x01, 0x84, 0x02, 0x4b, + 0x02, 0x4f, 0x01, 0x3c, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, + 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, + 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, + 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, + 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, 0x00, 0x9c, 0x01, 0x87, 0x01, 0x76, + 0x01, 0x88, 0x02, 0x4c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x25, 0x00, 0x2e, + 0x00, 0x33, 0x00, 0x54, 0x00, 0x5b, 0x00, 0x72, 0x00, 0x9e, 0x00, 0x9d, + 0x00, 0x9f, 0x00, 0xa1, 0x00, 0xa0, 0x00, 0xa4, 0x00, 0xad, 0x00, 0xb2, + 0x00, 0xb1, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xc3, 0x00, 0xc2, 0x00, 0xc4, + 0x00, 0xc6, 0x00, 0xd7, 0x00, 0xdc, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xdf, + 0x00, 0xde, 0x00, 0xf5, 0x00, 0xf4, 0x00, 0xf6, 0x00, 0xf8, 0x01, 0x8c, + 0x02, 0xb8, 0x02, 0x5d, 0x02, 0x5e, 0x01, 0x8e, 0x01, 0x7c, 0x01, 0x8f, + 0x00, 0xef, 0x02, 0x56, 0x02, 0x54, 0x02, 0x57, 0x01, 0x3e, 0x01, 0x47, + 0x02, 0xb1, 0x00, 0x28, 0x00, 0x5f, 0x02, 0xba, 0x02, 0xad, 0x02, 0xb5, + 0x02, 0xb6, 0x02, 0x60, 0x02, 0xc0, 0x02, 0xbb, 0x02, 0xc2, 0x02, 0xc1, + 0x01, 0xc2, 0x02, 0xbc, 0x02, 0x61, 0x02, 0x62, 0x02, 0xbf, 0x00, 0xa7, + 0x00, 0xe3, 0x01, 0x64, 0x01, 0x61, 0x02, 0xb7, 0x02, 0xbd, 0x02, 0x5f, + 0x02, 0xb2, 0x02, 0xbe, 0x01, 0x71, 0x01, 0x72, 0x01, 0x5d, 0x00, 0x03, + 0x00, 0x1e, 0x00, 0x21, 0x00, 0x5a, 0x00, 0x61, 0x00, 0xe5, 0x01, 0x77, + 0x01, 0x79, 0x01, 0x69, 0x01, 0x6a, 0x01, 0x67, 0x01, 0x68, 0x02, 0xaf, + 0x02, 0xc3, 0x01, 0x05, 0x00, 0x7f, 0x02, 0xa5, 0x02, 0x5a, 0x01, 0x6d, + 0x01, 0x6e, 0x00, 0xba, 0x00, 0xbb, 0x01, 0x8d, 0x01, 0x7d, 0x01, 0x6b, + 0x01, 0x6c, 0x02, 0xaa, 0x00, 0x20, 0x00, 0x34, 0x00, 0x1f, 0x00, 0x36, + 0x00, 0x32, 0x00, 0x42, 0x00, 0x43, 0x00, 0x45, 0x00, 0x41, 0x00, 0x58, + 0x00, 0x59, 0x00, 0x00, 0x00, 0x57, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x6e, + 0x00, 0xca, 0x01, 0x40, 0x01, 0x45, 0x01, 0x49, 0x01, 0x4b, 0x01, 0x52, + 0x01, 0x4d, 0x01, 0x54, 0x01, 0x50, 0x01, 0x55, 0x01, 0x42, 0x00, 0x04, + 0x12, 0x14, 0x00, 0x00, 0x01, 0x08, 0x01, 0x00, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x0d, 0x00, 0x7e, 0x02, 0x68, 0x02, 0xaf, 0x03, 0x6f, + 0x03, 0x75, 0x03, 0x7e, 0x03, 0x8a, 0x03, 0x8c, 0x03, 0xa1, 0x03, 0xce, + 0x04, 0x0f, 0x04, 0x2f, 0x04, 0x4f, 0x04, 0x86, 0x05, 0x13, 0x0e, 0x3f, + 0x1d, 0xbf, 0x1d, 0xca, 0x1e, 0x9b, 0x1e, 0x9e, 0x1e, 0xf9, 0x1f, 0x15, + 0x1f, 0x1d, 0x1f, 0x45, 0x1f, 0x4d, 0x1f, 0x57, 0x1f, 0x59, 0x1f, 0x5b, + 0x1f, 0x5d, 0x1f, 0x7d, 0x1f, 0xb4, 0x1f, 0xc4, 0x1f, 0xd3, 0x1f, 0xdb, + 0x1f, 0xef, 0x1f, 0xf4, 0x1f, 0xfe, 0x20, 0x10, 0x20, 0x22, 0x20, 0x26, + 0x20, 0x30, 0x20, 0x34, 0x20, 0x3a, 0x20, 0x3e, 0x20, 0x44, 0x20, 0x5f, + 0x20, 0x71, 0x20, 0x8e, 0x20, 0x94, 0x20, 0xb5, 0x20, 0xba, 0x20, 0xdd, + 0x21, 0x05, 0x21, 0x13, 0x21, 0x17, 0x21, 0x22, 0x21, 0x26, 0x21, 0x2e, + 0x21, 0x32, 0x21, 0x4e, 0x21, 0x5e, 0x21, 0x84, 0x21, 0x95, 0x21, 0xa8, + 0x22, 0x02, 0x22, 0x06, 0x22, 0x0f, 0x22, 0x12, 0x22, 0x15, 0x22, 0x1a, + 0x22, 0x1f, 0x22, 0x29, 0x22, 0x2b, 0x22, 0x48, 0x22, 0x61, 0x22, 0x65, + 0x23, 0x02, 0x23, 0x10, 0x23, 0x21, 0x24, 0x73, 0x24, 0xf4, 0x25, 0x00, + 0x25, 0x02, 0x25, 0x0c, 0x25, 0x10, 0x25, 0x14, 0x25, 0x18, 0x25, 0x1c, + 0x25, 0x24, 0x25, 0x2c, 0x25, 0x34, 0x25, 0x3c, 0x25, 0x6c, 0x25, 0x80, + 0x25, 0x84, 0x25, 0x88, 0x25, 0x8c, 0x25, 0x93, 0x25, 0xa1, 0x25, 0xac, + 0x25, 0xb2, 0x25, 0xb4, 0x25, 0xb8, 0x25, 0xba, 0x25, 0xbc, 0x25, 0xbe, + 0x25, 0xc2, 0x25, 0xc4, 0x25, 0xcc, 0x25, 0xcf, 0x25, 0xd9, 0x25, 0xe6, + 0x26, 0x3c, 0x26, 0x40, 0x26, 0x42, 0x26, 0x60, 0x26, 0x63, 0x26, 0x66, + 0x26, 0x6b, 0x27, 0x36, 0x27, 0x7f, 0x2c, 0x6c, 0x2c, 0x77, 0x2e, 0x17, + 0xa7, 0x1a, 0xa7, 0x21, 0xfb, 0x02, 0xfe, 0x23, 0xfe, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x20, 0x00, 0xa0, 0x02, 0x69, + 0x02, 0xb0, 0x03, 0x74, 0x03, 0x7a, 0x03, 0x84, 0x03, 0x8c, 0x03, 0x8e, + 0x03, 0xa3, 0x03, 0xd0, 0x04, 0x10, 0x04, 0x30, 0x04, 0x50, 0x04, 0x88, + 0x0e, 0x3f, 0x1d, 0x00, 0x1d, 0xc0, 0x1d, 0xfe, 0x1e, 0x9e, 0x1e, 0xa0, + 0x1f, 0x00, 0x1f, 0x18, 0x1f, 0x20, 0x1f, 0x48, 0x1f, 0x50, 0x1f, 0x59, + 0x1f, 0x5b, 0x1f, 0x5d, 0x1f, 0x5f, 0x1f, 0x80, 0x1f, 0xb6, 0x1f, 0xc6, + 0x1f, 0xd6, 0x1f, 0xdd, 0x1f, 0xf2, 0x1f, 0xf6, 0x20, 0x00, 0x20, 0x12, + 0x20, 0x26, 0x20, 0x2f, 0x20, 0x32, 0x20, 0x39, 0x20, 0x3c, 0x20, 0x43, + 0x20, 0x5e, 0x20, 0x70, 0x20, 0x74, 0x20, 0x90, 0x20, 0xa0, 0x20, 0xb8, + 0x20, 0xdd, 0x21, 0x05, 0x21, 0x13, 0x21, 0x16, 0x21, 0x22, 0x21, 0x26, + 0x21, 0x2e, 0x21, 0x32, 0x21, 0x4d, 0x21, 0x53, 0x21, 0x83, 0x21, 0x90, + 0x21, 0xa8, 0x22, 0x02, 0x22, 0x06, 0x22, 0x0f, 0x22, 0x11, 0x22, 0x15, + 0x22, 0x19, 0x22, 0x1e, 0x22, 0x29, 0x22, 0x2b, 0x22, 0x48, 0x22, 0x60, + 0x22, 0x64, 0x23, 0x02, 0x23, 0x10, 0x23, 0x20, 0x24, 0x60, 0x24, 0xea, + 0x24, 0xff, 0x25, 0x02, 0x25, 0x0c, 0x25, 0x10, 0x25, 0x14, 0x25, 0x18, + 0x25, 0x1c, 0x25, 0x24, 0x25, 0x2c, 0x25, 0x34, 0x25, 0x3c, 0x25, 0x50, + 0x25, 0x80, 0x25, 0x84, 0x25, 0x88, 0x25, 0x8c, 0x25, 0x90, 0x25, 0xa0, + 0x25, 0xaa, 0x25, 0xb2, 0x25, 0xb4, 0x25, 0xb8, 0x25, 0xba, 0x25, 0xbc, + 0x25, 0xbe, 0x25, 0xc2, 0x25, 0xc4, 0x25, 0xca, 0x25, 0xcf, 0x25, 0xd8, + 0x25, 0xe6, 0x26, 0x3a, 0x26, 0x40, 0x26, 0x42, 0x26, 0x60, 0x26, 0x63, + 0x26, 0x65, 0x26, 0x6a, 0x27, 0x36, 0x27, 0x76, 0x2c, 0x60, 0x2c, 0x74, + 0x2e, 0x17, 0xa7, 0x17, 0xa7, 0x20, 0xfb, 0x01, 0xfe, 0x20, 0xfe, 0xff, + 0xff, 0xff, 0x00, 0x01, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x03, 0xac, + 0x00, 0x00, 0xfe, 0x6a, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfd, 0xd0, 0xfd, 0xe4, 0x00, 0x00, 0x00, 0x00, + 0xfb, 0xfd, 0xe9, 0x5c, 0x00, 0x00, 0x00, 0x00, 0xec, 0x0d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe9, 0x39, + 0xe9, 0x39, 0xe9, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe1, 0x37, 0x00, 0x00, 0xe9, 0xa3, 0xe1, 0x34, 0x00, 0x00, 0x00, 0x00, + 0xe9, 0xe2, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x65, 0x00, 0x00, 0xe9, 0xf4, + 0xe9, 0x30, 0xe8, 0xe6, 0xe1, 0xa6, 0x00, 0x00, 0xe1, 0x35, 0xe1, 0x99, + 0xe1, 0x2a, 0xe3, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe1, 0xbb, 0xe0, 0xb9, 0xe0, 0xb8, 0xe0, 0xb2, 0x00, 0x00, 0xe8, 0x2e, + 0x00, 0x00, 0x00, 0x00, 0xe1, 0x18, 0xe0, 0x91, 0xe0, 0x6a, 0x00, 0x00, + 0xe0, 0x51, 0xe0, 0x4f, 0xe0, 0x30, 0xe0, 0x23, 0xe6, 0x2c, 0x00, 0x00, + 0x00, 0x00, 0xde, 0x6f, 0xde, 0x6e, 0xde, 0x69, 0xde, 0x63, 0xde, 0x5e, + 0xde, 0x58, 0xde, 0x4f, 0xde, 0x4c, 0xde, 0x41, 0xde, 0x36, 0x00, 0x00, + 0xdd, 0xea, 0xdd, 0xe9, 0xdd, 0xe1, 0xdd, 0xdf, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xdd, 0xa5, 0xdd, 0xa6, 0xdd, 0xa5, 0xdd, 0xa5, 0xdd, 0x9c, + 0xdd, 0x9d, 0xdd, 0x9a, 0xdd, 0x9a, 0x00, 0x00, 0xe4, 0x77, 0x00, 0x00, + 0xe4, 0x61, 0x00, 0x00, 0xdd, 0x08, 0xdd, 0x05, 0xdc, 0xec, 0xdc, 0xe8, + 0xdc, 0xe4, 0xdc, 0xe3, 0xdc, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xdb, 0xc2, 0x60, 0xd8, 0x60, 0xd3, 0x05, 0xb9, 0x0c, 0x28, 0x0b, 0x4d, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x01, 0xc0, 0x00, 0x00, + 0x05, 0x4e, 0x00, 0x00, 0x06, 0xca, 0x06, 0xd2, 0x00, 0x00, 0x06, 0xdc, + 0x07, 0x02, 0x07, 0x58, 0x00, 0x00, 0x00, 0x00, 0x07, 0xd2, 0x08, 0x3e, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x50, 0x09, 0x64, 0x00, 0x00, 0x0a, 0x9c, + 0x0b, 0x4e, 0x0b, 0x78, 0x0b, 0x82, 0x0b, 0xcc, 0x0b, 0xd6, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0b, 0xde, 0x0c, 0x1a, 0x0c, 0x82, 0x0c, 0x9e, + 0x0c, 0xb8, 0x0c, 0xc2, 0x0c, 0xe6, 0x0c, 0xea, 0x0c, 0xfa, 0x0d, 0x1a, + 0x00, 0x00, 0x0d, 0x38, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x36, 0x0d, 0x3a, + 0x00, 0x00, 0x0d, 0x3a, 0x0d, 0x3c, 0x00, 0x00, 0x0d, 0x6e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x90, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0d, 0x8a, 0x0d, 0x8c, 0x0d, 0xa2, 0x0d, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xa6, 0x00, 0x00, + 0x0d, 0xa6, 0x0d, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xa4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x9c, + 0x0d, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x9e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xce, 0x0d, 0xd4, + 0x0d, 0xd6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xca, 0x00, 0x00, 0x0d, 0xcc, + 0x00, 0x00, 0x0d, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xc2, 0x0d, 0xd4, 0x0d, 0xec, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0x01, 0x60, 0x02, 0x51, 0x02, 0x64, 0x02, 0x5b, + 0x02, 0xa9, 0x01, 0x3a, 0x02, 0x50, 0x01, 0x7f, 0x01, 0x80, 0x01, 0x8b, + 0x02, 0xab, 0x01, 0x59, 0x01, 0x5e, 0x01, 0x5c, 0x01, 0x75, 0x02, 0x65, + 0x02, 0x68, 0x02, 0x69, 0x02, 0x6a, 0x02, 0x6b, 0x02, 0x6c, 0x02, 0x6d, + 0x02, 0x6e, 0x02, 0x6f, 0x02, 0x70, 0x01, 0x5b, 0x01, 0x5a, 0x02, 0xb3, + 0x02, 0xb0, 0x02, 0xb4, 0x01, 0x63, 0x02, 0x52, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, + 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, + 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, + 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, + 0x01, 0x83, 0x02, 0x4e, 0x01, 0x84, 0x02, 0x4b, 0x02, 0x4f, 0x01, 0x3c, + 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, + 0x00, 0x89, 0x00, 0x8a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x8e, + 0x00, 0x8f, 0x00, 0x90, 0x00, 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, + 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00, 0x99, 0x00, 0x9a, + 0x00, 0x9b, 0x00, 0x9c, 0x01, 0x87, 0x01, 0x76, 0x01, 0x88, 0x02, 0x4c, + 0x00, 0x03, 0x01, 0x61, 0x02, 0x5d, 0x02, 0x5e, 0x02, 0x59, 0x02, 0x60, + 0x02, 0x4d, 0x01, 0x8e, 0x01, 0x47, 0x02, 0x54, 0x02, 0x61, 0x01, 0x71, + 0x02, 0xb7, 0x01, 0x5e, 0x02, 0x56, 0x01, 0x49, 0x02, 0xb8, 0x02, 0xad, + 0x02, 0x7f, 0x02, 0x80, 0x01, 0x3e, 0x02, 0xc0, 0x01, 0x8f, 0x01, 0x7d, + 0x01, 0x54, 0x02, 0x7e, 0x02, 0x62, 0x01, 0x72, 0x02, 0xa6, 0x02, 0xa7, + 0x02, 0xa8, 0x01, 0x64, 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, + 0x00, 0x22, 0x00, 0x25, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x32, 0x00, 0x33, + 0x00, 0x34, 0x00, 0x36, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x45, + 0x00, 0x30, 0x00, 0x54, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, + 0x00, 0x5b, 0x02, 0xae, 0x00, 0x5f, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, + 0x00, 0x72, 0x00, 0x7d, 0x00, 0x62, 0x00, 0xef, 0x00, 0x9d, 0x00, 0x9e, + 0x00, 0x9f, 0x00, 0xa0, 0x00, 0xa1, 0x00, 0xa4, 0x00, 0xa7, 0x00, 0xad, + 0x00, 0xb1, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xc2, 0x00, 0xc3, + 0x00, 0xc4, 0x00, 0xc6, 0x00, 0xaf, 0x00, 0xd7, 0x00, 0xdb, 0x00, 0xdc, + 0x00, 0xdd, 0x00, 0xde, 0x00, 0xdf, 0x02, 0xaf, 0x00, 0xe3, 0x00, 0xf4, + 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf8, 0x01, 0x03, 0x00, 0xe6, 0x01, 0x05, + 0x00, 0x23, 0x00, 0xa2, 0x00, 0x24, 0x00, 0xa3, 0x00, 0x27, 0x00, 0xa6, + 0x00, 0x2a, 0x00, 0xa9, 0x00, 0x2b, 0x00, 0xaa, 0x00, 0x2d, 0x00, 0xac, + 0x00, 0x2c, 0x00, 0xab, 0x00, 0x2f, 0x00, 0xae, 0x00, 0x31, 0x00, 0xb0, + 0x00, 0x37, 0x00, 0xb6, 0x00, 0x38, 0x00, 0xb7, 0x00, 0x39, 0x00, 0xb8, + 0x00, 0x3a, 0x00, 0xb9, 0x00, 0x35, 0x00, 0xb4, 0x00, 0x3b, 0x00, 0xbc, + 0x00, 0x3c, 0x00, 0xbd, 0x00, 0x3d, 0x00, 0xbe, 0x00, 0x3e, 0x00, 0xbf, + 0x00, 0x3f, 0x00, 0xc0, 0x00, 0x40, 0x00, 0xc1, 0x00, 0x44, 0x00, 0xc5, + 0x00, 0x46, 0x00, 0xc7, 0x00, 0x47, 0x00, 0xc8, 0x00, 0x49, 0x00, 0xc9, + 0x00, 0x48, 0x00, 0xca, 0x00, 0x4a, 0x00, 0xcb, 0x00, 0x4b, 0x00, 0xcd, + 0x00, 0x4c, 0x00, 0xce, 0x00, 0xcf, 0x00, 0x4d, 0x00, 0xd0, 0x00, 0x4f, + 0x00, 0xd2, 0x00, 0x4e, 0x00, 0xd1, 0x00, 0x51, 0x00, 0xd4, 0x00, 0x50, + 0x00, 0xd3, 0x00, 0x52, 0x00, 0xd5, 0x00, 0x55, 0x00, 0xd8, 0x00, 0x53, + 0x00, 0xd6, 0x00, 0xd9, 0x00, 0x56, 0x00, 0xda, 0x00, 0x5c, 0x00, 0xe0, + 0x00, 0x5d, 0x00, 0xe1, 0x00, 0x5e, 0x00, 0xe2, 0x00, 0x61, 0x00, 0xe5, + 0x00, 0x63, 0x00, 0xe7, 0x00, 0x65, 0x00, 0xe9, 0x00, 0x64, 0x00, 0xe8, + 0x00, 0x66, 0x00, 0xea, 0x00, 0x67, 0x00, 0xeb, 0x00, 0x69, 0x00, 0xed, + 0x00, 0x68, 0x00, 0xec, 0x03, 0x9d, 0x03, 0x9e, 0x00, 0x6b, 0x00, 0xf1, + 0x00, 0x6d, 0x00, 0xf3, 0x00, 0x71, 0x00, 0xf7, 0x00, 0x73, 0x00, 0xf9, + 0x00, 0x74, 0x00, 0xfa, 0x00, 0x75, 0x00, 0xfb, 0x00, 0x76, 0x00, 0xfc, + 0x00, 0x77, 0x00, 0xfd, 0x00, 0x7a, 0x01, 0x00, 0x00, 0x7e, 0x01, 0x04, + 0x00, 0x7f, 0x00, 0x80, 0x01, 0x06, 0x00, 0x82, 0x01, 0x08, 0x00, 0x81, + 0x01, 0x07, 0x00, 0xf0, 0x05, 0x0f, 0x04, 0x59, 0x04, 0x5a, 0x05, 0x10, + 0x04, 0x5b, 0x05, 0x11, 0x04, 0x5c, 0x04, 0x5d, 0x05, 0x12, 0x04, 0x5e, + 0x04, 0x5f, 0x04, 0x60, 0x05, 0x13, 0x05, 0x14, 0x04, 0x61, 0x04, 0x62, + 0x04, 0x63, 0x04, 0x64, 0x02, 0x5f, 0x04, 0x65, 0x04, 0x66, 0x05, 0x16, + 0x04, 0x67, 0x04, 0x68, 0x04, 0x69, 0x05, 0x18, 0x05, 0x19, 0x05, 0x1c, + 0x04, 0x6a, 0x04, 0x6b, 0x05, 0x1d, 0x04, 0x6c, 0x02, 0xf5, 0x03, 0x22, + 0x04, 0x6d, 0x05, 0x1e, 0x04, 0x6e, 0x05, 0x1f, 0x04, 0x6f, 0x04, 0x70, + 0x05, 0x20, 0x04, 0x71, 0x05, 0x7a, 0x05, 0x21, 0x04, 0x72, 0x05, 0x22, + 0x04, 0x73, 0x02, 0xfd, 0x03, 0x2a, 0x04, 0x74, 0x04, 0x75, 0x04, 0x76, + 0x05, 0x23, 0x04, 0x77, 0x05, 0x24, 0x04, 0x78, 0x04, 0x79, 0x05, 0x25, + 0x05, 0x26, 0x05, 0x7b, 0x04, 0x7a, 0x05, 0x27, 0x05, 0x7c, 0x05, 0x17, + 0x05, 0x7d, 0x05, 0x7e, 0x05, 0x7f, 0x05, 0x80, 0x04, 0x7b, 0x04, 0x7c, + 0x05, 0x28, 0x04, 0x7d, 0x04, 0x7e, 0x05, 0x29, 0x04, 0x7f, 0x04, 0x80, + 0x05, 0x2a, 0x04, 0x81, 0x05, 0x2b, 0x04, 0x82, 0x05, 0x2c, 0x04, 0x83, + 0x05, 0x2f, 0x04, 0x84, 0x05, 0x30, 0x04, 0x85, 0x05, 0x31, 0x04, 0x86, + 0x05, 0x32, 0x04, 0x87, 0x05, 0x33, 0x04, 0x88, 0x05, 0x34, 0x05, 0x35, + 0x04, 0x89, 0x05, 0x36, 0x04, 0x8a, 0x05, 0x37, 0x04, 0x8b, 0x05, 0x38, + 0x04, 0x8c, 0x05, 0x39, 0x04, 0x8d, 0x05, 0x3a, 0x04, 0x8e, 0x05, 0x3b, + 0x04, 0x8f, 0x05, 0x3c, 0x04, 0x90, 0x05, 0x3d, 0x04, 0x91, 0x05, 0x3e, + 0x05, 0x3f, 0x04, 0x92, 0x04, 0x93, 0x05, 0x41, 0x04, 0x94, 0x05, 0x42, + 0x04, 0x95, 0x04, 0x96, 0x04, 0x97, 0x05, 0x43, 0x00, 0x26, 0x00, 0xa5, + 0x00, 0x29, 0x00, 0xa8, 0x00, 0x60, 0x00, 0xe4, 0x04, 0x98, 0x05, 0x44, + 0x04, 0x99, 0x05, 0x45, 0x04, 0x9a, 0x05, 0x46, 0x04, 0x9b, 0x05, 0x47, + 0x04, 0x9c, 0x05, 0x48, 0x04, 0x9d, 0x05, 0x4b, 0x04, 0x9e, 0x05, 0x4e, + 0x04, 0x9f, 0x05, 0x4f, 0x04, 0xa0, 0x05, 0x50, 0x04, 0xa1, 0x05, 0x54, + 0x04, 0xa2, 0x05, 0x58, 0x04, 0xa3, 0x05, 0x59, 0x00, 0x6a, 0x00, 0xee, + 0x00, 0x6c, 0x00, 0xf2, 0x04, 0xa4, 0x05, 0x5a, 0x04, 0xa5, 0x05, 0x5b, + 0x04, 0xa6, 0x05, 0x5c, 0x04, 0xa7, 0x05, 0x5d, 0x04, 0xa8, 0x05, 0x5e, + 0x04, 0xa9, 0x05, 0x5f, 0x04, 0xaa, 0x05, 0x60, 0x04, 0xab, 0x05, 0x61, + 0x04, 0xac, 0x05, 0x62, 0x04, 0xad, 0x05, 0x63, 0x04, 0xae, 0x05, 0x64, + 0x04, 0xaf, 0x05, 0x65, 0x05, 0x66, 0x05, 0x67, 0x05, 0x68, 0x00, 0xcc, + 0x05, 0x69, 0x05, 0x6a, 0x04, 0xb0, 0x04, 0xb1, 0x05, 0x6b, 0x04, 0xb2, + 0x04, 0xb3, 0x05, 0x6c, 0x05, 0x6d, 0x04, 0xb4, 0x05, 0x6e, 0x04, 0xb5, + 0x04, 0xb6, 0x04, 0xb7, 0x04, 0xb8, 0x05, 0x6f, 0x04, 0xb9, 0x05, 0x70, + 0x04, 0xba, 0x05, 0x74, 0x04, 0xbb, 0x05, 0x75, 0x04, 0xbc, 0x05, 0x79, + 0x05, 0xf7, 0x05, 0xf8, 0x05, 0xf9, 0x05, 0xfa, 0x05, 0xfb, 0x05, 0xfc, + 0x05, 0xfd, 0x05, 0xfe, 0x05, 0xff, 0x06, 0x00, 0x06, 0x01, 0x06, 0x02, + 0x06, 0x03, 0x06, 0x04, 0x06, 0x05, 0x06, 0x06, 0x06, 0x07, 0x06, 0x08, + 0x06, 0x09, 0x06, 0x0a, 0x06, 0x0b, 0x06, 0x0c, 0x06, 0x0d, 0x06, 0x0e, + 0x06, 0x0f, 0x07, 0x1c, 0x07, 0x1d, 0x07, 0x1e, 0x07, 0x1f, 0x07, 0x20, + 0x07, 0x21, 0x07, 0x22, 0x07, 0x23, 0x07, 0x24, 0x09, 0xd5, 0x0a, 0x2c, + 0x07, 0x27, 0x07, 0x28, 0x07, 0x29, 0x07, 0x2a, 0x07, 0x2b, 0x07, 0x2c, + 0x07, 0x2d, 0x07, 0x2e, 0x07, 0x2f, 0x07, 0x30, 0x07, 0x31, 0x01, 0x40, + 0x01, 0x42, 0x07, 0x32, 0x01, 0x49, 0x07, 0x33, 0x07, 0x34, 0x07, 0x35, + 0x07, 0x36, 0x07, 0x37, 0x07, 0x38, 0x07, 0x39, 0x07, 0x3a, 0x07, 0x3b, + 0x07, 0x3c, 0x07, 0x3d, 0x07, 0x3e, 0x07, 0x3f, 0x07, 0x40, 0x01, 0x4b, + 0x01, 0x52, 0x01, 0x4d, 0x01, 0x55, 0x01, 0x45, 0x01, 0x50, 0x07, 0x41, + 0x07, 0x42, 0x07, 0x43, 0x07, 0x44, 0x07, 0x45, 0x07, 0x46, 0x07, 0x47, + 0x07, 0x48, 0x07, 0x49, 0x07, 0x4a, 0x07, 0x4b, 0x07, 0x4c, 0x07, 0xd9, + 0x07, 0xda, 0x07, 0xdb, 0x07, 0xdc, 0x07, 0xdd, 0x07, 0xde, 0x07, 0xdf, + 0x07, 0xe0, 0x07, 0xe1, 0x07, 0xe2, 0x07, 0xe3, 0x07, 0xe4, 0x07, 0xe5, + 0x07, 0xe6, 0x07, 0xe7, 0x07, 0xe8, 0x07, 0xe9, 0x07, 0xea, 0x07, 0xeb, + 0x07, 0xec, 0x07, 0xed, 0x07, 0xee, 0x0a, 0x2d, 0x0a, 0x2e, 0x0a, 0x2f, + 0x0a, 0x30, 0x0a, 0x31, 0x03, 0xba, 0x0a, 0x32, 0x0a, 0x33, 0x0a, 0x34, + 0x02, 0xc5, 0x0a, 0x35, 0x0a, 0x36, 0x0a, 0x37, 0x03, 0xbc, 0x03, 0xbe, + 0x03, 0xc0, 0x03, 0xc2, 0x03, 0xc4, 0x01, 0x57, 0x03, 0xc8, 0x03, 0xca, + 0x01, 0x44, 0x03, 0xcc, 0x03, 0xcd, 0x03, 0xce, 0x03, 0xcf, 0x03, 0xd0, + 0x0a, 0x38, 0x03, 0xd2, 0x03, 0xd3, 0x03, 0xd4, 0x03, 0xd5, 0x03, 0xd6, + 0x03, 0xd7, 0x03, 0xd8, 0x02, 0xd7, 0x03, 0xd9, 0x03, 0xda, 0x01, 0x56, + 0x0a, 0x39, 0x0a, 0x3a, 0x03, 0xdb, 0x03, 0xdc, 0x03, 0xdd, 0x03, 0xde, + 0x03, 0xdf, 0x03, 0xe0, 0x03, 0xe1, 0x03, 0xe2, 0x03, 0xe3, 0x03, 0xe4, + 0x03, 0xe5, 0x03, 0xe6, 0x03, 0xe8, 0x03, 0xea, 0x03, 0xec, 0x03, 0xee, + 0x03, 0xf0, 0x03, 0xf1, 0x03, 0xf2, 0x03, 0xf3, 0x03, 0xf4, 0x03, 0xf6, + 0x03, 0xf8, 0x03, 0xfa, 0x03, 0xfc, 0x08, 0x02, 0x08, 0x18, 0x0a, 0x3b, + 0x08, 0x26, 0x03, 0xfe, 0x04, 0x00, 0x04, 0x01, 0x04, 0x02, 0x04, 0x03, + 0x04, 0x05, 0x04, 0x07, 0x04, 0x09, 0x04, 0x0a, 0x04, 0x0b, 0x04, 0x0c, + 0x04, 0x0e, 0x04, 0x10, 0x04, 0x12, 0x04, 0x13, 0x04, 0x14, 0x04, 0x15, + 0x04, 0x16, 0x04, 0x18, 0x04, 0x1a, 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1e, + 0x04, 0x1f, 0x04, 0x21, 0x04, 0x23, 0x04, 0x24, 0x04, 0x26, 0x04, 0x28, + 0x04, 0x29, 0x04, 0x2b, 0x04, 0x2d, 0x04, 0x2f, 0x04, 0x31, 0x04, 0x33, + 0x04, 0x35, 0x04, 0x37, 0x04, 0x39, 0x04, 0x3b, 0x04, 0x3d, 0x04, 0x3f, + 0x04, 0x41, 0x09, 0x37, 0x08, 0x40, 0x08, 0x41, 0x08, 0x42, 0x01, 0xdd, + 0x01, 0xd8, 0x01, 0xda, 0x01, 0xa8, 0x01, 0xdb, 0x01, 0xa9, 0x01, 0xaa, + 0x01, 0xab, 0x01, 0xae, 0x01, 0xb0, 0x01, 0xd2, 0x01, 0x90, 0x01, 0x91, + 0x01, 0x92, 0x01, 0x93, 0x01, 0x94, 0x01, 0x95, 0x01, 0x96, 0x01, 0x97, + 0x01, 0x98, 0x01, 0x99, 0x01, 0x9a, 0x01, 0x9b, 0x01, 0x9c, 0x01, 0x9d, + 0x01, 0x9e, 0x01, 0x9f, 0x01, 0xa0, 0x01, 0xa1, 0x01, 0xa2, 0x01, 0xa3, + 0x01, 0xa4, 0x01, 0xa5, 0x01, 0xa6, 0x01, 0xa7, 0x01, 0xac, 0x01, 0xaf, + 0x01, 0xcd, 0x01, 0xce, 0x01, 0xcf, 0x01, 0xd0, 0x01, 0xd5, 0x01, 0xb1, + 0x01, 0xb2, 0x01, 0xb4, 0x01, 0xb5, 0x01, 0xb6, 0x01, 0xb7, 0x01, 0xb8, + 0x01, 0xb9, 0x01, 0xbb, 0x01, 0xbc, 0x01, 0xbd, 0x01, 0xbe, 0x01, 0xbf, + 0x01, 0xc0, 0x01, 0xc1, 0x01, 0xc2, 0x01, 0xc3, 0x01, 0xc5, 0x01, 0xc4, + 0x01, 0xc6, 0x01, 0xc7, 0x01, 0xc8, 0x01, 0xca, 0x01, 0xcb, 0x01, 0xcc, + 0x01, 0xd1, 0x01, 0xd6, 0x01, 0xd3, 0x01, 0xd4, 0x01, 0xd7, 0x08, 0x37, + 0x08, 0x3a, 0x08, 0x2d, 0x08, 0x2e, 0x08, 0x2f, 0x08, 0x43, 0x08, 0x3c, + 0x08, 0x4c, 0x08, 0x31, 0x08, 0x45, 0x08, 0x35, 0x08, 0x49, 0x08, 0x30, + 0x08, 0x44, 0x08, 0x32, 0x08, 0x46, 0x08, 0x34, 0x08, 0x48, 0x09, 0xf5, + 0x09, 0xfc, 0x09, 0xf6, 0x09, 0xfd, 0x09, 0xf7, 0x09, 0xfe, 0x09, 0xf8, + 0x09, 0xff, 0x09, 0xf9, 0x0a, 0x00, 0x09, 0xfa, 0x0a, 0x01, 0x09, 0xfb, + 0x0a, 0x02, 0x08, 0x3b, 0x08, 0x3d, 0x08, 0x3f, 0x08, 0x4a, 0x08, 0x28, + 0x08, 0x38, 0x08, 0x39, 0x08, 0x36, 0x08, 0x4b, 0x08, 0x29, 0x08, 0x33, + 0x08, 0x47, 0x08, 0x3e, 0x08, 0x2a, 0x08, 0x2b, 0x08, 0x2c, 0x02, 0x05, + 0x02, 0x06, 0x02, 0x02, 0x02, 0x00, 0x02, 0x03, 0x02, 0x04, 0x02, 0x07, + 0x02, 0x08, 0x02, 0x09, 0x02, 0x0c, 0x02, 0x0d, 0x02, 0x0e, 0x02, 0x0b, + 0x02, 0x0a, 0x02, 0x0f, 0x02, 0x10, 0x02, 0x39, 0x02, 0x3a, 0x02, 0x36, + 0x02, 0x34, 0x02, 0x37, 0x02, 0x38, 0x02, 0x3b, 0x02, 0x3c, 0x02, 0x3d, + 0x02, 0x40, 0x02, 0x41, 0x02, 0x42, 0x02, 0x3f, 0x02, 0x3e, 0x02, 0x43, + 0x02, 0x44, 0x0a, 0x10, 0x0a, 0x1e, 0x02, 0x11, 0x02, 0x45, 0x0a, 0x11, + 0x0a, 0x1f, 0x0a, 0x12, 0x0a, 0x20, 0x0a, 0x13, 0x0a, 0x21, 0x0a, 0x14, + 0x0a, 0x22, 0x0a, 0x15, 0x0a, 0x23, 0x0a, 0x16, 0x0a, 0x24, 0x0a, 0x17, + 0x0a, 0x25, 0x02, 0x12, 0x02, 0x46, 0x02, 0x13, 0x02, 0x47, 0x0a, 0x18, + 0x0a, 0x26, 0x0a, 0x19, 0x0a, 0x27, 0x0a, 0x1a, 0x0a, 0x28, 0x0a, 0x1b, + 0x0a, 0x29, 0x0a, 0x1c, 0x0a, 0x2a, 0x0a, 0x1d, 0x0a, 0x2b, 0x0a, 0x0c, + 0x0a, 0x03, 0x0a, 0x04, 0x0a, 0x06, 0x0a, 0x08, 0x0a, 0x0e, 0x0a, 0x0f, + 0x09, 0x39, 0x09, 0x7d, 0x09, 0x3a, 0x09, 0x7e, 0x09, 0x3b, 0x09, 0x7f, + 0x02, 0x01, 0x02, 0x35, 0x09, 0x3c, 0x09, 0x80, 0x09, 0x3d, 0x09, 0x81, + 0x09, 0x3e, 0x09, 0x82, 0x09, 0x3f, 0x09, 0x83, 0x09, 0x40, 0x09, 0x84, + 0x09, 0x41, 0x09, 0x85, 0x09, 0x42, 0x09, 0x86, 0x09, 0x43, 0x09, 0x87, + 0x09, 0x44, 0x09, 0x88, 0x09, 0x45, 0x09, 0x89, 0x09, 0x46, 0x09, 0x8a, + 0x09, 0x47, 0x09, 0x8b, 0x09, 0x48, 0x09, 0x8c, 0x09, 0x49, 0x09, 0x8d, + 0x09, 0x4a, 0x09, 0x8e, 0x09, 0x4b, 0x09, 0x8f, 0x09, 0x4c, 0x09, 0x90, + 0x09, 0x4d, 0x09, 0x91, 0x09, 0x4e, 0x09, 0x92, 0x09, 0x4f, 0x09, 0x93, + 0x09, 0x50, 0x09, 0x94, 0x09, 0x51, 0x09, 0x95, 0x09, 0x52, 0x09, 0x96, + 0x09, 0x53, 0x09, 0x54, 0x09, 0x97, 0x09, 0x55, 0x09, 0x98, 0x09, 0x56, + 0x09, 0x99, 0x09, 0x57, 0x09, 0x9a, 0x09, 0x58, 0x09, 0x9b, 0x09, 0x59, + 0x09, 0x9c, 0x09, 0x5a, 0x09, 0x9d, 0x09, 0x9e, 0x09, 0x5b, 0x09, 0x9f, + 0x09, 0x5c, 0x09, 0xa0, 0x09, 0x5d, 0x09, 0xa1, 0x09, 0x5e, 0x09, 0xa2, + 0x09, 0x5f, 0x09, 0xa3, 0x09, 0x60, 0x09, 0xa4, 0x09, 0x61, 0x09, 0xa5, + 0x09, 0x62, 0x09, 0xa6, 0x09, 0x63, 0x09, 0xa7, 0x09, 0x64, 0x09, 0xa8, + 0x09, 0x65, 0x09, 0xa9, 0x09, 0x66, 0x09, 0xaa, 0x09, 0x67, 0x09, 0xab, + 0x09, 0x68, 0x09, 0xac, 0x09, 0x69, 0x09, 0xad, 0x09, 0x6a, 0x09, 0xae, + 0x09, 0x6b, 0x09, 0xaf, 0x09, 0x6c, 0x09, 0xb0, 0x09, 0x6d, 0x09, 0xb1, + 0x09, 0x6e, 0x09, 0xb2, 0x09, 0x6f, 0x09, 0xb3, 0x09, 0x70, 0x09, 0xb4, + 0x09, 0x71, 0x09, 0xb5, 0x09, 0x72, 0x09, 0xb6, 0x09, 0x73, 0x09, 0xb7, + 0x09, 0x74, 0x09, 0xb8, 0x09, 0x75, 0x09, 0xb9, 0x09, 0x76, 0x09, 0xba, + 0x09, 0x77, 0x09, 0xbb, 0x09, 0x78, 0x09, 0xbc, 0x09, 0x79, 0x09, 0xbd, + 0x09, 0x7a, 0x09, 0xbe, 0x09, 0x7b, 0x09, 0xbf, 0x09, 0x7c, 0x09, 0xc0, + 0x04, 0x43, 0x04, 0x45, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4b, + 0x04, 0x4d, 0x04, 0x4f, 0x04, 0x51, 0x04, 0x53, 0x04, 0x55, 0x04, 0x56, + 0x04, 0x58, 0x04, 0xbd, 0x05, 0x81, 0x04, 0xbe, 0x05, 0x82, 0x04, 0xbf, + 0x05, 0x83, 0x04, 0xc0, 0x05, 0x84, 0x04, 0xc1, 0x05, 0x85, 0x04, 0xc2, + 0x05, 0x86, 0x04, 0xc3, 0x05, 0x87, 0x04, 0xc4, 0x05, 0x88, 0x04, 0xc5, + 0x05, 0x89, 0x04, 0xc6, 0x05, 0x8a, 0x04, 0xc7, 0x05, 0x8b, 0x04, 0xc8, + 0x05, 0x8c, 0x04, 0xc9, 0x05, 0x8d, 0x04, 0xca, 0x05, 0x8e, 0x04, 0xcb, + 0x05, 0x8f, 0x04, 0xcc, 0x05, 0x90, 0x04, 0xcd, 0x05, 0x93, 0x04, 0xce, + 0x05, 0x94, 0x04, 0xcf, 0x05, 0x95, 0x04, 0xd0, 0x05, 0x96, 0x04, 0xd1, + 0x05, 0x97, 0x04, 0xd2, 0x05, 0x98, 0x04, 0xd3, 0x05, 0x99, 0x04, 0xd4, + 0x05, 0x9f, 0x04, 0xd5, 0x05, 0xa0, 0x04, 0xd6, 0x05, 0xa1, 0x04, 0xd7, + 0x05, 0xa2, 0x04, 0xd8, 0x05, 0xa3, 0x04, 0xd9, 0x05, 0xa6, 0x04, 0xda, + 0x05, 0xa9, 0x04, 0xdb, 0x05, 0xac, 0x04, 0xdc, 0x05, 0xaf, 0x04, 0xdd, + 0x05, 0xb0, 0x04, 0xde, 0x05, 0xb1, 0x04, 0xdf, 0x05, 0xb2, 0x04, 0xe0, + 0x05, 0xb3, 0x04, 0xe1, 0x05, 0xb4, 0x04, 0xe2, 0x05, 0xb5, 0x04, 0xe3, + 0x05, 0xb6, 0x04, 0xe4, 0x05, 0xb7, 0x04, 0xe5, 0x05, 0xb8, 0x04, 0xe6, + 0x05, 0xb9, 0x04, 0xe7, 0x05, 0xba, 0x04, 0xe8, 0x05, 0xbb, 0x04, 0xe9, + 0x05, 0xbc, 0x04, 0xea, 0x05, 0xc0, 0x04, 0xeb, 0x05, 0xc4, 0x04, 0xec, + 0x05, 0xc8, 0x04, 0xed, 0x05, 0xcc, 0x04, 0xee, 0x05, 0xcd, 0x04, 0xef, + 0x05, 0xce, 0x04, 0xf0, 0x05, 0xcf, 0x04, 0xf1, 0x05, 0xd0, 0x04, 0xf2, + 0x05, 0xd1, 0x04, 0xf3, 0x05, 0xd2, 0x04, 0xf4, 0x05, 0xd3, 0x04, 0xf5, + 0x05, 0xd4, 0x04, 0xf6, 0x05, 0xd5, 0x04, 0xf7, 0x05, 0xd6, 0x04, 0xf8, + 0x05, 0xd7, 0x04, 0xf9, 0x05, 0xd8, 0x04, 0xfa, 0x05, 0xd9, 0x04, 0xfb, + 0x05, 0xda, 0x04, 0xfc, 0x05, 0xdb, 0x00, 0x78, 0x00, 0xfe, 0x00, 0x79, + 0x00, 0xff, 0x00, 0x7b, 0x01, 0x01, 0x04, 0xfd, 0x05, 0xdc, 0x04, 0xfe, + 0x05, 0xdd, 0x04, 0xff, 0x05, 0xde, 0x05, 0x00, 0x05, 0xdf, 0x05, 0x01, + 0x05, 0xe0, 0x05, 0x02, 0x05, 0xe1, 0x05, 0x03, 0x05, 0xe2, 0x05, 0x04, + 0x05, 0xe3, 0x05, 0xe4, 0x05, 0xe5, 0x05, 0xe6, 0x05, 0xe7, 0x05, 0xe8, + 0x05, 0xe9, 0x02, 0xd8, 0x03, 0x05, 0x02, 0xd9, 0x03, 0x06, 0x02, 0xda, + 0x03, 0x07, 0x02, 0xdb, 0x03, 0x08, 0x02, 0xdc, 0x03, 0x09, 0x02, 0xdd, + 0x03, 0x0a, 0x02, 0xde, 0x03, 0x0b, 0x02, 0xdf, 0x03, 0x0c, 0x02, 0xe0, + 0x03, 0x0d, 0x02, 0xe1, 0x03, 0x0e, 0x02, 0xe2, 0x03, 0x0f, 0x02, 0xe3, + 0x03, 0x10, 0x02, 0xe4, 0x03, 0x11, 0x02, 0xe5, 0x03, 0x12, 0x02, 0xe6, + 0x03, 0x13, 0x02, 0xe7, 0x03, 0x14, 0x02, 0xe8, 0x03, 0x15, 0x02, 0xe9, + 0x03, 0x16, 0x02, 0xea, 0x03, 0x17, 0x02, 0xeb, 0x03, 0x18, 0x02, 0xec, + 0x03, 0x19, 0x02, 0xed, 0x03, 0x1a, 0x02, 0xee, 0x03, 0x1b, 0x02, 0xef, + 0x03, 0x1c, 0x02, 0xf0, 0x03, 0x1d, 0x02, 0xf1, 0x03, 0x1e, 0x02, 0xf2, + 0x03, 0x1f, 0x02, 0xf3, 0x03, 0x20, 0x02, 0xf4, 0x03, 0x21, 0x02, 0xf6, + 0x03, 0x23, 0x02, 0xf7, 0x03, 0x24, 0x02, 0xf8, 0x03, 0x25, 0x02, 0xf9, + 0x03, 0x26, 0x02, 0xfa, 0x03, 0x27, 0x02, 0xfb, 0x03, 0x28, 0x02, 0xfc, + 0x03, 0x29, 0x02, 0xfe, 0x03, 0x2b, 0x02, 0xff, 0x03, 0x2c, 0x03, 0x00, + 0x03, 0x2d, 0x03, 0x01, 0x03, 0x2e, 0x03, 0x02, 0x03, 0x2f, 0x00, 0x7c, + 0x01, 0x02, 0x03, 0x03, 0x03, 0x30, 0x03, 0x31, 0x03, 0x32, 0x03, 0x04, + 0x03, 0x33, 0x08, 0xad, 0x08, 0xb1, 0x08, 0xaf, 0x08, 0xb3, 0x08, 0xae, + 0x08, 0xb2, 0x08, 0xb0, 0x08, 0xb4, 0x08, 0x4d, 0x08, 0x51, 0x08, 0x4f, + 0x08, 0x53, 0x08, 0x4e, 0x08, 0x52, 0x08, 0x50, 0x08, 0x54, 0x08, 0xc6, + 0x08, 0xc9, 0x08, 0xc8, 0x08, 0xcb, 0x08, 0xc7, 0x08, 0xca, 0x08, 0x62, + 0x08, 0x65, 0x08, 0x64, 0x08, 0x67, 0x08, 0x63, 0x08, 0x66, 0x08, 0xce, + 0x08, 0xd2, 0x08, 0xd0, 0x08, 0xd4, 0x08, 0xcf, 0x08, 0xd3, 0x08, 0xd1, + 0x08, 0xd5, 0x08, 0x6a, 0x08, 0x6e, 0x08, 0x6c, 0x08, 0x70, 0x08, 0x6b, + 0x08, 0x6f, 0x08, 0x6d, 0x08, 0x71, 0x08, 0xe5, 0x08, 0xe9, 0x08, 0xe7, + 0x08, 0xeb, 0x08, 0xe6, 0x08, 0xea, 0x08, 0xe8, 0x08, 0xec, 0x08, 0x7d, + 0x08, 0x81, 0x08, 0x7f, 0x08, 0x83, 0x08, 0x7e, 0x08, 0x82, 0x08, 0x80, + 0x08, 0x84, 0x08, 0xf5, 0x08, 0xf8, 0x08, 0xf7, 0x08, 0xfa, 0x08, 0xf6, + 0x08, 0xf9, 0x08, 0x89, 0x08, 0x8c, 0x08, 0x8b, 0x08, 0x8e, 0x08, 0x8a, + 0x08, 0x8d, 0x08, 0xff, 0x09, 0x03, 0x09, 0x01, 0x09, 0x05, 0x09, 0x00, + 0x09, 0x04, 0x09, 0x02, 0x09, 0x06, 0x08, 0x95, 0x09, 0x0f, 0x09, 0x13, + 0x09, 0x11, 0x09, 0x15, 0x09, 0x10, 0x09, 0x14, 0x09, 0x12, 0x09, 0x16, + 0x08, 0x9a, 0x08, 0x9e, 0x08, 0x9c, 0x08, 0xa0, 0x08, 0x9b, 0x08, 0x9f, + 0x08, 0x9d, 0x08, 0xa1, 0x08, 0xb6, 0x08, 0xb5, 0x08, 0xcd, 0x08, 0xcc, + 0x08, 0xd7, 0x08, 0xd6, 0x08, 0xf1, 0x08, 0xf0, 0x08, 0xfc, 0x08, 0xfb, + 0x09, 0x0b, 0x09, 0x0a, 0x09, 0x18, 0x09, 0x17, 0x08, 0xbb, 0x08, 0xbf, + 0x08, 0xbd, 0x08, 0xc1, 0x08, 0xbc, 0x08, 0xc0, 0x08, 0xbe, 0x08, 0xc2, + 0x08, 0x5a, 0x08, 0x5e, 0x08, 0x5c, 0x08, 0x60, 0x08, 0x5b, 0x08, 0x5f, + 0x08, 0x5d, 0x08, 0x61, 0x08, 0xda, 0x08, 0xde, 0x08, 0xdc, 0x08, 0xe0, + 0x08, 0xdb, 0x08, 0xdf, 0x08, 0xdd, 0x08, 0xe1, 0x08, 0x75, 0x08, 0x79, + 0x08, 0x77, 0x08, 0x7b, 0x08, 0x76, 0x08, 0x7a, 0x08, 0x78, 0x08, 0x7c, + 0x09, 0x1b, 0x09, 0x1f, 0x09, 0x1d, 0x09, 0x21, 0x09, 0x1c, 0x09, 0x20, + 0x09, 0x1e, 0x09, 0x22, 0x08, 0xa5, 0x08, 0xa9, 0x08, 0xa7, 0x08, 0xab, + 0x08, 0xa6, 0x08, 0xaa, 0x08, 0xa8, 0x08, 0xac, 0x08, 0xb9, 0x08, 0xb8, + 0x08, 0xc4, 0x08, 0xba, 0x08, 0xc3, 0x08, 0xb7, 0x08, 0xc5, 0x08, 0x58, + 0x08, 0x57, 0x08, 0x56, 0x08, 0x55, 0x08, 0x59, 0x09, 0x34, 0x09, 0x37, + 0x09, 0x26, 0x09, 0x2a, 0x09, 0x33, 0x08, 0xe3, 0x08, 0xd9, 0x08, 0xe2, + 0x08, 0xd8, 0x08, 0xe4, 0x08, 0x69, 0x08, 0x68, 0x08, 0x73, 0x08, 0x72, + 0x08, 0x74, 0x09, 0x2c, 0x09, 0x2b, 0x09, 0x2d, 0x08, 0xf4, 0x08, 0xf3, + 0x08, 0xee, 0x08, 0xed, 0x08, 0xf2, 0x08, 0xef, 0x08, 0x88, 0x08, 0x87, + 0x08, 0x86, 0x08, 0x85, 0x09, 0x2f, 0x09, 0x2e, 0x09, 0x30, 0x09, 0x0e, + 0x09, 0x0d, 0x09, 0x08, 0x09, 0x07, 0x08, 0xfd, 0x08, 0xfe, 0x09, 0x0c, + 0x09, 0x09, 0x08, 0x99, 0x08, 0x98, 0x08, 0x97, 0x08, 0x96, 0x08, 0x91, + 0x09, 0x32, 0x09, 0x31, 0x09, 0x29, 0x09, 0x24, 0x09, 0x1a, 0x09, 0x23, + 0x09, 0x19, 0x09, 0x25, 0x08, 0x90, 0x08, 0x8f, 0x08, 0xa3, 0x08, 0xa2, + 0x08, 0xa4, 0x09, 0x28, 0x09, 0x27, 0x09, 0xc1, 0x09, 0xc2, 0x09, 0xc3, + 0x09, 0xc4, 0x09, 0xc5, 0x09, 0xc6, 0x09, 0xc7, 0x09, 0xc8, 0x09, 0xc9, + 0x09, 0xca, 0x09, 0xcb, 0x09, 0xcc, 0x09, 0xcd, 0x09, 0xce, 0x0a, 0x3d, + 0x0a, 0x3e, 0x01, 0x5e, 0x09, 0xcf, 0x01, 0x77, 0x01, 0x79, 0x01, 0x7b, + 0x09, 0xd1, 0x03, 0x36, 0x01, 0x67, 0x01, 0x68, 0x01, 0x6b, 0x09, 0xd3, + 0x01, 0x69, 0x01, 0x6a, 0x01, 0x6c, 0x09, 0xd4, 0x01, 0x8c, 0x01, 0x8d, + 0x01, 0x7c, 0x0a, 0x3f, 0x02, 0xaa, 0x03, 0x3c, 0x01, 0x66, 0x09, 0xd8, + 0x03, 0x52, 0x02, 0xa5, 0x02, 0x7d, 0x0a, 0x42, 0x02, 0x81, 0x02, 0x82, + 0x02, 0x83, 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, + 0x02, 0x89, 0x02, 0x8a, 0x02, 0x8b, 0x03, 0x3b, 0x02, 0x8c, 0x02, 0x8d, + 0x02, 0x8e, 0x02, 0x8f, 0x02, 0x90, 0x02, 0x91, 0x02, 0x92, 0x02, 0x93, + 0x02, 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, 0x98, 0x02, 0x99, + 0x02, 0x9a, 0x09, 0xda, 0x09, 0xdb, 0x09, 0xdc, 0x03, 0x3d, 0x03, 0x3e, + 0x09, 0xdd, 0x09, 0xde, 0x03, 0x3f, 0x09, 0xdf, 0x09, 0xe0, 0x09, 0xe1, + 0x03, 0x34, 0x02, 0x5a, 0x09, 0xe2, 0x09, 0xe3, 0x09, 0xe4, 0x09, 0xe5, + 0x09, 0xe6, 0x09, 0xe7, 0x09, 0xe8, 0x09, 0xe9, 0x09, 0xea, 0x02, 0x63, + 0x02, 0x55, 0x09, 0xec, 0x05, 0xf4, 0x09, 0xed, 0x09, 0xee, 0x09, 0xef, + 0x09, 0xf0, 0x09, 0xf1, 0x09, 0xf2, 0x09, 0xf3, 0x09, 0xf4, 0x03, 0x37, + 0x03, 0x38, 0x03, 0x39, 0x03, 0x3a, 0x05, 0x0c, 0x05, 0xf3, 0x03, 0x64, + 0x03, 0x60, 0x03, 0x65, 0x03, 0x61, 0x03, 0x66, 0x03, 0x62, 0x02, 0xc2, + 0x02, 0xac, 0x01, 0x7d, 0x02, 0xbd, 0x02, 0xba, 0x03, 0x67, 0x02, 0xb1, + 0x03, 0x42, 0x0a, 0x8b, 0x0a, 0xa1, 0x0a, 0xa2, 0x0a, 0xa3, 0x0a, 0xa4, + 0x0a, 0xa5, 0x0a, 0xa6, 0x0a, 0xa7, 0x0a, 0xa8, 0x0a, 0xa9, 0x0a, 0xaa, + 0x0a, 0x7a, 0x03, 0x7b, 0x03, 0x8f, 0x03, 0x85, 0x03, 0x84, 0x03, 0x98, + 0x03, 0x8e, 0x03, 0x83, 0x03, 0x97, 0x03, 0x8d, 0x03, 0x81, 0x03, 0x95, + 0x03, 0x8b, 0x03, 0x80, 0x03, 0x94, 0x03, 0x8a, 0x03, 0x7e, 0x03, 0x92, + 0x03, 0x88, 0x03, 0x7d, 0x03, 0x91, 0x03, 0x87, 0x03, 0x82, 0x03, 0x96, + 0x03, 0x8c, 0x03, 0x7f, 0x03, 0x93, 0x03, 0x89, 0x03, 0x7c, 0x03, 0x90, + 0x03, 0x86, 0x03, 0x6c, 0x03, 0x6e, 0x03, 0x6f, 0x03, 0x70, 0x03, 0x56, + 0x0a, 0x44, 0x03, 0x59, 0x0a, 0x45, 0x03, 0x68, 0x02, 0xc3, 0x03, 0x35, + 0x03, 0x99, 0x03, 0x53, 0x03, 0x55, 0x03, 0x45, 0x03, 0x46, 0x03, 0x4f, + 0x0a, 0x7b, 0x0a, 0x7c, 0x0a, 0x7d, 0x0a, 0x7e, 0x0a, 0x7f, 0x0a, 0x80, + 0x0a, 0x81, 0x0a, 0x82, 0x0a, 0x83, 0x0a, 0xa0, 0x05, 0x05, 0x05, 0xea, + 0x05, 0x06, 0x05, 0x07, 0x05, 0x08, 0x05, 0xed, 0x05, 0xee, 0x05, 0x09, + 0x05, 0xef, 0x05, 0x0a, 0x05, 0xf0, 0x05, 0x0b, 0x05, 0xf1, 0x05, 0xf2, + 0x05, 0x0e, 0x05, 0xf5, 0x05, 0xf6, 0x00, 0x00, 0x40, 0x46, 0x5f, 0x5e, + 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50, + 0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48, 0x47, 0x46, 0x45, 0x44, + 0x43, 0x42, 0x41, 0x40, 0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38, + 0x37, 0x36, 0x35, 0x2f, 0x2e, 0x2d, 0x2c, 0x28, 0x26, 0x25, 0x24, 0x23, + 0x22, 0x1f, 0x18, 0x14, 0x11, 0x10, 0x0f, 0x0d, 0x0b, 0x0a, 0x09, 0x08, + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x2c, 0x45, 0x23, 0x46, + 0x60, 0x20, 0xb0, 0x26, 0x60, 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, + 0x2c, 0x45, 0x23, 0x46, 0x23, 0x61, 0x20, 0xb0, 0x26, 0x61, 0xb0, 0x04, + 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, 0x45, 0x23, 0x46, 0x60, 0xb0, 0x20, + 0x61, 0x20, 0xb0, 0x46, 0x60, 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, + 0x2c, 0x45, 0x23, 0x46, 0x23, 0x61, 0xb0, 0x20, 0x60, 0x20, 0xb0, 0x26, + 0x61, 0xb0, 0x20, 0x61, 0xb0, 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, + 0x45, 0x23, 0x46, 0x60, 0xb0, 0x40, 0x61, 0x20, 0xb0, 0x66, 0x60, 0xb0, + 0x04, 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, 0x45, 0x23, 0x46, 0x23, 0x61, + 0xb0, 0x40, 0x60, 0x20, 0xb0, 0x26, 0x61, 0xb0, 0x40, 0x61, 0xb0, 0x04, + 0x26, 0x23, 0x48, 0x48, 0x2d, 0x2c, 0x01, 0x10, 0x20, 0x3c, 0x00, 0x3c, + 0x2d, 0x2c, 0x20, 0x45, 0x23, 0x20, 0xb0, 0xcd, 0x44, 0x23, 0x20, 0xb8, + 0x01, 0x5a, 0x51, 0x58, 0x23, 0x20, 0xb0, 0x8d, 0x44, 0x23, 0x59, 0x20, + 0xb0, 0xed, 0x51, 0x58, 0x23, 0x20, 0xb0, 0x4d, 0x44, 0x23, 0x59, 0x20, + 0xb0, 0x04, 0x26, 0x51, 0x58, 0x23, 0x20, 0xb0, 0x0d, 0x44, 0x23, 0x59, + 0x21, 0x21, 0x2d, 0x2c, 0x20, 0x20, 0x45, 0x18, 0x68, 0x44, 0x20, 0xb0, + 0x01, 0x60, 0x20, 0x45, 0xb0, 0x46, 0x76, 0x68, 0x8a, 0x45, 0x60, 0x44, + 0x2d, 0x2c, 0x01, 0xb1, 0x0b, 0x0a, 0x43, 0x23, 0x43, 0x65, 0x0a, 0x2d, + 0x2c, 0x00, 0xb1, 0x0a, 0x0b, 0x43, 0x23, 0x43, 0x0b, 0x2d, 0x2c, 0x00, + 0xb0, 0x28, 0x23, 0x70, 0xb1, 0x01, 0x28, 0x3e, 0x01, 0xb0, 0x28, 0x23, + 0x70, 0xb1, 0x02, 0x28, 0x45, 0x3a, 0xb1, 0x02, 0x00, 0x08, 0x0d, 0x2d, + 0x2c, 0x20, 0x45, 0xb0, 0x03, 0x25, 0x45, 0x61, 0x64, 0xb0, 0x50, 0x51, + 0x58, 0x45, 0x44, 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x20, 0x45, 0xb0, + 0x00, 0x43, 0x60, 0x44, 0x2d, 0x2c, 0x01, 0xb0, 0x06, 0x43, 0xb0, 0x07, + 0x43, 0x65, 0x0a, 0x2d, 0x2c, 0x20, 0x69, 0xb0, 0x40, 0x61, 0xb0, 0x00, + 0x8b, 0x20, 0xb1, 0x2c, 0xc0, 0x8a, 0x8c, 0xb8, 0x10, 0x00, 0x62, 0x60, + 0x2b, 0x0c, 0x64, 0x23, 0x64, 0x61, 0x5c, 0x58, 0xb0, 0x03, 0x61, 0x59, + 0x2d, 0x2c, 0x8a, 0x03, 0x45, 0x8a, 0x8a, 0x87, 0xb0, 0x11, 0x2b, 0xb0, + 0x29, 0x23, 0x44, 0xb0, 0x29, 0x7a, 0xe4, 0x18, 0x2d, 0x2c, 0x45, 0x65, + 0xb0, 0x2c, 0x23, 0x44, 0x45, 0xb0, 0x2b, 0x23, 0x44, 0x2d, 0x2c, 0x4b, + 0x52, 0x58, 0x45, 0x44, 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x01, 0xb0, + 0x05, 0x25, 0x10, 0x23, 0x20, 0x8a, 0xf5, 0x00, 0xb0, 0x01, 0x60, 0x23, + 0xed, 0xec, 0x2d, 0x2c, 0x01, 0xb0, 0x05, 0x25, 0x10, 0x23, 0x20, 0x8a, + 0xf5, 0x00, 0xb0, 0x01, 0x61, 0x23, 0xed, 0xec, 0x2d, 0x2c, 0x01, 0xb0, + 0x06, 0x25, 0x10, 0xf5, 0x00, 0xed, 0xec, 0x2d, 0x2c, 0x20, 0xb0, 0x01, + 0x60, 0x01, 0x10, 0x20, 0x3c, 0x00, 0x3c, 0x2d, 0x2c, 0x20, 0xb0, 0x01, + 0x61, 0x01, 0x10, 0x20, 0x3c, 0x00, 0x3c, 0x2d, 0x2c, 0x00, 0xb0, 0x07, + 0x43, 0xb0, 0x06, 0x43, 0x0b, 0x2d, 0x2c, 0x21, 0x21, 0x0c, 0x64, 0x23, + 0x64, 0x8b, 0xb8, 0x40, 0x00, 0x62, 0x2d, 0x2c, 0x21, 0xb0, 0x80, 0x51, + 0x58, 0x0c, 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x20, 0x00, 0x62, 0x1b, 0xb2, + 0x00, 0x40, 0x2f, 0x2b, 0x59, 0xb0, 0x02, 0x60, 0x2d, 0x2c, 0x21, 0xb0, + 0xc0, 0x51, 0x58, 0x0c, 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x15, 0x55, 0x62, + 0x1b, 0xb2, 0x00, 0x80, 0x2f, 0x2b, 0x59, 0xb0, 0x02, 0x60, 0x2d, 0x2c, + 0x0c, 0x64, 0x23, 0x64, 0x8b, 0xb8, 0x40, 0x00, 0x62, 0x60, 0x23, 0x21, + 0x2d, 0x2c, 0x45, 0x23, 0x45, 0x60, 0x23, 0x45, 0x60, 0x23, 0x45, 0x60, + 0x23, 0x76, 0x68, 0x18, 0xb0, 0x80, 0x62, 0x20, 0x2d, 0x2c, 0xb0, 0x04, + 0x26, 0xb0, 0x04, 0x26, 0xb0, 0x04, 0x25, 0xb0, 0x04, 0x25, 0x45, 0x23, + 0x45, 0x20, 0xb0, 0x03, 0x26, 0x60, 0x62, 0x63, 0x68, 0x20, 0xb0, 0x03, + 0x26, 0x61, 0x65, 0x8a, 0x23, 0x44, 0x44, 0x2d, 0x2c, 0x20, 0x45, 0xb0, + 0x00, 0x54, 0x58, 0xb0, 0x40, 0x44, 0x20, 0x45, 0xb0, 0x40, 0x61, 0x44, + 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x45, 0xb1, 0x30, 0x2f, 0x45, 0x23, + 0x45, 0x61, 0x60, 0xb0, 0x01, 0x60, 0x69, 0x44, 0x2d, 0x2c, 0x4b, 0x51, + 0x58, 0xb0, 0x2f, 0x23, 0x70, 0xb0, 0x14, 0x23, 0x42, 0x1b, 0x21, 0x21, + 0x59, 0x2d, 0x2c, 0x4b, 0x51, 0x58, 0x20, 0xb0, 0x03, 0x25, 0x45, 0x69, + 0x53, 0x58, 0x44, 0x1b, 0x21, 0x21, 0x59, 0x1b, 0x21, 0x21, 0x59, 0x2d, + 0x2c, 0x45, 0xb0, 0x14, 0x43, 0xb0, 0x00, 0x60, 0x63, 0xb0, 0x01, 0x60, + 0x69, 0x44, 0x2d, 0x2c, 0xb0, 0x2f, 0x45, 0x44, 0x2d, 0x2c, 0x45, 0x23, + 0x20, 0x45, 0x8a, 0x60, 0x44, 0x2d, 0x2c, 0x45, 0x23, 0x45, 0x60, 0x44, + 0x2d, 0x2c, 0x4b, 0x23, 0x51, 0x58, 0xb9, 0x00, 0x33, 0xff, 0xe0, 0xb1, + 0x34, 0x20, 0x1b, 0xb3, 0x33, 0x00, 0x34, 0x00, 0x59, 0x44, 0x44, 0x2d, + 0x2c, 0xb0, 0x16, 0x43, 0x58, 0xb0, 0x03, 0x26, 0x45, 0x8a, 0x58, 0x64, + 0x66, 0xb0, 0x1f, 0x60, 0x1b, 0x64, 0xb0, 0x20, 0x60, 0x66, 0x20, 0x58, + 0x1b, 0x21, 0xb0, 0x40, 0x59, 0xb0, 0x01, 0x61, 0x59, 0x23, 0x58, 0x65, + 0x59, 0xb0, 0x29, 0x23, 0x44, 0x23, 0x10, 0xb0, 0x29, 0xe0, 0x1b, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0xb0, 0x16, 0x43, 0x58, 0xb0, + 0x04, 0x25, 0x45, 0x64, 0xb0, 0x20, 0x60, 0x66, 0x20, 0x58, 0x1b, 0x21, + 0xb0, 0x40, 0x59, 0xb0, 0x01, 0x61, 0x23, 0x58, 0x65, 0x59, 0xb0, 0x29, + 0x23, 0x44, 0xb0, 0x04, 0x25, 0xb0, 0x07, 0x25, 0x08, 0x20, 0x58, 0x02, + 0x1b, 0x03, 0x59, 0xb0, 0x05, 0x25, 0x10, 0xb0, 0x04, 0x25, 0x20, 0x46, + 0xb0, 0x04, 0x25, 0x23, 0x42, 0x3c, 0xb0, 0x07, 0x25, 0x10, 0xb0, 0x06, + 0x25, 0x20, 0x46, 0xb0, 0x04, 0x25, 0xb0, 0x01, 0x60, 0x23, 0x42, 0x3c, + 0x20, 0x58, 0x01, 0x1b, 0x00, 0x59, 0xb0, 0x05, 0x25, 0x10, 0xb0, 0x04, + 0x25, 0xb0, 0x29, 0xe0, 0xb0, 0x07, 0x25, 0x10, 0xb0, 0x06, 0x25, 0xb0, + 0x29, 0xe0, 0xb0, 0x04, 0x25, 0xb0, 0x07, 0x25, 0x08, 0x20, 0x58, 0x02, + 0x1b, 0x03, 0x59, 0xb0, 0x04, 0x25, 0xb0, 0x03, 0x25, 0x43, 0x48, 0xb0, + 0x06, 0x25, 0xb0, 0x03, 0x25, 0xb0, 0x01, 0x60, 0x43, 0x48, 0x1b, 0x21, + 0x59, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2d, 0x2c, 0xb0, 0x16, + 0x43, 0x58, 0xb0, 0x04, 0x25, 0x45, 0x64, 0xb0, 0x20, 0x60, 0x66, 0x20, + 0x58, 0x1b, 0x21, 0xb0, 0x40, 0x59, 0xb0, 0x01, 0x61, 0x23, 0x58, 0x1b, + 0x65, 0x59, 0xb0, 0x29, 0x23, 0x44, 0xb0, 0x05, 0x25, 0xb0, 0x08, 0x25, + 0x08, 0x20, 0x58, 0x02, 0x1b, 0x03, 0x59, 0xb0, 0x04, 0x25, 0x10, 0xb0, + 0x05, 0x25, 0x20, 0x46, 0xb0, 0x04, 0x25, 0x23, 0x42, 0x3c, 0xb0, 0x04, + 0x25, 0xb0, 0x07, 0x25, 0x08, 0xb0, 0x07, 0x25, 0x10, 0xb0, 0x06, 0x25, + 0x20, 0x46, 0xb0, 0x04, 0x25, 0xb0, 0x01, 0x60, 0x23, 0x42, 0x3c, 0x20, + 0x58, 0x01, 0x1b, 0x00, 0x59, 0xb0, 0x04, 0x25, 0x10, 0xb0, 0x05, 0x25, + 0xb0, 0x29, 0xe0, 0xb0, 0x29, 0x20, 0x45, 0x65, 0x44, 0xb0, 0x07, 0x25, + 0x10, 0xb0, 0x06, 0x25, 0xb0, 0x29, 0xe0, 0xb0, 0x05, 0x25, 0xb0, 0x08, + 0x25, 0x08, 0x20, 0x58, 0x02, 0x1b, 0x03, 0x59, 0xb0, 0x05, 0x25, 0xb0, + 0x03, 0x25, 0x43, 0x48, 0xb0, 0x04, 0x25, 0xb0, 0x07, 0x25, 0x08, 0xb0, + 0x06, 0x25, 0xb0, 0x03, 0x25, 0xb0, 0x01, 0x60, 0x43, 0x48, 0x1b, 0x21, + 0x59, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2d, 0x2c, 0x02, 0xb0, + 0x04, 0x25, 0x20, 0x20, 0x46, 0xb0, 0x04, 0x25, 0x23, 0x42, 0xb0, 0x05, + 0x25, 0x08, 0xb0, 0x03, 0x25, 0x45, 0x48, 0x21, 0x21, 0x21, 0x21, 0x2d, + 0x2c, 0x02, 0xb0, 0x03, 0x25, 0x20, 0xb0, 0x04, 0x25, 0x08, 0xb0, 0x02, + 0x25, 0x43, 0x48, 0x21, 0x21, 0x21, 0x2d, 0x2c, 0x45, 0x23, 0x20, 0x45, + 0x18, 0x20, 0xb0, 0x00, 0x50, 0x20, 0x58, 0x23, 0x65, 0x23, 0x59, 0x23, + 0x68, 0x20, 0xb0, 0x40, 0x50, 0x58, 0x21, 0xb0, 0x40, 0x59, 0x23, 0x58, + 0x65, 0x59, 0x8a, 0x60, 0x44, 0x2d, 0x2c, 0x4b, 0x53, 0x23, 0x4b, 0x51, + 0x5a, 0x58, 0x20, 0x45, 0x8a, 0x60, 0x44, 0x1b, 0x21, 0x21, 0x59, 0x2d, + 0x2c, 0x4b, 0x54, 0x58, 0x20, 0x45, 0x8a, 0x60, 0x44, 0x1b, 0x21, 0x21, + 0x59, 0x2d, 0x2c, 0x4b, 0x53, 0x23, 0x4b, 0x51, 0x5a, 0x58, 0x38, 0x1b, + 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x4b, 0x54, 0x58, 0x38, 0x1b, 0x21, 0x21, + 0x59, 0x2d, 0x2c, 0xb0, 0x02, 0x43, 0x54, 0x58, 0xb0, 0x46, 0x2b, 0x1b, + 0x21, 0x21, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0xb0, 0x02, 0x43, 0x54, 0x58, + 0xb0, 0x47, 0x2b, 0x1b, 0x21, 0x21, 0x21, 0x59, 0x2d, 0x2c, 0xb0, 0x02, + 0x43, 0x54, 0x58, 0xb0, 0x48, 0x2b, 0x1b, 0x21, 0x21, 0x21, 0x21, 0x59, + 0x2d, 0x2c, 0xb0, 0x02, 0x43, 0x54, 0x58, 0xb0, 0x49, 0x2b, 0x1b, 0x21, + 0x21, 0x21, 0x59, 0x2d, 0x2c, 0x20, 0x8a, 0x08, 0x23, 0x4b, 0x53, 0x8a, + 0x4b, 0x51, 0x5a, 0x58, 0x23, 0x38, 0x1b, 0x21, 0x21, 0x59, 0x2d, 0x2c, + 0x00, 0x20, 0xb2, 0x00, 0x40, 0x03, 0x25, 0xb0, 0x06, 0x26, 0x49, 0x61, + 0x8b, 0x38, 0x12, 0x34, 0x2d, 0x2c, 0x01, 0x46, 0x23, 0x46, 0x60, 0x23, + 0x46, 0x61, 0x23, 0x20, 0x10, 0x20, 0x46, 0x8a, 0x61, 0xb8, 0xff, 0x80, + 0x62, 0x8a, 0xb1, 0x40, 0x40, 0x8a, 0x70, 0x45, 0x60, 0x68, 0x3a, 0x2d, + 0x2c, 0x20, 0x8a, 0x23, 0x49, 0x64, 0x8a, 0x23, 0x53, 0x58, 0x3c, 0x1b, + 0x21, 0x59, 0x2d, 0x2c, 0x4b, 0x52, 0x58, 0x7d, 0x1b, 0x7a, 0x59, 0x2d, + 0x2c, 0xb0, 0x12, 0x00, 0x4b, 0x01, 0x4b, 0x54, 0x42, 0x2d, 0x2c, 0xb1, + 0x02, 0x00, 0x42, 0xb1, 0x23, 0x01, 0x88, 0x51, 0xb1, 0x40, 0x01, 0x88, + 0x53, 0x5a, 0x58, 0xb9, 0x10, 0x00, 0x00, 0x20, 0x88, 0x54, 0x58, 0xb2, + 0x02, 0x01, 0x02, 0x43, 0x60, 0x42, 0x59, 0xb1, 0x24, 0x01, 0x88, 0x51, + 0x58, 0xb9, 0x20, 0x00, 0x00, 0x40, 0x88, 0x54, 0x58, 0xb2, 0x02, 0x02, + 0x02, 0x43, 0x60, 0x42, 0xb1, 0x24, 0x01, 0x88, 0x54, 0x58, 0xb2, 0x02, + 0x20, 0x02, 0x43, 0x60, 0x42, 0x00, 0x4b, 0x01, 0x4b, 0x52, 0x58, 0xb2, + 0x02, 0x08, 0x02, 0x43, 0x60, 0x42, 0x59, 0x1b, 0xb9, 0x40, 0x00, 0x00, + 0x80, 0x88, 0x54, 0x58, 0xb2, 0x02, 0x04, 0x02, 0x43, 0x60, 0x42, 0x59, + 0xb9, 0x40, 0x00, 0x00, 0x80, 0x63, 0xb8, 0x01, 0x00, 0x88, 0x54, 0x58, + 0xb2, 0x02, 0x08, 0x02, 0x43, 0x60, 0x42, 0x59, 0xb9, 0x40, 0x00, 0x01, + 0x00, 0x63, 0xb8, 0x02, 0x00, 0x88, 0x54, 0x58, 0xb2, 0x02, 0x10, 0x02, + 0x43, 0x60, 0x42, 0x59, 0xb9, 0x40, 0x00, 0x02, 0x00, 0x63, 0xb8, 0x04, + 0x00, 0x88, 0x54, 0x58, 0xb2, 0x02, 0x40, 0x02, 0x43, 0x60, 0x42, 0x59, + 0x59, 0x59, 0x59, 0x59, 0x2d, 0x2c, 0x45, 0x18, 0x68, 0x23, 0x4b, 0x51, + 0x58, 0x23, 0x20, 0x45, 0x20, 0x64, 0xb0, 0x40, 0x50, 0x58, 0x7c, 0x59, + 0x68, 0x8a, 0x60, 0x59, 0x44, 0x2d, 0x2c, 0xb0, 0x00, 0x16, 0xb0, 0x02, + 0x25, 0xb0, 0x02, 0x25, 0x01, 0xb0, 0x01, 0x23, 0x3e, 0x00, 0xb0, 0x02, + 0x23, 0x3e, 0xb1, 0x01, 0x02, 0x06, 0x0c, 0xb0, 0x0a, 0x23, 0x65, 0x42, + 0xb0, 0x0b, 0x23, 0x42, 0x01, 0xb0, 0x01, 0x23, 0x3f, 0x00, 0xb0, 0x02, + 0x23, 0x3f, 0xb1, 0x01, 0x02, 0x06, 0x0c, 0xb0, 0x06, 0x23, 0x65, 0x42, + 0xb0, 0x07, 0x23, 0x42, 0xb0, 0x01, 0x16, 0x01, 0x2d, 0x2c, 0x20, 0xb8, + 0x20, 0x00, 0x62, 0x8a, 0x60, 0x23, 0x62, 0x2d, 0x2c, 0xb0, 0x07, 0x25, + 0x58, 0x00, 0x1b, 0x01, 0x59, 0xb0, 0x04, 0x25, 0x10, 0xb0, 0x03, 0x25, + 0xb0, 0x02, 0x25, 0x20, 0xb8, 0xff, 0xff, 0x54, 0x58, 0x21, 0xcd, 0x1b, + 0xed, 0x59, 0x21, 0xb0, 0x06, 0x25, 0x5c, 0xb0, 0x06, 0x25, 0x5a, 0x58, + 0xb0, 0x09, 0x2b, 0x59, 0x20, 0xb0, 0x05, 0x25, 0x4a, 0xb0, 0x04, 0x25, + 0x47, 0xb0, 0x04, 0x25, 0x47, 0x60, 0xb0, 0x06, 0x25, 0x47, 0xb0, 0x80, + 0x63, 0x61, 0xb0, 0x02, 0x25, 0xb0, 0x00, 0x55, 0x58, 0xb0, 0x03, 0x25, + 0xb0, 0x07, 0x25, 0x49, 0x63, 0x59, 0xb0, 0x08, 0x25, 0x58, 0x00, 0x1b, + 0x01, 0x59, 0xb0, 0x04, 0x25, 0xb0, 0x06, 0x25, 0x49, 0xb0, 0x09, 0x25, + 0x5c, 0xb0, 0x09, 0x25, 0x5a, 0x58, 0xb0, 0x09, 0x2b, 0x59, 0xb0, 0x07, + 0x25, 0x46, 0xb0, 0x80, 0x63, 0x61, 0xb0, 0x03, 0x25, 0x20, 0xb0, 0x00, + 0x55, 0x58, 0x63, 0x1b, 0x21, 0x59, 0x61, 0x23, 0x20, 0xb0, 0x00, 0x55, + 0x58, 0xb0, 0x80, 0x63, 0x1b, 0x21, 0xb0, 0x80, 0x59, 0xb0, 0x59, 0x2b, + 0xb0, 0x06, 0x25, 0x5c, 0x58, 0x69, 0x59, 0xb0, 0x04, 0x25, 0x20, 0x20, + 0x10, 0xb0, 0x00, 0x48, 0x23, 0x3a, 0xb0, 0x06, 0x26, 0x58, 0x00, 0x1b, + 0x01, 0x59, 0xb0, 0x05, 0x26, 0x58, 0xb0, 0x03, 0x25, 0x2f, 0x59, 0x8a, + 0x12, 0x23, 0x32, 0x21, 0x21, 0x2d, 0x2c, 0xb0, 0x06, 0x25, 0xb0, 0x0a, + 0x25, 0x87, 0xb0, 0x06, 0x25, 0xb0, 0x09, 0x25, 0x4a, 0xb0, 0x00, 0x53, + 0x58, 0xb0, 0x06, 0x25, 0xb0, 0x0a, 0x25, 0x1b, 0xb0, 0x09, 0x25, 0xb0, + 0x07, 0x25, 0x59, 0xb0, 0x02, 0x25, 0xb0, 0x02, 0x25, 0x07, 0x0c, 0xb0, + 0x05, 0x25, 0x63, 0x23, 0xb0, 0x06, 0x25, 0x63, 0x60, 0x20, 0xb9, 0x40, + 0x00, 0x04, 0x00, 0x63, 0x53, 0x58, 0x21, 0xb0, 0x04, 0x26, 0xb0, 0x04, + 0x26, 0xb0, 0x0a, 0x1b, 0xb9, 0x40, 0x00, 0x04, 0x00, 0x63, 0x65, 0x51, + 0x58, 0xb0, 0x04, 0x26, 0x65, 0xb0, 0x04, 0x26, 0x65, 0xb0, 0x0a, 0x1b, + 0xb0, 0x04, 0x26, 0xb0, 0x04, 0x26, 0xb0, 0x00, 0xb0, 0x03, 0x25, 0xb0, + 0x03, 0x25, 0x0b, 0x0d, 0x0a, 0xb0, 0x09, 0x2e, 0xb0, 0x07, 0x25, 0xb0, + 0x07, 0x25, 0x0b, 0x0d, 0x0a, 0xb0, 0x0b, 0x2e, 0xb0, 0x05, 0x25, 0xb0, + 0x05, 0x25, 0x07, 0x59, 0x59, 0x20, 0xb0, 0x00, 0x55, 0x58, 0xb0, 0x05, + 0x25, 0xb0, 0x05, 0x25, 0x87, 0xb0, 0x07, 0x25, 0xb0, 0x07, 0x25, 0x0b, + 0xb0, 0x09, 0x25, 0x10, 0xb0, 0x0b, 0x25, 0xb0, 0x09, 0x26, 0x20, 0xb8, + 0xff, 0xff, 0x54, 0x58, 0x21, 0xcd, 0x1b, 0xed, 0x59, 0xb0, 0x05, 0x25, + 0xb0, 0x05, 0x25, 0x07, 0xb0, 0x08, 0x25, 0xb0, 0x0b, 0x25, 0x49, 0x23, + 0xb0, 0x06, 0x25, 0xb0, 0x06, 0x25, 0x87, 0xb0, 0x0a, 0x25, 0x10, 0xb0, + 0x0b, 0x25, 0xc1, 0x59, 0x20, 0xb0, 0x00, 0x51, 0xb8, 0x00, 0x52, 0x23, + 0x78, 0xb0, 0x01, 0x61, 0xb0, 0x02, 0x25, 0xb0, 0x07, 0x25, 0xb0, 0x07, + 0x25, 0x07, 0xb0, 0x0a, 0x25, 0xb0, 0x0d, 0x25, 0x49, 0x61, 0xb0, 0x80, + 0x62, 0xb0, 0x05, 0x25, 0xb0, 0x05, 0x25, 0x0b, 0xb0, 0x0a, 0x25, 0x23, + 0x38, 0xb0, 0x06, 0x25, 0xb0, 0x06, 0x25, 0x87, 0xb0, 0x08, 0x25, 0xb0, + 0x08, 0x25, 0x0b, 0xb0, 0x0a, 0x25, 0x10, 0xb0, 0x0b, 0x25, 0xc4, 0xb0, + 0x06, 0x25, 0xb0, 0x06, 0x25, 0x07, 0xb0, 0x09, 0x25, 0xb0, 0x0c, 0x25, + 0x49, 0xb0, 0x03, 0x25, 0x54, 0xb8, 0xff, 0xa7, 0x23, 0x79, 0x21, 0x21, + 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x2d, 0x2c, + 0x23, 0xb0, 0x00, 0x54, 0x58, 0xb9, 0x40, 0x00, 0x00, 0x00, 0x1b, 0xb9, + 0x00, 0x00, 0x40, 0x00, 0x59, 0x8a, 0xb0, 0x00, 0x54, 0x58, 0xb9, 0x40, + 0x00, 0x00, 0x00, 0x1b, 0xb9, 0x00, 0x00, 0x40, 0x00, 0x59, 0xb0, 0x5b, + 0x2b, 0x2d, 0x2c, 0x08, 0xb0, 0x00, 0x54, 0x58, 0xb9, 0x40, 0x00, 0x00, + 0x00, 0x1b, 0xb9, 0x00, 0x00, 0x40, 0x00, 0x59, 0x0d, 0xb0, 0x5b, 0x2b, + 0x2d, 0x2c, 0x8a, 0x8a, 0x08, 0x0d, 0x8a, 0xb0, 0x00, 0x54, 0x58, 0xb9, + 0x40, 0x00, 0x00, 0x00, 0x1b, 0xb9, 0x00, 0x00, 0x40, 0x00, 0x59, 0xb0, + 0x5b, 0x2b, 0x2d, 0x2c, 0xb0, 0x04, 0x26, 0xb0, 0x04, 0x26, 0x08, 0x0d, + 0xb0, 0x04, 0x26, 0xb0, 0x04, 0x26, 0x08, 0x0d, 0xb0, 0x5b, 0x2b, 0x2d, + 0x41, 0x3c, 0x02, 0x86, 0x00, 0x64, 0x02, 0x85, 0x00, 0x55, 0x00, 0x00, + 0x02, 0x85, 0x00, 0x20, 0x02, 0x85, 0x00, 0x40, 0x02, 0x85, 0x00, 0x60, + 0x02, 0x85, 0x00, 0x80, 0x02, 0x85, 0x00, 0xa0, 0x02, 0x85, 0x00, 0xc0, + 0x02, 0x85, 0x00, 0xe0, 0x02, 0x85, 0x00, 0x08, 0x00, 0x09, 0x02, 0x83, + 0x00, 0x64, 0x02, 0x84, 0x00, 0x55, 0x00, 0xd0, 0x02, 0x84, 0x00, 0x01, + 0x00, 0xd0, 0x02, 0x82, 0x00, 0xe0, 0x02, 0x82, 0x00, 0x02, 0x00, 0x8f, + 0x02, 0x82, 0x00, 0x01, 0x00, 0x9f, 0x02, 0x81, 0x00, 0x01, 0x00, 0x60, + 0x02, 0x81, 0x00, 0x01, 0x02, 0x80, 0x00, 0x64, 0x02, 0x7f, 0x00, 0x55, + 0x00, 0x40, 0x02, 0x7f, 0x00, 0x70, 0x02, 0x7f, 0x00, 0x02, 0x00, 0x00, + 0x02, 0x7f, 0x00, 0x30, 0x02, 0x7f, 0x00, 0x60, 0x02, 0x7f, 0x00, 0x03, + 0x02, 0x7d, 0xb2, 0x64, 0x41, 0x55, 0xb8, 0x02, 0x7e, 0xb2, 0x41, 0xff, + 0x1f, 0x41, 0x56, 0x02, 0x7b, 0x00, 0x64, 0x02, 0x7c, 0x00, 0x55, 0x00, + 0x00, 0x02, 0x7c, 0x00, 0x30, 0x02, 0x7c, 0x00, 0x60, 0x02, 0x7c, 0x00, + 0x03, 0x00, 0x70, 0x02, 0x7c, 0x00, 0xa0, 0x02, 0x7c, 0x00, 0xd0, 0x02, + 0x7c, 0x00, 0x03, 0x00, 0x2f, 0x02, 0x7c, 0x00, 0x5f, 0x02, 0x7c, 0x00, + 0x02, 0x00, 0xcf, 0x02, 0x7c, 0x00, 0xff, 0x02, 0x7c, 0x00, 0x02, 0x00, + 0x00, 0x02, 0x7c, 0x00, 0x30, 0x02, 0x7c, 0x00, 0x60, 0x02, 0x7c, 0x00, + 0x03, 0x02, 0x79, 0x00, 0x64, 0x02, 0x7a, 0x00, 0x55, 0x00, 0x30, 0x02, + 0x7a, 0x00, 0x70, 0x02, 0x7a, 0x00, 0x02, 0x00, 0x70, 0x02, 0x7a, 0x00, + 0xb0, 0x02, 0x7a, 0x00, 0xf0, 0x02, 0x7a, 0x00, 0x03, 0x00, 0x4f, 0x02, + 0x7a, 0x00, 0xcf, 0x02, 0x7a, 0x00, 0x02, 0x00, 0xdf, 0x02, 0x78, 0x00, + 0x01, 0x00, 0x80, 0x02, 0x78, 0x00, 0x01, 0x00, 0x5f, 0x02, 0x78, 0x00, + 0x01, 0x00, 0x00, 0x02, 0x78, 0x00, 0x01, 0x02, 0x76, 0x00, 0x64, 0x02, + 0x77, 0x00, 0x55, 0x00, 0x00, 0x02, 0x77, 0x00, 0x01, 0x00, 0x30, 0x02, + 0x77, 0x00, 0xc0, 0x02, 0x77, 0x00, 0x02, 0x00, 0x00, 0x02, 0x77, 0x00, + 0x10, 0x02, 0x77, 0x00, 0xa0, 0x02, 0x77, 0x40, 0x77, 0x03, 0x72, 0x01, + 0x41, 0x1f, 0x6f, 0x03, 0x2f, 0x1f, 0x6e, 0x02, 0x41, 0x1f, 0x69, 0x2d, + 0x68, 0x55, 0x67, 0x2d, 0x66, 0x55, 0x65, 0x2d, 0x64, 0x55, 0x63, 0x2d, + 0x62, 0x55, 0x61, 0x32, 0x60, 0x55, 0x1f, 0x60, 0x2f, 0x60, 0x02, 0x5f, + 0x32, 0x5e, 0x55, 0x8f, 0x5a, 0x01, 0x50, 0x5a, 0x01, 0xef, 0x5a, 0x01, + 0x10, 0x5a, 0x30, 0x5a, 0x60, 0x5a, 0x03, 0x56, 0x2d, 0x55, 0x55, 0xc0, + 0x55, 0x01, 0x80, 0x55, 0xd0, 0x55, 0x02, 0x54, 0x2d, 0x53, 0x55, 0xcf, + 0x53, 0x01, 0xb0, 0x53, 0x01, 0x8f, 0x53, 0x01, 0x10, 0x53, 0x70, 0x53, + 0x02, 0x8f, 0x53, 0x01, 0x60, 0x53, 0x70, 0x53, 0x02, 0x52, 0x2d, 0x51, + 0x55, 0x50, 0x2d, 0x4f, 0x55, 0x60, 0x4f, 0x01, 0x1f, 0x4f, 0x01, 0x44, + 0x2d, 0x43, 0x55, 0x42, 0x2d, 0x41, 0x55, 0x40, 0xb8, 0x02, 0x6e, 0xb2, + 0x09, 0x0f, 0x46, 0xb9, 0x02, 0x6c, 0x02, 0x6b, 0xb2, 0x32, 0x1f, 0x40, + 0xb8, 0x02, 0x6b, 0xb3, 0x09, 0x0f, 0x46, 0xc0, 0xbb, 0x02, 0x73, 0x00, + 0x01, 0x00, 0x40, 0x02, 0x71, 0xb3, 0x31, 0x37, 0x46, 0x40, 0xb8, 0x02, + 0x71, 0xb2, 0x1c, 0x21, 0x46, 0xb8, 0x02, 0x4b, 0xb2, 0x20, 0x23, 0x1f, + 0xb8, 0x02, 0x4a, 0xb2, 0x20, 0x23, 0x1f, 0xb8, 0x02, 0x49, 0xb2, 0x20, + 0x23, 0x1f, 0xb8, 0x02, 0x48, 0xb2, 0x1f, 0x26, 0x1f, 0xb8, 0x02, 0x47, + 0xb2, 0x1f, 0x26, 0x1f, 0xb8, 0x02, 0x46, 0xb2, 0x1f, 0x26, 0x1f, 0xb8, + 0x02, 0x45, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x44, 0xb2, 0x1e, 0x29, + 0x1f, 0xb8, 0x02, 0x43, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x42, 0xb2, + 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x41, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, + 0x40, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x3f, 0xb2, 0x1e, 0x29, 0x1f, + 0xb8, 0x02, 0x3e, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x3d, 0xb2, 0x1e, + 0x29, 0x1f, 0xb8, 0x02, 0x3c, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x3b, + 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x3a, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, + 0x02, 0x39, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x38, 0xb2, 0x1e, 0x29, + 0x1f, 0xb8, 0x02, 0x37, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x36, 0xb2, + 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x35, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, + 0x34, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x33, 0xb2, 0x1e, 0x29, 0x1f, + 0xb8, 0x02, 0x32, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x31, 0xb2, 0x1e, + 0x29, 0x1f, 0xb8, 0x02, 0x30, 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x2f, + 0xb2, 0x1e, 0x29, 0x1f, 0xb8, 0x02, 0x2e, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, + 0x02, 0x2d, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x2c, 0xb2, 0x1d, 0x31, + 0x1f, 0xb8, 0x02, 0x2b, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x2a, 0xb2, + 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x29, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, + 0x28, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x27, 0xb2, 0x1d, 0x31, 0x1f, + 0xb8, 0x02, 0x26, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x25, 0xb2, 0x1d, + 0x31, 0x1f, 0xb8, 0x02, 0x24, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x23, + 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x22, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, + 0x02, 0x21, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x20, 0xb2, 0x1d, 0x31, + 0x1f, 0xb8, 0x02, 0x1f, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x1e, 0xb2, + 0x1d, 0x31, 0x1f, 0xb8, 0x02, 0x1d, 0xb2, 0x1d, 0x31, 0x1f, 0xb8, 0x02, + 0x1c, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x1b, 0xb2, 0x1c, 0x35, 0x1f, + 0xb8, 0x02, 0x1a, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x19, 0xb2, 0x1c, + 0x35, 0x1f, 0xb8, 0x02, 0x18, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x17, + 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x16, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, + 0x02, 0x15, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x14, 0xb2, 0x1c, 0x35, + 0x1f, 0xb8, 0x02, 0x13, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x12, 0xb2, + 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x11, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, + 0x10, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x0f, 0xb2, 0x1c, 0x35, 0x1f, + 0xb8, 0x02, 0x0e, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x0d, 0xb2, 0x1c, + 0x35, 0x1f, 0xb8, 0x02, 0x0c, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x0b, + 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x0a, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, + 0x02, 0x09, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x08, 0xb2, 0x1c, 0x35, + 0x1f, 0xb8, 0x02, 0x07, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x06, 0xb2, + 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x05, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, + 0x04, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x03, 0xb2, 0x1c, 0x35, 0x1f, + 0xb8, 0x02, 0x02, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x02, 0x01, 0xb2, 0x1c, + 0x35, 0x1f, 0xb8, 0x02, 0x00, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xff, + 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xfe, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, + 0x01, 0xfd, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xfc, 0xb2, 0x1c, 0x35, + 0x1f, 0xb8, 0x01, 0xfb, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xfa, 0xb2, + 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xf9, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, + 0xf8, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xf7, 0xb2, 0x1c, 0x35, 0x1f, + 0xb8, 0x01, 0xf6, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xf5, 0xb2, 0x1c, + 0x35, 0x1f, 0xb8, 0x01, 0xf4, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xf3, + 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xf2, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, + 0x01, 0xf1, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xf0, 0xb2, 0x1c, 0x35, + 0x1f, 0xb8, 0x01, 0xef, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xee, 0xb2, + 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xed, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, + 0xec, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xeb, 0xb2, 0x1c, 0x35, 0x1f, + 0xb8, 0x01, 0xea, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xe9, 0xb2, 0x1c, + 0x35, 0x1f, 0xb8, 0x01, 0xe8, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xe7, + 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xe6, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, + 0x01, 0xe5, 0xb2, 0x1c, 0x35, 0x1f, 0xb8, 0x01, 0xe4, 0xb2, 0x1c, 0x35, + 0x1f, 0xb8, 0x01, 0xe3, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xe2, 0xb2, + 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xe1, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, + 0xe0, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xdf, 0xb2, 0x1b, 0x3b, 0x1f, + 0xb8, 0x01, 0xde, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xdd, 0xb2, 0x1b, + 0x3b, 0x1f, 0xb8, 0x01, 0xdc, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xdb, + 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xda, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, + 0x01, 0xd9, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xd8, 0xb2, 0x1b, 0x3b, + 0x1f, 0xb8, 0x01, 0xd7, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xd6, 0xb2, + 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xd5, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, + 0xd4, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xd3, 0xb2, 0x1b, 0x3b, 0x1f, + 0xb8, 0x01, 0xd2, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xd1, 0xb2, 0x1b, + 0x3b, 0x1f, 0xb8, 0x01, 0xd0, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xcf, + 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xce, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, + 0x01, 0xcd, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xcc, 0xb2, 0x1b, 0x3b, + 0x1f, 0xb8, 0x01, 0xcb, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xca, 0xb2, + 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xc9, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, + 0xc8, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xc7, 0xb2, 0x1b, 0x3b, 0x1f, + 0xb8, 0x01, 0xc6, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xc5, 0xb2, 0x1b, + 0x3b, 0x1f, 0xb8, 0x01, 0xc4, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xc3, + 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xc2, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, + 0x01, 0xc1, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xc0, 0xb2, 0x1b, 0x3b, + 0x1f, 0xb8, 0x01, 0xbf, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xbe, 0xb2, + 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xbd, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, + 0xbc, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xbb, 0xb2, 0x1b, 0x3b, 0x1f, + 0xb8, 0x01, 0xba, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xb9, 0xb2, 0x1b, + 0x3b, 0x1f, 0xb8, 0x01, 0xb8, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xb7, + 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xb6, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, + 0x01, 0xb5, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xb4, 0xb2, 0x1b, 0x3b, + 0x1f, 0xb8, 0x01, 0xb3, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xb2, 0xb2, + 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xb1, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, + 0xb0, 0xb2, 0x1b, 0x3b, 0x1f, 0xb8, 0x01, 0xaf, 0xb2, 0x1a, 0x43, 0x1f, + 0xb8, 0x01, 0xae, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xad, 0xb2, 0x1a, + 0x43, 0x1f, 0xb8, 0x01, 0xac, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xab, + 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xaa, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, + 0x01, 0xa9, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xa8, 0xb2, 0x1a, 0x43, + 0x1f, 0xb8, 0x01, 0xa7, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xa6, 0xb2, + 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xa5, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, + 0xa4, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xa3, 0xb2, 0x1a, 0x43, 0x1f, + 0xb8, 0x01, 0xa2, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0xa1, 0xb2, 0x1a, + 0x43, 0x1f, 0xb8, 0x01, 0xa0, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x9f, + 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x9e, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, + 0x01, 0x9d, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x9c, 0xb2, 0x1a, 0x43, + 0x1f, 0xb8, 0x01, 0x9b, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x9a, 0xb2, + 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x99, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, + 0x98, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x97, 0xb2, 0x1a, 0x43, 0x1f, + 0xb8, 0x01, 0x96, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x95, 0xb2, 0x1a, + 0x43, 0x1f, 0xb8, 0x01, 0x94, 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x93, + 0xb2, 0x1a, 0x43, 0x1f, 0xb8, 0x01, 0x92, 0xb2, 0x19, 0x44, 0x1f, 0xb8, + 0x01, 0x91, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x90, 0xb2, 0x19, 0x44, + 0x1f, 0xb8, 0x01, 0x8f, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x8e, 0xb2, + 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x8d, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, + 0x8c, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x8b, 0xb2, 0x19, 0x44, 0x1f, + 0xb8, 0x01, 0x8a, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x89, 0xb2, 0x19, + 0x44, 0x1f, 0xb8, 0x01, 0x88, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x87, + 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x86, 0xb2, 0x19, 0x44, 0x1f, 0xb8, + 0x01, 0x85, 0xb2, 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x84, 0xb2, 0x19, 0x44, + 0x1f, 0xb8, 0x01, 0x83, 0xb2, 0x19, 0x39, 0x1f, 0xb8, 0x01, 0x82, 0xb2, + 0x19, 0x44, 0x1f, 0xb8, 0x01, 0x81, 0xb2, 0x18, 0x44, 0x1f, 0xb8, 0x01, + 0x80, 0xb2, 0x18, 0x44, 0x1f, 0xb8, 0x01, 0x7f, 0xb2, 0x18, 0x44, 0x1f, + 0xb8, 0x01, 0x7e, 0xb2, 0x18, 0x44, 0x1f, 0xb8, 0x01, 0x7d, 0xb2, 0x18, + 0x44, 0x1f, 0xb8, 0x01, 0x7c, 0xb2, 0x18, 0x44, 0x1f, 0xb8, 0x01, 0x7b, + 0xb2, 0x18, 0x44, 0x1f, 0xb8, 0x01, 0x7a, 0xb2, 0x18, 0x44, 0x1f, 0xb8, + 0x01, 0x79, 0xb2, 0x18, 0x44, 0x1f, 0xb8, 0x01, 0x78, 0xb2, 0x18, 0x44, + 0x1f, 0xb8, 0x01, 0x77, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x76, 0xb2, + 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x75, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, + 0x74, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x73, 0xb2, 0x17, 0x4c, 0x1f, + 0xb8, 0x01, 0x72, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x71, 0xb2, 0x17, + 0x4c, 0x1f, 0xb8, 0x01, 0x70, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x6f, + 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x6e, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, + 0x01, 0x6d, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x6c, 0xb2, 0x17, 0x4c, + 0x1f, 0xb8, 0x01, 0x6b, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x6a, 0xb2, + 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x69, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, + 0x68, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x67, 0xb2, 0x17, 0x4c, 0x1f, + 0xb8, 0x01, 0x66, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x65, 0xb2, 0x17, + 0x4c, 0x1f, 0xb8, 0x01, 0x64, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x63, + 0xb2, 0x17, 0x4c, 0x1f, 0xb8, 0x01, 0x62, 0xb2, 0x17, 0x4c, 0x1f, 0xb8, + 0x01, 0x61, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x60, 0xb2, 0x16, 0x5a, + 0x1f, 0xb8, 0x01, 0x5f, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x5e, 0xb2, + 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x5d, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, + 0x5c, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x5b, 0xb2, 0x16, 0x5a, 0x1f, + 0xb8, 0x01, 0x5a, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x59, 0xb2, 0x16, + 0x5a, 0x1f, 0xb8, 0x01, 0x58, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x57, + 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x56, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, + 0x01, 0x55, 0xb2, 0x16, 0x5a, 0x1f, 0xb8, 0x01, 0x54, 0xb2, 0x15, 0x63, + 0x1f, 0xb8, 0x01, 0x53, 0xb2, 0x15, 0x63, 0x1f, 0xb8, 0x01, 0x52, 0xb2, + 0x15, 0x63, 0x1f, 0xb8, 0x01, 0x51, 0xb2, 0x15, 0x63, 0x1f, 0xb8, 0x01, + 0x50, 0xb2, 0x14, 0x23, 0x1f, 0xb8, 0x01, 0x4f, 0xb2, 0x14, 0x23, 0x1f, + 0xb8, 0x01, 0x4e, 0xb2, 0x14, 0x23, 0x1f, 0xb8, 0x01, 0x4d, 0xb2, 0x13, + 0x25, 0x1f, 0xb8, 0x01, 0x4c, 0xb2, 0x12, 0x2b, 0x1f, 0xb8, 0x01, 0x4b, + 0xb2, 0x12, 0x2b, 0x1f, 0xb8, 0x01, 0x4a, 0xb2, 0x12, 0x2b, 0x1f, 0xb8, + 0x01, 0x49, 0xb2, 0x12, 0x2b, 0x1f, 0xb8, 0x01, 0x48, 0xb2, 0x12, 0x2b, + 0x1f, 0xb8, 0x01, 0x47, 0xb2, 0x12, 0x2b, 0x1f, 0xb8, 0x01, 0x46, 0xb2, + 0x12, 0x2b, 0x1f, 0xb8, 0x01, 0x45, 0xb2, 0x12, 0x2b, 0x1f, 0xb8, 0x01, + 0x44, 0xb2, 0x12, 0x2b, 0x1f, 0xb8, 0x01, 0x43, 0xb2, 0x11, 0x31, 0x1f, + 0xb8, 0x01, 0x42, 0xb2, 0x11, 0x31, 0x1f, 0xb8, 0x01, 0x41, 0xb2, 0x11, + 0x31, 0x1f, 0xb8, 0x01, 0x40, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x3f, + 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x3e, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, + 0x01, 0x3d, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x3c, 0xb2, 0x10, 0x3c, + 0x1f, 0xb8, 0x01, 0x3b, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x3a, 0xb2, + 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x39, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, + 0x38, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x37, 0xb2, 0x10, 0x3c, 0x1f, + 0xb8, 0x01, 0x36, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x35, 0xb2, 0x10, + 0x3c, 0x1f, 0xb8, 0x01, 0x34, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x33, + 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x32, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, + 0x01, 0x31, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x30, 0xb2, 0x10, 0x3c, + 0x1f, 0xb8, 0x01, 0x2f, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x2e, 0xb2, + 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x2d, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, + 0x2c, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x2b, 0xb2, 0x10, 0x3c, 0x1f, + 0xb8, 0x01, 0x2a, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x29, 0xb2, 0x10, + 0x3c, 0x1f, 0xb8, 0x01, 0x28, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x27, + 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x26, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, + 0x01, 0x25, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x24, 0xb2, 0x10, 0x3c, + 0x1f, 0xb8, 0x01, 0x23, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x22, 0xb2, + 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x21, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, + 0x20, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x1f, 0xb2, 0x10, 0x3c, 0x1f, + 0xb8, 0x01, 0x1e, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x1d, 0xb2, 0x10, + 0x3c, 0x1f, 0xb8, 0x01, 0x1c, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x1b, + 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x1a, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, + 0x01, 0x19, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x18, 0xb2, 0x10, 0x3c, + 0x1f, 0xb8, 0x01, 0x17, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x16, 0xb2, + 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x15, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, + 0x14, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x13, 0xb2, 0x10, 0x3c, 0x1f, + 0xb8, 0x01, 0x12, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x11, 0xb2, 0x10, + 0x3c, 0x1f, 0xb8, 0x01, 0x10, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x0f, + 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x0e, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, + 0x01, 0x0d, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x0c, 0xb2, 0x10, 0x3c, + 0x1f, 0xb8, 0x01, 0x0b, 0xb2, 0x10, 0x3c, 0x1f, 0xb8, 0x01, 0x0a, 0xb2, + 0x0f, 0x46, 0x1f, 0xb8, 0x01, 0x09, 0xb2, 0x0f, 0x46, 0x1f, 0xb8, 0x01, + 0x08, 0xb2, 0x0f, 0x46, 0x1f, 0xb8, 0x01, 0x07, 0xb2, 0x0f, 0x46, 0x1f, + 0xb8, 0x01, 0x06, 0xb2, 0x0f, 0x46, 0x1f, 0xb8, 0x01, 0x05, 0xb2, 0x0f, + 0x46, 0x1f, 0xb8, 0x01, 0x04, 0xb2, 0x0f, 0x46, 0x1f, 0xb8, 0x01, 0x03, + 0xb2, 0x0f, 0x46, 0x1f, 0xb8, 0x01, 0x02, 0xb2, 0x0f, 0x46, 0x1f, 0xb8, + 0x01, 0x01, 0xb2, 0x0f, 0x46, 0x1f, 0xb8, 0x01, 0x00, 0x40, 0xff, 0x0f, + 0x46, 0x1f, 0xff, 0x0f, 0x46, 0x1f, 0xfe, 0x0f, 0x46, 0x1f, 0xfd, 0x0f, + 0x46, 0x1f, 0xfc, 0x0f, 0x46, 0x1f, 0xfb, 0x0f, 0x46, 0x1f, 0xfa, 0x0f, + 0x46, 0x1f, 0xf9, 0x0f, 0x46, 0x1f, 0xf8, 0x0f, 0x46, 0x1f, 0xf7, 0x0f, + 0x46, 0x1f, 0xf6, 0x0f, 0x46, 0x1f, 0xf5, 0x0f, 0x46, 0x1f, 0xf4, 0x0f, + 0x46, 0x1f, 0xf3, 0x0f, 0x46, 0x1f, 0xf2, 0x0f, 0x46, 0x1f, 0xf1, 0x0f, + 0x46, 0x1f, 0xf0, 0x0f, 0x46, 0x1f, 0xef, 0x0f, 0x46, 0x1f, 0xee, 0x0f, + 0x46, 0x1f, 0xed, 0x0f, 0x46, 0x1f, 0xec, 0x0f, 0x46, 0x1f, 0xeb, 0x0f, + 0x46, 0x1f, 0xea, 0x0f, 0x46, 0x1f, 0xe9, 0x0f, 0x46, 0x1f, 0xe8, 0x0f, + 0x46, 0x1f, 0xe7, 0x0f, 0x46, 0x1f, 0xe6, 0x0f, 0x46, 0x1f, 0xe5, 0x0f, + 0x46, 0x1f, 0xe4, 0x0f, 0x46, 0x1f, 0xe3, 0x0f, 0x46, 0x1f, 0xe2, 0x0f, + 0x46, 0x1f, 0xe1, 0x0f, 0x46, 0x1f, 0xe0, 0x0f, 0x46, 0x1f, 0xdf, 0x0f, + 0x46, 0x1f, 0xde, 0x0f, 0x46, 0x1f, 0xdd, 0x0f, 0x46, 0x1f, 0xdc, 0x0f, + 0x46, 0x1f, 0xdb, 0x0f, 0x46, 0x1f, 0xda, 0x0f, 0x46, 0x1f, 0xd9, 0x0f, + 0x46, 0x1f, 0xd8, 0x0f, 0x46, 0x1f, 0xd7, 0x0f, 0x46, 0x1f, 0xd6, 0x0f, + 0x46, 0x1f, 0xd5, 0x0f, 0x46, 0x1f, 0xd4, 0x0f, 0x46, 0x1f, 0xd3, 0x0f, + 0x46, 0x1f, 0xd2, 0x0f, 0x46, 0x1f, 0xd1, 0x0f, 0x46, 0x1f, 0xd0, 0x0e, + 0x4f, 0x1f, 0xcf, 0x0e, 0x4f, 0x1f, 0xce, 0x0e, 0x4f, 0x1f, 0xcd, 0x0e, + 0x4f, 0x1f, 0xcc, 0x0e, 0x4f, 0x1f, 0xcb, 0x0e, 0x4f, 0x1f, 0xca, 0x0e, + 0x4f, 0x1f, 0xc9, 0x0e, 0x4f, 0x1f, 0xc8, 0x0e, 0x4f, 0x1f, 0xc7, 0x0e, + 0x4f, 0x1f, 0xc6, 0x0e, 0x4f, 0x1f, 0xc5, 0x0e, 0x4f, 0x1f, 0xc4, 0x0e, + 0x4f, 0x1f, 0xc3, 0x0e, 0x4f, 0x1f, 0xc2, 0x0e, 0x4f, 0x1f, 0xc1, 0x0e, + 0x4f, 0x1f, 0x40, 0xe3, 0xc0, 0x0e, 0x41, 0x1f, 0xbf, 0x0e, 0x41, 0x1f, + 0xbe, 0x0e, 0x4f, 0x1f, 0xbd, 0x0e, 0x4f, 0x1f, 0xbc, 0x0e, 0x4f, 0x1f, + 0xbb, 0x0e, 0x4f, 0x1f, 0xba, 0x0e, 0x4f, 0x1f, 0xb9, 0x0e, 0x4f, 0x1f, + 0xb8, 0x0e, 0x4f, 0x1f, 0xb7, 0x0e, 0x4f, 0x1f, 0xb6, 0x0e, 0x4f, 0x1f, + 0xb5, 0x0e, 0x4f, 0x1f, 0xb4, 0x0e, 0x4f, 0x1f, 0xb3, 0x0e, 0x4f, 0x1f, + 0xb2, 0x0e, 0x4f, 0x1f, 0xb1, 0x0d, 0x5c, 0x1f, 0xb0, 0x0d, 0x5c, 0x1f, + 0xaf, 0x0d, 0x5c, 0x1f, 0xae, 0x0d, 0x5c, 0x1f, 0xad, 0x0d, 0x5c, 0x1f, + 0xac, 0x0d, 0x5c, 0x1f, 0xab, 0x0d, 0x5c, 0x1f, 0xaa, 0x0d, 0x5c, 0x1f, + 0xa9, 0x0d, 0x5c, 0x1f, 0xa8, 0x0d, 0x5c, 0x1f, 0xa7, 0x0d, 0x5c, 0x1f, + 0xa6, 0x0d, 0x5c, 0x1f, 0xa5, 0x0d, 0x5c, 0x1f, 0xa4, 0x0d, 0x5c, 0x1f, + 0xa3, 0x0d, 0x5c, 0x1f, 0xa2, 0x0d, 0x5c, 0x1f, 0xa1, 0x0d, 0x5c, 0x1f, + 0xa0, 0x0d, 0x5c, 0x1f, 0x9f, 0x0d, 0x5c, 0x1f, 0x9e, 0x0d, 0x5c, 0x1f, + 0x9d, 0x0d, 0x5c, 0x1f, 0x9c, 0x0c, 0x6a, 0x1f, 0x9b, 0x0c, 0x6a, 0x1f, + 0x9a, 0x0c, 0x6a, 0x1f, 0x99, 0x0c, 0x6a, 0x1f, 0x98, 0x0c, 0x6a, 0x1f, + 0x97, 0x0c, 0x6a, 0x1f, 0x96, 0x0c, 0x6a, 0x1f, 0x95, 0x0c, 0x6a, 0x1f, + 0x94, 0x0c, 0x6a, 0x1f, 0x93, 0x0c, 0x6a, 0x1f, 0x92, 0x0c, 0x6a, 0x1f, + 0x91, 0x0c, 0x6a, 0x1f, 0x90, 0x0c, 0x6a, 0x1f, 0x8f, 0x0b, 0x2f, 0x1f, + 0x8e, 0x0b, 0x79, 0x1f, 0x8d, 0x0b, 0x79, 0x1f, 0x8c, 0x0b, 0x67, 0x1f, + 0x00, 0x1d, 0x01, 0x0f, 0x1d, 0x1f, 0x1d, 0x8f, 0x1d, 0x03, 0xb0, 0x1c, + 0xc0, 0x1c, 0x02, 0xb8, 0xff, 0xc0, 0x40, 0x5a, 0x1c, 0x2d, 0x30, 0x46, + 0x1f, 0x1c, 0x2f, 0x1c, 0x02, 0x0f, 0x1c, 0x1f, 0x1c, 0x8f, 0x1c, 0x9f, + 0x1c, 0xaf, 0x1c, 0x05, 0x7f, 0x1b, 0x01, 0xdf, 0x1b, 0xef, 0x1b, 0x02, + 0x40, 0x1b, 0x1b, 0x1f, 0x46, 0x40, 0x1b, 0x12, 0x16, 0x46, 0x40, 0x1b, + 0x0a, 0x0d, 0x46, 0x40, 0x1a, 0x31, 0x34, 0x46, 0x40, 0x1a, 0x27, 0x2a, + 0x46, 0x40, 0x1a, 0x1b, 0x21, 0x46, 0x40, 0x1a, 0x12, 0x17, 0x46, 0x40, + 0x1a, 0x0a, 0x0e, 0x46, 0x4f, 0x19, 0x5f, 0x19, 0x02, 0x50, 0x18, 0x60, + 0x18, 0x02, 0x00, 0x18, 0xb0, 0x18, 0xc0, 0x18, 0x03, 0x60, 0x18, 0x70, + 0x18, 0x02, 0xb8, 0xff, 0xc0, 0xb6, 0x18, 0x3a, 0x42, 0x46, 0x30, 0x17, + 0x01, 0xb8, 0xff, 0xc0, 0x40, 0x13, 0x17, 0x12, 0x16, 0x46, 0xb0, 0x16, + 0xc0, 0x16, 0x02, 0x00, 0x12, 0x10, 0x12, 0x70, 0x12, 0x80, 0x12, 0x04, + 0x0a, 0xb8, 0xff, 0xc0, 0xb3, 0x12, 0x1e, 0x21, 0x46, 0xb8, 0xff, 0xc0, + 0x40, 0x11, 0x12, 0x17, 0x1a, 0x46, 0x20, 0x10, 0x30, 0x10, 0x40, 0x10, + 0x03, 0x00, 0x10, 0x90, 0x10, 0x02, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x10, + 0x32, 0x35, 0x46, 0xb8, 0xff, 0xc0, 0x40, 0x3e, 0x10, 0x29, 0x2d, 0x46, + 0x0f, 0x0f, 0x1f, 0x0f, 0x02, 0x4f, 0x0f, 0x5f, 0x0f, 0x6f, 0x0f, 0xff, + 0x0f, 0x04, 0x0f, 0x0f, 0x9f, 0x0f, 0xaf, 0x0f, 0xbf, 0x0f, 0x04, 0x0f, + 0x40, 0x0f, 0x36, 0x3a, 0x46, 0x0f, 0x0e, 0x1f, 0x0e, 0x02, 0x41, 0x0f, + 0x0e, 0x1f, 0x0e, 0xbf, 0x0e, 0xcf, 0x0e, 0xdf, 0x0e, 0x05, 0x3f, 0x0e, + 0x4f, 0x0e, 0x5f, 0x0e, 0x03, 0x8f, 0x0e, 0x9f, 0x0e, 0x02, 0xb8, 0x01, + 0x00, 0xb3, 0x16, 0x01, 0x05, 0x01, 0xb8, 0x01, 0x90, 0xb1, 0x54, 0x53, + 0x2b, 0x2b, 0x4b, 0xb8, 0x07, 0xff, 0x52, 0x4b, 0xb0, 0x08, 0x50, 0x5b, + 0xb0, 0x01, 0x88, 0xb0, 0x25, 0x53, 0xb0, 0x01, 0x88, 0xb0, 0x40, 0x51, + 0x5a, 0xb0, 0x06, 0x88, 0xb0, 0x00, 0x55, 0x5a, 0x5b, 0x58, 0xb1, 0x01, + 0x01, 0x8e, 0x59, 0xb1, 0x01, 0x02, 0x43, 0x54, 0xb0, 0x11, 0x4b, 0x51, + 0x5a, 0x58, 0xb1, 0x01, 0x01, 0x8e, 0x59, 0x85, 0x8d, 0x8d, 0x00, 0x42, + 0x1d, 0x4b, 0xb0, 0x1d, 0x53, 0x58, 0xb0, 0xa0, 0x1d, 0x59, 0x4b, 0xb0, + 0x80, 0x53, 0x58, 0xb0, 0x40, 0x1d, 0x59, 0x4b, 0xb0, 0xff, 0x53, 0x58, + 0xb0, 0x00, 0x1d, 0xb1, 0x16, 0x00, 0x42, 0x59, 0x73, 0x74, 0x75, 0x5e, + 0x73, 0x2b, 0x5e, 0x73, 0x74, 0x75, 0x2b, 0x2b, 0x5e, 0x73, 0x74, 0x2b, + 0x2b, 0x5e, 0x73, 0x01, 0x73, 0x2b, 0x74, 0x2b, 0x73, 0x74, 0x75, 0x73, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x74, 0x75, 0x73, 0x74, + 0x2b, 0x74, 0x73, 0x74, 0x00, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x01, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x00, 0x2b, + 0x2b, 0x73, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x73, 0x73, 0x2b, 0x2b, 0x73, + 0x73, 0x74, 0x74, 0x74, 0x74, 0x2b, 0x73, 0x74, 0x2b, 0x73, 0x73, 0x74, + 0x74, 0x2b, 0x73, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x73, + 0x74, 0x75, 0x2b, 0x73, 0x73, 0x73, 0x73, 0x73, 0x74, 0x75, 0x2b, 0x73, + 0x73, 0x74, 0x74, 0x75, 0x2b, 0x2b, 0x2b, 0x73, 0x74, 0x2b, 0x73, 0x73, + 0x73, 0x73, 0x73, 0x2b, 0x5e, 0x73, 0x2b, 0x18, 0x00, 0x00, 0x07, 0x6c, + 0x03, 0x37, 0xfe, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x7e, 0x00, 0x91, + 0x00, 0xa9, 0x00, 0xbf, 0x00, 0xe1, 0x01, 0x13, 0x01, 0x38, 0x01, 0x69, + 0x01, 0x87, 0x00, 0x87, 0x00, 0x94, 0x00, 0xbb, 0x00, 0xc2, 0x00, 0xc6, + 0x00, 0xd9, 0x00, 0xe3, 0x00, 0xff, 0x01, 0x14, 0x01, 0x48, 0x01, 0x60, + 0x01, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x1b, 0x00, 0x16, 0x00, 0x00, + 0xff, 0xea, 0xfe, 0x6a, 0xfe, 0x85, 0xff, 0x29, 0x05, 0xf2, 0xfe, 0xe5, + 0xfe, 0x5c, 0x06, 0x17, 0xff, 0x06, 0x05, 0xd7, 0x05, 0xe5, 0x03, 0xf8, + 0x00, 0x16, 0x00, 0x00, 0xff, 0xea, 0x05, 0x85, 0x00, 0x13, 0xfe, 0x73, + 0xff, 0xe9, 0xfe, 0x6a, 0xfe, 0xd9, 0xff, 0x29, 0x04, 0xcf, 0xfe, 0x5c, + 0xff, 0x00, 0x06, 0x66, 0xff, 0x29, 0xff, 0xf0, 0x02, 0x39, 0x00, 0x11, + 0x05, 0x1b, 0x00, 0x16, 0x00, 0x00, 0xff, 0xea, 0x04, 0x7b, 0x00, 0x16, + 0xff, 0x29, 0xff, 0xf0, 0x05, 0x6a, 0x05, 0x85, 0x05, 0xb2, 0x05, 0xd3, + 0x03, 0x4c, 0xfe, 0x15, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x5e, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x48, 0x00, 0x83, 0x00, 0x85, + 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00, 0x89, 0x00, 0x8d, 0x00, 0x78, + 0x00, 0x7a, 0x00, 0x7d, 0x00, 0x86, 0x00, 0x7d, 0x00, 0x85, 0x00, 0x91, + 0x00, 0x92, 0x00, 0x95, 0x00, 0x97, 0x00, 0x98, 0x00, 0x9b, 0x00, 0xa3, + 0x00, 0xa4, 0x00, 0x8e, 0x00, 0x9a, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x8e, + 0x00, 0x91, 0x00, 0x9c, 0x00, 0x8e, 0x00, 0x99, 0x00, 0x9a, 0x00, 0x9b, + 0x00, 0x88, 0x00, 0x97, 0x00, 0xa6, 0x00, 0xa8, 0x00, 0xa9, 0x00, 0xaa, + 0x00, 0xac, 0x00, 0xad, 0x00, 0xae, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0xba, + 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xa0, + 0x00, 0xac, 0x00, 0xae, 0x00, 0xa8, 0x00, 0xab, 0x00, 0x9f, 0x00, 0xa0, + 0x00, 0xa6, 0x00, 0xa8, 0x00, 0xaa, 0x00, 0xac, 0x00, 0xae, 0x00, 0xaf, + 0x00, 0xb0, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb4, 0x00, 0xb6, 0x00, 0xb7, + 0x00, 0xbb, 0x00, 0xbc, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, + 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc9, 0x00, 0xca, + 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xba, + 0x00, 0xbc, 0x00, 0xc1, 0x00, 0xc3, 0x00, 0xc5, 0x00, 0xc6, 0x00, 0xc7, + 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, + 0x00, 0xb4, 0x00, 0xb6, 0x00, 0xb8, 0x00, 0xb9, 0x00, 0xba, 0x00, 0xbb, + 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbe, 0x00, 0xbf, 0x00, 0xc0, 0x00, 0xc1, + 0x00, 0xc2, 0x00, 0xc3, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc7, 0x00, 0xc8, + 0x00, 0xc9, 0x00, 0xca, 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, + 0x00, 0xcf, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd6, + 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdc, + 0x00, 0xdd, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, 0x00, 0xe3, + 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe8, 0x00, 0xea, 0x00, 0xee, 0x00, 0xf0, + 0x00, 0xf1, 0x00, 0xf3, 0x00, 0xf4, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd4, + 0x00, 0xd5, 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xe1, 0x00, 0xe5, + 0x00, 0xe6, 0x00, 0xec, 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd4, + 0x00, 0xd5, 0x00, 0xd6, 0x00, 0xd7, 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, + 0x00, 0xdc, 0x00, 0xdd, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe3, + 0x00, 0xed, 0x01, 0x13, 0x01, 0x12, 0x01, 0x13, 0x01, 0x2b, 0x01, 0x35, + 0x01, 0x2b, 0x01, 0x33, 0x01, 0x37, 0x01, 0x38, 0x01, 0x39, 0x01, 0x3f, + 0x01, 0x40, 0x01, 0x68, 0x01, 0x7d, 0x01, 0x87, 0x01, 0x88, 0x00, 0x7f, + 0x00, 0x85, 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x94, 0x00, 0x9d, 0x00, 0x8f, + 0x00, 0x92, 0x00, 0x94, 0x00, 0x9c, 0x00, 0xa2, 0x00, 0x94, 0x00, 0xa0, + 0x00, 0x92, 0x00, 0xa5, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0xaa, 0x00, 0xa6, + 0x00, 0xa8, 0x00, 0xaa, 0x00, 0xab, 0x00, 0xb2, 0x00, 0xa4, 0x00, 0xb0, + 0x00, 0xaa, 0x00, 0xac, 0x00, 0xae, 0x00, 0xaf, 0x00, 0xb1, 0x00, 0xb2, + 0x00, 0xaf, 0x00, 0xb0, 0x00, 0xb2, 0x00, 0xb3, 0x00, 0xb5, 0x00, 0xb6, + 0x00, 0xbc, 0x00, 0xbd, 0x00, 0xbb, 0x00, 0xc3, 0x00, 0xbf, 0x00, 0xc0, + 0x00, 0xc1, 0x00, 0xb9, 0x00, 0xbc, 0x00, 0xc1, 0x00, 0xc2, 0x00, 0xc3, + 0x00, 0xc7, 0x00, 0xc6, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xca, 0x00, 0xcb, + 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xc4, 0x00, 0xc5, 0x00, 0xc6, + 0x00, 0xcb, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xca, + 0x00, 0xcc, 0x00, 0xcd, 0x00, 0xce, 0x00, 0xcf, 0x00, 0xd1, 0x00, 0xd2, + 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd6, + 0x00, 0xd7, 0x00, 0xd8, 0x00, 0xd9, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0xdd, + 0x00, 0xd0, 0x00, 0xd1, 0x00, 0xd3, 0x00, 0xd5, 0x00, 0xd7, 0x00, 0xd8, + 0x00, 0xd9, 0x00, 0xda, 0x00, 0xdb, 0x00, 0xdd, 0x00, 0xe3, 0x00, 0xe4, + 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xd6, 0x00, 0xd9, + 0x00, 0xdb, 0x00, 0xdf, 0x00, 0xe1, 0x00, 0xe3, 0x00, 0xe7, 0x00, 0xe8, + 0x00, 0xec, 0x00, 0xd9, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe0, 0x00, 0xe1, + 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe6, 0x00, 0xe7, 0x00, 0xe9, + 0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, 0x00, 0xf0, + 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xde, 0x00, 0xdf, 0x00, 0xe1, + 0x00, 0xe2, 0x00, 0xe3, 0x00, 0xe4, 0x00, 0xe5, 0x00, 0xe7, 0x00, 0xe8, + 0x00, 0xe9, 0x00, 0xea, 0x00, 0xeb, 0x00, 0xec, 0x00, 0xed, 0x00, 0xee, + 0x00, 0xef, 0x00, 0xf0, 0x00, 0xf1, 0x00, 0xf4, 0x00, 0xf6, 0x00, 0xf7, + 0x00, 0xfa, 0x00, 0xfc, 0x00, 0xfe, 0x01, 0x00, 0x01, 0x02, 0x01, 0x04, + 0x01, 0x05, 0x01, 0x08, 0x00, 0xf3, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xf4, + 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, + 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xff, 0x01, 0x00, + 0x01, 0x02, 0x01, 0x03, 0x01, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x08, + 0x01, 0x09, 0x01, 0x0a, 0x00, 0xf1, 0x00, 0xf2, 0x00, 0xf3, 0x00, 0xf4, + 0x00, 0xf5, 0x00, 0xf6, 0x00, 0xf7, 0x00, 0xf8, 0x00, 0xf9, 0x00, 0xfa, + 0x00, 0xfb, 0x00, 0xfc, 0x00, 0xfd, 0x00, 0xfe, 0x00, 0xff, 0x01, 0x00, + 0x01, 0x02, 0x01, 0x04, 0x01, 0x05, 0x01, 0x06, 0x01, 0x08, 0x01, 0x0e, + 0x01, 0x0f, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x23, + 0x01, 0x0a, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0x12, 0x01, 0x13, 0x01, 0x16, + 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x21, 0x01, 0x25, 0x01, 0x27, 0x01, 0x50, + 0x01, 0x3d, 0x01, 0x31, 0x01, 0x36, 0x01, 0x39, 0x01, 0x49, 0x01, 0x4a, + 0x01, 0x2f, 0x01, 0x35, 0x01, 0x37, 0x01, 0x39, 0x01, 0x3a, 0x01, 0x3e, + 0x01, 0x3f, 0x01, 0x40, 0x01, 0x42, 0x01, 0x43, 0x01, 0x44, 0x01, 0x47, + 0x01, 0x4a, 0x01, 0x4e, 0x01, 0x51, 0x01, 0x52, 0x01, 0x71, 0x01, 0x68, + 0x01, 0x70, 0x01, 0x74, 0x01, 0x75, 0x01, 0x85, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x62, 0x01, 0xcc, 0x02, 0xf8, 0xfd, 0xfe, + 0x07, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x85, + 0x05, 0x93, 0x03, 0x3d, 0x02, 0x4c, 0x00, 0x00, 0xff, 0xf0, 0x00, 0x5c, + 0x00, 0x5c, 0x00, 0x8e, 0xfe, 0x60, 0x00, 0x00, 0x00, 0x07, 0x06, 0x36, + 0x06, 0x0b, 0x00, 0x0a, 0x05, 0xf7, 0x00, 0x0b, 0x05, 0x43, 0x00, 0x10, + 0x05, 0x1b, 0x02, 0xce, 0xff, 0xf6, 0x01, 0xd3, 0x06, 0xdc, 0x00, 0x0b, + 0x06, 0x17, 0x04, 0x15, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfe, + 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x00, 0x02, 0xcc, + 0x00, 0x00, 0x03, 0xb6, 0x00, 0x00, 0x04, 0x4a, 0x00, 0x00, 0x04, 0xf0, + 0x00, 0x00, 0x05, 0x70, 0x00, 0x00, 0x06, 0x6a, 0x00, 0x00, 0x07, 0x0e, + 0x00, 0x00, 0x07, 0x90, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x08, 0xe0, + 0x00, 0x00, 0x09, 0x38, 0x00, 0x00, 0x0a, 0x2a, 0x00, 0x00, 0x0a, 0xc2, + 0x00, 0x00, 0x0b, 0x7c, 0x00, 0x00, 0x0c, 0x28, 0x00, 0x00, 0x0d, 0x3e, + 0x00, 0x00, 0x0e, 0x2c, 0x00, 0x00, 0x0f, 0x58, 0x00, 0x00, 0x0f, 0xc0, + 0x00, 0x00, 0x10, 0x54, 0x00, 0x00, 0x10, 0xd2, 0x00, 0x00, 0x11, 0xc4, + 0x00, 0x00, 0x12, 0x90, 0x00, 0x00, 0x13, 0x1e, 0x00, 0x00, 0x13, 0xb2, + 0x00, 0x00, 0x13, 0xc8, 0x00, 0x00, 0x13, 0xde, 0x00, 0x00, 0x13, 0xf4, + 0x00, 0x00, 0x14, 0x0a, 0x00, 0x00, 0x14, 0x20, 0x00, 0x00, 0x14, 0x36, + 0x00, 0x00, 0x14, 0x4c, 0x00, 0x00, 0x14, 0x62, 0x00, 0x00, 0x14, 0x78, + 0x00, 0x00, 0x15, 0x68, 0x00, 0x00, 0x16, 0x18, 0x00, 0x00, 0x16, 0x2e, + 0x00, 0x00, 0x16, 0x44, 0x00, 0x00, 0x16, 0x5a, 0x00, 0x00, 0x16, 0x70, + 0x00, 0x00, 0x16, 0x86, 0x00, 0x00, 0x17, 0x52, 0x00, 0x00, 0x17, 0x68, + 0x00, 0x00, 0x18, 0x06, 0x00, 0x00, 0x18, 0x16, 0x00, 0x00, 0x18, 0x2c, + 0x00, 0x00, 0x18, 0x42, 0x00, 0x00, 0x18, 0x58, 0x00, 0x00, 0x18, 0x6e, + 0x00, 0x00, 0x18, 0x84, 0x00, 0x00, 0x18, 0x9a, 0x00, 0x00, 0x18, 0xb0, + 0x00, 0x00, 0x18, 0xc6, 0x00, 0x00, 0x19, 0x8e, 0x00, 0x00, 0x19, 0xa4, + 0x00, 0x00, 0x19, 0xba, 0x00, 0x00, 0x19, 0xd0, 0x00, 0x00, 0x19, 0xe6, + 0x00, 0x00, 0x19, 0xfc, 0x00, 0x00, 0x1a, 0x9c, 0x00, 0x00, 0x1a, 0xb2, + 0x00, 0x00, 0x1a, 0xc8, 0x00, 0x00, 0x1a, 0xde, 0x00, 0x00, 0x1a, 0xf4, + 0x00, 0x00, 0x1b, 0x0a, 0x00, 0x00, 0x1b, 0x20, 0x00, 0x00, 0x1b, 0x36, + 0x00, 0x00, 0x1b, 0x4c, 0x00, 0x00, 0x1c, 0x08, 0x00, 0x00, 0x1c, 0x8a, + 0x00, 0x00, 0x1c, 0xa0, 0x00, 0x00, 0x1c, 0xb6, 0x00, 0x00, 0x1c, 0xcc, + 0x00, 0x00, 0x1c, 0xe4, 0x00, 0x00, 0x1c, 0xfa, 0x00, 0x00, 0x1d, 0x9a, + 0x00, 0x00, 0x1d, 0xb2, 0x00, 0x00, 0x1d, 0xc8, 0x00, 0x00, 0x1d, 0xde, + 0x00, 0x00, 0x1d, 0xf4, 0x00, 0x00, 0x1e, 0x0a, 0x00, 0x00, 0x1e, 0x90, + 0x00, 0x00, 0x1e, 0xa6, 0x00, 0x00, 0x1e, 0xbc, 0x00, 0x00, 0x1e, 0xd2, + 0x00, 0x00, 0x1e, 0xe8, 0x00, 0x00, 0x1e, 0xfe, 0x00, 0x00, 0x1f, 0x14, + 0x00, 0x00, 0x1f, 0x2a, 0x00, 0x00, 0x1f, 0x40, 0x00, 0x00, 0x20, 0x68, + 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x21, 0x5c, 0x00, 0x00, 0x21, 0xea, + 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x16, 0x00, 0x00, 0x22, 0x2c, + 0x00, 0x00, 0x22, 0x42, 0x00, 0x00, 0x22, 0x58, 0x00, 0x00, 0x22, 0x6e, + 0x00, 0x00, 0x23, 0x80, 0x00, 0x00, 0x23, 0x96, 0x00, 0x00, 0x23, 0xac, + 0x00, 0x00, 0x23, 0xc2, 0x00, 0x00, 0x24, 0x34, 0x00, 0x00, 0x24, 0x4a, + 0x00, 0x00, 0x24, 0x60, 0x00, 0x00, 0x24, 0x76, 0x00, 0x00, 0x24, 0x8c, + 0x00, 0x00, 0x24, 0xa2, 0x00, 0x00, 0x24, 0xb8, 0x00, 0x00, 0x24, 0xce, + 0x00, 0x00, 0x24, 0xe4, 0x00, 0x00, 0x24, 0xfa, 0x00, 0x00, 0x25, 0xda, + 0x00, 0x00, 0x25, 0xf0, 0x00, 0x00, 0x26, 0x06, 0x00, 0x00, 0x26, 0x1c, + 0x00, 0x00, 0x26, 0x32, 0x00, 0x00, 0x26, 0x48, 0x00, 0x00, 0x26, 0x5e, + 0x00, 0x00, 0x26, 0x74, 0x00, 0x00, 0x26, 0x8a, 0x00, 0x00, 0x26, 0xa0, + 0x00, 0x00, 0x26, 0xb6, 0x00, 0x00, 0x26, 0xcc, 0x00, 0x00, 0x27, 0xec, + 0x00, 0x00, 0x28, 0xb2, 0x00, 0x00, 0x29, 0x94, 0x00, 0x00, 0x2a, 0x70, + 0x00, 0x00, 0x2b, 0x54, 0x00, 0x00, 0x2c, 0x2c, 0x00, 0x00, 0x2e, 0x1e, + 0x00, 0x00, 0x2e, 0xc2, 0x00, 0x00, 0x2f, 0xa2, 0x00, 0x00, 0x30, 0xa8, + 0x00, 0x00, 0x31, 0x46, 0x00, 0x00, 0x31, 0xc0, 0x00, 0x00, 0x32, 0xb6, + 0x00, 0x00, 0x33, 0x5a, 0x00, 0x00, 0x34, 0x12, 0x00, 0x00, 0x34, 0xf2, + 0x00, 0x00, 0x35, 0xd4, 0x00, 0x00, 0x36, 0x92, 0x00, 0x00, 0x37, 0xba, + 0x00, 0x00, 0x38, 0x76, 0x00, 0x00, 0x39, 0x1c, 0x00, 0x00, 0x39, 0xbc, + 0x00, 0x00, 0x3a, 0xb8, 0x00, 0x00, 0x3b, 0xbc, 0x00, 0x00, 0x3c, 0xae, + 0x00, 0x00, 0x3d, 0x44, 0x00, 0x00, 0x3d, 0x5a, 0x00, 0x00, 0x3d, 0x70, + 0x00, 0x00, 0x3d, 0x86, 0x00, 0x00, 0x3d, 0x9c, 0x00, 0x00, 0x3d, 0xb2, + 0x00, 0x00, 0x3d, 0xc8, 0x00, 0x00, 0x3d, 0xde, 0x00, 0x00, 0x3d, 0xf4, + 0x00, 0x00, 0x3e, 0x7a, 0x00, 0x00, 0x3f, 0xaa, 0x00, 0x00, 0x41, 0x00, + 0x00, 0x00, 0x41, 0x16, 0x00, 0x00, 0x41, 0x2c, 0x00, 0x00, 0x41, 0x42, + 0x00, 0x00, 0x41, 0x58, 0x00, 0x00, 0x41, 0x6e, 0x00, 0x00, 0x42, 0x40, + 0x00, 0x00, 0x42, 0x56, 0x00, 0x00, 0x43, 0x74, 0x00, 0x00, 0x44, 0x46, + 0x00, 0x00, 0x44, 0x5c, 0x00, 0x00, 0x44, 0x72, 0x00, 0x00, 0x44, 0x88, + 0x00, 0x00, 0x44, 0x9e, 0x00, 0x00, 0x44, 0xb4, 0x00, 0x00, 0x44, 0xca, + 0x00, 0x00, 0x44, 0xe0, 0x00, 0x00, 0x44, 0xf6, 0x00, 0x00, 0x46, 0x1a, + 0x00, 0x00, 0x46, 0xce, 0x00, 0x00, 0x47, 0x6e, 0x00, 0x00, 0x47, 0x84, + 0x00, 0x00, 0x47, 0x9a, 0x00, 0x00, 0x47, 0xb0, 0x00, 0x00, 0x47, 0xc6, + 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x48, 0xac, 0x00, 0x00, 0x48, 0xc2, + 0x00, 0x00, 0x48, 0xd8, 0x00, 0x00, 0x48, 0xee, 0x00, 0x00, 0x49, 0x04, + 0x00, 0x00, 0x49, 0x1a, 0x00, 0x00, 0x49, 0x30, 0x00, 0x00, 0x49, 0x46, + 0x00, 0x00, 0x4a, 0x4e, 0x00, 0x00, 0x4a, 0xa6, 0x00, 0x00, 0x4b, 0xb2, + 0x00, 0x00, 0x4c, 0x22, 0x00, 0x00, 0x4c, 0x38, 0x00, 0x00, 0x4c, 0x4e, + 0x00, 0x00, 0x4c, 0x5e, 0x00, 0x00, 0x4c, 0xa4, 0x00, 0x00, 0x4c, 0xbc, + 0x00, 0x00, 0x4c, 0xd2, 0x00, 0x00, 0x4d, 0x92, 0x00, 0x00, 0x4d, 0xaa, + 0x00, 0x00, 0x4d, 0xc0, 0x00, 0x00, 0x4d, 0xd6, 0x00, 0x00, 0x4d, 0xec, + 0x00, 0x00, 0x4e, 0x02, 0x00, 0x00, 0x4e, 0x18, 0x00, 0x00, 0x4e, 0xac, + 0x00, 0x00, 0x4e, 0xc2, 0x00, 0x00, 0x4e, 0xd8, 0x00, 0x00, 0x4e, 0xee, + 0x00, 0x00, 0x4f, 0x04, 0x00, 0x00, 0x4f, 0x1a, 0x00, 0x00, 0x4f, 0x30, + 0x00, 0x00, 0x4f, 0x46, 0x00, 0x00, 0x4f, 0x5c, 0x00, 0x00, 0x50, 0x68, + 0x00, 0x00, 0x50, 0x80, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, 0x52, 0x5e, + 0x00, 0x00, 0x52, 0x74, 0x00, 0x00, 0x52, 0x8a, 0x00, 0x00, 0x52, 0xa0, + 0x00, 0x00, 0x52, 0xb6, 0x00, 0x00, 0x52, 0xcc, 0x00, 0x00, 0x52, 0xe2, + 0x00, 0x00, 0x53, 0xec, 0x00, 0x00, 0x54, 0x02, 0x00, 0x00, 0x55, 0x02, + 0x00, 0x00, 0x55, 0x6c, 0x00, 0x00, 0x55, 0x84, 0x00, 0x00, 0x55, 0x9a, + 0x00, 0x00, 0x56, 0x64, 0x00, 0x00, 0x56, 0x7a, 0x00, 0x00, 0x56, 0x90, + 0x00, 0x00, 0x56, 0xa6, 0x00, 0x00, 0x56, 0xbc, 0x00, 0x00, 0x56, 0xd2, + 0x00, 0x00, 0x56, 0xe8, 0x00, 0x00, 0x56, 0xfe, 0x00, 0x00, 0x57, 0x14, + 0x00, 0x00, 0x57, 0x2a, 0x00, 0x00, 0x57, 0xfc, 0x00, 0x00, 0x58, 0x12, + 0x00, 0x00, 0x58, 0x28, 0x00, 0x00, 0x58, 0x3e, 0x00, 0x00, 0x58, 0x54, + 0x00, 0x00, 0x58, 0x6a, 0x00, 0x00, 0x58, 0x80, 0x00, 0x00, 0x58, 0x96, + 0x00, 0x00, 0x58, 0xac, 0x00, 0x00, 0x58, 0xc2, 0x00, 0x00, 0x58, 0xd8, + 0x00, 0x00, 0x58, 0xee, 0x00, 0x00, 0x59, 0x9e, 0x00, 0x00, 0x5a, 0x6c, + 0x00, 0x00, 0x5b, 0x2c, 0x00, 0x00, 0x5b, 0x42, 0x00, 0x00, 0x5b, 0x58, + 0x00, 0x00, 0x5b, 0x6e, 0x00, 0x00, 0x5b, 0x84, 0x00, 0x00, 0x5b, 0x9a, + 0x00, 0x00, 0x5b, 0xb0, 0x00, 0x00, 0x5b, 0xc6, 0x00, 0x00, 0x5c, 0xde, + 0x00, 0x00, 0x5d, 0x50, 0x00, 0x00, 0x5e, 0x36, 0x00, 0x00, 0x5e, 0x4c, + 0x00, 0x00, 0x5e, 0x62, 0x00, 0x00, 0x5e, 0x78, 0x00, 0x00, 0x5e, 0x8e, + 0x00, 0x00, 0x5e, 0xa4, 0x00, 0x00, 0x5e, 0xba, 0x00, 0x00, 0x5e, 0xd0, + 0x00, 0x00, 0x60, 0x12, 0x00, 0x00, 0x60, 0xa6, 0x00, 0x00, 0x61, 0x98, + 0x00, 0x00, 0x62, 0x3c, 0x00, 0x00, 0x62, 0x52, 0x00, 0x00, 0x62, 0xc0, + 0x00, 0x00, 0x63, 0x06, 0x00, 0x00, 0x63, 0x1e, 0x00, 0x00, 0x63, 0x34, + 0x00, 0x00, 0x63, 0xf2, 0x00, 0x00, 0x64, 0x0a, 0x00, 0x00, 0x64, 0x9e, + 0x00, 0x00, 0x64, 0xe4, 0x00, 0x00, 0x64, 0xfa, 0x00, 0x00, 0x65, 0x10, + 0x00, 0x00, 0x65, 0xfc, 0x00, 0x00, 0x66, 0x16, 0x00, 0x00, 0x66, 0xbe, + 0x00, 0x00, 0x66, 0xd4, 0x00, 0x00, 0x66, 0xea, 0x00, 0x00, 0x67, 0x02, + 0x00, 0x00, 0x67, 0x8c, 0x00, 0x00, 0x67, 0xa2, 0x00, 0x00, 0x67, 0xb8, + 0x00, 0x00, 0x67, 0xce, 0x00, 0x00, 0x68, 0xa0, 0x00, 0x00, 0x68, 0xb6, + 0x00, 0x00, 0x68, 0xcc, 0x00, 0x00, 0x68, 0xe2, 0x00, 0x00, 0x6a, 0x3a, + 0x00, 0x00, 0x6b, 0x32, 0x00, 0x00, 0x6b, 0x7e, 0x00, 0x00, 0x6b, 0xd0, + 0x00, 0x00, 0x6c, 0x1c, 0x00, 0x00, 0x6c, 0x6e, 0x00, 0x00, 0x6c, 0xda, + 0x00, 0x00, 0x6d, 0x4e, 0x00, 0x00, 0x6d, 0xb8, 0x00, 0x00, 0x6e, 0x2a, + 0x00, 0x00, 0x6e, 0x74, 0x00, 0x00, 0x6f, 0x04, 0x00, 0x00, 0x6f, 0x90, + 0x00, 0x00, 0x70, 0x3c, 0x00, 0x00, 0x70, 0xe2, 0x00, 0x00, 0x71, 0x1a, + 0x00, 0x00, 0x71, 0x52, 0x00, 0x00, 0x71, 0xc8, 0x00, 0x00, 0x72, 0x3e, + 0x00, 0x00, 0x72, 0xd4, 0x00, 0x00, 0x73, 0x66, 0x00, 0x00, 0x74, 0x32, + 0x00, 0x00, 0x74, 0xa4, 0x00, 0x00, 0x75, 0x20, 0x00, 0x00, 0x75, 0x84, + 0x00, 0x00, 0x75, 0xe4, 0x00, 0x00, 0x76, 0x1a, 0x00, 0x00, 0x76, 0x8a, + 0x00, 0x00, 0x76, 0xc2, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x77, 0x64, + 0x00, 0x00, 0x77, 0xcc, 0x00, 0x00, 0x78, 0x7a, 0x00, 0x00, 0x79, 0x12, + 0x00, 0x00, 0x79, 0x6a, 0x00, 0x00, 0x7a, 0x48, 0x00, 0x00, 0x7a, 0x72, + 0x00, 0x00, 0x7a, 0x84, 0x00, 0x00, 0x7a, 0xf8, 0x00, 0x00, 0x7b, 0x6c, + 0x00, 0x00, 0x7b, 0x7e, 0x00, 0x00, 0x7c, 0x4c, 0x00, 0x00, 0x7d, 0x14, + 0x00, 0x00, 0x7d, 0x26, 0x00, 0x00, 0x7e, 0x1a, 0x00, 0x00, 0x7e, 0x86, + 0x00, 0x00, 0x7e, 0xf0, 0x00, 0x00, 0x7f, 0xa4, 0x00, 0x00, 0x80, 0x58, + 0x00, 0x00, 0x80, 0xc8, 0x00, 0x00, 0x81, 0x82, 0x00, 0x00, 0x81, 0xcc, + 0x00, 0x00, 0x82, 0x16, 0x00, 0x00, 0x82, 0x26, 0x00, 0x00, 0x82, 0x36, + 0x00, 0x00, 0x82, 0x9e, 0x00, 0x00, 0x83, 0x20, 0x00, 0x00, 0x83, 0x30, + 0x00, 0x00, 0x83, 0x40, 0x00, 0x00, 0x83, 0x74, 0x00, 0x00, 0x83, 0xa2, + 0x00, 0x00, 0x83, 0xcc, 0x00, 0x00, 0x83, 0xdc, 0x00, 0x00, 0x84, 0x06, + 0x00, 0x00, 0x84, 0x16, 0x00, 0x00, 0x84, 0x26, 0x00, 0x00, 0x84, 0x74, + 0x00, 0x00, 0x84, 0xca, 0x00, 0x00, 0x84, 0xda, 0x00, 0x00, 0x85, 0x36, + 0x00, 0x00, 0x85, 0x94, 0x00, 0x00, 0x85, 0xa4, 0x00, 0x00, 0x85, 0xb4, + 0x00, 0x00, 0x85, 0xf8, 0x00, 0x00, 0x86, 0x3c, 0x00, 0x00, 0x86, 0x4c, + 0x00, 0x00, 0x86, 0x5c, 0x00, 0x00, 0x87, 0x0c, 0x00, 0x00, 0x87, 0xbe, + 0x00, 0x00, 0x87, 0xce, 0x00, 0x00, 0x87, 0xde, 0x00, 0x00, 0x88, 0x66, + 0x00, 0x00, 0x88, 0xbc, 0x00, 0x00, 0x89, 0x48, 0x00, 0x00, 0x8a, 0x9c, + 0x00, 0x00, 0x8b, 0x28, 0x00, 0x00, 0x8b, 0x38, 0x00, 0x00, 0x8b, 0x48, + 0x00, 0x00, 0x8b, 0x84, 0x00, 0x00, 0x8b, 0xfe, 0x00, 0x00, 0x8c, 0x0e, + 0x00, 0x00, 0x8c, 0x1e, 0x00, 0x00, 0x8c, 0x2e, 0x00, 0x00, 0x8c, 0xe6, + 0x00, 0x00, 0x8c, 0xf6, 0x00, 0x00, 0x8d, 0x06, 0x00, 0x00, 0x8d, 0x66, + 0x00, 0x00, 0x8d, 0x76, 0x00, 0x00, 0x8d, 0x86, 0x00, 0x00, 0x8d, 0xf4, + 0x00, 0x00, 0x8e, 0x04, 0x00, 0x00, 0x8e, 0x4e, 0x00, 0x00, 0x8e, 0x5e, + 0x00, 0x00, 0x8e, 0xce, 0x00, 0x00, 0x8e, 0xde, 0x00, 0x00, 0x8e, 0xee, + 0x00, 0x00, 0x8f, 0xca, 0x00, 0x00, 0x8f, 0xda, 0x00, 0x00, 0x90, 0x7c, + 0x00, 0x00, 0x91, 0x4e, 0x00, 0x00, 0x91, 0x66, 0x00, 0x00, 0x91, 0x7c, + 0x00, 0x00, 0x91, 0x92, 0x00, 0x00, 0x91, 0xa8, 0x00, 0x00, 0x91, 0xbe, + 0x00, 0x00, 0x91, 0xd4, 0x00, 0x00, 0x91, 0xea, 0x00, 0x00, 0x92, 0x00, + 0x00, 0x00, 0x92, 0x16, 0x00, 0x00, 0x92, 0xe8, 0x00, 0x00, 0x93, 0xde, + 0x00, 0x00, 0x94, 0xe4, 0x00, 0x00, 0x95, 0xb4, 0x00, 0x00, 0x96, 0xa2, + 0x00, 0x00, 0x97, 0x92, 0x00, 0x00, 0x98, 0x56, 0x00, 0x00, 0x98, 0xec, + 0x00, 0x00, 0x99, 0x9e, 0x00, 0x00, 0x9a, 0x98, 0x00, 0x00, 0x9b, 0x06, + 0x00, 0x00, 0x9b, 0x7a, 0x00, 0x00, 0x9c, 0x46, 0x00, 0x00, 0x9c, 0xfa, + 0x00, 0x00, 0x9d, 0x74, 0x00, 0x00, 0x9e, 0x92, 0x00, 0x00, 0x9e, 0xa2, + 0x00, 0x00, 0x9f, 0x4a, 0x00, 0x00, 0x9f, 0xf0, 0x00, 0x00, 0xa0, 0xcc, + 0x00, 0x00, 0xa1, 0x8a, 0x00, 0x00, 0xa2, 0x10, 0x00, 0x00, 0xa2, 0xa4, + 0x00, 0x00, 0xa3, 0x82, 0x00, 0x00, 0xa4, 0x62, 0x00, 0x00, 0xa5, 0x6e, + 0x00, 0x00, 0xa6, 0x24, 0x00, 0x00, 0xa7, 0x14, 0x00, 0x00, 0xa7, 0x2a, + 0x00, 0x00, 0xa7, 0x40, 0x00, 0x00, 0xa7, 0x56, 0x00, 0x00, 0xa7, 0x6c, + 0x00, 0x00, 0xa7, 0x82, 0x00, 0x00, 0xa7, 0x98, 0x00, 0x00, 0xa7, 0xae, + 0x00, 0x00, 0xa7, 0xc4, 0x00, 0x00, 0xa7, 0xda, 0x00, 0x00, 0xa7, 0xf0, + 0x00, 0x00, 0xa8, 0x06, 0x00, 0x00, 0xa8, 0x4a, 0x00, 0x00, 0xa8, 0x8a, + 0x00, 0x00, 0xa9, 0x50, 0x00, 0x00, 0xa9, 0x62, 0x00, 0x00, 0xa9, 0x74, + 0x00, 0x00, 0xa9, 0x84, 0x00, 0x00, 0xa9, 0xe2, 0x00, 0x00, 0xaa, 0x4c, + 0x00, 0x00, 0xaa, 0x5c, 0x00, 0x00, 0xaa, 0xee, 0x00, 0x00, 0xaa, 0xfe, + 0x00, 0x00, 0xab, 0x3a, 0x00, 0x00, 0xab, 0xf0, 0x00, 0x00, 0xac, 0x00, + 0x00, 0x00, 0xac, 0xc0, 0x00, 0x00, 0xad, 0xbc, 0x00, 0x00, 0xae, 0x2c, + 0x00, 0x00, 0xae, 0x42, 0x00, 0x00, 0xae, 0x52, 0x00, 0x00, 0xae, 0xe4, + 0x00, 0x00, 0xae, 0xf4, 0x00, 0x00, 0xaf, 0x04, 0x00, 0x00, 0xaf, 0x14, + 0x00, 0x00, 0xaf, 0x60, 0x00, 0x00, 0xaf, 0x70, 0x00, 0x00, 0xaf, 0x80, + 0x00, 0x00, 0xaf, 0x90, 0x00, 0x00, 0xb0, 0x3e, 0x00, 0x00, 0xb1, 0x28, + 0x00, 0x00, 0xb1, 0x38, 0x00, 0x00, 0xb1, 0xa0, 0x00, 0x00, 0xb2, 0x12, + 0x00, 0x00, 0xb2, 0x76, 0x00, 0x00, 0xb2, 0xf2, 0x00, 0x00, 0xb3, 0x82, + 0x00, 0x00, 0xb4, 0x36, 0x00, 0x00, 0xb4, 0xb8, 0x00, 0x00, 0xb5, 0x7e, + 0x00, 0x00, 0xb6, 0x4e, 0x00, 0x00, 0xb7, 0x0a, 0x00, 0x00, 0xb7, 0x20, + 0x00, 0x00, 0xb7, 0x6c, 0x00, 0x00, 0xb8, 0x04, 0x00, 0x00, 0xb8, 0xcc, + 0x00, 0x00, 0xb8, 0xdc, 0x00, 0x00, 0xb8, 0xf2, 0x00, 0x00, 0xb9, 0x08, + 0x00, 0x00, 0xb9, 0x18, 0x00, 0x00, 0xb9, 0x2e, 0x00, 0x00, 0xb9, 0x3e, + 0x00, 0x00, 0xb9, 0x54, 0x00, 0x00, 0xb9, 0x6a, 0x00, 0x00, 0xba, 0x54, + 0x00, 0x00, 0xbb, 0x08, 0x00, 0x00, 0xbb, 0x98, 0x00, 0x00, 0xbb, 0xae, + 0x00, 0x00, 0xbc, 0x1c, 0x00, 0x00, 0xbc, 0xb6, 0x00, 0x00, 0xbd, 0x6c, + 0x00, 0x00, 0xbd, 0xfc, 0x00, 0x00, 0xbe, 0x0c, 0x00, 0x00, 0xbe, 0xf6, + 0x00, 0x00, 0xbf, 0xc8, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xc0, 0xc0, + 0x00, 0x00, 0xc0, 0xd0, 0x00, 0x00, 0xc1, 0x7e, 0x00, 0x00, 0xc2, 0x68, + 0x00, 0x00, 0xc2, 0xce, 0x00, 0x00, 0xc2, 0xe4, 0x00, 0x00, 0xc3, 0x54, + 0x00, 0x00, 0xc3, 0xea, 0x00, 0x00, 0xc4, 0xa0, 0x00, 0x00, 0xc5, 0x06, + 0x00, 0x00, 0xc5, 0x16, 0x00, 0x00, 0xc5, 0x62, 0x00, 0x00, 0xc5, 0x72, + 0x00, 0x00, 0xc5, 0x82, 0x00, 0x00, 0xc5, 0xc6, 0x00, 0x00, 0xc5, 0xd6, + 0x00, 0x00, 0xc6, 0xac, 0x00, 0x00, 0xc6, 0xbc, 0x00, 0x00, 0xc7, 0x20, + 0x00, 0x00, 0xc7, 0x98, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc8, 0x82, + 0x00, 0x00, 0xc9, 0x2c, 0x00, 0x00, 0xc9, 0xe6, 0x00, 0x00, 0xca, 0x82, + 0x00, 0x00, 0xcb, 0x4c, 0x00, 0x00, 0xcb, 0xfc, 0x00, 0x00, 0xcc, 0xcc, + 0x00, 0x00, 0xcc, 0xe2, 0x00, 0x00, 0xcd, 0x2e, 0x00, 0x00, 0xce, 0x0e, + 0x00, 0x00, 0xce, 0xe4, 0x00, 0x00, 0xce, 0xf4, 0x00, 0x00, 0xcf, 0x0a, + 0x00, 0x00, 0xcf, 0x20, 0x00, 0x00, 0xcf, 0x30, 0x00, 0x00, 0xcf, 0x46, + 0x00, 0x00, 0xcf, 0x56, 0x00, 0x00, 0xcf, 0x6c, 0x00, 0x00, 0xcf, 0x82, + 0x00, 0x00, 0xd0, 0x80, 0x00, 0x00, 0xd1, 0x4a, 0x00, 0x00, 0xd1, 0x5a, + 0x00, 0x00, 0xd1, 0x70, 0x00, 0x00, 0xd1, 0xde, 0x00, 0x00, 0xd2, 0xa4, + 0x00, 0x00, 0xd3, 0x64, 0x00, 0x00, 0xd4, 0x0c, 0x00, 0x00, 0xd4, 0xee, + 0x00, 0x00, 0xd5, 0x5e, 0x00, 0x00, 0xd5, 0xd6, 0x00, 0x00, 0xd6, 0x34, + 0x00, 0x00, 0xd6, 0xcc, 0x00, 0x00, 0xd7, 0x1e, 0x00, 0x00, 0xd7, 0x5e, + 0x00, 0x00, 0xd7, 0x86, 0x00, 0x00, 0xd7, 0xba, 0x00, 0x00, 0xd8, 0x0c, + 0x00, 0x00, 0xd9, 0x72, 0x00, 0x00, 0xda, 0xae, 0x00, 0x00, 0xdb, 0xba, + 0x00, 0x00, 0xdc, 0xc6, 0x00, 0x00, 0xdd, 0xfc, 0x00, 0x00, 0xde, 0xa6, + 0x00, 0x00, 0xdf, 0x32, 0x00, 0x00, 0xe0, 0x30, 0x00, 0x00, 0xe1, 0x44, + 0x00, 0x00, 0xe2, 0x88, 0x00, 0x00, 0xe3, 0xd2, 0x00, 0x00, 0xe4, 0xd8, + 0x00, 0x00, 0xe5, 0x84, 0x00, 0x00, 0xe6, 0x48, 0x00, 0x00, 0xe7, 0x06, + 0x00, 0x00, 0xe8, 0x64, 0x00, 0x00, 0xe9, 0x36, 0x00, 0x00, 0xea, 0x0e, + 0x00, 0x00, 0xeb, 0x0e, 0x00, 0x00, 0xec, 0x20, 0x00, 0x00, 0xed, 0x06, + 0x00, 0x00, 0xed, 0x9e, 0x00, 0x00, 0xee, 0x3e, 0x00, 0x00, 0xef, 0x10, + 0x00, 0x00, 0xf0, 0x66, 0x00, 0x00, 0xf1, 0x12, 0x00, 0x00, 0xf1, 0xea, + 0x00, 0x00, 0xf2, 0xf8, 0x00, 0x00, 0xf3, 0x5c, 0x00, 0x00, 0xf4, 0xa6, + 0x00, 0x00, 0xf5, 0xae, 0x00, 0x00, 0xf6, 0x7e, 0x00, 0x00, 0xf7, 0x7a, + 0x00, 0x00, 0xf8, 0x14, 0x00, 0x00, 0xf8, 0x7a, 0x00, 0x00, 0xf9, 0x16, + 0x00, 0x00, 0xfa, 0x06, 0x00, 0x00, 0xfa, 0x82, 0x00, 0x00, 0xfb, 0x2a, + 0x00, 0x00, 0xfb, 0xfe, 0x00, 0x00, 0xfc, 0x46, 0x00, 0x00, 0xfd, 0x88, + 0x00, 0x00, 0xfe, 0x5a, 0x00, 0x00, 0xfe, 0x6c, 0x00, 0x00, 0xfe, 0x7e, + 0x00, 0x00, 0xfe, 0x90, 0x00, 0x00, 0xfe, 0xa2, 0x00, 0x00, 0xfe, 0xb4, + 0x00, 0x00, 0xfe, 0xc6, 0x00, 0x00, 0xfe, 0xd8, 0x00, 0x00, 0xfe, 0xea, + 0x00, 0x00, 0xfe, 0xfc, 0x00, 0x00, 0xff, 0x0e, 0x00, 0x00, 0xff, 0x20, + 0x00, 0x00, 0xff, 0x32, 0x00, 0x00, 0xff, 0x44, 0x00, 0x00, 0xff, 0x56, + 0x00, 0x00, 0xff, 0x68, 0x00, 0x00, 0xff, 0xfe, 0x00, 0x01, 0x00, 0x5c, + 0x00, 0x01, 0x00, 0xee, 0x00, 0x01, 0x01, 0xd8, 0x00, 0x01, 0x02, 0x4e, + 0x00, 0x01, 0x02, 0xea, 0x00, 0x01, 0x03, 0xa2, 0x00, 0x01, 0x03, 0xea, + 0x00, 0x01, 0x04, 0xfc, 0x00, 0x01, 0x05, 0xca, 0x00, 0x01, 0x06, 0x1c, + 0x00, 0x01, 0x06, 0x42, 0x00, 0x01, 0x06, 0x82, 0x00, 0x01, 0x06, 0xea, + 0x00, 0x01, 0x07, 0x52, 0x00, 0x01, 0x07, 0x64, 0x00, 0x01, 0x07, 0x76, + 0x00, 0x01, 0x07, 0x88, 0x00, 0x01, 0x07, 0x9a, 0x00, 0x01, 0x07, 0xac, + 0x00, 0x01, 0x07, 0xbe, 0x00, 0x01, 0x07, 0xd0, 0x00, 0x01, 0x07, 0xe2, + 0x00, 0x01, 0x07, 0xf4, 0x00, 0x01, 0x08, 0x06, 0x00, 0x01, 0x08, 0x32, + 0x00, 0x01, 0x08, 0xf0, 0x00, 0x01, 0x09, 0xc0, 0x00, 0x01, 0x0b, 0x0c, + 0x00, 0x01, 0x0b, 0xf8, 0x00, 0x01, 0x0d, 0x2e, 0x00, 0x01, 0x0d, 0x8a, + 0x00, 0x01, 0x0d, 0xb4, 0x00, 0x01, 0x0e, 0x2c, 0x00, 0x01, 0x0e, 0xaa, + 0x00, 0x01, 0x0f, 0x60, 0x00, 0x01, 0x0f, 0xa0, 0x00, 0x01, 0x10, 0x42, + 0x00, 0x01, 0x11, 0x1a, 0x00, 0x01, 0x11, 0x5a, 0x00, 0x01, 0x11, 0x9a, + 0x00, 0x01, 0x11, 0xfc, 0x00, 0x01, 0x12, 0x5e, 0x00, 0x01, 0x12, 0x98, + 0x00, 0x01, 0x13, 0x1e, 0x00, 0x01, 0x13, 0xfc, 0x00, 0x01, 0x14, 0xe4, + 0x00, 0x01, 0x15, 0xc6, 0x00, 0x01, 0x16, 0x64, 0x00, 0x01, 0x16, 0xd0, + 0x00, 0x01, 0x16, 0xe0, 0x00, 0x01, 0x16, 0xf0, 0x00, 0x01, 0x17, 0x00, + 0x00, 0x01, 0x17, 0x5c, 0x00, 0x01, 0x17, 0xd0, 0x00, 0x01, 0x18, 0x28, + 0x00, 0x01, 0x19, 0xd8, 0x00, 0x01, 0x1a, 0x66, 0x00, 0x01, 0x1b, 0x06, + 0x00, 0x01, 0x1b, 0x94, 0x00, 0x01, 0x1c, 0x30, 0x00, 0x01, 0x1c, 0xbe, + 0x00, 0x01, 0x1d, 0x5a, 0x00, 0x01, 0x1e, 0x56, 0x00, 0x01, 0x1f, 0x82, + 0x00, 0x01, 0x20, 0x56, 0x00, 0x01, 0x21, 0x62, 0x00, 0x01, 0x21, 0xe2, + 0x00, 0x01, 0x22, 0x88, 0x00, 0x01, 0x23, 0x0a, 0x00, 0x01, 0x23, 0xae, + 0x00, 0x01, 0x24, 0xaa, 0x00, 0x01, 0x26, 0x30, 0x00, 0x01, 0x26, 0xfa, + 0x00, 0x01, 0x28, 0x68, 0x00, 0x01, 0x28, 0xc4, 0x00, 0x01, 0x28, 0xda, + 0x00, 0x01, 0x28, 0xf0, 0x00, 0x01, 0x29, 0x06, 0x00, 0x01, 0x29, 0x1c, + 0x00, 0x01, 0x29, 0x32, 0x00, 0x01, 0x29, 0x48, 0x00, 0x01, 0x29, 0x64, + 0x00, 0x01, 0x29, 0x7a, 0x00, 0x01, 0x29, 0x90, 0x00, 0x01, 0x29, 0xa6, + 0x00, 0x01, 0x29, 0xbc, 0x00, 0x01, 0x29, 0xd8, 0x00, 0x01, 0x29, 0xee, + 0x00, 0x01, 0x2a, 0x04, 0x00, 0x01, 0x2a, 0x1a, 0x00, 0x01, 0x2a, 0x30, + 0x00, 0x01, 0x2a, 0x46, 0x00, 0x01, 0x2a, 0x5c, 0x00, 0x01, 0x2a, 0x72, + 0x00, 0x01, 0x2a, 0x8e, 0x00, 0x01, 0x2a, 0xa4, 0x00, 0x01, 0x2a, 0xba, + 0x00, 0x01, 0x2a, 0xd0, 0x00, 0x01, 0x2a, 0xe6, 0x00, 0x01, 0x2a, 0xfc, + 0x00, 0x01, 0x2b, 0x12, 0x00, 0x01, 0x2b, 0x28, 0x00, 0x01, 0x2b, 0x3e, + 0x00, 0x01, 0x2b, 0x5a, 0x00, 0x01, 0x2c, 0x38, 0x00, 0x01, 0x2c, 0x4e, + 0x00, 0x01, 0x2c, 0x64, 0x00, 0x01, 0x2c, 0x7a, 0x00, 0x01, 0x2c, 0x90, + 0x00, 0x01, 0x2c, 0xa6, 0x00, 0x01, 0x2c, 0xbc, 0x00, 0x01, 0x2c, 0xd2, + 0x00, 0x01, 0x2d, 0x88, 0x00, 0x01, 0x2d, 0x9e, 0x00, 0x01, 0x2d, 0xb4, + 0x00, 0x01, 0x2d, 0xca, 0x00, 0x01, 0x2d, 0xe0, 0x00, 0x01, 0x2d, 0xf6, + 0x00, 0x01, 0x2e, 0x0c, 0x00, 0x01, 0x2e, 0x22, 0x00, 0x01, 0x2e, 0x38, + 0x00, 0x01, 0x2e, 0x4e, 0x00, 0x01, 0x2e, 0x64, 0x00, 0x01, 0x2e, 0x7a, + 0x00, 0x01, 0x2e, 0x90, 0x00, 0x01, 0x2e, 0xa6, 0x00, 0x01, 0x2e, 0xc2, + 0x00, 0x01, 0x2e, 0xd8, 0x00, 0x01, 0x2e, 0xee, 0x00, 0x01, 0x2f, 0x04, + 0x00, 0x01, 0x2f, 0x1a, 0x00, 0x01, 0x2f, 0x36, 0x00, 0x01, 0x2f, 0x4c, + 0x00, 0x01, 0x2f, 0x62, 0x00, 0x01, 0x2f, 0x78, 0x00, 0x01, 0x2f, 0x8e, + 0x00, 0x01, 0x2f, 0xa4, 0x00, 0x01, 0x2f, 0xba, 0x00, 0x01, 0x2f, 0xd0, + 0x00, 0x01, 0x2f, 0xec, 0x00, 0x01, 0x30, 0x02, 0x00, 0x01, 0x30, 0x18, + 0x00, 0x01, 0x30, 0x2e, 0x00, 0x01, 0x30, 0x44, 0x00, 0x01, 0x30, 0x5a, + 0x00, 0x01, 0x30, 0x70, 0x00, 0x01, 0x30, 0x86, 0x00, 0x01, 0x30, 0x9c, + 0x00, 0x01, 0x30, 0xb8, 0x00, 0x01, 0x31, 0x92, 0x00, 0x01, 0x31, 0xa8, + 0x00, 0x01, 0x31, 0xbe, 0x00, 0x01, 0x31, 0xd4, 0x00, 0x01, 0x31, 0xea, + 0x00, 0x01, 0x32, 0x00, 0x00, 0x01, 0x32, 0x16, 0x00, 0x01, 0x32, 0x2c, + 0x00, 0x01, 0x32, 0xe4, 0x00, 0x01, 0x32, 0xfa, 0x00, 0x01, 0x33, 0x10, + 0x00, 0x01, 0x33, 0x26, 0x00, 0x01, 0x33, 0x3c, 0x00, 0x01, 0x33, 0x52, + 0x00, 0x01, 0x33, 0x6a, 0x00, 0x01, 0x33, 0x82, 0x00, 0x01, 0x33, 0x98, + 0x00, 0x01, 0x33, 0xae, 0x00, 0x01, 0x34, 0xa0, 0x00, 0x01, 0x35, 0x38, + 0x00, 0x01, 0x35, 0x80, 0x00, 0x01, 0x36, 0xde, 0x00, 0x01, 0x38, 0xda, + 0x00, 0x01, 0x3a, 0x9c, 0x00, 0x01, 0x3b, 0xfe, 0x00, 0x01, 0x3c, 0x80, + 0x00, 0x01, 0x3d, 0x56, 0x00, 0x01, 0x3d, 0xf6, 0x00, 0x01, 0x3e, 0xa2, + 0x00, 0x01, 0x3f, 0xdc, 0x00, 0x01, 0x40, 0x14, 0x00, 0x01, 0x40, 0x88, + 0x00, 0x01, 0x40, 0xe0, 0x00, 0x01, 0x41, 0x40, 0x00, 0x01, 0x41, 0xa0, + 0x00, 0x01, 0x43, 0x20, 0x00, 0x01, 0x44, 0x40, 0x00, 0x01, 0x45, 0x10, + 0x00, 0x01, 0x45, 0xdc, 0x00, 0x01, 0x46, 0x56, 0x00, 0x01, 0x46, 0xb4, + 0x00, 0x01, 0x47, 0x88, 0x00, 0x01, 0x48, 0x12, 0x00, 0x01, 0x48, 0xb4, + 0x00, 0x01, 0x49, 0x70, 0x00, 0x01, 0x4a, 0x8e, 0x00, 0x01, 0x4b, 0x1a, + 0x00, 0x01, 0x4b, 0x82, 0x00, 0x01, 0x4b, 0xb0, 0x00, 0x01, 0x4c, 0x20, + 0x00, 0x01, 0x4c, 0xb4, 0x00, 0x01, 0x4d, 0x62, 0x00, 0x01, 0x4d, 0x8c, + 0x00, 0x01, 0x4d, 0xba, 0x00, 0x01, 0x4d, 0xea, 0x00, 0x01, 0x4e, 0x18, + 0x00, 0x01, 0x4e, 0x46, 0x00, 0x01, 0x4e, 0x74, 0x00, 0x01, 0x4e, 0xb8, + 0x00, 0x01, 0x4e, 0xf8, 0x00, 0x01, 0x4f, 0x50, 0x00, 0x01, 0x4f, 0xa4, + 0x00, 0x01, 0x50, 0x0a, 0x00, 0x01, 0x50, 0x6e, 0x00, 0x01, 0x50, 0xf2, + 0x00, 0x01, 0x51, 0x90, 0x00, 0x01, 0x51, 0xe8, 0x00, 0x01, 0x52, 0x40, + 0x00, 0x01, 0x52, 0xba, 0x00, 0x01, 0x52, 0xf8, 0x00, 0x01, 0x53, 0x24, + 0x00, 0x01, 0x53, 0x56, 0x00, 0x01, 0x53, 0x84, 0x00, 0x01, 0x53, 0xb8, + 0x00, 0x01, 0x53, 0xec, 0x00, 0x01, 0x54, 0x1c, 0x00, 0x01, 0x57, 0x42, + 0x00, 0x01, 0x5d, 0x9e, 0x00, 0x01, 0x63, 0xd2, 0x00, 0x01, 0x64, 0x0a, + 0x00, 0x01, 0x64, 0x74, 0x00, 0x01, 0x64, 0xc6, 0x00, 0x01, 0x65, 0x18, + 0x00, 0x01, 0x65, 0x70, 0x00, 0x01, 0x65, 0xb4, 0x00, 0x01, 0x65, 0xfa, + 0x00, 0x01, 0x66, 0x4c, 0x00, 0x01, 0x66, 0x92, 0x00, 0x01, 0x66, 0xd8, + 0x00, 0x01, 0x67, 0x0a, 0x00, 0x01, 0x67, 0x88, 0x00, 0x01, 0x67, 0xee, + 0x00, 0x01, 0x68, 0x56, 0x00, 0x01, 0x68, 0xbc, 0x00, 0x01, 0x69, 0x16, + 0x00, 0x01, 0x69, 0x72, 0x00, 0x01, 0x69, 0xdc, 0x00, 0x01, 0x6a, 0x38, + 0x00, 0x01, 0x6a, 0x8e, 0x00, 0x01, 0x6a, 0xdc, 0x00, 0x01, 0x6b, 0x8e, + 0x00, 0x01, 0x6c, 0x14, 0x00, 0x01, 0x6c, 0xa0, 0x00, 0x01, 0x6d, 0x22, + 0x00, 0x01, 0x6d, 0x8c, 0x00, 0x01, 0x6d, 0xf8, 0x00, 0x01, 0x6e, 0x78, + 0x00, 0x01, 0x6e, 0xe4, 0x00, 0x01, 0x6f, 0x50, 0x00, 0x01, 0x6f, 0x98, + 0x00, 0x01, 0x70, 0x1c, 0x00, 0x01, 0x70, 0x88, 0x00, 0x01, 0x70, 0xf6, + 0x00, 0x01, 0x71, 0x5a, 0x00, 0x01, 0x71, 0xba, 0x00, 0x01, 0x72, 0x1c, + 0x00, 0x01, 0x72, 0x80, 0x00, 0x01, 0x72, 0xe0, 0x00, 0x01, 0x73, 0x40, + 0x00, 0x01, 0x76, 0x9a, 0x00, 0x01, 0x77, 0x3e, 0x00, 0x01, 0x77, 0xe0, + 0x00, 0x01, 0x78, 0x96, 0x00, 0x01, 0x78, 0xac, 0x00, 0x01, 0x78, 0xc2, + 0x00, 0x01, 0x78, 0xd8, 0x00, 0x01, 0x79, 0x58, 0x00, 0x01, 0x79, 0xf6, + 0x00, 0x01, 0x7a, 0x94, 0x00, 0x01, 0x7b, 0x08, 0x00, 0x01, 0x7b, 0x70, + 0x00, 0x01, 0x7b, 0xc8, 0x00, 0x01, 0x7c, 0x72, 0x00, 0x01, 0x7c, 0xd6, + 0x00, 0x01, 0x7d, 0x38, 0x00, 0x01, 0x7d, 0xb2, 0x00, 0x01, 0x7e, 0x18, + 0x00, 0x01, 0x7e, 0x58, 0x00, 0x01, 0x7e, 0xf4, 0x00, 0x01, 0x7f, 0x56, + 0x00, 0x01, 0x7f, 0xdc, 0x00, 0x01, 0x80, 0x68, 0x00, 0x01, 0x81, 0x40, + 0x00, 0x01, 0x81, 0xea, 0x00, 0x01, 0x82, 0xc8, 0x00, 0x01, 0x83, 0x12, + 0x00, 0x01, 0x83, 0x88, 0x00, 0x01, 0x83, 0xe2, 0x00, 0x01, 0x84, 0x7e, + 0x00, 0x01, 0x85, 0x06, 0x00, 0x01, 0x85, 0x68, 0x00, 0x01, 0x85, 0xc6, + 0x00, 0x01, 0x85, 0xf8, 0x00, 0x01, 0x86, 0x0a, 0x00, 0x01, 0x86, 0x42, + 0x00, 0x01, 0x86, 0x7a, 0x00, 0x01, 0x86, 0xcc, 0x00, 0x01, 0x87, 0x20, + 0x00, 0x01, 0x87, 0x82, 0x00, 0x01, 0x87, 0xa8, 0x00, 0x01, 0x88, 0x54, + 0x00, 0x01, 0x89, 0x08, 0x00, 0x01, 0x89, 0x7c, 0x00, 0x01, 0x89, 0xea, + 0x00, 0x01, 0x8a, 0x64, 0x00, 0x01, 0x8a, 0x82, 0x00, 0x01, 0x8b, 0x04, + 0x00, 0x01, 0x8b, 0x22, 0x00, 0x01, 0x8b, 0xac, 0x00, 0x01, 0x8b, 0xca, + 0x00, 0x01, 0x8c, 0x0e, 0x00, 0x01, 0x8c, 0x52, 0x00, 0x01, 0x8c, 0x9c, + 0x00, 0x01, 0x8c, 0xe4, 0x00, 0x01, 0x8d, 0x1e, 0x00, 0x01, 0x8d, 0x30, + 0x00, 0x01, 0x8d, 0xa0, 0x00, 0x01, 0x8d, 0xe0, 0x00, 0x01, 0x8e, 0x1e, + 0x00, 0x01, 0x8e, 0x6e, 0x00, 0x01, 0x8e, 0x98, 0x00, 0x01, 0x8e, 0xfe, + 0x00, 0x01, 0x8f, 0x62, 0x00, 0x01, 0x8f, 0xfc, 0x00, 0x01, 0x90, 0x86, + 0x00, 0x01, 0x90, 0xb6, 0x00, 0x01, 0x91, 0x06, 0x00, 0x01, 0x91, 0xbe, + 0x00, 0x01, 0x92, 0x02, 0x00, 0x01, 0x92, 0x46, 0x00, 0x01, 0x92, 0x96, + 0x00, 0x01, 0x92, 0xe4, 0x00, 0x01, 0x93, 0x40, 0x00, 0x01, 0x93, 0xa2, + 0x00, 0x01, 0x93, 0xb2, 0x00, 0x01, 0x93, 0xe8, 0x00, 0x01, 0x94, 0x1a, + 0x00, 0x01, 0x94, 0x46, 0x00, 0x01, 0x94, 0x56, 0x00, 0x01, 0x94, 0x8c, + 0x00, 0x01, 0x94, 0xbc, 0x00, 0x01, 0x94, 0xcc, 0x00, 0x01, 0x94, 0xdc, + 0x00, 0x01, 0x94, 0xec, 0x00, 0x01, 0x94, 0xfc, 0x00, 0x01, 0x95, 0x0c, + 0x00, 0x01, 0x95, 0x68, 0x00, 0x01, 0x95, 0xb2, 0x00, 0x01, 0x96, 0x0a, + 0x00, 0x01, 0x96, 0xb8, 0x00, 0x01, 0x97, 0x4c, 0x00, 0x01, 0x97, 0x6a, + 0x00, 0x01, 0x98, 0x24, 0x00, 0x01, 0x98, 0x42, 0x00, 0x01, 0x98, 0x9c, + 0x00, 0x01, 0x98, 0xd2, 0x00, 0x01, 0x98, 0xe2, 0x00, 0x01, 0x98, 0xf2, + 0x00, 0x01, 0x99, 0x02, 0x00, 0x01, 0x99, 0x12, 0x00, 0x01, 0x99, 0x64, + 0x00, 0x01, 0x99, 0x82, 0x00, 0x01, 0x99, 0xae, 0x00, 0x01, 0x99, 0xee, + 0x00, 0x01, 0x9a, 0x24, 0x00, 0x01, 0x9a, 0xf0, 0x00, 0x01, 0x9b, 0x02, + 0x00, 0x01, 0x9b, 0xf0, 0x00, 0x01, 0x9c, 0x5a, 0x00, 0x01, 0x9c, 0x84, + 0x00, 0x01, 0x9c, 0xf4, 0x00, 0x01, 0x9d, 0x5a, 0x00, 0x01, 0x9d, 0xa8, + 0x00, 0x01, 0x9d, 0xa8, 0x00, 0x01, 0x9e, 0x00, 0x00, 0x01, 0x9e, 0x1e, + 0x00, 0x01, 0x9e, 0x86, 0x00, 0x01, 0x9e, 0xa4, 0x00, 0x01, 0x9f, 0x4a, + 0x00, 0x01, 0xa0, 0x0a, 0x00, 0x01, 0xa0, 0x52, 0x00, 0x01, 0xa0, 0xb0, + 0x00, 0x01, 0xa1, 0x0c, 0x00, 0x01, 0xa1, 0xa2, 0x00, 0x01, 0xa2, 0x08, + 0x00, 0x01, 0xa2, 0x26, 0x00, 0x01, 0xa2, 0x36, 0x00, 0x01, 0xa2, 0x46, + 0x00, 0x01, 0xa3, 0x84, 0x00, 0x01, 0xa4, 0x66, 0x00, 0x01, 0xa4, 0xc0, + 0x00, 0x01, 0xa4, 0xe6, 0x00, 0x01, 0xa5, 0x40, 0x00, 0x01, 0xa5, 0xa2, + 0x00, 0x01, 0xa5, 0xc0, 0x00, 0x01, 0xa5, 0xd2, 0x00, 0x01, 0xa5, 0xfa, + 0x00, 0x01, 0xa6, 0x0a, 0x00, 0x01, 0xa6, 0xa0, 0x00, 0x01, 0xa6, 0xc6, + 0x00, 0x01, 0xa7, 0x28, 0x00, 0x01, 0xa7, 0x4e, 0x00, 0x01, 0xa7, 0x9c, + 0x00, 0x01, 0xa8, 0x74, 0x00, 0x01, 0xa8, 0x86, 0x00, 0x01, 0xa9, 0x42, + 0x00, 0x01, 0xa9, 0x54, 0x00, 0x01, 0xa9, 0xf0, 0x00, 0x01, 0xaa, 0x02, + 0x00, 0x01, 0xaa, 0x88, 0x00, 0x01, 0xaa, 0x9a, 0x00, 0x01, 0xab, 0x14, + 0x00, 0x01, 0xab, 0x26, 0x00, 0x01, 0xab, 0xa8, 0x00, 0x01, 0xab, 0xba, + 0x00, 0x01, 0xac, 0x60, 0x00, 0x01, 0xac, 0x72, 0x00, 0x01, 0xac, 0xec, + 0x00, 0x01, 0xac, 0xfe, 0x00, 0x01, 0xad, 0xc0, 0x00, 0x01, 0xad, 0xd2, + 0x00, 0x01, 0xae, 0x4c, 0x00, 0x01, 0xae, 0x5e, 0x00, 0x01, 0xae, 0xe6, + 0x00, 0x01, 0xae, 0xf8, 0x00, 0x01, 0xaf, 0x52, 0x00, 0x01, 0xaf, 0x64, + 0x00, 0x01, 0xaf, 0xfc, 0x00, 0x01, 0xb0, 0x0e, 0x00, 0x01, 0xb0, 0xdc, + 0x00, 0x01, 0xb0, 0xee, 0x00, 0x01, 0xb1, 0xba, 0x00, 0x01, 0xb1, 0xcc, + 0x00, 0x01, 0xb2, 0x88, 0x00, 0x01, 0xb3, 0x00, 0x00, 0x01, 0xb3, 0x48, + 0x00, 0x01, 0xb3, 0x8c, 0x00, 0x01, 0xb3, 0xd6, 0x00, 0x01, 0xb4, 0x1c, + 0x00, 0x01, 0xb4, 0x6e, 0x00, 0x01, 0xb4, 0xc0, 0x00, 0x01, 0xb5, 0x12, + 0x00, 0x01, 0xb5, 0x64, 0x00, 0x01, 0xb5, 0xb0, 0x00, 0x01, 0xb5, 0xfa, + 0x00, 0x01, 0xb6, 0x46, 0x00, 0x01, 0xb6, 0x90, 0x00, 0x01, 0xb6, 0xae, + 0x00, 0x01, 0xb7, 0x08, 0x00, 0x01, 0xb7, 0x26, 0x00, 0x01, 0xb7, 0xae, + 0x00, 0x01, 0xb8, 0xa4, 0x00, 0x01, 0xb8, 0xb4, 0x00, 0x01, 0xb9, 0x52, + 0x00, 0x01, 0xb9, 0xf0, 0x00, 0x01, 0xba, 0xc8, 0x00, 0x01, 0xba, 0xd8, + 0x00, 0x01, 0xbb, 0x82, 0x00, 0x01, 0xbc, 0x12, 0x00, 0x01, 0xbc, 0x7c, + 0x00, 0x01, 0xbd, 0x38, 0x00, 0x01, 0xbe, 0x12, 0x00, 0x01, 0xbe, 0x9e, + 0x00, 0x01, 0xbf, 0x92, 0x00, 0x01, 0xc0, 0x26, 0x00, 0x01, 0xc0, 0x86, + 0x00, 0x01, 0xc0, 0xb0, 0x00, 0x01, 0xc1, 0x46, 0x00, 0x01, 0xc2, 0x0c, + 0x00, 0x01, 0xc2, 0xa0, 0x00, 0x01, 0xc2, 0xb0, 0x00, 0x01, 0xc3, 0x74, + 0x00, 0x01, 0xc4, 0x2c, 0x00, 0x01, 0xc4, 0xdc, 0x00, 0x01, 0xc5, 0xa6, + 0x00, 0x01, 0xc5, 0xb6, 0x00, 0x01, 0xc6, 0x32, 0x00, 0x01, 0xc6, 0xb0, + 0x00, 0x01, 0xc7, 0x7e, 0x00, 0x01, 0xc8, 0x2a, 0x00, 0x01, 0xc8, 0xb2, + 0x00, 0x01, 0xc9, 0x56, 0x00, 0x01, 0xca, 0x14, 0x00, 0x01, 0xca, 0xd0, + 0x00, 0x01, 0xcb, 0x82, 0x00, 0x01, 0xcc, 0xa4, 0x00, 0x01, 0xcd, 0xae, + 0x00, 0x01, 0xce, 0x3a, 0x00, 0x01, 0xcf, 0x24, 0x00, 0x01, 0xcf, 0xcc, + 0x00, 0x01, 0xd0, 0xce, 0x00, 0x01, 0xd0, 0xe4, 0x00, 0x01, 0xd0, 0xfa, + 0x00, 0x01, 0xd1, 0x10, 0x00, 0x01, 0xd1, 0x26, 0x00, 0x01, 0xd1, 0x3c, + 0x00, 0x01, 0xd1, 0x52, 0x00, 0x01, 0xd1, 0x68, 0x00, 0x01, 0xd1, 0x7e, + 0x00, 0x01, 0xd1, 0x94, 0x00, 0x01, 0xd1, 0xaa, 0x00, 0x01, 0xd1, 0xc2, + 0x00, 0x01, 0xd2, 0xd0, 0x00, 0x01, 0xd2, 0xe6, 0x00, 0x01, 0xd2, 0xfc, + 0x00, 0x01, 0xd3, 0x14, 0x00, 0x01, 0xd3, 0x32, 0x00, 0x01, 0xd3, 0x48, + 0x00, 0x01, 0xd4, 0x10, 0x00, 0x01, 0xd4, 0xce, 0x00, 0x01, 0xd4, 0xe4, + 0x00, 0x01, 0xd5, 0x80, 0x00, 0x01, 0xd6, 0x24, 0x00, 0x01, 0xd6, 0x3a, + 0x00, 0x01, 0xd6, 0x50, 0x00, 0x01, 0xd6, 0x66, 0x00, 0x01, 0xd6, 0x7c, + 0x00, 0x01, 0xd6, 0x92, 0x00, 0x01, 0xd6, 0xa8, 0x00, 0x01, 0xd6, 0xbe, + 0x00, 0x01, 0xd6, 0xd4, 0x00, 0x01, 0xd6, 0xea, 0x00, 0x01, 0xd7, 0x00, + 0x00, 0x01, 0xd7, 0x16, 0x00, 0x01, 0xd7, 0x2c, 0x00, 0x01, 0xd7, 0x42, + 0x00, 0x01, 0xd7, 0xfe, 0x00, 0x01, 0xd8, 0x14, 0x00, 0x01, 0xd8, 0x90, + 0x00, 0x01, 0xd9, 0xb2, 0x00, 0x01, 0xda, 0x50, 0x00, 0x01, 0xda, 0x66, + 0x00, 0x01, 0xda, 0x7c, 0x00, 0x01, 0xda, 0x92, 0x00, 0x01, 0xda, 0xa8, + 0x00, 0x01, 0xda, 0xbe, 0x00, 0x01, 0xda, 0xd4, 0x00, 0x01, 0xda, 0xea, + 0x00, 0x01, 0xdb, 0x00, 0x00, 0x01, 0xdb, 0x16, 0x00, 0x01, 0xdb, 0x3a, + 0x00, 0x01, 0xdb, 0x50, 0x00, 0x01, 0xdb, 0x60, 0x00, 0x01, 0xdc, 0x7c, + 0x00, 0x01, 0xdd, 0x2e, 0x00, 0x01, 0xdd, 0x3e, 0x00, 0x01, 0xdd, 0x54, + 0x00, 0x01, 0xdd, 0x78, 0x00, 0x01, 0xde, 0x62, 0x00, 0x01, 0xdf, 0x20, + 0x00, 0x01, 0xdf, 0xe6, 0x00, 0x01, 0xdf, 0xfc, 0x00, 0x01, 0xe0, 0x12, + 0x00, 0x01, 0xe0, 0x28, 0x00, 0x01, 0xe0, 0x70, 0x00, 0x01, 0xe0, 0x86, + 0x00, 0x01, 0xe0, 0x9c, 0x00, 0x01, 0xe0, 0xb2, 0x00, 0x01, 0xe0, 0xfa, + 0x00, 0x01, 0xe1, 0x7e, 0x00, 0x01, 0xe1, 0xe6, 0x00, 0x01, 0xe1, 0xfc, + 0x00, 0x01, 0xe2, 0x12, 0x00, 0x01, 0xe2, 0x7a, 0x00, 0x01, 0xe2, 0xf4, + 0x00, 0x01, 0xe3, 0x10, 0x00, 0x01, 0xe3, 0x26, 0x00, 0x01, 0xe3, 0x3c, + 0x00, 0x01, 0xe3, 0x52, 0x00, 0x01, 0xe3, 0x68, 0x00, 0x01, 0xe3, 0x7e, + 0x00, 0x01, 0xe3, 0x96, 0x00, 0x01, 0xe4, 0x0e, 0x00, 0x01, 0xe4, 0x88, + 0x00, 0x01, 0xe4, 0x9e, 0x00, 0x01, 0xe4, 0xb4, 0x00, 0x01, 0xe4, 0xca, + 0x00, 0x01, 0xe5, 0x12, 0x00, 0x01, 0xe5, 0x28, 0x00, 0x01, 0xe5, 0x44, + 0x00, 0x01, 0xe5, 0x8c, 0x00, 0x01, 0xe5, 0xf4, 0x00, 0x01, 0xe6, 0x0a, + 0x00, 0x01, 0xe6, 0x20, 0x00, 0x01, 0xe6, 0x36, 0x00, 0x01, 0xe6, 0x4c, + 0x00, 0x01, 0xe6, 0x62, 0x00, 0x01, 0xe6, 0xaa, 0x00, 0x01, 0xe7, 0x0a, + 0x00, 0x01, 0xe7, 0x20, 0x00, 0x01, 0xe7, 0x36, 0x00, 0x01, 0xe7, 0x4c, + 0x00, 0x01, 0xe7, 0x62, 0x00, 0x01, 0xe7, 0x78, 0x00, 0x01, 0xe7, 0x8e, + 0x00, 0x01, 0xe7, 0xa4, 0x00, 0x01, 0xe7, 0xba, 0x00, 0x01, 0xe7, 0xd6, + 0x00, 0x01, 0xe8, 0x1e, 0x00, 0x01, 0xe8, 0x34, 0x00, 0x01, 0xe8, 0x4a, + 0x00, 0x01, 0xe8, 0x60, 0x00, 0x01, 0xe8, 0x76, 0x00, 0x01, 0xe8, 0x92, + 0x00, 0x01, 0xe8, 0xa8, 0x00, 0x01, 0xe8, 0xbe, 0x00, 0x01, 0xe9, 0x06, + 0x00, 0x01, 0xe9, 0x6e, 0x00, 0x01, 0xe9, 0x84, 0x00, 0x01, 0xe9, 0xfe, + 0x00, 0x01, 0xea, 0x66, 0x00, 0x01, 0xea, 0x7c, 0x00, 0x01, 0xea, 0x92, + 0x00, 0x01, 0xea, 0xa8, 0x00, 0x01, 0xea, 0xbe, 0x00, 0x01, 0xea, 0xd4, + 0x00, 0x01, 0xea, 0xea, 0x00, 0x01, 0xeb, 0x00, 0x00, 0x01, 0xeb, 0x16, + 0x00, 0x01, 0xeb, 0x2c, 0x00, 0x01, 0xeb, 0x42, 0x00, 0x01, 0xeb, 0x58, + 0x00, 0x01, 0xeb, 0xa0, 0x00, 0x01, 0xeb, 0xe6, 0x00, 0x01, 0xeb, 0xfe, + 0x00, 0x01, 0xec, 0x64, 0x00, 0x01, 0xed, 0x4e, 0x00, 0x01, 0xed, 0x5e, + 0x00, 0x01, 0xed, 0xea, 0x00, 0x01, 0xee, 0x58, 0x00, 0x01, 0xee, 0xf8, + 0x00, 0x01, 0xef, 0x52, 0x00, 0x01, 0xef, 0x9c, 0x00, 0x01, 0xf0, 0x6c, + 0x00, 0x01, 0xf1, 0x1c, 0x00, 0x01, 0xf1, 0xda, 0x00, 0x01, 0xf2, 0xb0, + 0x00, 0x01, 0xf3, 0x66, 0x00, 0x01, 0xf4, 0x64, 0x00, 0x01, 0xf5, 0x2a, + 0x00, 0x01, 0xf5, 0xe6, 0x00, 0x01, 0xf5, 0xf6, 0x00, 0x01, 0xf6, 0x90, + 0x00, 0x01, 0xf6, 0xbc, 0x00, 0x01, 0xf6, 0xd4, 0x00, 0x01, 0xf6, 0xfe, + 0x00, 0x01, 0xf7, 0xf0, 0x00, 0x01, 0xf8, 0x00, 0x00, 0x01, 0xf8, 0xbe, + 0x00, 0x01, 0xf9, 0x96, 0x00, 0x01, 0xfa, 0x6c, 0x00, 0x01, 0xfb, 0x34, + 0x00, 0x01, 0xfb, 0xf0, 0x00, 0x01, 0xfc, 0xb0, 0x00, 0x01, 0xfd, 0x58, + 0x00, 0x01, 0xfe, 0x18, 0x00, 0x01, 0xff, 0x22, 0x00, 0x01, 0xff, 0xde, + 0x00, 0x02, 0x01, 0x16, 0x00, 0x02, 0x02, 0x1a, 0x00, 0x02, 0x03, 0x4e, + 0x00, 0x02, 0x03, 0x64, 0x00, 0x02, 0x03, 0x7a, 0x00, 0x02, 0x03, 0x90, + 0x00, 0x02, 0x03, 0xa6, 0x00, 0x02, 0x03, 0xbc, 0x00, 0x02, 0x03, 0xd2, + 0x00, 0x02, 0x03, 0xe8, 0x00, 0x02, 0x03, 0xfe, 0x00, 0x02, 0x04, 0x14, + 0x00, 0x02, 0x04, 0x2a, 0x00, 0x02, 0x04, 0xde, 0x00, 0x02, 0x04, 0xf4, + 0x00, 0x02, 0x05, 0x0a, 0x00, 0x02, 0x05, 0x20, 0x00, 0x02, 0x07, 0x60, + 0x00, 0x02, 0x07, 0x76, 0x00, 0x02, 0x07, 0x8c, 0x00, 0x02, 0x07, 0xa4, + 0x00, 0x02, 0x07, 0xc2, 0x00, 0x02, 0x07, 0xd8, 0x00, 0x02, 0x07, 0xee, + 0x00, 0x02, 0x08, 0x04, 0x00, 0x02, 0x08, 0xf0, 0x00, 0x02, 0x09, 0x06, + 0x00, 0x02, 0x09, 0x1c, 0x00, 0x02, 0x09, 0x32, 0x00, 0x02, 0x09, 0x48, + 0x00, 0x02, 0x09, 0x5e, 0x00, 0x02, 0x09, 0x74, 0x00, 0x02, 0x09, 0x8a, + 0x00, 0x02, 0x09, 0xa0, 0x00, 0x02, 0x09, 0xb6, 0x00, 0x02, 0x09, 0xcc, + 0x00, 0x02, 0x09, 0xe2, 0x00, 0x02, 0x09, 0xf8, 0x00, 0x02, 0x0a, 0x0e, + 0x00, 0x02, 0x0a, 0x24, 0x00, 0x02, 0x0a, 0x3a, 0x00, 0x02, 0x0a, 0x50, + 0x00, 0x02, 0x0a, 0x66, 0x00, 0x02, 0x0a, 0x7c, 0x00, 0x02, 0x0a, 0x92, + 0x00, 0x02, 0x0a, 0xa8, 0x00, 0x02, 0x0a, 0xbe, 0x00, 0x02, 0x0a, 0xd4, + 0x00, 0x02, 0x0a, 0xea, 0x00, 0x02, 0x0b, 0x00, 0x00, 0x02, 0x0b, 0xc0, + 0x00, 0x02, 0x0b, 0xd6, 0x00, 0x02, 0x0d, 0x3a, 0x00, 0x02, 0x0e, 0x6a, + 0x00, 0x02, 0x0f, 0x04, 0x00, 0x02, 0x0f, 0x1a, 0x00, 0x02, 0x0f, 0x30, + 0x00, 0x02, 0x0f, 0x46, 0x00, 0x02, 0x0f, 0x90, 0x00, 0x02, 0x0f, 0xa6, + 0x00, 0x02, 0x0f, 0xbc, 0x00, 0x02, 0x0f, 0xd2, 0x00, 0x02, 0x10, 0xce, + 0x00, 0x02, 0x12, 0x08, 0x00, 0x02, 0x13, 0x2e, 0x00, 0x02, 0x14, 0x68, + 0x00, 0x02, 0x15, 0x7c, 0x00, 0x02, 0x15, 0x92, 0x00, 0x02, 0x16, 0xae, + 0x00, 0x02, 0x17, 0x4e, 0x00, 0x02, 0x17, 0xd6, 0x00, 0x02, 0x17, 0xec, + 0x00, 0x02, 0x18, 0x12, 0x00, 0x02, 0x18, 0x38, 0x00, 0x02, 0x18, 0x5e, + 0x00, 0x02, 0x18, 0x84, 0x00, 0x02, 0x19, 0x72, 0x00, 0x02, 0x19, 0xa2, + 0x00, 0x02, 0x19, 0xd6, 0x00, 0x02, 0x1a, 0x06, 0x00, 0x02, 0x1a, 0x3e, + 0x00, 0x02, 0x1b, 0x42, 0x00, 0x02, 0x1c, 0x04, 0x00, 0x02, 0x1c, 0xde, + 0x00, 0x02, 0x1d, 0xc4, 0x00, 0x02, 0x1d, 0xd4, 0x00, 0x02, 0x1e, 0x1c, + 0x00, 0x02, 0x1e, 0xa8, 0x00, 0x02, 0x1e, 0xb8, 0x00, 0x02, 0x1e, 0xce, + 0x00, 0x02, 0x1e, 0xe4, 0x00, 0x02, 0x1e, 0xfa, 0x00, 0x02, 0x1f, 0x42, + 0x00, 0x02, 0x1f, 0x58, 0x00, 0x02, 0x1f, 0x6e, 0x00, 0x02, 0x1f, 0x84, + 0x00, 0x02, 0x1f, 0xcc, 0x00, 0x02, 0x20, 0x50, 0x00, 0x02, 0x20, 0xb8, + 0x00, 0x02, 0x20, 0xce, 0x00, 0x02, 0x20, 0xe4, 0x00, 0x02, 0x21, 0x4c, + 0x00, 0x02, 0x21, 0xc6, 0x00, 0x02, 0x21, 0xe2, 0x00, 0x02, 0x22, 0x06, + 0x00, 0x02, 0x22, 0x2a, 0x00, 0x02, 0x22, 0x4e, 0x00, 0x02, 0x22, 0x64, + 0x00, 0x02, 0x22, 0x7a, 0x00, 0x02, 0x22, 0x90, 0x00, 0x02, 0x22, 0xb4, + 0x00, 0x02, 0x22, 0xcc, 0x00, 0x02, 0x23, 0x44, 0x00, 0x02, 0x23, 0xbe, + 0x00, 0x02, 0x24, 0x38, 0x00, 0x02, 0x24, 0xb2, 0x00, 0x02, 0x25, 0x2c, + 0x00, 0x02, 0x25, 0xa6, 0x00, 0x02, 0x26, 0x20, 0x00, 0x02, 0x26, 0x36, + 0x00, 0x02, 0x26, 0x4c, 0x00, 0x02, 0x26, 0x62, 0x00, 0x02, 0x26, 0xaa, + 0x00, 0x02, 0x26, 0xc0, 0x00, 0x02, 0x26, 0xd6, 0x00, 0x02, 0x26, 0xec, + 0x00, 0x02, 0x27, 0x16, 0x00, 0x02, 0x27, 0x40, 0x00, 0x02, 0x27, 0x6a, + 0x00, 0x02, 0x27, 0xb2, 0x00, 0x02, 0x27, 0xfa, 0x00, 0x02, 0x28, 0x42, + 0x00, 0x02, 0x28, 0xaa, 0x00, 0x02, 0x29, 0x12, 0x00, 0x02, 0x29, 0x7a, + 0x00, 0x02, 0x29, 0x90, 0x00, 0x02, 0x29, 0xa6, 0x00, 0x02, 0x29, 0xbc, + 0x00, 0x02, 0x29, 0xd2, 0x00, 0x02, 0x29, 0xe8, 0x00, 0x02, 0x2a, 0x30, + 0x00, 0x02, 0x2a, 0x90, 0x00, 0x02, 0x2a, 0xa6, 0x00, 0x02, 0x2a, 0xbc, + 0x00, 0x02, 0x2a, 0xd2, 0x00, 0x02, 0x2a, 0xe8, 0x00, 0x02, 0x2a, 0xfe, + 0x00, 0x02, 0x2b, 0x14, 0x00, 0x02, 0x2b, 0x2a, 0x00, 0x02, 0x2b, 0x40, + 0x00, 0x02, 0x2b, 0x56, 0x00, 0x02, 0x2b, 0x6c, 0x00, 0x02, 0x2b, 0x84, + 0x00, 0x02, 0x2b, 0x9c, 0x00, 0x02, 0x2b, 0xb4, 0x00, 0x02, 0x2b, 0xca, + 0x00, 0x02, 0x2b, 0xe8, 0x00, 0x02, 0x2c, 0x06, 0x00, 0x02, 0x2c, 0x24, + 0x00, 0x02, 0x2c, 0x40, 0x00, 0x02, 0x2c, 0x88, 0x00, 0x02, 0x2c, 0xd0, + 0x00, 0x02, 0x2d, 0x18, 0x00, 0x02, 0x2d, 0x60, 0x00, 0x02, 0x2d, 0x76, + 0x00, 0x02, 0x2d, 0x8c, 0x00, 0x02, 0x2d, 0xa2, 0x00, 0x02, 0x2d, 0xb8, + 0x00, 0x02, 0x2d, 0xd4, 0x00, 0x02, 0x2e, 0x08, 0x00, 0x02, 0x2e, 0x1e, + 0x00, 0x02, 0x2e, 0x66, 0x00, 0x02, 0x2e, 0xce, 0x00, 0x02, 0x2e, 0xe4, + 0x00, 0x02, 0x2f, 0x5e, 0x00, 0x02, 0x2f, 0xc6, 0x00, 0x02, 0x2f, 0xdc, + 0x00, 0x02, 0x2f, 0xf2, 0x00, 0x02, 0x30, 0x08, 0x00, 0x02, 0x30, 0x1e, + 0x00, 0x02, 0x30, 0x34, 0x00, 0x02, 0x30, 0x4a, 0x00, 0x02, 0x30, 0x60, + 0x00, 0x02, 0x30, 0x76, 0x00, 0x02, 0x30, 0x8c, 0x00, 0x02, 0x30, 0xa2, + 0x00, 0x02, 0x30, 0xb8, 0x00, 0x02, 0x31, 0x00, 0x00, 0x02, 0x31, 0x48, + 0x00, 0x02, 0x31, 0x7e, 0x00, 0x02, 0x31, 0x94, 0x00, 0x02, 0x31, 0xaa, + 0x00, 0x02, 0x31, 0xc0, 0x00, 0x02, 0x31, 0xe4, 0x00, 0x02, 0x32, 0x7e, + 0x00, 0x02, 0x33, 0x1a, 0x00, 0x02, 0x33, 0xb4, 0x00, 0x02, 0x33, 0xca, + 0x00, 0x02, 0x33, 0xe0, 0x00, 0x02, 0x34, 0x7c, 0x00, 0x02, 0x35, 0x06, + 0x00, 0x02, 0x35, 0x74, 0x00, 0x02, 0x36, 0x70, 0x00, 0x02, 0x36, 0x80, + 0x00, 0x02, 0x36, 0xe4, 0x00, 0x02, 0x37, 0x2e, 0x00, 0x02, 0x37, 0xfa, + 0x00, 0x02, 0x38, 0xce, 0x00, 0x02, 0x39, 0x86, 0x00, 0x02, 0x3a, 0x28, + 0x00, 0x02, 0x3b, 0x00, 0x00, 0x02, 0x3b, 0x9a, 0x00, 0x02, 0x3c, 0x9c, + 0x00, 0x02, 0x3d, 0x88, 0x00, 0x02, 0x3e, 0x6a, 0x00, 0x02, 0x3f, 0x32, + 0x00, 0x02, 0x3f, 0xec, 0x00, 0x02, 0x41, 0x0a, 0x00, 0x02, 0x41, 0x1a, + 0x00, 0x02, 0x41, 0x2a, 0x00, 0x02, 0x42, 0x68, 0x00, 0x02, 0x43, 0x50, + 0x00, 0x02, 0x43, 0x76, 0x00, 0x02, 0x44, 0x92, 0x00, 0x02, 0x45, 0x82, + 0x00, 0x02, 0x46, 0x3c, 0x00, 0x02, 0x46, 0xfc, 0x00, 0x02, 0x48, 0x2c, + 0x00, 0x02, 0x48, 0xa6, 0x00, 0x02, 0x49, 0x56, 0x00, 0x02, 0x4a, 0x42, + 0x00, 0x02, 0x4a, 0x76, 0x00, 0x02, 0x4a, 0xaa, 0x00, 0x02, 0x4a, 0xde, + 0x00, 0x02, 0x4b, 0x12, 0x00, 0x02, 0x4b, 0x46, 0x00, 0x02, 0x4b, 0x7a, + 0x00, 0x02, 0x4b, 0x8a, 0x00, 0x02, 0x4b, 0xf0, 0x00, 0x02, 0x4c, 0x08, + 0x00, 0x02, 0x4c, 0xe8, 0x00, 0x02, 0x4d, 0x5a, 0x00, 0x02, 0x4e, 0x36, + 0x00, 0x02, 0x4e, 0xf8, 0x00, 0x02, 0x4f, 0xb8, 0x00, 0x02, 0x50, 0xa8, + 0x00, 0x02, 0x51, 0x56, 0x00, 0x02, 0x52, 0x02, 0x00, 0x02, 0x52, 0x5a, + 0x00, 0x02, 0x53, 0x1c, 0x00, 0x02, 0x53, 0xe0, 0x00, 0x02, 0x54, 0xc4, + 0x00, 0x02, 0x54, 0xd4, 0x00, 0x02, 0x55, 0x46, 0x00, 0x02, 0x55, 0xb8, + 0x00, 0x02, 0x56, 0x5e, 0x00, 0x02, 0x56, 0xd2, 0x00, 0x02, 0x57, 0x78, + 0x00, 0x02, 0x57, 0xe8, 0x00, 0x02, 0x58, 0x56, 0x00, 0x02, 0x59, 0x02, + 0x00, 0x02, 0x59, 0xc2, 0x00, 0x02, 0x5a, 0xfc, 0x00, 0x02, 0x5b, 0x9e, + 0x00, 0x02, 0x5c, 0x62, 0x00, 0x02, 0x5d, 0x08, 0x00, 0x02, 0x5e, 0x20, + 0x00, 0x02, 0x5e, 0xaa, 0x00, 0x02, 0x5f, 0x34, 0x00, 0x02, 0x5f, 0xe6, + 0x00, 0x02, 0x60, 0xb2, 0x00, 0x02, 0x61, 0x6e, 0x00, 0x02, 0x61, 0xc0, + 0x00, 0x02, 0x62, 0x4c, 0x00, 0x02, 0x62, 0xdc, 0x00, 0x02, 0x63, 0x38, + 0x00, 0x02, 0x63, 0xd6, 0x00, 0x02, 0x64, 0xbe, 0x00, 0x02, 0x65, 0x88, + 0x00, 0x02, 0x66, 0xde, 0x00, 0x02, 0x67, 0x66, 0x00, 0x02, 0x67, 0xea, + 0x00, 0x02, 0x68, 0x6e, 0x00, 0x02, 0x69, 0x04, 0x00, 0x02, 0x6a, 0x04, + 0x00, 0x02, 0x6a, 0xd0, 0x00, 0x02, 0x6b, 0xbe, 0x00, 0x02, 0x6c, 0xac, + 0x00, 0x02, 0x6d, 0x1e, 0x00, 0x02, 0x6e, 0x42, 0x00, 0x02, 0x6e, 0xb0, + 0x00, 0x02, 0x6e, 0xe8, 0x00, 0x02, 0x6f, 0xd0, 0x00, 0x02, 0x70, 0x12, + 0x00, 0x02, 0x70, 0x54, 0x00, 0x02, 0x71, 0x3c, 0x00, 0x02, 0x72, 0x7a, + 0x00, 0x02, 0x73, 0xec, 0x00, 0x02, 0x75, 0x0a, 0x00, 0x02, 0x76, 0x18, + 0x00, 0x02, 0x77, 0x88, 0x00, 0x02, 0x78, 0x7c, 0x00, 0x02, 0x79, 0x6e, + 0x00, 0x02, 0x79, 0xe0, 0x00, 0x02, 0x7a, 0x9e, 0x00, 0x02, 0x7b, 0x16, + 0x00, 0x02, 0x7b, 0xcc, 0x00, 0x02, 0x7c, 0xb2, 0x00, 0x02, 0x7d, 0x2a, + 0x00, 0x02, 0x7d, 0xcc, 0x00, 0x02, 0x7f, 0x18, 0x00, 0x02, 0x7f, 0xea, + 0x00, 0x02, 0x7f, 0xfa, 0x00, 0x02, 0x80, 0x70, 0x00, 0x02, 0x81, 0x1e, + 0x00, 0x02, 0x81, 0x84, 0x00, 0x02, 0x82, 0x66, 0x00, 0x02, 0x82, 0xfe, + 0x00, 0x02, 0x83, 0x68, 0x00, 0x02, 0x83, 0xcc, 0x00, 0x02, 0x84, 0x46, + 0x00, 0x02, 0x84, 0x56, 0x00, 0x02, 0x84, 0x66, 0x00, 0x02, 0x84, 0xf8, + 0x00, 0x02, 0x85, 0x90, 0x00, 0x02, 0x86, 0x22, 0x00, 0x02, 0x86, 0xba, + 0x00, 0x02, 0x87, 0xb2, 0x00, 0x02, 0x88, 0xe0, 0x00, 0x02, 0x89, 0xf8, + 0x00, 0x02, 0x8a, 0x5e, 0x00, 0x02, 0x8a, 0xc4, 0x00, 0x02, 0x8b, 0x46, + 0x00, 0x02, 0x8b, 0xe6, 0x00, 0x02, 0x8c, 0x90, 0x00, 0x02, 0x8c, 0xdc, + 0x00, 0x02, 0x8d, 0x52, 0x00, 0x02, 0x8d, 0xe2, 0x00, 0x02, 0x8f, 0x10, + 0x00, 0x02, 0x8f, 0xf0, 0x00, 0x02, 0x90, 0x38, 0x00, 0x02, 0x90, 0xc8, + 0x00, 0x02, 0x91, 0x22, 0x00, 0x02, 0x91, 0xf0, 0x00, 0x02, 0x92, 0xf4, + 0x00, 0x02, 0x93, 0xc8, 0x00, 0x02, 0x94, 0x00, 0x00, 0x02, 0x94, 0x4a, + 0x00, 0x02, 0x94, 0x92, 0x00, 0x02, 0x95, 0x10, 0x00, 0x02, 0x95, 0xa8, + 0x00, 0x02, 0x96, 0x2a, 0x00, 0x02, 0x96, 0x9a, 0x00, 0x02, 0x97, 0x38, + 0x00, 0x02, 0x97, 0xe8, 0x00, 0x02, 0x98, 0xae, 0x00, 0x02, 0x99, 0x20, + 0x00, 0x02, 0x99, 0x8a, 0x00, 0x02, 0x99, 0xf8, 0x00, 0x02, 0x9a, 0xa2, + 0x00, 0x02, 0x9b, 0x0c, 0x00, 0x02, 0x9b, 0x6e, 0x00, 0x02, 0x9b, 0xe4, + 0x00, 0x02, 0x9c, 0x50, 0x00, 0x02, 0x9c, 0x8e, 0x00, 0x02, 0x9d, 0x20, + 0x00, 0x02, 0x9d, 0x90, 0x00, 0x02, 0x9d, 0xfe, 0x00, 0x02, 0x9e, 0x94, + 0x00, 0x02, 0x9f, 0xc4, 0x00, 0x02, 0xa0, 0x44, 0x00, 0x02, 0xa0, 0xe6, + 0x00, 0x02, 0xa1, 0x30, 0x00, 0x02, 0xa1, 0xa2, 0x00, 0x02, 0xa2, 0x36, + 0x00, 0x02, 0xa3, 0x08, 0x00, 0x02, 0xa3, 0xd8, 0x00, 0x02, 0xa4, 0x76, + 0x00, 0x02, 0xa5, 0xcc, 0x00, 0x02, 0xa6, 0x6a, 0x00, 0x02, 0xa7, 0x16, + 0x00, 0x02, 0xa7, 0xce, 0x00, 0x02, 0xa8, 0x88, 0x00, 0x02, 0xa9, 0x72, + 0x00, 0x02, 0xaa, 0x5c, 0x00, 0x02, 0xab, 0xc0, 0x00, 0x02, 0xac, 0x5c, + 0x00, 0x02, 0xac, 0xd0, 0x00, 0x02, 0xad, 0x9c, 0x00, 0x02, 0xae, 0x18, + 0x00, 0x02, 0xae, 0x9e, 0x00, 0x02, 0xaf, 0x2e, 0x00, 0x02, 0xaf, 0x92, + 0x00, 0x02, 0xaf, 0xf8, 0x00, 0x02, 0xb0, 0xa2, 0x00, 0x02, 0xb1, 0x2c, + 0x00, 0x02, 0xb1, 0xa6, 0x00, 0x02, 0xb2, 0x1a, 0x00, 0x02, 0xb2, 0xea, + 0x00, 0x02, 0xb3, 0x40, 0x00, 0x02, 0xb4, 0x16, 0x00, 0x02, 0xb4, 0xfa, + 0x00, 0x02, 0xb5, 0xd4, 0x00, 0x02, 0xb6, 0xda, 0x00, 0x02, 0xb7, 0x88, + 0x00, 0x02, 0xb8, 0x60, 0x00, 0x02, 0xb9, 0x16, 0x00, 0x02, 0xb9, 0xde, + 0x00, 0x02, 0xb9, 0xfc, 0x00, 0x02, 0xba, 0x1a, 0x00, 0x02, 0xba, 0x3a, + 0x00, 0x02, 0xba, 0x98, 0x00, 0x02, 0xbb, 0x30, 0x00, 0x02, 0xbb, 0x4e, + 0x00, 0x02, 0xbb, 0xac, 0x00, 0x02, 0xbc, 0xde, 0x00, 0x02, 0xbc, 0xf6, + 0x00, 0x02, 0xbd, 0x0e, 0x00, 0x02, 0xbd, 0x5c, 0x00, 0x02, 0xbe, 0xde, + 0x00, 0x02, 0xbf, 0xf2, 0x00, 0x02, 0xc0, 0x40, 0x00, 0x02, 0xc0, 0x7c, + 0x00, 0x02, 0xc0, 0xb8, 0x00, 0x02, 0xc1, 0xde, 0x00, 0x02, 0xc2, 0x22, + 0x00, 0x02, 0xc3, 0x3c, 0x00, 0x02, 0xc4, 0xd6, 0x00, 0x02, 0xc5, 0x3a, + 0x00, 0x02, 0xc6, 0x42, 0x00, 0x02, 0xc7, 0x9a, 0x00, 0x02, 0xc7, 0xdc, + 0x00, 0x02, 0xc8, 0x1e, 0x00, 0x02, 0xc8, 0x9c, 0x00, 0x02, 0xc9, 0x48, + 0x00, 0x02, 0xca, 0x28, 0x00, 0x02, 0xcb, 0x20, 0x00, 0x02, 0xcc, 0x20, + 0x00, 0x02, 0xcc, 0x36, 0x00, 0x02, 0xcd, 0xf2, 0x00, 0x02, 0xce, 0x0a, + 0x00, 0x02, 0xce, 0xa2, 0x00, 0x02, 0xcf, 0xd8, 0x00, 0x02, 0xd0, 0xa2, + 0x00, 0x02, 0xd0, 0xba, 0x00, 0x02, 0xd0, 0xd0, 0x00, 0x02, 0xd0, 0xe8, + 0x00, 0x02, 0xd1, 0x00, 0x00, 0x02, 0xd1, 0x18, 0x00, 0x02, 0xd1, 0xf0, + 0x00, 0x02, 0xd2, 0x08, 0x00, 0x02, 0xd2, 0x20, 0x00, 0x02, 0xd2, 0x38, + 0x00, 0x02, 0xd2, 0x50, 0x00, 0x02, 0xd2, 0x68, 0x00, 0x02, 0xd2, 0x80, + 0x00, 0x02, 0xd2, 0x98, 0x00, 0x02, 0xd2, 0xb0, 0x00, 0x02, 0xd2, 0xc8, + 0x00, 0x02, 0xd2, 0xe0, 0x00, 0x02, 0xd3, 0xbc, 0x00, 0x02, 0xd3, 0xd4, + 0x00, 0x02, 0xd4, 0xaa, 0x00, 0x02, 0xd5, 0x50, 0x00, 0x02, 0xd5, 0xd6, + 0x00, 0x02, 0xd6, 0xd0, 0x00, 0x02, 0xd7, 0xd4, 0x00, 0x02, 0xd7, 0xf2, + 0x00, 0x02, 0xd8, 0x86, 0x00, 0x02, 0xd9, 0x14, 0x00, 0x02, 0xd9, 0x24, + 0x00, 0x02, 0xd9, 0x9e, 0x00, 0x02, 0xda, 0x74, 0x00, 0x02, 0xda, 0xe4, + 0x00, 0x02, 0xdb, 0x48, 0x00, 0x02, 0xdb, 0xd8, 0x00, 0x02, 0xdd, 0x0c, + 0x00, 0x02, 0xdd, 0x7e, 0x00, 0x02, 0xde, 0x10, 0x00, 0x02, 0xde, 0x50, + 0x00, 0x02, 0xdf, 0x44, 0x00, 0x02, 0xe0, 0x10, 0x00, 0x02, 0xe0, 0xba, + 0x00, 0x02, 0xe1, 0x68, 0x00, 0x02, 0xe1, 0xca, 0x00, 0x02, 0xe2, 0x7c, + 0x00, 0x02, 0xe3, 0x48, 0x00, 0x02, 0xe4, 0x68, 0x00, 0x02, 0xe4, 0xf6, + 0x00, 0x02, 0xe5, 0xb4, 0x00, 0x02, 0xe6, 0x6c, 0x00, 0x02, 0xe7, 0x3a, + 0x00, 0x02, 0xe7, 0xac, 0x00, 0x02, 0xe8, 0x4a, 0x00, 0x02, 0xe8, 0xa2, + 0x00, 0x02, 0xe8, 0xfe, 0x00, 0x02, 0xe9, 0x96, 0x00, 0x02, 0xea, 0x76, + 0x00, 0x02, 0xeb, 0x24, 0x00, 0x02, 0xeb, 0xd6, 0x00, 0x02, 0xec, 0x4e, + 0x00, 0x02, 0xec, 0xfa, 0x00, 0x02, 0xed, 0x9e, 0x00, 0x02, 0xee, 0x22, + 0x00, 0x02, 0xee, 0xa4, 0x00, 0x02, 0xef, 0x5c, 0x00, 0x02, 0xf0, 0x14, + 0x00, 0x02, 0xf0, 0xae, 0x00, 0x02, 0xf1, 0x40, 0x00, 0x02, 0xf1, 0x50, + 0x00, 0x02, 0xf1, 0x6a, 0x00, 0x02, 0xf1, 0x7a, 0x00, 0x02, 0xf1, 0x8a, + 0x00, 0x02, 0xf2, 0x10, 0x00, 0x02, 0xf2, 0x6a, 0x00, 0x02, 0xf2, 0xc4, + 0x00, 0x02, 0xf3, 0x48, 0x00, 0x02, 0xf3, 0xce, 0x00, 0x02, 0xf3, 0xde, + 0x00, 0x02, 0xf3, 0xee, 0x00, 0x02, 0xf4, 0x38, 0x00, 0x02, 0xf4, 0x86, + 0x00, 0x02, 0xf4, 0xbe, 0x00, 0x02, 0xf4, 0xce, 0x00, 0x02, 0xf4, 0xde, + 0x00, 0x02, 0xf4, 0xf0, 0x00, 0x02, 0xf5, 0x02, 0x00, 0x02, 0xf5, 0x14, + 0x00, 0x02, 0xf5, 0x26, 0x00, 0x02, 0xf5, 0x80, 0x00, 0x02, 0xf5, 0xb4, + 0x00, 0x02, 0xf5, 0xe8, 0x00, 0x02, 0xf6, 0x1c, 0x00, 0x02, 0xf6, 0x62, + 0x00, 0x02, 0xf6, 0xa6, 0x00, 0x02, 0xf7, 0x00, 0x00, 0x02, 0xf7, 0x28, + 0x00, 0x02, 0xf7, 0xa6, 0x00, 0x02, 0xf8, 0x34, 0x00, 0x02, 0xf9, 0x14, + 0x00, 0x02, 0xf9, 0x6e, 0x00, 0x02, 0xfa, 0xa2, 0x00, 0x02, 0xfb, 0x16, + 0x00, 0x02, 0xfb, 0xae, 0x00, 0x02, 0xfb, 0xe6, 0x00, 0x02, 0xfc, 0x2a, + 0x00, 0x02, 0xfc, 0x6e, 0x00, 0x02, 0xfc, 0xb2, 0x00, 0x02, 0xfc, 0xec, + 0x00, 0x02, 0xfd, 0x1a, 0x00, 0x02, 0xfd, 0x46, 0x00, 0x02, 0xfd, 0x72, + 0x00, 0x02, 0xfd, 0x9c, 0x00, 0x02, 0xfd, 0xc4, 0x00, 0x02, 0xfd, 0xf4, + 0x00, 0x02, 0xfe, 0x22, 0x00, 0x02, 0xfe, 0x4a, 0x00, 0x02, 0xfe, 0x7c, + 0x00, 0x02, 0xfe, 0xaa, 0x00, 0x02, 0xfe, 0xd2, 0x00, 0x02, 0xff, 0x02, + 0x00, 0x02, 0xff, 0x34, 0x00, 0x02, 0xff, 0x62, 0x00, 0x02, 0xff, 0x92, + 0x00, 0x02, 0xff, 0xb8, 0x00, 0x02, 0xff, 0xe0, 0x00, 0x03, 0x00, 0x10, + 0x00, 0x03, 0x00, 0x42, 0x00, 0x03, 0x00, 0x74, 0x00, 0x03, 0x00, 0xa2, + 0x00, 0x03, 0x00, 0xd0, 0x00, 0x03, 0x00, 0xf6, 0x00, 0x03, 0x01, 0x28, + 0x00, 0x03, 0x01, 0x5a, 0x00, 0x03, 0x01, 0x8c, 0x00, 0x03, 0x01, 0xbe, + 0x00, 0x03, 0x01, 0xe6, 0x00, 0x03, 0x02, 0x0c, 0x00, 0x03, 0x02, 0x36, + 0x00, 0x03, 0x02, 0x68, 0x00, 0x03, 0x02, 0x9a, 0x00, 0x03, 0x02, 0xcc, + 0x00, 0x03, 0x02, 0xfa, 0x00, 0x03, 0x03, 0x24, 0x00, 0x03, 0x03, 0x52, + 0x00, 0x03, 0x03, 0x7e, 0x00, 0x03, 0x03, 0xa8, 0x00, 0x03, 0x03, 0xd0, + 0x00, 0x03, 0x04, 0x00, 0x00, 0x03, 0x04, 0x32, 0x00, 0x03, 0x04, 0x60, + 0x00, 0x03, 0x04, 0x88, 0x00, 0x03, 0x04, 0xb6, 0x00, 0x03, 0x04, 0xde, + 0x00, 0x03, 0x05, 0x0e, 0x00, 0x03, 0x05, 0x40, 0x00, 0x03, 0x05, 0x72, + 0x00, 0x03, 0x05, 0xa0, 0x00, 0x03, 0x05, 0xce, 0x00, 0x03, 0x05, 0xf4, + 0x00, 0x03, 0x06, 0x24, 0x00, 0x03, 0x06, 0x56, 0x00, 0x03, 0x06, 0x88, + 0x00, 0x03, 0x06, 0xba, 0x00, 0x03, 0x06, 0xe2, 0x00, 0x03, 0x07, 0x08, + 0x00, 0x03, 0x07, 0x32, 0x00, 0x03, 0x07, 0x64, 0x00, 0x03, 0x07, 0x96, + 0x00, 0x03, 0x07, 0xc8, 0x00, 0x03, 0x07, 0xf8, 0x00, 0x03, 0x08, 0x20, + 0x00, 0x03, 0x08, 0x46, 0x00, 0x03, 0x08, 0x74, 0x00, 0x03, 0x08, 0xa6, + 0x00, 0x03, 0x08, 0xd8, 0x00, 0x03, 0x09, 0x08, 0x00, 0x03, 0x09, 0x32, + 0x00, 0x03, 0x09, 0x60, 0x00, 0x03, 0x09, 0x8e, 0x00, 0x03, 0x09, 0xb8, + 0x00, 0x03, 0x09, 0xe0, 0x00, 0x03, 0x0a, 0x10, 0x00, 0x03, 0x0a, 0x42, + 0x00, 0x03, 0x0a, 0x74, 0x00, 0x03, 0x0a, 0xa2, 0x00, 0x03, 0x0a, 0xc8, + 0x00, 0x03, 0x0a, 0xee, 0x00, 0x03, 0x0b, 0x1e, 0x00, 0x03, 0x0b, 0x50, + 0x00, 0x03, 0x0b, 0x82, 0x00, 0x03, 0x0b, 0xb4, 0x00, 0x03, 0x0b, 0xdc, + 0x00, 0x03, 0x0c, 0x02, 0x00, 0x03, 0x0c, 0x2a, 0x00, 0x03, 0x0c, 0x5c, + 0x00, 0x03, 0x0c, 0x8e, 0x00, 0x03, 0x0c, 0xc0, 0x00, 0x03, 0x0c, 0xf0, + 0x00, 0x03, 0x0d, 0x18, 0x00, 0x03, 0x0d, 0x46, 0x00, 0x03, 0x0d, 0x74, + 0x00, 0x03, 0x0d, 0xa6, 0x00, 0x03, 0x0d, 0xd8, 0x00, 0x03, 0x0e, 0x08, + 0x00, 0x03, 0x0e, 0x30, 0x00, 0x03, 0x0e, 0x5e, 0x00, 0x03, 0x0e, 0x86, + 0x00, 0x03, 0x0e, 0xb4, 0x00, 0x03, 0x0e, 0xe6, 0x00, 0x03, 0x0f, 0x16, + 0x00, 0x03, 0x0f, 0x40, 0x00, 0x03, 0x0f, 0x6c, 0x00, 0x03, 0x0f, 0x9a, + 0x00, 0x03, 0x0f, 0xc4, 0x00, 0x03, 0x0f, 0xea, 0x00, 0x03, 0x10, 0x1a, + 0x00, 0x03, 0x10, 0x4c, 0x00, 0x03, 0x10, 0x7e, 0x00, 0x03, 0x10, 0xb0, + 0x00, 0x03, 0x10, 0xda, 0x00, 0x03, 0x11, 0x00, 0x00, 0x03, 0x11, 0x28, + 0x00, 0x03, 0x11, 0x5a, 0x00, 0x03, 0x11, 0x8c, 0x00, 0x03, 0x11, 0xbe, + 0x00, 0x03, 0x11, 0xee, 0x00, 0x03, 0x12, 0x16, 0x00, 0x03, 0x12, 0x44, + 0x00, 0x03, 0x12, 0x72, 0x00, 0x03, 0x12, 0xa4, 0x00, 0x03, 0x12, 0xd6, + 0x00, 0x03, 0x13, 0x06, 0x00, 0x03, 0x13, 0x2e, 0x00, 0x03, 0x13, 0x54, + 0x00, 0x03, 0x13, 0x86, 0x00, 0x03, 0x13, 0xb4, 0x00, 0x03, 0x13, 0xe6, + 0x00, 0x03, 0x14, 0x16, 0x00, 0x03, 0x14, 0x3e, 0x00, 0x03, 0x14, 0x6c, + 0x00, 0x03, 0x14, 0x9c, 0x00, 0x03, 0x14, 0xc4, 0x00, 0x03, 0x14, 0xf2, + 0x00, 0x03, 0x15, 0x22, 0x00, 0x03, 0x15, 0x4c, 0x00, 0x03, 0x15, 0x78, + 0x00, 0x03, 0x15, 0xa4, 0x00, 0x03, 0x15, 0xd2, 0x00, 0x03, 0x16, 0x08, + 0x00, 0x03, 0x16, 0x4e, 0x00, 0x03, 0x16, 0x92, 0x00, 0x03, 0x16, 0xc8, + 0x00, 0x03, 0x16, 0xd8, 0x00, 0x03, 0x17, 0x26, 0x00, 0x03, 0x17, 0x72, + 0x00, 0x03, 0x17, 0xc4, 0x00, 0x03, 0x18, 0x1a, 0x00, 0x03, 0x18, 0xb0, + 0x00, 0x03, 0x18, 0xe4, 0x00, 0x03, 0x19, 0x72, 0x00, 0x03, 0x19, 0xa8, + 0x00, 0x03, 0x19, 0xe6, 0x00, 0x03, 0x19, 0xf8, 0x00, 0x03, 0x1a, 0x3a, + 0x00, 0x03, 0x1a, 0x74, 0x00, 0x03, 0x1a, 0xb8, 0x00, 0x03, 0x1a, 0xf8, + 0x00, 0x03, 0x1b, 0x3e, 0x00, 0x03, 0x1b, 0x78, 0x00, 0x03, 0x1b, 0xec, + 0x00, 0x03, 0x1c, 0x64, 0x00, 0x03, 0x1c, 0xf2, 0x00, 0x03, 0x1d, 0x78, + 0x00, 0x03, 0x1d, 0xc4, 0x00, 0x03, 0x1e, 0x3e, 0x00, 0x03, 0x1e, 0xa4, + 0x00, 0x03, 0x1e, 0xc4, 0x00, 0x03, 0x1e, 0xe4, 0x00, 0x03, 0x1f, 0x04, + 0x00, 0x03, 0x1f, 0x9c, 0x00, 0x03, 0x1f, 0xbc, 0x00, 0x03, 0x1f, 0xcc, + 0x00, 0x03, 0x1f, 0xdc, 0x00, 0x03, 0x1f, 0xec, 0x00, 0x03, 0x1f, 0xfc, + 0x00, 0x03, 0x20, 0x0c, 0x00, 0x03, 0x20, 0x1c, 0x00, 0x03, 0x20, 0x2c, + 0x00, 0x03, 0x20, 0x3c, 0x00, 0x03, 0x20, 0x4c, 0x00, 0x03, 0x20, 0x5c, + 0x00, 0x03, 0x20, 0x6c, 0x00, 0x03, 0x20, 0x7c, 0x00, 0x03, 0x20, 0x8c, + 0x00, 0x03, 0x20, 0x9c, 0x00, 0x03, 0x20, 0xac, 0x00, 0x03, 0x20, 0xbc, + 0x00, 0x03, 0x20, 0xcc, 0x00, 0x03, 0x20, 0xdc, 0x00, 0x03, 0x20, 0xec, + 0x00, 0x03, 0x20, 0xfc, 0x00, 0x03, 0x21, 0x0c, 0x00, 0x03, 0x21, 0x1c, + 0x00, 0x03, 0x21, 0x2c, 0x00, 0x03, 0x21, 0x3c, 0x00, 0x03, 0x21, 0x4c, + 0x00, 0x03, 0x21, 0x5c, 0x00, 0x03, 0x21, 0x6c, 0x00, 0x03, 0x21, 0x7c, + 0x00, 0x03, 0x21, 0x8c, 0x00, 0x03, 0x21, 0x9c, 0x00, 0x03, 0x21, 0xac, + 0x00, 0x03, 0x21, 0xbc, 0x00, 0x03, 0x21, 0xec, 0x00, 0x03, 0x22, 0x1c, + 0x00, 0x03, 0x22, 0x4c, 0x00, 0x03, 0x22, 0x7c, 0x00, 0x03, 0x22, 0xc4, + 0x00, 0x03, 0x23, 0x0c, 0x00, 0x03, 0x23, 0x54, 0x00, 0x03, 0x23, 0x9c, + 0x00, 0x03, 0x23, 0xca, 0x00, 0x03, 0x23, 0xf8, 0x00, 0x03, 0x24, 0x28, + 0x00, 0x03, 0x24, 0x58, 0x00, 0x03, 0x24, 0x68, 0x00, 0x03, 0x24, 0x78, + 0x00, 0x03, 0x24, 0x88, 0x00, 0x03, 0x24, 0x98, 0x00, 0x03, 0x25, 0x36, + 0x00, 0x03, 0x25, 0x60, 0x00, 0x03, 0x25, 0x8a, 0x00, 0x03, 0x26, 0x22, + 0x00, 0x03, 0x26, 0x3a, 0x00, 0x03, 0x26, 0x50, 0x00, 0x03, 0x26, 0xc2, + 0x00, 0x03, 0x27, 0x6c, 0x00, 0x03, 0x27, 0xc4, 0x00, 0x03, 0x28, 0x46, + 0x00, 0x03, 0x29, 0x26, 0x00, 0x03, 0x2a, 0x0e, 0x00, 0x03, 0x2a, 0x1e, + 0x00, 0x03, 0x2b, 0x2a, 0x00, 0x03, 0x2b, 0xe2, 0x00, 0x03, 0x2c, 0x98, + 0x00, 0x03, 0x2d, 0xca, 0x00, 0x03, 0x2e, 0xca, 0x00, 0x03, 0x2f, 0xf2, + 0x00, 0x03, 0x30, 0xe4, 0x00, 0x03, 0x31, 0xcc, 0x00, 0x03, 0x31, 0xdc, + 0x00, 0x03, 0x31, 0xec, 0x00, 0x03, 0x32, 0x12, 0x00, 0x03, 0x32, 0x38, + 0x00, 0x03, 0x33, 0x24, 0x00, 0x03, 0x33, 0xbe, 0x00, 0x03, 0x34, 0x6a, + 0x00, 0x03, 0x34, 0xc4, 0x00, 0x03, 0x35, 0x40, 0x00, 0x03, 0x36, 0x1a, + 0x00, 0x03, 0x37, 0x00, 0x00, 0x03, 0x37, 0x10, 0x00, 0x03, 0x38, 0x22, + 0x00, 0x03, 0x39, 0x4e, 0x00, 0x03, 0x39, 0x72, 0x00, 0x03, 0x39, 0x9c, + 0x00, 0x03, 0x39, 0xc6, 0x00, 0x03, 0x39, 0xec, 0x00, 0x03, 0x3a, 0x10, + 0x00, 0x03, 0x3a, 0x3a, 0x00, 0x03, 0x3a, 0x64, 0x00, 0x03, 0x3a, 0x8a, + 0x00, 0x03, 0x3a, 0xae, 0x00, 0x03, 0x3a, 0xd2, 0x00, 0x03, 0x3a, 0xe8, + 0x00, 0x03, 0x3a, 0xfe, 0x00, 0x03, 0x3b, 0x14, 0x00, 0x03, 0x3b, 0x3e, + 0x00, 0x03, 0x3b, 0x6e, 0x00, 0x03, 0x3b, 0x9e, 0x00, 0x03, 0x3b, 0xca, + 0x00, 0x03, 0x3b, 0xf4, 0x00, 0x03, 0x3c, 0x24, 0x00, 0x03, 0x3c, 0x54, + 0x00, 0x03, 0x3c, 0x80, 0x00, 0x03, 0x3c, 0xa4, 0x00, 0x03, 0x3c, 0xce, + 0x00, 0x03, 0x3c, 0xf8, 0x00, 0x03, 0x3d, 0x1c, 0x00, 0x03, 0x3d, 0x46, + 0x00, 0x03, 0x3d, 0x70, 0x00, 0x03, 0x3d, 0x94, 0x00, 0x03, 0x3d, 0xb8, + 0x00, 0x03, 0x3d, 0xdc, 0x00, 0x03, 0x3e, 0x06, 0x00, 0x03, 0x3e, 0x30, + 0x00, 0x03, 0x3e, 0x56, 0x00, 0x03, 0x3e, 0x7a, 0x00, 0x03, 0x3e, 0xa4, + 0x00, 0x03, 0x3e, 0xce, 0x00, 0x03, 0x3e, 0xf4, 0x00, 0x03, 0x3f, 0x18, + 0x00, 0x03, 0x3f, 0x3c, 0x00, 0x03, 0x3f, 0x52, 0x00, 0x03, 0x3f, 0x7c, + 0x00, 0x03, 0x3f, 0xac, 0x00, 0x03, 0x3f, 0xdc, 0x00, 0x03, 0x40, 0x08, + 0x00, 0x03, 0x40, 0x32, 0x00, 0x03, 0x40, 0x62, 0x00, 0x03, 0x40, 0x92, + 0x00, 0x03, 0x40, 0xbe, 0x00, 0x03, 0x40, 0xe2, 0x00, 0x03, 0x41, 0x0c, + 0x00, 0x03, 0x41, 0x36, 0x00, 0x03, 0x41, 0x5c, 0x00, 0x03, 0x41, 0x80, + 0x00, 0x03, 0x41, 0xaa, 0x00, 0x03, 0x41, 0xd4, 0x00, 0x03, 0x41, 0xfa, + 0x00, 0x03, 0x42, 0x1e, 0x00, 0x03, 0x42, 0x42, 0x00, 0x03, 0x42, 0x58, + 0x00, 0x03, 0x42, 0x6e, 0x00, 0x03, 0x42, 0x92, 0x00, 0x03, 0x42, 0xbc, + 0x00, 0x03, 0x42, 0xe6, 0x00, 0x03, 0x43, 0x0a, 0x00, 0x03, 0x43, 0x34, + 0x00, 0x03, 0x43, 0x5e, 0x00, 0x03, 0x43, 0x82, 0x00, 0x03, 0x43, 0xa6, + 0x00, 0x03, 0x43, 0xca, 0x00, 0x03, 0x43, 0xee, 0x00, 0x03, 0x44, 0x18, + 0x00, 0x03, 0x44, 0x42, 0x00, 0x03, 0x44, 0x68, 0x00, 0x03, 0x44, 0x8c, + 0x00, 0x03, 0x44, 0xb0, 0x00, 0x03, 0x44, 0xc6, 0x00, 0x03, 0x44, 0xdc, + 0x00, 0x03, 0x45, 0x00, 0x00, 0x03, 0x45, 0x2a, 0x00, 0x03, 0x45, 0x54, + 0x00, 0x03, 0x45, 0x7a, 0x00, 0x03, 0x45, 0x9e, 0x00, 0x03, 0x45, 0xc8, + 0x00, 0x03, 0x45, 0xf2, 0x00, 0x03, 0x46, 0x18, 0x00, 0x03, 0x46, 0x3c, + 0x00, 0x03, 0x46, 0x60, 0x00, 0x03, 0x46, 0x76, 0x00, 0x03, 0x46, 0xa0, + 0x00, 0x03, 0x46, 0xd0, 0x00, 0x03, 0x47, 0x00, 0x00, 0x03, 0x47, 0x2c, + 0x00, 0x03, 0x47, 0x56, 0x00, 0x03, 0x47, 0x86, 0x00, 0x03, 0x47, 0xb6, + 0x00, 0x03, 0x47, 0xe2, 0x00, 0x03, 0x47, 0xf8, 0x00, 0x03, 0x48, 0x0e, + 0x00, 0x03, 0x48, 0x24, 0x00, 0x03, 0x48, 0x3a, 0x00, 0x03, 0x48, 0x50, + 0x00, 0x03, 0x48, 0x66, 0x00, 0x03, 0x48, 0x7c, 0x00, 0x03, 0x48, 0x92, + 0x00, 0x03, 0x48, 0xa8, 0x00, 0x03, 0x48, 0xbe, 0x00, 0x03, 0x48, 0xd4, + 0x00, 0x03, 0x48, 0xea, 0x00, 0x03, 0x49, 0x00, 0x00, 0x03, 0x49, 0x16, + 0x00, 0x03, 0x49, 0x32, 0x00, 0x03, 0x49, 0x4e, 0x00, 0x03, 0x49, 0x6a, + 0x00, 0x03, 0x49, 0x86, 0x00, 0x03, 0x49, 0xa2, 0x00, 0x03, 0x49, 0xbe, + 0x00, 0x03, 0x49, 0xda, 0x00, 0x03, 0x49, 0xf6, 0x00, 0x03, 0x4a, 0x12, + 0x00, 0x03, 0x4a, 0x2e, 0x00, 0x03, 0x4a, 0x4a, 0x00, 0x03, 0x4a, 0x60, + 0x00, 0x03, 0x4a, 0x76, 0x00, 0x03, 0x4a, 0x8c, 0x00, 0x03, 0x4a, 0xa2, + 0x00, 0x03, 0x4a, 0xb8, 0x00, 0x03, 0x4a, 0xce, 0x00, 0x03, 0x4a, 0xe4, + 0x00, 0x03, 0x4a, 0xfa, 0x00, 0x03, 0x4b, 0x10, 0x00, 0x03, 0x4b, 0x26, + 0x00, 0x03, 0x4b, 0x3c, 0x00, 0x03, 0x4b, 0x52, 0x00, 0x03, 0x4b, 0x68, + 0x00, 0x03, 0x4b, 0x7e, 0x00, 0x03, 0x4b, 0x94, 0x00, 0x03, 0x4b, 0xaa, + 0x00, 0x03, 0x4b, 0xc0, 0x00, 0x03, 0x4b, 0xd6, 0x00, 0x03, 0x4b, 0xec, + 0x00, 0x03, 0x4c, 0x04, 0x00, 0x03, 0x4c, 0x22, 0x00, 0x03, 0x4c, 0x40, + 0x00, 0x03, 0x4c, 0x5e, 0x00, 0x03, 0x4c, 0x7c, 0x00, 0x03, 0x4c, 0x9a, + 0x00, 0x03, 0x4c, 0xb8, 0x00, 0x03, 0x4c, 0xd6, 0x00, 0x03, 0x4c, 0xf4, + 0x00, 0x03, 0x4d, 0x12, 0x00, 0x03, 0x4d, 0x30, 0x00, 0x03, 0x4d, 0x4e, + 0x00, 0x03, 0x4d, 0x64, 0x00, 0x03, 0x4d, 0x7a, 0x00, 0x03, 0x4d, 0x90, + 0x00, 0x03, 0x4d, 0xa6, 0x00, 0x03, 0x4d, 0xbc, 0x00, 0x03, 0x4d, 0xd2, + 0x00, 0x03, 0x4d, 0xe8, 0x00, 0x03, 0x4d, 0xfe, 0x00, 0x03, 0x4e, 0x14, + 0x00, 0x03, 0x4e, 0x2a, 0x00, 0x03, 0x4e, 0x40, 0x00, 0x03, 0x4e, 0x56, + 0x00, 0x03, 0x4e, 0x6c, 0x00, 0x03, 0x4e, 0x82, 0x00, 0x03, 0x4e, 0x98, + 0x00, 0x03, 0x4e, 0xae, 0x00, 0x03, 0x4e, 0xc4, 0x00, 0x03, 0x4e, 0xda, + 0x00, 0x03, 0x4e, 0xf0, 0x00, 0x03, 0x4f, 0x06, 0x00, 0x03, 0x4f, 0x1c, + 0x00, 0x03, 0x4f, 0x32, 0x00, 0x03, 0x4f, 0x48, 0x00, 0x03, 0x4f, 0x5e, + 0x00, 0x03, 0x4f, 0x74, 0x00, 0x03, 0x4f, 0x8a, 0x00, 0x03, 0x4f, 0xa0, + 0x00, 0x03, 0x4f, 0xb6, 0x00, 0x03, 0x4f, 0xcc, 0x00, 0x03, 0x4f, 0xe2, + 0x00, 0x03, 0x4f, 0xf8, 0x00, 0x03, 0x50, 0x0e, 0x00, 0x03, 0x50, 0x24, + 0x00, 0x03, 0x50, 0x3a, 0x00, 0x03, 0x50, 0x50, 0x00, 0x03, 0x50, 0x66, + 0x00, 0x03, 0x50, 0x7c, 0x00, 0x03, 0x50, 0x92, 0x00, 0x03, 0x50, 0xa8, + 0x00, 0x03, 0x50, 0xbe, 0x00, 0x03, 0x50, 0xd4, 0x00, 0x03, 0x50, 0xea, + 0x00, 0x03, 0x51, 0x00, 0x00, 0x03, 0x51, 0x16, 0x00, 0x03, 0x51, 0x2c, + 0x00, 0x03, 0x51, 0x42, 0x00, 0x03, 0x51, 0x58, 0x00, 0x03, 0x51, 0x6e, + 0x00, 0x03, 0x51, 0x84, 0x00, 0x03, 0x51, 0x9a, 0x00, 0x03, 0x51, 0xb0, + 0x00, 0x03, 0x51, 0xc6, 0x00, 0x03, 0x51, 0xdc, 0x00, 0x03, 0x51, 0xf2, + 0x00, 0x03, 0x52, 0x0e, 0x00, 0x03, 0x52, 0x2a, 0x00, 0x03, 0x52, 0x46, + 0x00, 0x03, 0x52, 0x62, 0x00, 0x03, 0x52, 0x7e, 0x00, 0x03, 0x52, 0x9a, + 0x00, 0x03, 0x52, 0xb6, 0x00, 0x03, 0x52, 0xd2, 0x00, 0x03, 0x52, 0xee, + 0x00, 0x03, 0x53, 0x0a, 0x00, 0x03, 0x53, 0x26, 0x00, 0x03, 0x53, 0x9c, + 0x00, 0x03, 0x54, 0x12, 0x00, 0x03, 0x54, 0x50, 0x00, 0x03, 0x54, 0x8e, + 0x00, 0x03, 0x55, 0x0e, 0x00, 0x03, 0x55, 0xb4, 0x00, 0x03, 0x56, 0x5a, + 0x00, 0x03, 0x57, 0x40, 0x00, 0x03, 0x57, 0xe4, 0x00, 0x03, 0x58, 0x86, + 0x00, 0x03, 0x59, 0x66, 0x00, 0x03, 0x5a, 0x34, 0x00, 0x03, 0x5b, 0x04, + 0x00, 0x03, 0x5c, 0x0e, 0x00, 0x03, 0x5c, 0x7e, 0x00, 0x03, 0x5c, 0x8e, + 0x00, 0x03, 0x5c, 0x9e, 0x00, 0x03, 0x5c, 0xfa, 0x00, 0x03, 0x5d, 0x18, + 0x00, 0x03, 0x5d, 0xec, 0x00, 0x03, 0x5e, 0xa4, 0x00, 0x03, 0x5e, 0xd4, + 0x00, 0x03, 0x5f, 0x40, 0x00, 0x03, 0x60, 0x08, 0x00, 0x03, 0x60, 0xc2, + 0x00, 0x03, 0x60, 0xd8, 0x00, 0x03, 0x61, 0x60, 0x00, 0x03, 0x62, 0x06, + 0x00, 0x03, 0x62, 0x9a, 0x00, 0x03, 0x63, 0x12, 0x00, 0x03, 0x63, 0x92, + 0x00, 0x03, 0x63, 0xfc, 0x00, 0x03, 0x64, 0xc0, 0x00, 0x03, 0x65, 0xda, + 0x00, 0x03, 0x65, 0xf0, 0x00, 0x03, 0x66, 0x58, 0x00, 0x03, 0x66, 0x68, + 0x00, 0x03, 0x66, 0xf2, 0x00, 0x03, 0x67, 0x8e, 0x00, 0x03, 0x68, 0x12, + 0x00, 0x03, 0x68, 0x9e, 0x00, 0x03, 0x69, 0x3c, 0x00, 0x03, 0x69, 0xb8, + 0x00, 0x03, 0x6a, 0xc6, 0x00, 0x03, 0x6b, 0xf2, 0x00, 0x03, 0x6c, 0x02, + 0x00, 0x03, 0x6c, 0x18, 0x00, 0x03, 0x6c, 0xd2, 0x00, 0x03, 0x6d, 0x6e, + 0x00, 0x03, 0x6e, 0x04, 0x00, 0x03, 0x6e, 0x8a, 0x00, 0x03, 0x6f, 0x1e, + 0x00, 0x03, 0x6f, 0xde, 0x00, 0x03, 0x6f, 0xf4, 0x00, 0x03, 0x70, 0x0a, + 0x00, 0x03, 0x70, 0x1a, 0x00, 0x03, 0x70, 0x30, 0x00, 0x03, 0x70, 0xee, + 0x00, 0x03, 0x71, 0x04, 0x00, 0x03, 0x71, 0x1a, 0x00, 0x03, 0x71, 0x30, + 0x00, 0x03, 0x71, 0xf0, 0x00, 0x03, 0x72, 0x06, 0x00, 0x03, 0x72, 0x1c, + 0x00, 0x03, 0x72, 0x32, 0x00, 0x03, 0x72, 0xdc, 0x00, 0x03, 0x72, 0xf2, + 0x00, 0x03, 0x73, 0x08, 0x00, 0x03, 0x73, 0x1e, 0x00, 0x03, 0x73, 0x34, + 0x00, 0x03, 0x73, 0x4a, 0x00, 0x03, 0x73, 0x60, 0x00, 0x03, 0x73, 0xba, + 0x00, 0x03, 0x73, 0xd0, 0x00, 0x03, 0x74, 0x8e, 0x00, 0x03, 0x75, 0x64, + 0x00, 0x03, 0x76, 0x16, 0x00, 0x03, 0x76, 0x96, 0x00, 0x03, 0x77, 0x5e, + 0x00, 0x03, 0x78, 0x4a, 0x00, 0x03, 0x79, 0x18, 0x00, 0x03, 0x79, 0xe4, + 0x00, 0x03, 0x7a, 0x8c, 0x00, 0x03, 0x7b, 0x4a, 0x00, 0x03, 0x7b, 0xda, + 0x00, 0x03, 0x7c, 0xc2, 0x00, 0x03, 0x7d, 0x90, 0x00, 0x03, 0x7e, 0x62, + 0x00, 0x03, 0x7f, 0x32, 0x00, 0x03, 0x7f, 0x5c, 0x00, 0x03, 0x7f, 0xc8, + 0x00, 0x03, 0x80, 0x82, 0x00, 0x03, 0x81, 0x44, 0x00, 0x03, 0x81, 0x5a, + 0x00, 0x03, 0x81, 0xe0, 0x00, 0x03, 0x82, 0x8e, 0x00, 0x03, 0x83, 0x2c, + 0x00, 0x03, 0x83, 0xa4, 0x00, 0x03, 0x84, 0x22, 0x00, 0x03, 0x84, 0x8c, + 0x00, 0x03, 0x85, 0x52, 0x00, 0x03, 0x86, 0x6c, 0x00, 0x03, 0x86, 0x82, + 0x00, 0x03, 0x86, 0xec, 0x00, 0x03, 0x87, 0x4c, 0x00, 0x03, 0x87, 0xcc, + 0x00, 0x03, 0x88, 0x68, 0x00, 0x03, 0x88, 0xea, 0x00, 0x03, 0x89, 0x86, + 0x00, 0x03, 0x8a, 0x30, 0x00, 0x03, 0x8a, 0x9c, 0x00, 0x03, 0x8b, 0xa6, + 0x00, 0x03, 0x8c, 0xcc, 0x00, 0x03, 0x8c, 0xe2, 0x00, 0x03, 0x8d, 0x90, + 0x00, 0x03, 0x8e, 0x2a, 0x00, 0x03, 0x8e, 0xc8, 0x00, 0x03, 0x8f, 0x4c, + 0x00, 0x03, 0x8f, 0xee, 0x00, 0x03, 0x90, 0xa8, 0x00, 0x03, 0x90, 0xb8, + 0x00, 0x03, 0x90, 0xce, 0x00, 0x03, 0x90, 0xe4, 0x00, 0x03, 0x90, 0xf4, + 0x00, 0x03, 0x91, 0x0a, 0x00, 0x03, 0x91, 0xc4, 0x00, 0x03, 0x91, 0xda, + 0x00, 0x03, 0x91, 0xf0, 0x00, 0x03, 0x92, 0x06, 0x00, 0x03, 0x92, 0xce, + 0x00, 0x03, 0x92, 0xe4, 0x00, 0x03, 0x92, 0xfa, 0x00, 0x03, 0x93, 0x10, + 0x00, 0x03, 0x93, 0xc2, 0x00, 0x03, 0x93, 0xd8, 0x00, 0x03, 0x93, 0xee, + 0x00, 0x03, 0x94, 0x04, 0x00, 0x03, 0x94, 0x1a, 0x00, 0x03, 0x94, 0x30, + 0x00, 0x03, 0x94, 0x46, 0x00, 0x03, 0x94, 0xa0, 0x00, 0x03, 0x94, 0xb6, + 0x00, 0x03, 0x95, 0x76, 0x00, 0x03, 0x96, 0x54, 0x00, 0x03, 0x97, 0x1a, + 0x00, 0x03, 0x97, 0x2a, 0x00, 0x03, 0x98, 0x0e, 0x00, 0x03, 0x99, 0x00, + 0x00, 0x03, 0x99, 0xd2, 0x00, 0x03, 0x9a, 0x94, 0x00, 0x03, 0x9b, 0x40, + 0x00, 0x03, 0x9b, 0xfa, 0x00, 0x03, 0x9c, 0x8c, 0x00, 0x03, 0x9d, 0x7e, + 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, + 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, + 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, + 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x46, + 0x00, 0x03, 0x9e, 0x46, 0x00, 0x03, 0x9e, 0x6e, 0x00, 0x03, 0x9e, 0xf4, + 0x00, 0x03, 0x9f, 0x1e, 0x00, 0x03, 0x9f, 0x2e, 0x00, 0x03, 0x9f, 0x48, + 0x00, 0x03, 0x9f, 0x70, 0x00, 0x03, 0x9f, 0xe4, 0x00, 0x03, 0xa0, 0xb4, + 0x00, 0x03, 0xa0, 0xfc, 0x00, 0x03, 0xa1, 0x0c, 0x00, 0x03, 0xa1, 0xb2, + 0x00, 0x03, 0xa1, 0xc4, 0x00, 0x03, 0xa2, 0x22, 0x00, 0x03, 0xa2, 0xf6, + 0x00, 0x03, 0xa4, 0xc0, 0x00, 0x03, 0xa5, 0xc2, 0x00, 0x03, 0xa5, 0xd8, + 0x00, 0x03, 0xa7, 0x0e, 0x00, 0x03, 0xa8, 0x94, 0x00, 0x03, 0xaa, 0x40, + 0x00, 0x03, 0xaa, 0xe6, 0x00, 0x03, 0xab, 0x8a, 0x00, 0x03, 0xac, 0x82, + 0x00, 0x03, 0xae, 0x9a, 0x00, 0x03, 0xaf, 0xe4, 0x00, 0x03, 0xb1, 0x66, + 0x00, 0x03, 0xb2, 0xc2, 0x00, 0x03, 0xb3, 0xc0, 0x00, 0x03, 0xb5, 0x0a, + 0x00, 0x03, 0xb6, 0x34, 0x00, 0x03, 0xb7, 0x5e, 0x00, 0x03, 0xb8, 0xc4, + 0x00, 0x03, 0xba, 0x14, 0x00, 0x03, 0xbb, 0xa0, 0x00, 0x03, 0xbc, 0x9e, + 0x00, 0x03, 0xbd, 0xd8, 0x00, 0x03, 0xbf, 0x6a, 0x00, 0x03, 0xc0, 0x88, + 0x00, 0x03, 0xc1, 0x92, 0x00, 0x03, 0xc3, 0x00, 0x00, 0x03, 0xc4, 0x02, + 0x00, 0x03, 0xc4, 0x84, 0x00, 0x03, 0xc5, 0x54, 0x00, 0x03, 0xc6, 0x44, + 0x00, 0x03, 0xc7, 0x1a, 0x00, 0x03, 0xc8, 0x1c, 0x00, 0x03, 0xc8, 0x90, + 0x00, 0x03, 0xc9, 0x98, 0x00, 0x03, 0xca, 0x22, 0x00, 0x03, 0xcb, 0x9a, + 0x00, 0x03, 0xcc, 0x8e, 0x00, 0x03, 0xcd, 0x64, 0x00, 0x03, 0xce, 0x76, + 0x00, 0x03, 0xcf, 0x08, 0x00, 0x03, 0xcf, 0x96, 0x00, 0x03, 0xd0, 0x0c, + 0x00, 0x03, 0xd0, 0x2a, 0x00, 0x03, 0xd0, 0x98, 0x00, 0x03, 0xd0, 0xb8, + 0x00, 0x03, 0xd1, 0x26, 0x00, 0x03, 0xd1, 0x4e, 0x00, 0x03, 0xd1, 0x60, + 0x00, 0x03, 0xd1, 0x7c, 0x00, 0x03, 0xd2, 0x42, 0x00, 0x03, 0xd2, 0xca, + 0x00, 0x03, 0xd4, 0xcc, 0x00, 0x03, 0xd6, 0x18, 0x00, 0x03, 0xd7, 0x30, + 0x00, 0x03, 0xd8, 0x0c, 0x00, 0x03, 0xd8, 0x9c, 0x00, 0x03, 0xd9, 0x5a, + 0x00, 0x03, 0xd9, 0xf2, 0x00, 0x03, 0xda, 0xa6, 0x00, 0x03, 0xdc, 0x3a, + 0x00, 0x03, 0xdc, 0x4a, 0x00, 0x03, 0xdc, 0x60, 0x00, 0x03, 0xdd, 0x8a, + 0x00, 0x03, 0xde, 0x88, 0x00, 0x03, 0xe0, 0x7e, 0x00, 0x03, 0xe0, 0x94, + 0x00, 0x03, 0xe1, 0x32, 0x00, 0x03, 0xe1, 0xf8, 0x00, 0x03, 0xe2, 0xd8, + 0x00, 0x03, 0xe3, 0x60, 0x00, 0x03, 0xe4, 0x14, 0x00, 0x03, 0xe4, 0xb6, + 0x00, 0x03, 0xe5, 0x74, 0x00, 0x03, 0xe7, 0x18, 0x00, 0x03, 0xe7, 0x28, + 0x00, 0x03, 0xe7, 0x3e, 0x00, 0x03, 0xe8, 0x62, 0x00, 0x03, 0xe9, 0x5e, + 0x00, 0x03, 0xeb, 0x36, 0x00, 0x03, 0xeb, 0x5a, 0x00, 0x03, 0xeb, 0xee, + 0x00, 0x03, 0xec, 0x64, 0x00, 0x03, 0xec, 0x74, 0x00, 0x03, 0xec, 0x84, + 0x00, 0x03, 0xec, 0x94, 0x00, 0x03, 0xec, 0xa4, 0x00, 0x03, 0xec, 0xb4, + 0x00, 0x03, 0xec, 0xc4, 0x00, 0x03, 0xed, 0x24, 0x00, 0x03, 0xed, 0x34, + 0x00, 0x03, 0xed, 0x44, 0x00, 0x03, 0xed, 0x54, 0x00, 0x03, 0xed, 0x64, + 0x00, 0x03, 0xed, 0xb0, 0x00, 0x03, 0xed, 0xc0, 0x00, 0x03, 0xed, 0xd2, + 0x00, 0x03, 0xed, 0xe2, 0x00, 0x03, 0xef, 0x0e, 0x00, 0x03, 0xef, 0x6e, + 0x00, 0x03, 0xef, 0xd0, 0x00, 0x03, 0xef, 0xd0, 0x00, 0x03, 0xf0, 0xf0, + 0x00, 0x03, 0xf0, 0xf0, 0x00, 0x03, 0xf1, 0x8a, 0x00, 0x03, 0xf1, 0x9a, + 0x00, 0x03, 0xf1, 0xdc, 0x00, 0x03, 0xf2, 0x26, 0x00, 0x03, 0xf2, 0x68, + 0x00, 0x03, 0xf2, 0xd0, 0x00, 0x03, 0xf3, 0x16, 0x00, 0x03, 0xf3, 0x5c, + 0x00, 0x03, 0xf3, 0xc6, 0x00, 0x03, 0xf4, 0x2e, 0x00, 0x03, 0xf4, 0x2e, + 0x00, 0x03, 0xf4, 0x9e, 0x00, 0x03, 0xf5, 0x0a, 0x00, 0x03, 0xf5, 0x7a, + 0x00, 0x03, 0xf5, 0xea, 0x00, 0x03, 0xf6, 0x5c, 0x00, 0x03, 0xf6, 0xca, + 0x00, 0x03, 0xf7, 0x2c, 0x00, 0x03, 0xf7, 0x8e, 0x00, 0x03, 0xf8, 0x44, + 0x00, 0x03, 0xf9, 0x0e, 0x00, 0x03, 0xf9, 0x76, 0x00, 0x03, 0xf9, 0xdc, + 0x00, 0x03, 0xfa, 0x5c, 0x00, 0x03, 0xfb, 0x7c, 0x00, 0x03, 0xfc, 0x40, + 0x00, 0x03, 0xfd, 0x28, 0x00, 0x03, 0xfd, 0xb8, 0x00, 0x03, 0xfe, 0x68, + 0x00, 0x03, 0xff, 0x2e, 0x00, 0x03, 0xff, 0xb4, 0x00, 0x03, 0xff, 0xe8, + 0x00, 0x04, 0x00, 0x60, 0x00, 0x04, 0x00, 0xe4, 0x00, 0x04, 0x02, 0x10, + 0x00, 0x04, 0x02, 0xac, 0x00, 0x04, 0x02, 0xd4, 0x00, 0x04, 0x03, 0x12, + 0x00, 0x04, 0x03, 0x4e, 0x00, 0x04, 0x03, 0x76, 0x00, 0x04, 0x04, 0x6e, + 0x00, 0x04, 0x05, 0x34, 0x00, 0x04, 0x06, 0x22, 0x00, 0x04, 0x06, 0xf2, + 0x00, 0x04, 0x07, 0xe8, 0x00, 0x04, 0x08, 0xd0, 0x00, 0x04, 0x09, 0xb8, + 0x00, 0x04, 0x0a, 0x88, 0x00, 0x04, 0x0b, 0x34, 0x00, 0x04, 0x0b, 0xb8, + 0x00, 0x04, 0x0c, 0x20, 0x00, 0x04, 0x0c, 0x8a, 0x00, 0x04, 0x0c, 0xfa, + 0x00, 0x04, 0x0d, 0x66, 0x00, 0x04, 0x0e, 0x06, 0x00, 0x04, 0x0e, 0xd4, + 0x00, 0x04, 0x0f, 0xdc, 0x00, 0x04, 0x10, 0x8a, 0x00, 0x04, 0x11, 0x74, + 0x00, 0x04, 0x12, 0xa8, 0x00, 0x04, 0x13, 0x62, 0x00, 0x04, 0x14, 0x50, + 0x00, 0x04, 0x15, 0x6a, 0x00, 0x04, 0x15, 0xf0, 0x00, 0x04, 0x17, 0x5a, + 0x00, 0x04, 0x18, 0x72, 0x00, 0x04, 0x18, 0x88, 0x00, 0x04, 0x18, 0x9e, + 0x00, 0x04, 0x18, 0xb4, 0x00, 0x04, 0x18, 0xca, 0x00, 0x04, 0x18, 0xe0, + 0x00, 0x04, 0x18, 0xf6, 0x00, 0x04, 0x19, 0x0c, 0x00, 0x04, 0x1a, 0x3a, + 0x00, 0x04, 0x1a, 0xf8, 0x00, 0x04, 0x1c, 0x00, 0x00, 0x04, 0x1d, 0x52, + 0x00, 0x04, 0x1e, 0x34, 0x00, 0x04, 0x1f, 0x3c, 0x00, 0x04, 0x20, 0x76, + 0x00, 0x04, 0x21, 0x3e, 0x00, 0x04, 0x22, 0xca, 0x00, 0x04, 0x24, 0x0a, + 0x00, 0x04, 0x25, 0x44, 0x00, 0x04, 0x26, 0x3a, 0x00, 0x04, 0x27, 0x78, + 0x00, 0x04, 0x28, 0xd8, 0x00, 0x04, 0x29, 0xf6, 0x00, 0x04, 0x2b, 0x34, + 0x00, 0x04, 0x2c, 0x92, 0x00, 0x04, 0x2d, 0x92, 0x00, 0x04, 0x2f, 0x38, + 0x00, 0x04, 0x30, 0x94, 0x00, 0x04, 0x32, 0x0c, 0x00, 0x04, 0x33, 0x0c, + 0x00, 0x04, 0x33, 0xc6, 0x00, 0x04, 0x34, 0xc8, 0x00, 0x04, 0x35, 0xf2, + 0x00, 0x04, 0x36, 0xd6, 0x00, 0x04, 0x37, 0xd6, 0x00, 0x04, 0x38, 0xf8, + 0x00, 0x04, 0x39, 0xba, 0x00, 0x04, 0x3b, 0x22, 0x00, 0x04, 0x3c, 0x44, + 0x00, 0x04, 0x3d, 0x86, 0x00, 0x04, 0x3e, 0x0e, 0x00, 0x04, 0x3e, 0x56, + 0x00, 0x04, 0x3e, 0xfc, 0x00, 0x04, 0x3f, 0xa0, 0x00, 0x04, 0x00, 0x4e, + 0x00, 0x00, 0x04, 0x19, 0x05, 0x1b, 0x00, 0x03, 0x00, 0x07, 0x00, 0x20, + 0x00, 0x34, 0x00, 0x5c, 0xbc, 0x00, 0x21, 0x01, 0xbf, 0x00, 0x2b, 0x00, + 0x0d, 0x01, 0x5a, 0xb4, 0x10, 0x10, 0x08, 0x1a, 0x07, 0xbe, 0x01, 0x57, + 0x00, 0x02, 0x00, 0x14, 0x01, 0x69, 0x00, 0x08, 0x00, 0x00, 0x01, 0x58, + 0x40, 0x18, 0x04, 0x02, 0x1a, 0xb1, 0x1b, 0x06, 0x0e, 0x30, 0x30, 0x26, + 0x10, 0x9b, 0x0d, 0x0d, 0x04, 0x06, 0x9c, 0x03, 0x41, 0x26, 0x04, 0x9c, + 0x01, 0x43, 0x00, 0x3f, 0xfd, 0xce, 0x3f, 0xed, 0x11, 0x39, 0x10, 0xed, + 0x12, 0x39, 0x2f, 0xce, 0x10, 0xde, 0xed, 0x01, 0x2f, 0xdd, 0xed, 0xde, + 0xed, 0x10, 0xfd, 0xc6, 0x11, 0x39, 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, + 0x01, 0x11, 0x21, 0x11, 0x01, 0x11, 0x21, 0x11, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x07, 0x23, 0x03, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x23, 0x35, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x04, 0x19, + 0xfc, 0x35, 0x03, 0x39, 0xfd, 0x56, 0x02, 0x5a, 0x27, 0x49, 0x69, 0x41, + 0x06, 0x8a, 0x0c, 0x7b, 0x49, 0x42, 0x1d, 0x3f, 0x61, 0x43, 0x39, 0x37, + 0x72, 0xa5, 0x69, 0x32, 0xf8, 0x11, 0x1e, 0x27, 0x16, 0x16, 0x28, 0x1e, + 0x11, 0x11, 0x1e, 0x28, 0x16, 0x16, 0x27, 0x1e, 0x11, 0x05, 0x1b, 0xfa, + 0xe5, 0x05, 0x1b, 0xfb, 0x6a, 0x04, 0x11, 0xfb, 0xef, 0x02, 0xbd, 0x37, + 0x5c, 0x43, 0x26, 0x85, 0x01, 0x02, 0x42, 0x2e, 0x1f, 0x38, 0x29, 0x18, + 0x97, 0x31, 0x50, 0x68, 0xfd, 0xa4, 0x16, 0x26, 0x1d, 0x10, 0x10, 0x1d, + 0x26, 0x16, 0x16, 0x27, 0x1c, 0x11, 0x11, 0x1c, 0x27, 0x00, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, 0x05, 0x1b, 0x00, 0x07, 0x00, 0x0a, + 0x00, 0x99, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0x40, 0x2b, 0x0a, 0x01, + 0x00, 0x08, 0x00, 0x07, 0x09, 0x02, 0x03, 0x08, 0x03, 0x04, 0x20, 0x06, + 0x05, 0x08, 0x08, 0x0c, 0x0b, 0x0a, 0x09, 0xde, 0x40, 0x01, 0x08, 0x30, + 0x08, 0x05, 0x02, 0x02, 0x03, 0x06, 0x05, 0x41, 0x07, 0x07, 0x00, 0x00, + 0x03, 0x04, 0x04, 0x03, 0x43, 0x00, 0x18, 0x3f, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0x33, 0x2f, 0x3f, 0x33, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x38, 0x33, + 0x1a, 0x4d, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x33, 0x33, + 0x1a, 0x18, 0xcd, 0x32, 0x7d, 0x87, 0xc4, 0xc4, 0x01, 0x18, 0xcd, 0x32, + 0x7d, 0x87, 0xc4, 0xc4, 0x31, 0x30, 0x1b, 0x40, 0x18, 0x0a, 0x09, 0xde, + 0x40, 0x01, 0x08, 0x30, 0x08, 0x05, 0x02, 0x02, 0x03, 0x06, 0x05, 0x41, + 0x07, 0x07, 0x00, 0x00, 0x03, 0x04, 0x04, 0x03, 0x43, 0x00, 0x18, 0x3f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x3f, 0x33, 0x12, 0x39, 0x2f, + 0x12, 0x39, 0x38, 0x33, 0x1a, 0x4d, 0xed, 0x32, 0x31, 0x30, 0x59, 0x21, + 0x03, 0x21, 0x03, 0x23, 0x01, 0x21, 0x01, 0x01, 0x03, 0x21, 0x03, 0x52, + 0x48, 0xfe, 0x38, 0x4a, 0xf4, 0x01, 0x83, 0x01, 0x58, 0x01, 0x83, 0xfd, + 0xc7, 0xac, 0x01, 0x56, 0x01, 0x02, 0xfe, 0xfe, 0x05, 0x1b, 0xfa, 0xe5, + 0x04, 0x2b, 0xfd, 0xa0, 0x00, 0x03, 0x00, 0x81, 0x00, 0x00, 0x04, 0x19, + 0x05, 0x1b, 0x00, 0x12, 0x00, 0x1f, 0x00, 0x2a, 0x00, 0x7d, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xb1, 0x1a, 0x2a, 0xbb, 0x01, 0xf3, 0x00, 0x00, + 0x00, 0x13, 0x01, 0xff, 0xb5, 0x0a, 0x00, 0x05, 0x05, 0x00, 0x0f, 0xb8, + 0x02, 0x06, 0x40, 0x16, 0x25, 0x00, 0x0a, 0x1a, 0xd5, 0x00, 0x29, 0x01, + 0x18, 0x03, 0x29, 0x29, 0x00, 0x19, 0xda, 0x01, 0x41, 0x2a, 0xde, 0x40, + 0x00, 0x43, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x5f, 0x5e, 0x5d, 0xed, 0x39, 0x01, 0x2f, 0xd4, 0xed, 0x11, 0x39, + 0x2f, 0x12, 0x39, 0xed, 0x10, 0xfd, 0xc4, 0x31, 0x30, 0x1b, 0x40, 0x14, + 0x0a, 0x1a, 0xd5, 0x00, 0x29, 0x01, 0x18, 0x03, 0x29, 0x29, 0x00, 0x19, + 0xda, 0x01, 0x41, 0x2a, 0xde, 0x40, 0x00, 0x43, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0xed, 0x39, + 0x31, 0x30, 0x59, 0x33, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x1e, 0x03, 0x15, 0x14, 0x04, 0x23, 0x13, 0x34, 0x2e, 0x02, 0x23, + 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x26, 0x23, 0x23, 0x11, 0x81, 0x01, 0xa6, 0xdf, 0xdf, 0x17, 0x30, 0x48, + 0x31, 0x31, 0x59, 0x43, 0x27, 0xfe, 0xf4, 0xfd, 0xd5, 0x18, 0x35, 0x53, + 0x3b, 0x95, 0x95, 0x3c, 0x53, 0x35, 0x17, 0xc4, 0x3b, 0x59, 0x3c, 0x1f, + 0x7f, 0x83, 0x99, 0x05, 0x1b, 0x9c, 0x9e, 0x31, 0x5d, 0x4e, 0x3c, 0x11, + 0x08, 0x2f, 0x4b, 0x66, 0x3f, 0xc8, 0xc9, 0x03, 0xb6, 0x25, 0x3c, 0x2a, + 0x17, 0xfe, 0xa6, 0x1d, 0x33, 0x42, 0xfd, 0x39, 0x1e, 0x35, 0x48, 0x29, + 0x55, 0x60, 0xfe, 0x87, 0x00, 0x01, 0x00, 0x52, 0xff, 0xee, 0x03, 0xec, + 0x05, 0x2d, 0x00, 0x25, 0x00, 0x79, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xb2, 0x13, 0x25, 0x1b, 0xbe, 0x02, 0x1d, 0x00, 0x08, 0x00, 0x12, 0x01, + 0x24, 0x00, 0x13, 0x00, 0x16, 0x01, 0x12, 0xb2, 0x0d, 0x42, 0x00, 0xb8, + 0x01, 0x1d, 0xb6, 0x00, 0x25, 0x01, 0x0d, 0x03, 0x25, 0x20, 0xb8, 0x01, + 0x16, 0xb2, 0x40, 0x03, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, + 0x5f, 0x5e, 0x5d, 0xed, 0x3f, 0xfd, 0xd6, 0xed, 0x01, 0x2f, 0xed, 0xd4, + 0xc4, 0x31, 0x30, 0x1b, 0xbc, 0x00, 0x12, 0x01, 0x24, 0x00, 0x13, 0x00, + 0x16, 0x01, 0x12, 0xb2, 0x0d, 0x42, 0x00, 0xb8, 0x01, 0x1d, 0xb6, 0x00, + 0x25, 0x01, 0x0d, 0x03, 0x25, 0x20, 0xb8, 0x01, 0x16, 0xb2, 0x40, 0x03, + 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0x5f, 0x5e, 0x5d, 0xed, + 0x3f, 0xfd, 0xd6, 0xed, 0x31, 0x30, 0x59, 0x25, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x37, 0x03, 0xec, 0x57, 0xa3, 0x58, 0x8d, 0xd9, 0x95, + 0x4d, 0x54, 0x9c, 0xdf, 0x8b, 0x2d, 0x4f, 0x4c, 0x4e, 0x2a, 0x55, 0x9a, + 0x3f, 0x5d, 0x84, 0x55, 0x28, 0x29, 0x56, 0x86, 0x5c, 0x21, 0x4d, 0x4f, + 0x4d, 0x21, 0x33, 0x23, 0x22, 0x53, 0xa4, 0xf3, 0xa1, 0xa5, 0x01, 0x01, + 0xb1, 0x5d, 0x04, 0x0b, 0x12, 0x0e, 0xf4, 0x28, 0x22, 0x43, 0x79, 0xa7, + 0x64, 0x6a, 0xa7, 0x74, 0x3d, 0x0d, 0x15, 0x1d, 0x0f, 0x00, 0x00, 0x02, + 0x00, 0x56, 0x00, 0x00, 0x04, 0x31, 0x05, 0x1b, 0x00, 0x0c, 0x00, 0x17, + 0x00, 0x43, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xbc, 0x00, 0x00, 0x02, + 0x05, 0x00, 0x0d, 0x00, 0x14, 0x01, 0xf5, 0x40, 0x0a, 0x06, 0x13, 0xe3, + 0x07, 0x41, 0x14, 0xe3, 0x40, 0x06, 0x43, 0x00, 0x18, 0x3f, 0x1a, 0x4d, + 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x1b, 0x40, + 0x09, 0x13, 0xe3, 0x07, 0x41, 0x14, 0xe3, 0x40, 0x06, 0x43, 0x00, 0x18, + 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x21, 0x11, 0x21, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, + 0x23, 0x23, 0x11, 0x33, 0x32, 0x36, 0x04, 0x31, 0x4b, 0x9f, 0xf8, 0xad, + 0xfe, 0xb4, 0x01, 0x83, 0x96, 0xe1, 0x96, 0x4b, 0xfe, 0xf8, 0x22, 0x51, + 0x88, 0x65, 0x7d, 0x6c, 0xb5, 0xbc, 0x02, 0x9e, 0x98, 0xf8, 0xaf, 0x5f, + 0x05, 0x1b, 0x4b, 0x9c, 0xf0, 0xb6, 0x6a, 0xa6, 0x73, 0x3c, 0xfc, 0x81, + 0xd8, 0x00, 0x00, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x03, 0xcb, 0x05, 0x1b, + 0x00, 0x0b, 0x00, 0x77, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb7, 0x07, + 0x07, 0x00, 0x03, 0x0a, 0x00, 0x05, 0x09, 0xb8, 0x01, 0xf9, 0x40, 0x0c, + 0x00, 0x05, 0xe0, 0x00, 0x08, 0x01, 0x18, 0x03, 0x08, 0x08, 0x00, 0x04, + 0xb8, 0x01, 0x0b, 0xb2, 0x01, 0x41, 0x09, 0xb8, 0x01, 0x0b, 0xb2, 0x40, + 0x00, 0x43, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x5f, 0x5e, 0x5d, 0xed, 0x01, 0x2f, 0xfd, 0xc4, 0x10, 0xdd, 0xc4, + 0x12, 0x39, 0x2f, 0x31, 0x30, 0x1b, 0x40, 0x0b, 0x05, 0xe0, 0x00, 0x08, + 0x01, 0x18, 0x03, 0x08, 0x08, 0x00, 0x04, 0xb8, 0x01, 0x0b, 0xb2, 0x01, + 0x41, 0x09, 0xb8, 0x01, 0x0b, 0xb2, 0x40, 0x00, 0x43, 0x00, 0x18, 0x3f, + 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0xed, + 0x31, 0x30, 0x59, 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, + 0x11, 0x21, 0x15, 0xb8, 0x03, 0x13, 0xfd, 0xe7, 0x02, 0x00, 0xfe, 0x00, + 0x02, 0x19, 0x05, 0x1b, 0xd0, 0xfe, 0xbb, 0xcb, 0xfe, 0x95, 0xd0, 0x00, + 0x00, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x03, 0xbc, 0x05, 0x1b, 0x00, 0x09, + 0x00, 0x55, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb5, 0x02, 0x02, 0x08, + 0x06, 0x01, 0x04, 0xb8, 0x01, 0xf9, 0xb6, 0x06, 0x01, 0xdf, 0x04, 0x04, + 0x06, 0x00, 0xb8, 0x01, 0x0b, 0xb4, 0x40, 0x07, 0x41, 0x06, 0x43, 0x00, + 0x18, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, + 0xfd, 0xc4, 0x10, 0xc4, 0x39, 0x2f, 0x31, 0x30, 0x1b, 0xb5, 0x01, 0xdf, + 0x04, 0x04, 0x06, 0x00, 0xb8, 0x01, 0x0b, 0xb4, 0x40, 0x07, 0x41, 0x06, + 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x31, 0x30, 0x59, 0x01, 0x11, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, + 0x15, 0x01, 0xb2, 0x01, 0xee, 0xfe, 0x12, 0xfa, 0x03, 0x04, 0x04, 0x4b, + 0xfe, 0x96, 0xca, 0xfd, 0xe9, 0x05, 0x1b, 0xd0, 0x00, 0x01, 0x00, 0x2f, + 0xff, 0xe9, 0x04, 0x0a, 0x05, 0x31, 0x00, 0x27, 0x00, 0x83, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xb1, 0x14, 0x02, 0xb8, 0x01, 0xd2, 0xb5, 0x27, + 0x01, 0x01, 0x1c, 0x27, 0x1c, 0xbb, 0x02, 0x04, 0x00, 0x0b, 0x00, 0x13, + 0x01, 0x23, 0x40, 0x09, 0x14, 0x14, 0x17, 0x01, 0xe0, 0x27, 0x27, 0x06, + 0x17, 0xb8, 0x01, 0x15, 0xb2, 0x10, 0x42, 0x21, 0xb8, 0x01, 0x15, 0xb2, + 0x40, 0x06, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0xc4, 0x11, + 0x39, 0x2f, 0x10, 0xfd, 0xc6, 0x31, 0x30, 0x1b, 0xb9, 0x00, 0x13, 0x01, + 0x23, 0x40, 0x09, 0x14, 0x14, 0x17, 0x01, 0xe0, 0x27, 0x27, 0x06, 0x17, + 0xb8, 0x01, 0x15, 0xb2, 0x10, 0x42, 0x21, 0xb8, 0x01, 0x15, 0xb2, 0x40, + 0x06, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x59, 0x01, 0x35, 0x21, + 0x11, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x02, 0x39, 0x01, + 0xd1, 0x5a, 0xc4, 0x73, 0x88, 0xd9, 0x98, 0x51, 0x55, 0xa3, 0xed, 0x98, + 0x5a, 0xab, 0x55, 0x4a, 0xb3, 0x5b, 0x5c, 0x8d, 0x5f, 0x31, 0x26, 0x55, + 0x86, 0x60, 0x17, 0x22, 0x1e, 0x1b, 0x0f, 0x02, 0x29, 0xcb, 0xfd, 0x47, + 0x2a, 0x28, 0x54, 0xa6, 0xf6, 0xa2, 0xa3, 0x01, 0x02, 0xb3, 0x5e, 0x1f, + 0x1a, 0xf3, 0x23, 0x2d, 0x40, 0x76, 0xac, 0x6c, 0x68, 0xa7, 0x75, 0x3e, + 0x03, 0x06, 0x08, 0x05, 0x01, 0x4e, 0x00, 0x01, 0x00, 0x5f, 0x00, 0x00, + 0x04, 0x07, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x75, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb1, 0x07, 0x03, 0xbb, 0x01, 0xf5, 0x00, 0x04, 0x00, 0x0b, + 0x01, 0xf5, 0xb7, 0x08, 0x00, 0x04, 0x0b, 0x43, 0x0a, 0x41, 0x07, 0xb8, + 0x01, 0x0e, 0x40, 0x0f, 0x40, 0x0f, 0x02, 0x1f, 0x02, 0x02, 0x0c, 0x03, + 0x02, 0x02, 0x04, 0x05, 0x41, 0x04, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x12, + 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0x1a, 0x4d, 0xed, 0x3f, 0x3f, 0x01, 0x2f, + 0xd4, 0xc4, 0xed, 0x10, 0xfd, 0xc4, 0x31, 0x30, 0x1b, 0xb4, 0x0b, 0x43, + 0x0a, 0x41, 0x07, 0xb8, 0x01, 0x0e, 0x40, 0x0f, 0x40, 0x0f, 0x02, 0x1f, + 0x02, 0x02, 0x0c, 0x03, 0x02, 0x02, 0x04, 0x05, 0x41, 0x04, 0x43, 0x00, + 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0x1a, 0x4d, 0xed, + 0x3f, 0x3f, 0x31, 0x30, 0x59, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, + 0x11, 0x21, 0x11, 0x33, 0x11, 0x03, 0x11, 0xfe, 0x44, 0xf6, 0xf6, 0x01, + 0xbc, 0xf6, 0x02, 0x39, 0xfd, 0xc7, 0x05, 0x1b, 0xfd, 0xf3, 0x02, 0x0d, + 0xfa, 0xe5, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x1b, + 0x00, 0x0b, 0x00, 0x53, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb5, 0x03, + 0x06, 0x0a, 0x01, 0x09, 0x05, 0xb8, 0x01, 0xf9, 0x40, 0x0f, 0x0a, 0x0a, + 0x0c, 0x0d, 0x05, 0x0a, 0xe0, 0x08, 0x43, 0x04, 0x0b, 0xde, 0x40, 0x01, + 0x41, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x11, + 0x12, 0x01, 0x39, 0x2f, 0xfd, 0xd4, 0xc4, 0x10, 0xd4, 0xc4, 0x31, 0x30, + 0x1b, 0x40, 0x0b, 0x05, 0x0a, 0xe0, 0x08, 0x43, 0x04, 0x0b, 0xde, 0x40, + 0x01, 0x41, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x3f, 0xed, 0x32, + 0x31, 0x30, 0x59, 0x13, 0x35, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, + 0x35, 0x21, 0x11, 0x96, 0x03, 0x3a, 0xfe, 0xe0, 0x01, 0x20, 0xfc, 0xc6, + 0x01, 0x20, 0x04, 0x52, 0xc9, 0xc9, 0xfc, 0x79, 0xcb, 0xcb, 0x03, 0x87, + 0x00, 0x01, 0x00, 0xac, 0xff, 0xec, 0x03, 0x89, 0x05, 0x1b, 0x00, 0x17, + 0x00, 0x53, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb4, 0x15, 0x09, 0x09, + 0x18, 0x00, 0xb8, 0x01, 0xf9, 0xb6, 0x13, 0x18, 0x14, 0xe0, 0x16, 0x41, + 0x08, 0xb8, 0x01, 0x20, 0xb5, 0x09, 0x0e, 0xe3, 0x40, 0x05, 0x44, 0x00, + 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xde, 0xed, 0x3f, 0xed, 0x01, 0x10, 0xd4, + 0xed, 0x12, 0x39, 0x2f, 0xc6, 0x31, 0x30, 0x1b, 0xb4, 0x14, 0xe0, 0x16, + 0x41, 0x08, 0xb8, 0x01, 0x20, 0xb5, 0x09, 0x0e, 0xe3, 0x40, 0x05, 0x44, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xde, 0xed, 0x3f, 0xed, 0x31, 0x30, + 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x21, 0x35, 0x21, 0x03, 0x89, 0x3a, + 0x70, 0xa6, 0x6e, 0x51, 0x96, 0x38, 0x19, 0x43, 0x4c, 0x50, 0x27, 0x21, + 0x47, 0x38, 0x24, 0xfe, 0x27, 0x02, 0xd3, 0x01, 0x87, 0x5c, 0x98, 0x6c, + 0x3b, 0x26, 0x1d, 0xee, 0x15, 0x24, 0x1b, 0x0f, 0x18, 0x38, 0x5b, 0x43, + 0x02, 0xa8, 0xcb, 0x00, 0x00, 0x01, 0x00, 0x81, 0x00, 0x00, 0x04, 0x42, + 0x05, 0x1b, 0x00, 0x0a, 0x00, 0x7b, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xb3, 0x09, 0x06, 0x01, 0x02, 0xb8, 0x01, 0xf9, 0x40, 0x0d, 0x03, 0x40, + 0x07, 0x08, 0x08, 0x0a, 0x0a, 0x00, 0x03, 0x00, 0x0a, 0x43, 0x09, 0xba, + 0xff, 0xf0, 0x00, 0x06, 0xff, 0xd8, 0x40, 0x0c, 0x06, 0x09, 0x01, 0x03, + 0x03, 0x07, 0x08, 0x41, 0x04, 0x41, 0x03, 0x43, 0x00, 0x18, 0x3f, 0x3f, + 0x3f, 0x33, 0x12, 0x17, 0x39, 0x38, 0x38, 0x3f, 0x33, 0x01, 0x2f, 0xc4, + 0x32, 0x12, 0x39, 0x2f, 0x33, 0x1a, 0x10, 0x4d, 0xfd, 0xc4, 0xc4, 0x32, + 0x31, 0x30, 0x1b, 0xb3, 0x00, 0x0a, 0x43, 0x09, 0xba, 0xff, 0xf0, 0x00, + 0x06, 0xff, 0xd8, 0x40, 0x0c, 0x06, 0x09, 0x01, 0x03, 0x03, 0x07, 0x08, + 0x41, 0x04, 0x41, 0x03, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x3f, 0x33, 0x12, + 0x17, 0x39, 0x38, 0x38, 0x3f, 0x33, 0x31, 0x30, 0x59, 0x21, 0x01, 0x11, + 0x23, 0x11, 0x33, 0x11, 0x01, 0x21, 0x01, 0x01, 0x03, 0x04, 0xfe, 0x77, + 0xfa, 0xfa, 0x01, 0x87, 0x01, 0x29, 0xfe, 0x44, 0x01, 0xd3, 0x02, 0x78, + 0xfd, 0x88, 0x05, 0x1b, 0xfd, 0xad, 0x02, 0x53, 0xfd, 0x91, 0xfd, 0x54, + 0x00, 0x01, 0x00, 0xc5, 0x00, 0x00, 0x03, 0xe7, 0x05, 0x1b, 0x00, 0x05, + 0x00, 0x3b, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x04, 0x03, 0xb8, + 0x01, 0xf9, 0xb3, 0x00, 0x01, 0x41, 0x03, 0xb8, 0x01, 0x0d, 0xb2, 0x40, + 0x00, 0x43, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x01, 0x2f, 0xed, + 0xcd, 0x31, 0x30, 0x1b, 0xb2, 0x01, 0x41, 0x03, 0xb8, 0x01, 0x0d, 0xb2, + 0x40, 0x00, 0x43, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x31, 0x30, + 0x59, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0xc5, 0xfa, 0x02, 0x28, 0x05, + 0x1b, 0xfb, 0xb8, 0xd3, 0x00, 0x01, 0x00, 0x2d, 0x00, 0x00, 0x04, 0x39, + 0x05, 0x1b, 0x00, 0x12, 0x00, 0xa3, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0x40, 0x21, 0x0c, 0x07, 0x07, 0x0b, 0x10, 0x02, 0x02, 0x11, 0x0b, 0x11, + 0x0b, 0x11, 0x0a, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x04, 0x0e, 0x0e, 0x13, + 0x14, 0x12, 0x43, 0x11, 0x41, 0x04, 0x06, 0x20, 0x03, 0x20, 0x0e, 0xb8, + 0xff, 0xd0, 0x40, 0x10, 0x0e, 0x03, 0x06, 0x07, 0x02, 0x05, 0x0b, 0x05, + 0x05, 0x0a, 0x10, 0x0c, 0x0b, 0x41, 0x0a, 0x43, 0x00, 0x18, 0x3f, 0x3f, + 0x33, 0x33, 0x12, 0x39, 0x2f, 0x12, 0x17, 0x39, 0x38, 0x38, 0x38, 0x33, + 0x3f, 0x3f, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x33, 0x33, 0x18, 0xc4, + 0x32, 0xc4, 0x32, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x1b, 0x40, 0x0a, 0x12, 0x43, 0x11, + 0x41, 0x04, 0x06, 0x20, 0x03, 0x20, 0x0e, 0xb8, 0xff, 0xd0, 0x40, 0x10, + 0x0e, 0x03, 0x06, 0x07, 0x02, 0x05, 0x0b, 0x05, 0x05, 0x0a, 0x10, 0x0c, + 0x0b, 0x41, 0x0a, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x33, 0x33, 0x12, 0x39, + 0x2f, 0x12, 0x17, 0x39, 0x38, 0x38, 0x38, 0x33, 0x3f, 0x3f, 0x31, 0x30, + 0x59, 0x21, 0x03, 0x03, 0x07, 0x03, 0x23, 0x03, 0x27, 0x03, 0x03, 0x23, + 0x13, 0x21, 0x13, 0x17, 0x37, 0x13, 0x21, 0x13, 0x03, 0x60, 0x18, 0x09, + 0x3f, 0x91, 0x9a, 0x83, 0x37, 0x07, 0x16, 0xd1, 0x40, 0x01, 0x16, 0x73, + 0x37, 0x37, 0x79, 0x01, 0x1b, 0x41, 0x02, 0xe3, 0x01, 0x27, 0xc8, 0xfe, + 0x43, 0x01, 0xbd, 0xc8, 0xfe, 0xdf, 0xfd, 0x17, 0x05, 0x1b, 0xfe, 0x8d, + 0xd1, 0xc5, 0x01, 0x7f, 0xfa, 0xe5, 0x00, 0x01, 0x00, 0x5e, 0x00, 0x00, + 0x04, 0x10, 0x05, 0x1b, 0x00, 0x0d, 0x00, 0x5e, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb3, 0x07, 0x02, 0x00, 0x0c, 0xb8, 0x01, 0xc2, 0xb4, 0x09, + 0x05, 0x02, 0x02, 0x04, 0xb8, 0x01, 0xc2, 0x40, 0x0e, 0x40, 0x05, 0x02, + 0x09, 0x07, 0x00, 0x0d, 0x43, 0x0c, 0x41, 0x07, 0x06, 0x05, 0x43, 0x00, + 0x18, 0x3f, 0x2f, 0x33, 0x3f, 0x3f, 0x33, 0x12, 0x39, 0x39, 0x01, 0x2f, + 0x1a, 0x4d, 0xed, 0x32, 0x2f, 0x10, 0xd4, 0xed, 0x33, 0x11, 0x33, 0x31, + 0x30, 0x1b, 0x40, 0x0c, 0x02, 0x09, 0x07, 0x00, 0x0d, 0x43, 0x0c, 0x41, + 0x07, 0x06, 0x05, 0x43, 0x00, 0x18, 0x3f, 0x2f, 0x33, 0x3f, 0x3f, 0x33, + 0x12, 0x39, 0x39, 0x31, 0x30, 0x59, 0x21, 0x01, 0x27, 0x11, 0x11, 0x23, + 0x11, 0x21, 0x01, 0x17, 0x11, 0x11, 0x33, 0x11, 0x02, 0xe4, 0xfe, 0xa2, + 0x48, 0xe0, 0x01, 0x2e, 0x01, 0x65, 0x3f, 0xe0, 0x03, 0x0c, 0xa8, 0xfd, + 0xe2, 0xfe, 0x6a, 0x05, 0x1b, 0xfc, 0xef, 0x99, 0x02, 0x41, 0x01, 0x69, + 0xfa, 0xe5, 0x00, 0x02, 0x00, 0x25, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, + 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x4d, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xbf, 0x00, 0x00, 0x02, 0x02, 0x00, 0x10, 0x00, 0x18, 0x02, 0x02, 0x00, + 0x08, 0x00, 0x13, 0x01, 0x17, 0xb2, 0x0d, 0x42, 0x1b, 0xb8, 0x01, 0x17, + 0xb2, 0x40, 0x05, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, + 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x1b, 0xb9, 0x00, 0x13, 0x01, + 0x17, 0xb2, 0x0d, 0x42, 0x1b, 0xb8, 0x01, 0x17, 0xb2, 0x40, 0x05, 0x44, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x02, 0x06, 0x06, 0x23, 0x20, 0x00, 0x11, 0x34, 0x12, 0x36, 0x36, + 0x33, 0x20, 0x00, 0x01, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x41, 0x53, 0x91, 0xc3, 0x6f, 0xfe, + 0xfe, 0xfe, 0xfc, 0x53, 0x91, 0xc3, 0x6f, 0x01, 0x02, 0x01, 0x04, 0xfe, + 0xfc, 0x7c, 0x8e, 0x47, 0x64, 0x41, 0x1e, 0x7d, 0x8d, 0x47, 0x65, 0x40, + 0x1e, 0x02, 0x93, 0xb2, 0xfe, 0xfe, 0xa6, 0x50, 0x01, 0x57, 0x01, 0x47, + 0xb2, 0x01, 0x02, 0xa6, 0x50, 0xfe, 0xaa, 0xfe, 0xac, 0xe8, 0xe4, 0x3b, + 0x72, 0xa7, 0x6c, 0xe8, 0xe4, 0x3b, 0x72, 0xa7, 0x00, 0x02, 0x00, 0x87, + 0x00, 0x00, 0x04, 0x12, 0x05, 0x1b, 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x53, + 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x06, 0x16, 0xbb, 0x01, 0xf7, + 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, 0x40, 0x0e, 0x0f, 0x08, 0x16, 0xe1, + 0x06, 0x06, 0x08, 0x15, 0xe1, 0x40, 0x09, 0x41, 0x08, 0x43, 0x00, 0x18, + 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xd4, + 0xed, 0x10, 0xfd, 0xc4, 0x31, 0x30, 0x1b, 0x40, 0x0c, 0x16, 0xe1, 0x06, + 0x06, 0x08, 0x15, 0xe1, 0x40, 0x09, 0x41, 0x08, 0x43, 0x00, 0x18, 0x3f, + 0x3f, 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x1e, 0x02, + 0x05, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x04, + 0x12, 0x44, 0x86, 0xc8, 0x84, 0x7d, 0xf8, 0x01, 0x7f, 0x7f, 0xc3, 0x85, + 0x45, 0xfe, 0xfe, 0x21, 0x43, 0x66, 0x46, 0x81, 0x89, 0x40, 0x62, 0x43, + 0x23, 0x03, 0x7b, 0x66, 0xad, 0x7e, 0x46, 0xfe, 0x5c, 0x05, 0x1b, 0x37, + 0x6a, 0x9b, 0x75, 0x34, 0x55, 0x3c, 0x20, 0xfe, 0x21, 0x23, 0x42, 0x5c, + 0x00, 0x02, 0x00, 0x25, 0xfe, 0x85, 0x04, 0x6d, 0x05, 0x31, 0x00, 0x20, + 0x00, 0x30, 0x00, 0x7f, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb9, 0x00, + 0x10, 0x01, 0xca, 0xb3, 0x00, 0x00, 0x21, 0x29, 0xb8, 0x02, 0x02, 0xb5, + 0x03, 0x0f, 0x01, 0x03, 0x19, 0x0b, 0xb8, 0x02, 0x02, 0xb3, 0x21, 0x03, + 0x18, 0x15, 0xb8, 0x01, 0x0c, 0xb4, 0x1c, 0x45, 0x10, 0x43, 0x24, 0xb8, + 0x01, 0x17, 0xb2, 0x08, 0x42, 0x2c, 0xb8, 0x01, 0x0c, 0xb2, 0x40, 0x00, + 0x43, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0x3f, 0xfd, + 0xc6, 0x01, 0x2f, 0xd4, 0xfd, 0xc6, 0x12, 0x39, 0x39, 0x10, 0xed, 0x11, + 0x39, 0x2f, 0xed, 0x31, 0x30, 0x1b, 0xb1, 0x18, 0x15, 0xb8, 0x01, 0x0c, + 0xb4, 0x1c, 0x45, 0x10, 0x43, 0x24, 0xb8, 0x01, 0x17, 0xb2, 0x08, 0x42, + 0x2c, 0xb8, 0x01, 0x0c, 0xb2, 0x40, 0x00, 0x43, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0x3f, 0xfd, 0xc6, 0x31, 0x30, 0x59, 0x05, + 0x26, 0x02, 0x11, 0x34, 0x12, 0x36, 0x36, 0x33, 0x20, 0x00, 0x11, 0x14, + 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x17, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x01, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x01, 0xb4, 0xc9, 0xc6, 0x53, 0x91, + 0xc3, 0x6f, 0x01, 0x02, 0x01, 0x04, 0x3e, 0x71, 0x9a, 0x5a, 0x08, 0x25, + 0x33, 0x3c, 0x20, 0x2b, 0x55, 0x22, 0x71, 0x3f, 0x95, 0x4b, 0x5e, 0x95, + 0x69, 0x3a, 0x01, 0x85, 0x7a, 0x8c, 0x47, 0x66, 0x42, 0x1f, 0x7d, 0x8d, + 0x47, 0x65, 0x40, 0x1e, 0x0a, 0x25, 0x01, 0x48, 0x01, 0x1e, 0xb1, 0x01, + 0x03, 0xa9, 0x53, 0xfe, 0xac, 0xfe, 0xbf, 0x99, 0xec, 0xa8, 0x66, 0x13, + 0x30, 0x3e, 0x24, 0x0e, 0x24, 0x20, 0xa8, 0x35, 0x38, 0x2c, 0x5b, 0x8b, + 0x02, 0xf0, 0xe8, 0xe4, 0x3b, 0x73, 0xa7, 0x6b, 0xe6, 0xe6, 0x3b, 0x72, + 0xa7, 0x00, 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x04, 0x35, 0x05, 0x1b, + 0x00, 0x17, 0x00, 0x22, 0x00, 0x7f, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xb6, 0x15, 0x17, 0x02, 0x02, 0x06, 0x00, 0x0e, 0xb8, 0x02, 0x00, 0xb3, + 0x18, 0x07, 0x1d, 0x06, 0xb8, 0x01, 0xf5, 0x40, 0x16, 0x07, 0x17, 0x43, + 0x13, 0x1e, 0x15, 0x02, 0x07, 0x04, 0xd8, 0x1e, 0x1e, 0x07, 0x1c, 0xe2, + 0x40, 0x08, 0x41, 0x07, 0x43, 0x00, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x3f, + 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x11, 0x39, 0x39, 0x11, 0x39, + 0x3f, 0x01, 0x2f, 0xfd, 0xc4, 0x10, 0xd4, 0xed, 0xc4, 0x11, 0x39, 0x2f, + 0x32, 0x33, 0x31, 0x30, 0x1b, 0x40, 0x15, 0x17, 0x43, 0x13, 0x1e, 0x15, + 0x02, 0x07, 0x04, 0xd8, 0x1e, 0x1e, 0x07, 0x1c, 0xe2, 0x40, 0x08, 0x41, + 0x07, 0x43, 0x00, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x11, 0x39, 0x39, 0x11, 0x39, 0x3f, 0x31, 0x30, + 0x59, 0x21, 0x03, 0x26, 0x26, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x13, 0x01, + 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x14, 0xb8, + 0x1a, 0x5d, 0x3f, 0x2f, 0xf6, 0x01, 0x7d, 0x6c, 0xb0, 0x7c, 0x43, 0x2a, + 0x4c, 0x69, 0x3e, 0x30, 0x50, 0x28, 0xd1, 0xfe, 0xa2, 0x7a, 0x7a, 0x6c, + 0x64, 0x39, 0x5d, 0x42, 0x24, 0x01, 0xa4, 0x3c, 0x3d, 0xfd, 0xe3, 0x05, + 0x1b, 0x25, 0x56, 0x8a, 0x64, 0x48, 0x70, 0x51, 0x32, 0x0a, 0x0a, 0x59, + 0x54, 0xfe, 0x4a, 0x03, 0x9a, 0x60, 0x54, 0xfe, 0x8f, 0x18, 0x30, 0x47, + 0x00, 0x01, 0x00, 0x62, 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x31, 0x00, 0x39, + 0x00, 0x91, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb3, 0x27, 0x27, 0x1c, + 0x00, 0xbb, 0x02, 0x1d, 0x00, 0x13, 0x00, 0x31, 0x02, 0x07, 0xb2, 0x09, + 0x1c, 0x26, 0xba, 0x01, 0x1a, 0x00, 0x27, 0xff, 0xc0, 0xb4, 0x0e, 0x12, + 0x48, 0x27, 0x2c, 0xb8, 0x01, 0x0d, 0xb5, 0x31, 0x13, 0x05, 0x21, 0x42, + 0x08, 0xbb, 0x01, 0x23, 0x00, 0x09, 0x00, 0x0e, 0x01, 0x13, 0xb2, 0x40, + 0x05, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0x12, + 0x39, 0x39, 0xfd, 0xd6, 0x2b, 0xed, 0x01, 0x2f, 0xc6, 0xed, 0xd4, 0xed, + 0x11, 0x39, 0x2f, 0x31, 0x30, 0x1b, 0xbb, 0x00, 0x26, 0x01, 0x1a, 0x00, + 0x27, 0xff, 0xc0, 0xb4, 0x0e, 0x12, 0x48, 0x27, 0x2c, 0xb8, 0x01, 0x0d, + 0xb5, 0x31, 0x13, 0x05, 0x21, 0x42, 0x08, 0xbb, 0x01, 0x23, 0x00, 0x09, + 0x00, 0x0e, 0x01, 0x13, 0xb2, 0x40, 0x05, 0x44, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, 0x39, 0xfd, 0xd6, 0x2b, 0xed, + 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x06, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x06, 0x03, 0xfc, 0x4f, 0x8e, 0xc4, 0x74, + 0x67, 0xc0, 0x5e, 0x2e, 0x64, 0x65, 0x64, 0x2f, 0x46, 0x62, 0x3e, 0x1c, + 0x37, 0x5a, 0x73, 0x77, 0x73, 0x5a, 0x37, 0x38, 0x78, 0xbc, 0x85, 0x27, + 0x55, 0x53, 0x4d, 0x20, 0x20, 0x4c, 0x51, 0x52, 0x25, 0x41, 0x5a, 0x3a, + 0x1a, 0x37, 0x5b, 0x73, 0x79, 0x73, 0x5b, 0x37, 0x01, 0x8b, 0x6b, 0x9e, + 0x67, 0x32, 0x18, 0x1c, 0xf3, 0x10, 0x1c, 0x15, 0x0c, 0x18, 0x2a, 0x3a, + 0x23, 0x30, 0x41, 0x32, 0x28, 0x2e, 0x3a, 0x56, 0x77, 0x54, 0x4d, 0x8a, + 0x67, 0x3d, 0x07, 0x0b, 0x0f, 0x08, 0xe1, 0x0c, 0x14, 0x0f, 0x08, 0x15, + 0x25, 0x36, 0x21, 0x29, 0x3b, 0x2f, 0x29, 0x2f, 0x3c, 0x56, 0x75, 0x00, + 0x00, 0x01, 0x00, 0x4f, 0x00, 0x00, 0x04, 0x17, 0x05, 0x1b, 0x00, 0x07, + 0x00, 0x42, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x07, 0x01, 0xb8, + 0x01, 0xfb, 0x40, 0x0d, 0x04, 0x02, 0x02, 0x08, 0x09, 0x00, 0x03, 0xe2, + 0x40, 0x05, 0x41, 0x02, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, + 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc6, 0xfd, 0xc6, 0x31, 0x30, 0x1b, + 0xb7, 0x00, 0x03, 0xe2, 0x40, 0x05, 0x41, 0x02, 0x43, 0x00, 0x18, 0x3f, + 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x31, 0x30, 0x59, 0x01, 0x11, 0x23, 0x11, + 0x21, 0x35, 0x21, 0x15, 0x02, 0xb1, 0xfc, 0xfe, 0x9a, 0x03, 0xc8, 0x04, + 0x4e, 0xfb, 0xb2, 0x04, 0x4e, 0xcd, 0xcd, 0x00, 0x00, 0x01, 0x00, 0x57, + 0xff, 0xe9, 0x04, 0x0f, 0x05, 0x1b, 0x00, 0x19, 0x00, 0x43, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xbc, 0x00, 0x00, 0x01, 0xf5, 0x00, 0x17, 0x00, + 0x0d, 0x01, 0xf5, 0x40, 0x0a, 0x0a, 0x19, 0x41, 0x0b, 0x41, 0x12, 0xe0, + 0x40, 0x05, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x3f, 0x01, + 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x1b, 0x40, 0x09, 0x19, 0x41, 0x0b, + 0x41, 0x12, 0xe0, 0x40, 0x05, 0x44, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, + 0x3f, 0x3f, 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x11, 0x33, 0x04, 0x0f, 0x43, 0x7d, 0xb4, 0x70, 0x7e, 0xb4, 0x70, + 0x32, 0xf6, 0x17, 0x39, 0x56, 0x41, 0x3d, 0x54, 0x38, 0x1c, 0xf6, 0x01, + 0xe1, 0x7d, 0xbd, 0x7e, 0x40, 0x40, 0x78, 0xac, 0x6b, 0x03, 0x63, 0xfc, + 0xac, 0x42, 0x66, 0x47, 0x24, 0x1f, 0x45, 0x6c, 0x4d, 0x03, 0x4a, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x08, + 0x00, 0x51, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0x40, 0x15, 0x00, 0x07, + 0x08, 0x01, 0x03, 0x02, 0x20, 0x05, 0x05, 0x09, 0x0a, 0x05, 0x01, 0x08, + 0x07, 0x03, 0x02, 0x41, 0x00, 0x01, 0x43, 0x00, 0x18, 0x3f, 0x33, 0x3f, + 0x33, 0x33, 0x33, 0x12, 0x39, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x1a, + 0x18, 0xcd, 0x32, 0x33, 0xcd, 0x32, 0x33, 0x31, 0x30, 0x1b, 0x40, 0x0a, + 0x05, 0x01, 0x08, 0x07, 0x03, 0x02, 0x41, 0x00, 0x01, 0x43, 0x00, 0x18, + 0x3f, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x12, 0x39, 0x31, 0x30, 0x59, 0x21, + 0x21, 0x01, 0x21, 0x1b, 0x03, 0x21, 0x02, 0xd5, 0xfe, 0xba, 0xfe, 0x71, + 0x01, 0x17, 0xdd, 0x47, 0x4a, 0xdb, 0x01, 0x06, 0x05, 0x1b, 0xfc, 0xed, + 0xfe, 0xfe, 0x01, 0x11, 0x03, 0x04, 0x00, 0x01, 0x00, 0x21, 0x00, 0x00, + 0x04, 0x46, 0x05, 0x1b, 0x00, 0x12, 0x00, 0xa6, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0x40, 0x1b, 0x05, 0x0a, 0x0a, 0x06, 0x01, 0x0f, 0x0f, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x07, 0x11, 0x12, 0x08, 0x07, 0x0d, 0x0c, 0x03, + 0x03, 0x13, 0x14, 0x0d, 0x03, 0x40, 0x0b, 0xba, 0xff, 0xe8, 0x00, 0x0e, + 0xff, 0xd0, 0x40, 0x13, 0x0a, 0x0f, 0x0e, 0x0b, 0x03, 0x05, 0x0c, 0x0c, + 0x06, 0x12, 0x11, 0x08, 0x07, 0x41, 0x05, 0x01, 0x00, 0x06, 0x43, 0x00, + 0x18, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x12, 0x39, 0x2f, + 0x17, 0x39, 0x38, 0x38, 0x38, 0x33, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, + 0x33, 0x33, 0x18, 0xc4, 0x32, 0xc4, 0x32, 0x11, 0x39, 0x39, 0x2f, 0x2f, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x1b, 0xb3, + 0x0d, 0x03, 0x40, 0x0b, 0xba, 0xff, 0xe8, 0x00, 0x0e, 0xff, 0xd0, 0x40, + 0x13, 0x0a, 0x0f, 0x0e, 0x0b, 0x03, 0x05, 0x0c, 0x0c, 0x06, 0x12, 0x11, + 0x08, 0x07, 0x41, 0x05, 0x01, 0x00, 0x06, 0x43, 0x00, 0x18, 0x3f, 0x33, + 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x12, 0x39, 0x2f, 0x17, 0x39, 0x38, + 0x38, 0x38, 0x33, 0x31, 0x30, 0x59, 0x21, 0x21, 0x03, 0x27, 0x07, 0x03, + 0x21, 0x03, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x13, 0x17, 0x37, 0x13, + 0x33, 0x03, 0xfc, 0xfe, 0xdf, 0x81, 0x2f, 0x2d, 0x7f, 0xfe, 0xeb, 0x49, + 0xd9, 0x1f, 0x08, 0x3b, 0x90, 0x9b, 0x98, 0x31, 0x04, 0x21, 0xd1, 0x01, + 0x93, 0xa4, 0xa8, 0xfe, 0x71, 0x05, 0x1b, 0xfc, 0xba, 0xe5, 0xcc, 0x01, + 0xd1, 0xfe, 0x13, 0xae, 0xcc, 0x03, 0x5d, 0x00, 0x00, 0x01, 0x00, 0x08, + 0x00, 0x00, 0x04, 0x5e, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x8d, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0x40, 0x32, 0x0a, 0x0b, 0x06, 0x09, 0x02, 0x07, + 0x08, 0x03, 0x08, 0x04, 0x00, 0x05, 0x08, 0x03, 0x08, 0x09, 0x02, 0x03, + 0x06, 0x00, 0x05, 0x09, 0x05, 0x09, 0x03, 0x0b, 0x03, 0x20, 0x07, 0x01, + 0x08, 0x01, 0x01, 0x0c, 0x0d, 0x09, 0x09, 0x08, 0x01, 0x03, 0x06, 0x05, + 0x41, 0x02, 0x03, 0x0b, 0x0b, 0x00, 0x03, 0x43, 0x00, 0x18, 0x3f, 0x33, + 0x33, 0x2f, 0x11, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x33, 0x33, 0x2f, 0x11, + 0x12, 0x01, 0x39, 0x19, 0x2f, 0x38, 0xc5, 0x1a, 0x18, 0xcd, 0xcd, 0x11, + 0x39, 0x39, 0x2f, 0x2f, 0x32, 0x33, 0x11, 0x33, 0x11, 0x33, 0x0f, 0x10, + 0x7d, 0x87, 0x04, 0xc4, 0x0f, 0x31, 0x30, 0x1b, 0x40, 0x0f, 0x09, 0x09, + 0x08, 0x01, 0x03, 0x06, 0x05, 0x41, 0x02, 0x03, 0x0b, 0x0b, 0x00, 0x03, + 0x43, 0x00, 0x18, 0x3f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x3f, 0x33, 0x12, + 0x39, 0x33, 0x33, 0x2f, 0x31, 0x30, 0x59, 0x21, 0x03, 0x03, 0x21, 0x01, + 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, 0x01, 0x03, 0x25, 0xfc, 0xf8, 0xfe, + 0xd7, 0x01, 0x79, 0xfe, 0xa0, 0x01, 0x21, 0xed, 0xe5, 0x01, 0x21, 0xfe, + 0xa2, 0x01, 0x87, 0x01, 0xe1, 0xfe, 0x1f, 0x02, 0x9e, 0x02, 0x7d, 0xfe, + 0x39, 0x01, 0xc7, 0xfd, 0x83, 0xfd, 0x62, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0x00, 0x04, 0x5a, 0x05, 0x1b, 0x00, 0x0a, 0x00, 0x5a, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xb9, 0x00, 0x05, 0x02, 0x20, 0xb2, 0x04, 0x03, + 0x09, 0xb8, 0x02, 0x04, 0xb2, 0x0a, 0x07, 0x00, 0xb8, 0x01, 0xf9, 0x40, + 0x0f, 0x40, 0x03, 0x03, 0x0b, 0x0c, 0x0a, 0x41, 0x09, 0x41, 0x07, 0x02, + 0x04, 0x41, 0x02, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x3f, 0x3f, + 0x11, 0x12, 0x01, 0x39, 0x2f, 0x1a, 0x4d, 0xfd, 0x39, 0xdd, 0xed, 0x10, + 0xdd, 0xed, 0x31, 0x30, 0x1b, 0x40, 0x0a, 0x0a, 0x41, 0x09, 0x41, 0x07, + 0x02, 0x04, 0x41, 0x02, 0x43, 0x00, 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x3f, + 0x3f, 0x31, 0x30, 0x59, 0x01, 0x11, 0x23, 0x11, 0x01, 0x21, 0x13, 0x17, + 0x37, 0x13, 0x21, 0x02, 0xad, 0xfa, 0xfe, 0x57, 0x01, 0x11, 0xc0, 0x58, + 0x58, 0xc9, 0x01, 0x06, 0x01, 0xcf, 0xfe, 0x31, 0x01, 0xcd, 0x03, 0x4e, + 0xfe, 0x6c, 0xc6, 0xcc, 0x01, 0x8e, 0x00, 0x01, 0x00, 0x68, 0x00, 0x00, + 0x03, 0xfe, 0x05, 0x1b, 0x00, 0x09, 0x00, 0x68, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0x40, 0x09, 0x08, 0x02, 0x06, 0x07, 0x01, 0x01, 0x03, 0x00, + 0x01, 0xbb, 0xff, 0xe0, 0x00, 0x01, 0x00, 0x07, 0x01, 0x18, 0xb5, 0x09, + 0x43, 0x06, 0x20, 0x06, 0x02, 0xb8, 0x01, 0x18, 0xb2, 0x40, 0x04, 0x41, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x38, 0x3f, 0xed, 0x32, 0x38, + 0x01, 0x2f, 0xc4, 0x33, 0x11, 0x33, 0xdd, 0x32, 0xc6, 0x31, 0x30, 0x1b, + 0xbc, 0x00, 0x01, 0xff, 0xe0, 0x00, 0x01, 0x00, 0x07, 0x01, 0x18, 0xb5, + 0x09, 0x43, 0x06, 0x20, 0x06, 0x02, 0xb8, 0x01, 0x18, 0xb2, 0x40, 0x04, + 0x41, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x38, 0x3f, 0xed, 0x32, + 0x38, 0x31, 0x30, 0x59, 0x33, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, + 0x21, 0x15, 0x68, 0x02, 0x56, 0xfd, 0xbd, 0x03, 0x7b, 0xfd, 0xa6, 0x02, + 0x62, 0xba, 0x03, 0x82, 0xdf, 0xc8, 0xfc, 0x8c, 0xdf, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x87, 0x02, 0x26, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x62, 0x06, 0x87, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x62, 0x06, 0x87, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, + 0x06, 0xa0, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x9a, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x64, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x62, 0x06, 0xcd, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x62, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0xfe, 0x6a, 0x04, 0x62, + 0x05, 0x1b, 0x00, 0x20, 0x00, 0x23, 0x00, 0x76, 0xb9, 0x00, 0x08, 0x01, + 0xa5, 0x40, 0x35, 0x40, 0x1a, 0x20, 0x14, 0x0e, 0x23, 0x21, 0x0d, 0x0d, + 0x14, 0x22, 0x0f, 0x10, 0x21, 0x10, 0x11, 0x20, 0x13, 0x12, 0x21, 0x21, + 0x24, 0x25, 0x1a, 0x15, 0x03, 0x22, 0x23, 0xde, 0x0e, 0x0f, 0x0e, 0x21, + 0x30, 0x21, 0x0e, 0x12, 0x15, 0x11, 0x0d, 0x0d, 0x14, 0x10, 0x15, 0x43, + 0x13, 0x12, 0x41, 0x20, 0x1d, 0xc1, 0x03, 0x45, 0x00, 0x3f, 0xfd, 0xc6, + 0x3f, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x11, 0x33, 0x11, 0x12, 0x39, 0x39, + 0x38, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x12, 0x39, 0x11, 0x12, 0x01, + 0x39, 0x19, 0x2f, 0x33, 0x33, 0x1a, 0x18, 0xcd, 0x32, 0x7d, 0x87, 0xc4, + 0xc4, 0x01, 0x18, 0xcd, 0x32, 0x7d, 0x87, 0xc4, 0xc4, 0x01, 0x18, 0x10, + 0xd6, 0xd6, 0x1a, 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x03, 0x21, 0x03, 0x23, 0x01, 0x21, + 0x01, 0x23, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x01, + 0x03, 0x21, 0x04, 0x4c, 0x20, 0x51, 0x1f, 0x40, 0x57, 0x36, 0x18, 0x0b, + 0x1c, 0x2f, 0x25, 0x48, 0xfe, 0x38, 0x4a, 0xf4, 0x01, 0x83, 0x01, 0x58, + 0x01, 0x83, 0x3d, 0x26, 0x2c, 0x18, 0x07, 0x21, 0x2d, 0x10, 0x2a, 0x10, + 0xfd, 0xdd, 0xac, 0x01, 0x56, 0xfe, 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, + 0x26, 0x1b, 0x35, 0x37, 0x3b, 0x21, 0x01, 0x02, 0xfe, 0xfe, 0x05, 0x1b, + 0xfa, 0xe5, 0x26, 0x37, 0x2a, 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x05, + 0x19, 0xfd, 0xa0, 0x00, 0x00, 0x02, 0xff, 0xd7, 0x00, 0x00, 0x04, 0x3d, + 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x67, 0x40, 0x0a, 0x11, 0x02, + 0x03, 0x10, 0x03, 0x05, 0x10, 0x00, 0x09, 0x0d, 0xb8, 0x01, 0xa3, 0x40, + 0x28, 0x12, 0x00, 0x0b, 0x00, 0x0b, 0x04, 0x07, 0x0e, 0x14, 0x03, 0x04, + 0x13, 0x10, 0x18, 0x10, 0x05, 0x13, 0x0d, 0xdd, 0x0f, 0x43, 0x0a, 0xda, + 0x0c, 0x11, 0xd4, 0x02, 0x0c, 0x02, 0x0c, 0x02, 0x04, 0x08, 0xdd, 0x05, + 0x41, 0x03, 0x03, 0x04, 0x43, 0x00, 0x3f, 0x33, 0x2f, 0x3f, 0xed, 0x12, + 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xe1, 0x10, 0xed, 0x3f, 0xed, 0x11, 0x12, + 0x39, 0x38, 0x01, 0x10, 0xcd, 0x32, 0x10, 0xd6, 0xc6, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0xc2, 0xfd, 0xc4, 0x10, 0xc4, 0x32, 0x10, 0x7d, 0x87, 0xc4, + 0xc4, 0x31, 0x30, 0x21, 0x11, 0x21, 0x03, 0x23, 0x01, 0x21, 0x15, 0x21, + 0x11, 0x33, 0x15, 0x23, 0x11, 0x21, 0x15, 0x01, 0x03, 0x33, 0x02, 0x4c, + 0xfe, 0xcd, 0x5f, 0xe3, 0x01, 0xf4, 0x02, 0x68, 0xfe, 0xf4, 0xfc, 0xfc, + 0x01, 0x16, 0xfe, 0x0f, 0xf0, 0xf0, 0x01, 0x06, 0xfe, 0xfa, 0x05, 0x1b, + 0xc7, 0xfe, 0xae, 0xc3, 0xfe, 0x88, 0xc7, 0x04, 0x54, 0xfd, 0x6d, 0x00, + 0xff, 0xff, 0xff, 0xd7, 0x00, 0x00, 0x04, 0x3d, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x28, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x29, 0x00, 0xff, 0xff, + 0x00, 0x29, 0xff, 0xee, 0x04, 0x0a, 0x06, 0x87, 0x02, 0x26, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x29, 0x00, 0xff, 0xff, 0x00, 0x3d, + 0xff, 0xee, 0x03, 0xec, 0x06, 0x87, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x41, 0x3d, 0x00, 0xff, 0xff, 0x00, 0x3d, 0xff, 0xee, + 0x03, 0xec, 0x06, 0x87, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x43, 0x3d, 0x00, 0xff, 0xff, 0x00, 0x3d, 0xff, 0xee, 0x03, 0xec, + 0x06, 0xa6, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, + 0x3d, 0x00, 0x00, 0x01, 0x00, 0x52, 0xfe, 0xd9, 0x03, 0xec, 0x05, 0x2d, + 0x00, 0x28, 0x00, 0x54, 0xb3, 0x01, 0x05, 0x22, 0x27, 0xbb, 0x01, 0x6f, + 0x00, 0x28, 0x00, 0x26, 0x01, 0xc0, 0xb5, 0x00, 0x00, 0x18, 0x10, 0x22, + 0x18, 0xb8, 0x02, 0x1d, 0xb3, 0x05, 0x27, 0x49, 0x0f, 0xbb, 0x01, 0x24, + 0x00, 0x10, 0x00, 0x13, 0x01, 0x12, 0xb2, 0x0a, 0x42, 0x23, 0xb8, 0x01, + 0x1d, 0x40, 0x09, 0x40, 0x22, 0x01, 0x22, 0x1d, 0xe0, 0x26, 0x00, 0x43, + 0x00, 0x3f, 0xc5, 0xfd, 0xd6, 0x5d, 0xed, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, + 0x01, 0x2f, 0xed, 0xd4, 0xc4, 0x12, 0x39, 0x2f, 0xed, 0xdd, 0xed, 0x11, + 0x12, 0x39, 0x31, 0x30, 0x21, 0x2e, 0x03, 0x35, 0x34, 0x12, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, + 0x07, 0x03, 0x23, 0x01, 0xf3, 0x3f, 0x9a, 0x80, 0x48, 0x54, 0x9c, 0xdf, + 0x8b, 0x2d, 0x4f, 0x4c, 0x4e, 0x2a, 0x55, 0x9a, 0x3f, 0x5d, 0x84, 0x55, + 0x28, 0x29, 0x56, 0x86, 0x5c, 0x21, 0x4d, 0x4f, 0x4d, 0x21, 0x57, 0x8b, + 0x39, 0x69, 0xb2, 0x0b, 0x4e, 0x98, 0xee, 0x9a, 0xa5, 0x01, 0x01, 0xb1, + 0x5d, 0x04, 0x0b, 0x12, 0x0e, 0xf4, 0x28, 0x22, 0x43, 0x79, 0xa7, 0x64, + 0x6a, 0xa7, 0x74, 0x3d, 0x0d, 0x15, 0x1d, 0x0f, 0xe6, 0x23, 0x1e, 0x02, + 0xfe, 0xe9, 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00, 0x04, 0x31, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0xd9, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x31, 0x05, 0x1b, 0x00, 0x10, + 0x00, 0x1f, 0x00, 0x3d, 0xb3, 0x1a, 0x1a, 0x1c, 0x08, 0xb8, 0x02, 0x05, + 0xb3, 0x11, 0x10, 0x18, 0x1c, 0xb8, 0x01, 0xf5, 0x40, 0x12, 0x01, 0x0e, + 0x10, 0x18, 0x01, 0xe0, 0x1b, 0x0f, 0x0f, 0x02, 0x1c, 0xe3, 0x0e, 0x43, + 0x17, 0xe3, 0x02, 0x41, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0xd6, 0xc4, 0xfd, 0xc4, 0x10, 0xd4, 0xed, + 0x12, 0x39, 0x2f, 0x31, 0x30, 0x11, 0x33, 0x11, 0x21, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x21, 0x11, 0x23, 0x25, 0x34, 0x2e, 0x02, + 0x23, 0x23, 0x11, 0x33, 0x15, 0x23, 0x11, 0x33, 0x32, 0x36, 0x6a, 0x01, + 0x6f, 0x96, 0xe1, 0x96, 0x4b, 0x4b, 0x9f, 0xf8, 0xad, 0xfe, 0xc8, 0x6a, + 0x03, 0x29, 0x22, 0x51, 0x88, 0x65, 0x69, 0xe8, 0xe8, 0x58, 0xb5, 0xbc, + 0x03, 0x06, 0x02, 0x15, 0x4b, 0x9c, 0xf0, 0xa6, 0x98, 0xf8, 0xaf, 0x5f, + 0x02, 0x3b, 0x53, 0x6a, 0xa6, 0x73, 0x3c, 0xfe, 0xb9, 0xcb, 0xfe, 0x93, + 0xd8, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x31, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x30, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xcb, 0x06, 0x87, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe1, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x06, 0x9a, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xcb, 0x06, 0x64, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xcb, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, + 0x06, 0xa6, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, + 0x00, 0x00, 0x00, 0x01, 0x00, 0xb8, 0xfe, 0x6a, 0x03, 0xf2, 0x05, 0x1b, + 0x00, 0x24, 0x00, 0x57, 0xb9, 0x00, 0x08, 0x01, 0xa5, 0x40, 0x0b, 0x1e, + 0x24, 0x18, 0x15, 0x15, 0x0e, 0x11, 0x0d, 0x18, 0x13, 0x17, 0xb8, 0x01, + 0xf9, 0x40, 0x0e, 0x0e, 0x1e, 0x03, 0x19, 0x43, 0x14, 0xe0, 0xf0, 0x16, + 0x01, 0x16, 0x16, 0x0e, 0x12, 0xb8, 0x01, 0x0b, 0xb2, 0x0f, 0x41, 0x17, + 0xb8, 0x01, 0x0b, 0xb6, 0x0e, 0x43, 0x24, 0x21, 0xc1, 0x03, 0x45, 0x00, + 0x3f, 0xfd, 0xc6, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0xed, + 0x3f, 0x12, 0x39, 0x01, 0x2f, 0xed, 0x32, 0xdd, 0xcd, 0xc4, 0x12, 0x39, + 0x2f, 0x10, 0xd6, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x21, 0x11, 0x21, 0x15, 0x21, + 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x0e, 0x03, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x03, 0xf2, 0x20, 0x50, 0x1f, 0x40, 0x58, 0x36, + 0x18, 0x0b, 0x1c, 0x2f, 0x25, 0xfd, 0xc0, 0x03, 0x13, 0xfd, 0xe7, 0x02, + 0x00, 0xfe, 0x00, 0x02, 0x19, 0x26, 0x2c, 0x18, 0x07, 0x21, 0x2d, 0x10, + 0x2a, 0x10, 0xfe, 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, + 0x37, 0x3b, 0x21, 0x05, 0x1b, 0xd0, 0xfe, 0xbb, 0xcb, 0xfe, 0x95, 0xd0, + 0x26, 0x37, 0x2a, 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x00, 0xff, 0xff, + 0x00, 0x2f, 0xff, 0xe9, 0x04, 0x0a, 0x06, 0x87, 0x02, 0x26, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x3d, 0x00, 0xff, 0xff, 0x00, 0x2f, + 0xff, 0xe9, 0x04, 0x0a, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x0a, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4c, 0x3d, 0x00, 0xff, 0xff, 0x00, 0x2f, 0xff, 0xe9, + 0x04, 0x0a, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x53, 0x3d, 0x00, 0xff, 0xff, 0x00, 0x2f, 0xfe, 0x66, 0x04, 0x0a, + 0x05, 0x31, 0x02, 0x26, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x04, 0x52, 0x05, 0x1b, 0x00, 0x13, + 0x00, 0x17, 0x00, 0x55, 0xb5, 0x11, 0x11, 0x19, 0x14, 0x0c, 0x01, 0xb8, + 0x01, 0xf5, 0x40, 0x09, 0x0f, 0x13, 0x19, 0x06, 0x06, 0x18, 0x17, 0x0b, + 0x02, 0xb8, 0x01, 0xf5, 0x40, 0x17, 0x08, 0x04, 0x18, 0x13, 0x43, 0x0e, + 0x41, 0x0f, 0x08, 0x0c, 0xe0, 0x12, 0x05, 0x16, 0x14, 0xe0, 0x02, 0x02, + 0x04, 0x09, 0x41, 0x04, 0x43, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xfd, + 0xd6, 0x32, 0x32, 0xed, 0x32, 0x32, 0x3f, 0x3f, 0x01, 0x10, 0xd6, 0x32, + 0xed, 0x32, 0x32, 0x12, 0x39, 0x2f, 0x10, 0xd6, 0x32, 0xed, 0x32, 0x32, + 0x12, 0x39, 0x2f, 0x31, 0x30, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, + 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, + 0x11, 0x03, 0x35, 0x21, 0x15, 0x02, 0xfe, 0xfe, 0x6d, 0xf6, 0x61, 0x61, + 0xf6, 0x01, 0x93, 0xf6, 0x5e, 0x5e, 0xf6, 0xfe, 0x6d, 0x02, 0x21, 0xfd, + 0xdf, 0x03, 0x93, 0xcb, 0xbd, 0xbd, 0xbd, 0xbd, 0xcb, 0xfc, 0x6d, 0x02, + 0xec, 0xa7, 0xa7, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe1, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, 0x06, 0xa0, 0x02, 0x26, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xd0, 0x06, 0x9a, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xd0, 0x06, 0x64, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, + 0x06, 0x8f, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, 0x06, 0xa6, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x96, 0xfe, 0x6a, 0x03, 0xf8, 0x05, 0x1b, 0x00, 0x24, + 0x00, 0x4d, 0xb9, 0x00, 0x08, 0x01, 0xa5, 0xb3, 0x1e, 0x24, 0x15, 0x0d, + 0xb8, 0x01, 0x9d, 0xb4, 0x18, 0x10, 0x12, 0x0f, 0x17, 0xb8, 0x01, 0xf9, + 0x40, 0x17, 0x10, 0x10, 0x25, 0x26, 0x1e, 0x03, 0x19, 0x43, 0x16, 0x11, + 0xde, 0x13, 0x41, 0x17, 0x10, 0xe0, 0x0e, 0x43, 0x24, 0x21, 0xc1, 0x03, + 0x45, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x3f, + 0x12, 0x39, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xfd, 0xd4, 0xc4, 0x10, 0xd4, + 0xed, 0xc4, 0xd6, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x21, 0x35, 0x21, 0x11, 0x21, + 0x35, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x0e, 0x03, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x03, 0xf8, 0x20, 0x50, 0x1f, 0x40, 0x58, 0x36, + 0x18, 0x0b, 0x1c, 0x2f, 0x25, 0xfd, 0x98, 0x01, 0x20, 0xfe, 0xe0, 0x03, + 0x3b, 0xfe, 0xdf, 0x01, 0x21, 0x26, 0x2c, 0x18, 0x07, 0x21, 0x2d, 0x10, + 0x2a, 0x10, 0xfe, 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, + 0x37, 0x3b, 0x21, 0xcb, 0x03, 0x87, 0xc9, 0xc9, 0xfc, 0x79, 0xcb, 0x26, + 0x37, 0x2a, 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x00, 0x02, 0x00, 0x60, + 0xff, 0xf0, 0x04, 0x08, 0x05, 0x1b, 0x00, 0x03, 0x00, 0x17, 0x00, 0x33, + 0xb3, 0x0d, 0x0d, 0x03, 0x04, 0xbb, 0x01, 0xf5, 0x00, 0x15, 0x00, 0x03, + 0x01, 0xf5, 0xb3, 0x01, 0x17, 0x41, 0x0c, 0xb8, 0x01, 0x12, 0x40, 0x09, + 0x0d, 0x10, 0xe4, 0x09, 0x44, 0x02, 0x41, 0x01, 0x43, 0x00, 0x3f, 0x3f, + 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x12, 0x39, + 0x2f, 0x31, 0x30, 0x21, 0x23, 0x11, 0x33, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, + 0x33, 0x01, 0x56, 0xf6, 0xf6, 0x02, 0xb2, 0x2f, 0x5a, 0x83, 0x54, 0x35, + 0x67, 0x2d, 0x25, 0x60, 0x31, 0x15, 0x2c, 0x25, 0x17, 0xf6, 0x05, 0x1b, + 0xfc, 0x29, 0x47, 0x7c, 0x5c, 0x35, 0x12, 0x11, 0xd9, 0x14, 0x19, 0x0e, + 0x21, 0x38, 0x2a, 0x03, 0xcb, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xec, + 0x03, 0x89, 0x06, 0x87, 0x02, 0x26, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, 0xfe, 0x66, 0x04, 0x42, + 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe7, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x0c, 0x00, 0x00, 0x03, 0xfc, 0x05, 0xd1, 0x02, 0x26, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, 0x01, 0x44, 0xff, 0x0c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xc5, 0xfe, 0x66, 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x29, 0x00, 0x00, 0x01, + 0x00, 0x23, 0x00, 0x00, 0x03, 0xfc, 0x05, 0x1b, 0x00, 0x0d, 0x00, 0x69, + 0x40, 0x19, 0x07, 0x0a, 0x0b, 0x06, 0x0b, 0x0d, 0x04, 0x05, 0x0c, 0x05, + 0x06, 0x06, 0x05, 0x05, 0x0e, 0x03, 0x0b, 0x0b, 0x0c, 0x0c, 0x00, 0x01, + 0x0d, 0x0a, 0x00, 0xb8, 0x01, 0xf9, 0xb3, 0x07, 0x04, 0x03, 0x0c, 0xbb, + 0x01, 0x0e, 0x00, 0x0b, 0x00, 0x06, 0x01, 0x0e, 0x40, 0x09, 0x05, 0x0b, + 0x05, 0x0b, 0x05, 0x03, 0x08, 0x41, 0x00, 0xb8, 0x01, 0x0d, 0xb1, 0x03, + 0x43, 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, + 0x10, 0xed, 0x01, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0xcd, 0x11, 0x39, + 0x2f, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x10, 0x7d, 0x87, + 0x04, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0x31, 0x30, 0x25, 0x21, 0x15, + 0x21, 0x11, 0x07, 0x35, 0x37, 0x11, 0x33, 0x11, 0x25, 0x15, 0x05, 0x01, + 0xd1, 0x02, 0x2b, 0xfc, 0xdb, 0xb4, 0xb4, 0xfa, 0x01, 0x62, 0xfe, 0x9e, + 0xd3, 0xd3, 0x02, 0x27, 0x5c, 0xd5, 0x5c, 0x02, 0x1f, 0xfe, 0x61, 0xb5, + 0xd5, 0xb5, 0xff, 0xff, 0x00, 0x9e, 0x00, 0x00, 0x04, 0x67, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x0f, 0xd9, 0x00, 0x00, 0x07, 0x01, 0x7d, 0x01, 0x6f, + 0x00, 0x3d, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x06, 0xa0, 0x02, 0x26, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5e, + 0xfe, 0x66, 0x04, 0x10, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5e, 0xfe, 0x5c, + 0x04, 0x10, 0x05, 0x1b, 0x00, 0x14, 0x00, 0x3d, 0xb3, 0x05, 0x05, 0x0a, + 0x14, 0xb8, 0x01, 0xc2, 0xb5, 0x0f, 0x0a, 0x09, 0x08, 0x11, 0x0a, 0xb8, + 0x01, 0xc2, 0x40, 0x11, 0x0d, 0x14, 0x41, 0x00, 0x11, 0x0a, 0x03, 0x0d, + 0x0f, 0x41, 0x09, 0x0d, 0x43, 0x06, 0xda, 0x05, 0x45, 0x00, 0x3f, 0xed, + 0x3f, 0x33, 0x3f, 0x12, 0x17, 0x39, 0x3f, 0x01, 0x2f, 0xed, 0xd4, 0x32, + 0x32, 0x11, 0x33, 0xed, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x25, 0x14, 0x0e, + 0x02, 0x23, 0x35, 0x32, 0x36, 0x35, 0x01, 0x15, 0x11, 0x23, 0x11, 0x21, + 0x01, 0x17, 0x35, 0x11, 0x33, 0x04, 0x10, 0x43, 0x7a, 0xaf, 0x6c, 0x6f, + 0x73, 0xfe, 0x24, 0xe0, 0x01, 0x20, 0x01, 0x87, 0x2b, 0xe0, 0x02, 0x72, + 0xa1, 0x65, 0x2e, 0xc3, 0x66, 0x7b, 0x03, 0xb4, 0x85, 0xfc, 0xd1, 0x05, + 0x1b, 0xfd, 0x04, 0x5e, 0x6c, 0x02, 0xee, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x41, 0x06, 0x87, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x41, 0x06, 0x87, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0xa0, + 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x9a, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x64, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x41, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x9c, 0x06, 0x87, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x51, 0x00, 0x00, 0x00, 0x03, 0x00, 0x25, 0xff, 0x29, 0x04, 0x41, + 0x05, 0xf2, 0x00, 0x1b, 0x00, 0x27, 0x00, 0x33, 0x00, 0x7f, 0xb6, 0x1e, + 0x2d, 0x21, 0x2a, 0x04, 0x1c, 0x28, 0xb8, 0x01, 0xfb, 0x40, 0x1a, 0x0e, + 0x16, 0x2c, 0x2b, 0x0b, 0x0a, 0x17, 0x0a, 0x19, 0x1f, 0x20, 0x08, 0x09, + 0x18, 0x09, 0x17, 0x09, 0x0a, 0x18, 0x1a, 0x15, 0x07, 0x0c, 0x04, 0x0e, + 0x00, 0xb8, 0x01, 0xfb, 0x40, 0x0a, 0x1c, 0x0a, 0x0e, 0x20, 0x2b, 0x1f, + 0x2c, 0x04, 0x23, 0x2f, 0xb8, 0x01, 0x0f, 0x40, 0x0b, 0x18, 0x17, 0x08, + 0x0b, 0x19, 0x16, 0x04, 0x05, 0x13, 0x42, 0x23, 0xb8, 0x01, 0x0f, 0xb3, + 0x0a, 0x09, 0x05, 0x44, 0x00, 0x3f, 0xc6, 0x32, 0xed, 0x3f, 0x12, 0x17, + 0x39, 0xc6, 0x32, 0xed, 0x11, 0x17, 0x39, 0x01, 0x2f, 0xc4, 0xd4, 0xfd, + 0x11, 0x17, 0x39, 0xc4, 0x11, 0x33, 0x32, 0x10, 0x7d, 0x87, 0xc4, 0xc4, + 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0x10, 0xed, + 0x11, 0x17, 0x39, 0x31, 0x30, 0x01, 0x14, 0x02, 0x06, 0x06, 0x23, 0x22, + 0x26, 0x27, 0x07, 0x23, 0x13, 0x26, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, + 0x33, 0x32, 0x16, 0x17, 0x37, 0x33, 0x03, 0x16, 0x12, 0x07, 0x34, 0x26, + 0x27, 0x01, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x25, 0x14, 0x16, 0x17, + 0x13, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x04, 0x41, 0x52, 0x8e, 0xc1, + 0x6f, 0x1d, 0x37, 0x1a, 0x40, 0xc5, 0x54, 0x75, 0x78, 0x51, 0x8f, 0xc1, + 0x6f, 0x1d, 0x38, 0x1a, 0x3f, 0xc5, 0x56, 0x77, 0x78, 0xfc, 0x1e, 0x23, + 0xff, 0x00, 0x0c, 0x1b, 0x0e, 0x47, 0x66, 0x41, 0x1e, 0xfd, 0xdc, 0x1e, + 0x23, 0xfe, 0x0b, 0x17, 0x0d, 0x47, 0x66, 0x43, 0x20, 0x02, 0x9c, 0xb1, + 0xfe, 0xfb, 0xaa, 0x53, 0x06, 0x05, 0xcb, 0x01, 0x0a, 0x4c, 0x01, 0x28, + 0xda, 0xb0, 0x01, 0x03, 0xaa, 0x53, 0x05, 0x05, 0xcb, 0xfe, 0xf3, 0x4b, + 0xfe, 0xd8, 0xea, 0x77, 0xb3, 0x3b, 0xfc, 0xd7, 0x04, 0x01, 0x3e, 0x76, + 0xa9, 0x78, 0x78, 0xb1, 0x3b, 0x03, 0x27, 0x02, 0x02, 0x3e, 0x75, 0xa9, + 0xff, 0xff, 0xff, 0x35, 0xff, 0x29, 0x04, 0x41, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x5f, 0x00, 0x00, 0x00, 0x07, 0x01, 0x3f, 0xff, 0x35, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x1b, 0xff, 0xee, 0x04, 0x4c, 0x05, 0x2d, 0x00, 0x1e, + 0x00, 0x2f, 0x00, 0x50, 0xb1, 0x18, 0x1c, 0xb8, 0x01, 0xc6, 0x40, 0x0a, + 0x11, 0x03, 0x2f, 0x19, 0x2f, 0x19, 0x0a, 0x1d, 0x16, 0x27, 0xb8, 0x01, + 0xf8, 0x40, 0x0f, 0x0a, 0x19, 0xd6, 0x1b, 0x1b, 0x15, 0x1c, 0xdc, 0x1e, + 0x43, 0x17, 0xdc, 0x15, 0x41, 0x22, 0xb8, 0x01, 0x0c, 0xb2, 0x0f, 0x42, + 0x2c, 0xb8, 0x01, 0x0c, 0xb1, 0x05, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0xed, + 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0xd4, + 0xc4, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x31, 0x30, + 0x21, 0x22, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x33, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, + 0x11, 0x21, 0x15, 0x01, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x02, 0xe9, 0x26, 0x3a, 0x37, 0x39, + 0x23, 0x7e, 0xb4, 0x73, 0x36, 0x49, 0x82, 0xb1, 0x69, 0x29, 0x3b, 0x32, + 0x2f, 0x1c, 0x01, 0x6b, 0xfe, 0xdf, 0x01, 0x0a, 0xfe, 0xf6, 0x01, 0x21, + 0xfd, 0xfa, 0x0e, 0x1f, 0x1d, 0x3e, 0x57, 0x39, 0x1a, 0x19, 0x39, 0x5b, + 0x41, 0x1a, 0x1f, 0x0b, 0x06, 0x06, 0x06, 0x56, 0xaa, 0xf9, 0xa4, 0xb1, + 0xfe, 0xa5, 0x4e, 0x06, 0x06, 0x06, 0xc5, 0xfe, 0xac, 0xbe, 0xfe, 0x81, + 0xc5, 0x04, 0x54, 0x05, 0x03, 0x43, 0x79, 0xaa, 0x67, 0x6f, 0xad, 0x76, + 0x3e, 0x06, 0x05, 0x00, 0x00, 0x02, 0x00, 0x87, 0x00, 0x00, 0x04, 0x12, + 0x05, 0x1b, 0x00, 0x0a, 0x00, 0x1b, 0x00, 0x36, 0xb2, 0x17, 0x0b, 0x05, + 0xbb, 0x01, 0xf7, 0x00, 0x19, 0x00, 0x11, 0x02, 0x00, 0x40, 0x11, 0x00, + 0x19, 0x03, 0xe1, 0x0b, 0x06, 0xe1, 0x17, 0x0b, 0x17, 0x0b, 0x17, 0x19, + 0x1a, 0x41, 0x19, 0x43, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, + 0x10, 0xed, 0x10, 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x10, 0xfd, 0xc4, 0xc4, + 0x31, 0x30, 0x01, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, + 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x15, + 0x23, 0x11, 0x33, 0x03, 0x10, 0x85, 0x8b, 0x81, 0x89, 0x40, 0x62, 0x43, + 0x23, 0xfe, 0x6f, 0x87, 0x7f, 0xc3, 0x85, 0x45, 0x44, 0x86, 0xc8, 0x84, + 0x7d, 0xf8, 0xf8, 0x02, 0xba, 0x66, 0x7b, 0xfe, 0x21, 0x24, 0x42, 0x5e, + 0x01, 0xe7, 0x38, 0x6a, 0x9a, 0x64, 0x66, 0xad, 0x7e, 0x46, 0xf0, 0x05, + 0x1b, 0x00, 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00, 0x04, 0x35, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0xd9, 0x00, + 0xff, 0xff, 0xff, 0xd9, 0x00, 0x00, 0x04, 0x35, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x15, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0xd9, 0x00, 0xff, 0xff, + 0x00, 0x81, 0xfe, 0x66, 0x04, 0x35, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x15, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xfc, 0x06, 0x87, 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xfc, 0x06, 0x87, 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xfc, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x62, 0xfe, 0xd9, 0x03, 0xfc, 0x05, 0x31, + 0x00, 0x3c, 0x00, 0x6c, 0xbc, 0x00, 0x06, 0x01, 0x6f, 0x00, 0x07, 0x00, + 0x05, 0x01, 0xc7, 0x40, 0x0b, 0x08, 0x08, 0x16, 0x0b, 0x2a, 0x2a, 0x1f, + 0x09, 0x04, 0x0b, 0x00, 0xb8, 0x02, 0x1d, 0xb2, 0x16, 0x0b, 0x34, 0xbd, + 0x02, 0x07, 0x00, 0x1f, 0x00, 0x29, 0x01, 0x1a, 0x00, 0x2a, 0xff, 0xc0, + 0xb4, 0x0e, 0x12, 0x48, 0x2a, 0x2f, 0xb8, 0x01, 0x0d, 0xb7, 0x34, 0x16, + 0x05, 0x24, 0x42, 0x06, 0x49, 0x0b, 0xb8, 0x01, 0x23, 0xb5, 0x0c, 0x11, + 0xde, 0x08, 0x05, 0x43, 0x00, 0x3f, 0xc5, 0xfd, 0xd6, 0xed, 0x3f, 0x3f, + 0x12, 0x39, 0x39, 0xfd, 0xd6, 0x2b, 0xed, 0x01, 0x2f, 0xed, 0xc4, 0xd4, + 0xed, 0x11, 0x39, 0x39, 0x11, 0x39, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, + 0xdd, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x07, 0x03, 0x23, 0x13, + 0x26, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x06, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, + 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x06, 0x03, 0xfc, + 0x33, 0x5d, 0x83, 0x50, 0x6c, 0xb2, 0x38, 0x58, 0xa7, 0x52, 0x2e, 0x64, + 0x65, 0x64, 0x2f, 0x46, 0x62, 0x3e, 0x1c, 0x37, 0x5a, 0x73, 0x77, 0x73, + 0x5a, 0x37, 0x38, 0x78, 0xbc, 0x85, 0x27, 0x55, 0x53, 0x4d, 0x20, 0x20, + 0x4c, 0x51, 0x52, 0x25, 0x41, 0x5a, 0x3a, 0x1a, 0x37, 0x5b, 0x73, 0x79, + 0x73, 0x5b, 0x37, 0x01, 0x8b, 0x56, 0x86, 0x63, 0x42, 0x10, 0xfe, 0xdf, + 0x01, 0x11, 0x02, 0x19, 0x18, 0xf3, 0x10, 0x1c, 0x15, 0x0c, 0x18, 0x2a, + 0x3a, 0x23, 0x30, 0x41, 0x32, 0x28, 0x2e, 0x3a, 0x56, 0x77, 0x54, 0x4d, + 0x8a, 0x67, 0x3d, 0x07, 0x0b, 0x0f, 0x08, 0xe1, 0x0c, 0x14, 0x0f, 0x08, + 0x15, 0x25, 0x36, 0x21, 0x29, 0x3b, 0x2f, 0x29, 0x2f, 0x3c, 0x56, 0x75, + 0xff, 0xff, 0x00, 0x62, 0xfe, 0x66, 0x03, 0xfc, 0x05, 0x31, 0x02, 0x26, + 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x17, 0x06, 0x87, 0x02, 0x26, 0x00, 0x17, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4f, + 0xfe, 0x66, 0x04, 0x17, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x17, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x4f, 0x00, 0x00, + 0x04, 0x17, 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x3a, 0xb3, 0x0c, 0x09, 0x01, + 0x04, 0xb8, 0x01, 0xfb, 0x40, 0x16, 0x0f, 0x0a, 0x03, 0x06, 0x06, 0x10, + 0x11, 0x00, 0x0b, 0xe2, 0x0d, 0x01, 0x0a, 0xdf, 0x04, 0x07, 0x07, 0x06, + 0x0d, 0x41, 0x06, 0x43, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x33, 0xed, + 0x32, 0x10, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, 0xc4, 0xc4, + 0xfd, 0xc4, 0xcd, 0xc4, 0x31, 0x30, 0x01, 0x11, 0x33, 0x15, 0x23, 0x11, + 0x23, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x35, 0x21, 0x15, 0x02, 0xb1, + 0xee, 0xee, 0xfc, 0xed, 0xed, 0xfe, 0x9a, 0x03, 0xc8, 0x04, 0x4e, 0xfe, + 0x93, 0xca, 0xfd, 0xe9, 0x02, 0x17, 0xca, 0x01, 0x6d, 0xcd, 0xcd, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x06, 0x87, 0x02, 0x26, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x0f, 0x06, 0x87, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x0f, 0x06, 0xa0, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, + 0x06, 0x9a, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x06, 0x64, + 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x06, 0x8f, 0x02, 0x26, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x06, 0xcd, 0x02, 0x26, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x4e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x9c, 0x06, 0x87, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x51, 0x00, 0x00, 0x00, 0x01, 0x00, 0x57, 0xfe, 0x6a, + 0x04, 0x0f, 0x05, 0x1b, 0x00, 0x30, 0x00, 0x55, 0xb3, 0x0e, 0x24, 0x12, + 0x22, 0xbe, 0x01, 0xf5, 0x00, 0x20, 0x00, 0x25, 0x01, 0xc9, 0x00, 0x0d, + 0x00, 0x08, 0x01, 0xa5, 0x40, 0x09, 0x2a, 0x30, 0x0d, 0x30, 0x0d, 0x30, + 0x15, 0x20, 0x15, 0xb8, 0x01, 0xf5, 0x40, 0x11, 0x12, 0x2a, 0x03, 0x1a, + 0xd1, 0x0d, 0x25, 0x43, 0x21, 0x41, 0x13, 0x41, 0x30, 0x2d, 0xc1, 0x03, + 0x45, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0x3f, 0x3f, 0xc1, 0xed, 0x12, 0x39, + 0x01, 0x2f, 0xed, 0xc4, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xd6, 0xed, + 0x10, 0xed, 0x10, 0xed, 0x11, 0x39, 0x39, 0x31, 0x30, 0x01, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, + 0x33, 0x11, 0x14, 0x06, 0x07, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x03, 0x00, 0x20, 0x50, 0x1f, 0x40, 0x58, 0x36, 0x18, 0x09, + 0x17, 0x26, 0x1e, 0x6c, 0x9c, 0x63, 0x2d, 0xf6, 0x16, 0x3a, 0x56, 0x41, + 0x3d, 0x54, 0x38, 0x1c, 0xf6, 0x98, 0x9f, 0x25, 0x2c, 0x18, 0x07, 0x21, + 0x2d, 0x10, 0x2b, 0x0f, 0xfe, 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, 0x26, + 0x19, 0x31, 0x32, 0x35, 0x1d, 0x07, 0x45, 0x77, 0xa4, 0x66, 0x03, 0x63, + 0xfc, 0xac, 0x42, 0x66, 0x47, 0x24, 0x1f, 0x45, 0x6c, 0x4d, 0x03, 0x4a, + 0xfc, 0xc6, 0xb9, 0xf8, 0x30, 0x26, 0x37, 0x2a, 0x22, 0x0f, 0x1f, 0x1f, + 0x05, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x46, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x46, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x46, 0x06, 0x87, 0x02, 0x26, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x46, 0x06, 0x9a, 0x02, 0x26, 0x00, 0x1a, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x5a, 0x06, 0x87, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x06, 0x9a, 0x02, 0x26, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0x06, 0x87, 0x02, 0x26, 0x00, 0x1d, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xfe, 0x06, 0x87, 0x02, 0x26, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xfe, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x53, 0x00, 0x00, 0x00, 0x02, 0x00, 0x6d, 0xff, 0xe9, 0x03, 0xd9, + 0x04, 0x0e, 0x00, 0x24, 0x00, 0x31, 0x00, 0x93, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb3, 0x1a, 0x1a, 0x0b, 0x23, 0xb8, 0x02, 0x0b, 0xb3, 0x11, + 0x01, 0x25, 0x2b, 0xb8, 0x02, 0x17, 0x40, 0x1f, 0x0b, 0x1b, 0xff, 0x1a, + 0x1a, 0x17, 0x10, 0xcc, 0x01, 0x24, 0x00, 0x26, 0x10, 0x26, 0x02, 0x08, + 0x03, 0x26, 0x26, 0x1e, 0x24, 0x51, 0x17, 0xf4, 0x1e, 0x50, 0x2e, 0xfd, + 0x40, 0x06, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, + 0x12, 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0x12, 0x39, 0xed, 0x11, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0xed, 0xd4, 0x32, 0xc4, 0xed, 0x12, 0x39, 0x2f, 0x31, + 0x30, 0x1b, 0x40, 0x1e, 0x1b, 0xff, 0x1a, 0x1a, 0x17, 0x10, 0xcc, 0x01, + 0x24, 0x00, 0x26, 0x10, 0x26, 0x02, 0x08, 0x03, 0x26, 0x26, 0x1e, 0x24, + 0x51, 0x17, 0xf4, 0x1e, 0x50, 0x2e, 0xfd, 0x40, 0x06, 0x52, 0x00, 0x18, + 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x5f, 0x5e, + 0x5d, 0x12, 0x39, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x59, 0x21, + 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x33, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x03, 0x08, 0x06, 0x20, 0x46, 0x54, + 0x63, 0x3b, 0x4e, 0x76, 0x50, 0x29, 0x3d, 0x7d, 0xbb, 0x7e, 0x85, 0x16, + 0x31, 0x4e, 0x39, 0x5a, 0xaf, 0x52, 0x49, 0xbf, 0x67, 0x71, 0xa2, 0x69, + 0x32, 0xf4, 0x95, 0x3e, 0x56, 0x36, 0x19, 0x50, 0x45, 0x33, 0x6e, 0x42, + 0x85, 0x22, 0x39, 0x2a, 0x17, 0x2e, 0x52, 0x74, 0x46, 0x48, 0x7a, 0x58, + 0x32, 0x3d, 0x27, 0x3f, 0x2c, 0x18, 0x29, 0x25, 0xc3, 0x1d, 0x26, 0x2b, + 0x56, 0x81, 0x56, 0xfd, 0x4a, 0x01, 0xc1, 0x18, 0x2a, 0x37, 0x1f, 0x3e, + 0x41, 0x4a, 0x45, 0x00, 0x00, 0x02, 0x00, 0x8b, 0xff, 0xee, 0x04, 0x1d, + 0x05, 0x85, 0x00, 0x13, 0x00, 0x24, 0x00, 0x53, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb1, 0x0b, 0x1d, 0xbb, 0x02, 0x0b, 0x00, 0x08, 0x00, 0x00, + 0x02, 0x17, 0xb2, 0x14, 0x08, 0x19, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x0f, + 0x50, 0x09, 0x53, 0x20, 0xfc, 0x40, 0x05, 0x52, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xed, 0x3f, 0x3f, 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x10, 0xfd, 0xc4, + 0x31, 0x30, 0x1b, 0xb9, 0x00, 0x19, 0x01, 0x31, 0x40, 0x09, 0x0f, 0x50, + 0x09, 0x53, 0x20, 0xfc, 0x40, 0x05, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, + 0xed, 0x3f, 0x3f, 0xed, 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x8d, 0xc0, 0x71, 0x6f, 0xbf, + 0x57, 0xf4, 0x0a, 0x37, 0x93, 0x67, 0x5a, 0x8c, 0x5f, 0x32, 0xff, 0x00, + 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x55, 0x2c, 0x3a, 0x5f, + 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, 0x41, 0x21, 0x1c, 0x05, 0x5a, + 0xfe, 0xb4, 0xc8, 0x47, 0x56, 0x48, 0x85, 0xbd, 0x80, 0x54, 0x76, 0x4c, + 0x23, 0x64, 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x01, + 0x00, 0x85, 0xff, 0xee, 0x03, 0xc1, 0x04, 0x08, 0x00, 0x23, 0x00, 0x79, + 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb2, 0x23, 0x11, 0x19, 0xbb, 0x02, + 0x1b, 0x00, 0x08, 0x00, 0x10, 0x01, 0x40, 0xb6, 0x0f, 0x11, 0x01, 0x10, + 0x03, 0x11, 0x14, 0xb8, 0x01, 0x31, 0xb2, 0x0d, 0x50, 0x00, 0xbb, 0x01, + 0x37, 0x00, 0x23, 0x00, 0x1e, 0x01, 0x34, 0xb2, 0x40, 0x03, 0x52, 0x00, + 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0xfd, 0xd6, 0x5f, 0x5e, + 0x5d, 0xed, 0x01, 0x2f, 0xed, 0xd4, 0xc6, 0x31, 0x30, 0x1b, 0xb9, 0x00, + 0x10, 0x01, 0x40, 0xb6, 0x0f, 0x11, 0x01, 0x10, 0x03, 0x11, 0x14, 0xb8, + 0x01, 0x31, 0xb2, 0x0d, 0x50, 0x00, 0xbb, 0x01, 0x37, 0x00, 0x23, 0x00, + 0x1e, 0x01, 0x34, 0xb2, 0x40, 0x03, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, + 0xfd, 0xd6, 0xed, 0x3f, 0xfd, 0xd6, 0x5f, 0x5e, 0x5d, 0xed, 0x31, 0x30, + 0x59, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x03, 0xc1, 0x48, 0x9a, + 0x54, 0x79, 0xc0, 0x86, 0x47, 0x4d, 0x8c, 0xc5, 0x79, 0x63, 0x87, 0x36, + 0x3e, 0x91, 0x41, 0x44, 0x6c, 0x4a, 0x27, 0x2a, 0x4d, 0x6c, 0x42, 0x20, + 0x47, 0x47, 0x45, 0x1e, 0x27, 0x1d, 0x1c, 0x42, 0x82, 0xc0, 0x7e, 0x7a, + 0xc6, 0x8c, 0x4c, 0x15, 0x10, 0xed, 0x1f, 0x22, 0x2e, 0x52, 0x75, 0x46, + 0x49, 0x74, 0x51, 0x2b, 0x09, 0x11, 0x16, 0x0d, 0x00, 0x02, 0x00, 0x4c, + 0xff, 0xe9, 0x03, 0xdd, 0x05, 0x85, 0x00, 0x16, 0x00, 0x27, 0x00, 0x63, + 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb9, 0x00, 0x16, 0x02, 0x0b, 0xb3, + 0x13, 0x01, 0x20, 0x17, 0xb8, 0x02, 0x17, 0x40, 0x0d, 0x0b, 0x28, 0x01, + 0x15, 0x16, 0x51, 0x15, 0x53, 0x23, 0xfc, 0x10, 0x50, 0x1c, 0xb8, 0x01, + 0x31, 0xb2, 0x40, 0x06, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, + 0xed, 0x3f, 0x3f, 0x12, 0x39, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0x32, 0xc4, + 0xed, 0x31, 0x30, 0x1b, 0x40, 0x0b, 0x01, 0x15, 0x16, 0x51, 0x15, 0x53, + 0x23, 0xfc, 0x10, 0x50, 0x1c, 0xb8, 0x01, 0x31, 0xb2, 0x40, 0x06, 0x52, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0x3f, 0x12, 0x39, + 0x31, 0x30, 0x59, 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x01, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x03, 0x0a, 0x06, 0x20, 0x44, 0x4e, 0x59, 0x36, 0x5a, 0x8c, 0x5f, + 0x32, 0x4f, 0x8c, 0xc0, 0x71, 0x26, 0x4d, 0x1e, 0xf4, 0xfd, 0x6f, 0x17, + 0x2d, 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, + 0x24, 0x96, 0x27, 0x40, 0x2d, 0x19, 0x48, 0x85, 0xbe, 0x75, 0x8c, 0xcd, + 0x87, 0x41, 0x0a, 0x08, 0x01, 0x8d, 0xfa, 0x7b, 0x01, 0xf4, 0x54, 0x77, + 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, + 0x00, 0x02, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, 0x04, 0x0e, 0x00, 0x20, + 0x00, 0x29, 0x00, 0x67, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb3, 0x0c, + 0x0c, 0x17, 0x00, 0xb8, 0x02, 0x0f, 0xb2, 0x21, 0x29, 0x04, 0xb8, 0x02, + 0x0f, 0x40, 0x12, 0x17, 0x21, 0xcd, 0x04, 0x04, 0x2a, 0x26, 0xf3, 0x1c, + 0x50, 0x0d, 0xfe, 0x0c, 0x09, 0xff, 0x40, 0x12, 0x52, 0x00, 0x18, 0x3f, + 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0xed, 0x32, 0xdd, 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x1b, 0x40, + 0x11, 0x21, 0xcd, 0x04, 0x04, 0x2a, 0x26, 0xf3, 0x1c, 0x50, 0x0d, 0xfe, + 0x0c, 0x09, 0xff, 0x40, 0x12, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, + 0xd6, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x06, 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x07, 0x36, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x04, 0x00, + 0x03, 0x03, 0xfd, 0x64, 0x29, 0x4b, 0x69, 0x40, 0x4a, 0xa9, 0x5b, 0x27, + 0x5c, 0x60, 0x62, 0x2e, 0x74, 0xb8, 0x80, 0x44, 0x44, 0x7c, 0xb1, 0x6d, + 0x6c, 0xa6, 0x70, 0x3a, 0xf8, 0x01, 0x20, 0x37, 0x49, 0x2a, 0x5c, 0x76, + 0x0b, 0x02, 0x4a, 0x19, 0x50, 0x23, 0x43, 0x66, 0x45, 0x24, 0x17, 0x1a, + 0xc2, 0x0b, 0x12, 0x0e, 0x07, 0x42, 0x81, 0xbe, 0x7d, 0x7c, 0xcb, 0x91, + 0x4f, 0x43, 0x78, 0xa6, 0x40, 0x3c, 0x59, 0x3a, 0x1c, 0x7b, 0x70, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1b, 0x05, 0x98, 0x00, 0x1b, + 0x00, 0x1c, 0x00, 0x79, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb2, 0x10, + 0x09, 0x0d, 0xb8, 0x02, 0x0d, 0x40, 0x12, 0x0f, 0x0a, 0x00, 0x12, 0x0f, + 0x0f, 0x1d, 0x1e, 0x12, 0x09, 0xfa, 0x0f, 0x13, 0x0c, 0x0c, 0x18, 0x0e, + 0x1b, 0xb8, 0x01, 0x01, 0xb7, 0x00, 0x03, 0xfd, 0x40, 0x18, 0x54, 0x0e, + 0x51, 0x00, 0x18, 0x3f, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x11, 0x12, + 0x39, 0x2f, 0x39, 0x33, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, + 0xd4, 0xce, 0x10, 0xfd, 0xc4, 0xc4, 0x31, 0x30, 0x1b, 0x40, 0x0a, 0x12, + 0x09, 0xfa, 0x0f, 0x13, 0x0c, 0x0c, 0x18, 0x0e, 0x1b, 0xb8, 0x01, 0x01, + 0xb7, 0x00, 0x03, 0xfd, 0x40, 0x18, 0x54, 0x0e, 0x51, 0x00, 0x18, 0x3f, + 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x39, 0x2f, 0x39, 0x33, + 0xed, 0x32, 0x31, 0x30, 0x59, 0x01, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x15, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x01, 0x04, 0x1b, 0x2c, 0x79, + 0x3f, 0x2b, 0x4a, 0x36, 0x1f, 0x01, 0x8f, 0xfe, 0x71, 0xf6, 0xfe, 0xd9, + 0x01, 0x27, 0x3f, 0x73, 0xa2, 0x64, 0x42, 0x77, 0x33, 0xfb, 0xe5, 0x04, + 0xb6, 0x0e, 0x13, 0x17, 0x32, 0x4d, 0x37, 0xa4, 0xbe, 0xfd, 0x58, 0x02, + 0xa8, 0xbe, 0x9a, 0x6c, 0x9b, 0x63, 0x2e, 0x11, 0x0c, 0xfe, 0x7d, 0x00, + 0x00, 0x03, 0x00, 0x4c, 0xfe, 0x5c, 0x04, 0x25, 0x04, 0x0c, 0x00, 0x3d, + 0x00, 0x50, 0x00, 0x60, 0x00, 0xe6, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xb3, 0x30, 0x0b, 0x33, 0x59, 0xb8, 0x01, 0xd7, 0xb3, 0x03, 0x3d, 0x19, + 0x0e, 0xbb, 0x01, 0xae, 0x00, 0x2b, 0x00, 0x51, 0x01, 0xd6, 0x40, 0x09, + 0x33, 0x28, 0x33, 0x2b, 0x33, 0x2b, 0x33, 0x23, 0x19, 0xbb, 0x02, 0x13, + 0x00, 0x46, 0x00, 0x3e, 0x02, 0x11, 0x40, 0x2c, 0x23, 0x61, 0x54, 0xc8, + 0x08, 0x12, 0x15, 0xf3, 0x4a, 0x4c, 0x4a, 0x0b, 0x30, 0x03, 0x03, 0x38, + 0x28, 0x4a, 0x0f, 0x08, 0x1f, 0x08, 0x02, 0x0f, 0x03, 0x08, 0x4a, 0x08, + 0x4a, 0x38, 0x61, 0x3d, 0xcf, 0x3c, 0x4f, 0x5c, 0xca, 0x38, 0x50, 0x41, + 0xca, 0x40, 0x1e, 0x56, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, + 0x3f, 0xed, 0x11, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5f, 0x5e, 0x5d, 0x12, + 0x39, 0x12, 0x17, 0x39, 0x11, 0x33, 0x10, 0xed, 0x32, 0x10, 0xed, 0x01, + 0x10, 0xd6, 0xed, 0xd4, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x39, + 0x10, 0xed, 0x10, 0xed, 0x10, 0xd6, 0xd6, 0xed, 0x12, 0x39, 0x39, 0x31, + 0x30, 0x1b, 0x40, 0x2a, 0x54, 0xc8, 0x08, 0x12, 0x15, 0xf3, 0x4a, 0x4c, + 0x4a, 0x0b, 0x30, 0x03, 0x03, 0x38, 0x28, 0x4a, 0x0f, 0x08, 0x1f, 0x08, + 0x02, 0x0f, 0x03, 0x08, 0x4a, 0x08, 0x4a, 0x38, 0x61, 0x3d, 0xcf, 0x3c, + 0x4f, 0x5c, 0xca, 0x38, 0x50, 0x41, 0xca, 0x40, 0x1e, 0x56, 0x00, 0x18, + 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0x5f, 0x5e, 0x5d, 0x12, 0x39, 0x12, 0x17, 0x39, 0x11, 0x33, + 0x10, 0xed, 0x32, 0x10, 0xed, 0x31, 0x30, 0x59, 0x01, 0x16, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x17, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x21, + 0x15, 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x27, 0x27, 0x0e, 0x03, 0x13, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x85, 0x1c, 0x17, 0x3b, 0x6b, + 0x95, 0x5a, 0x35, 0x5a, 0x17, 0x11, 0x18, 0x10, 0x1f, 0x2b, 0x1b, 0xf1, + 0x51, 0x83, 0x5e, 0x33, 0x40, 0x81, 0xc0, 0x7f, 0x7b, 0xb1, 0x71, 0x36, + 0x12, 0x24, 0x36, 0x25, 0x31, 0x33, 0x12, 0x1d, 0x26, 0x15, 0x25, 0x31, + 0x3d, 0x6c, 0x95, 0x58, 0x2d, 0x53, 0x22, 0x01, 0x60, 0xfd, 0x21, 0x77, + 0x6c, 0x45, 0x5f, 0x3c, 0x1a, 0x19, 0x2d, 0x3d, 0x25, 0xd7, 0x1d, 0x25, + 0x15, 0x07, 0x29, 0x5f, 0x55, 0x2d, 0x43, 0x2c, 0x16, 0x5f, 0x55, 0x2d, + 0x43, 0x2c, 0x16, 0x03, 0x46, 0x23, 0x4d, 0x28, 0x55, 0x82, 0x58, 0x2d, + 0x15, 0x0e, 0x11, 0x29, 0x1a, 0x10, 0x20, 0x19, 0x10, 0x01, 0x09, 0x02, + 0x25, 0x44, 0x61, 0x3e, 0x47, 0x7e, 0x5d, 0x36, 0x27, 0x46, 0x61, 0x3a, + 0x23, 0x3c, 0x37, 0x34, 0x1a, 0x1c, 0x58, 0x32, 0x22, 0x3b, 0x36, 0x32, + 0x18, 0x25, 0x69, 0x4f, 0x55, 0x85, 0x5b, 0x2f, 0x09, 0x0b, 0xb2, 0xfc, + 0x33, 0x3b, 0x38, 0x1a, 0x2a, 0x38, 0x1e, 0x1b, 0x25, 0x19, 0x0d, 0x02, + 0x04, 0x14, 0x24, 0x23, 0x24, 0x03, 0x1b, 0x51, 0x5f, 0x1e, 0x32, 0x42, + 0x24, 0x55, 0x5f, 0x1e, 0x33, 0x44, 0x00, 0x01, 0x00, 0x8b, 0x00, 0x00, + 0x03, 0xdd, 0x05, 0x85, 0x00, 0x17, 0x00, 0x59, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb1, 0x0b, 0x06, 0xbb, 0x02, 0x0b, 0x00, 0x08, 0x00, 0x16, + 0x02, 0x0b, 0xb6, 0x00, 0x08, 0x17, 0x51, 0x0c, 0x08, 0x03, 0xb8, 0x01, + 0x31, 0xb6, 0x40, 0x11, 0x50, 0x09, 0x53, 0x08, 0x51, 0x00, 0x18, 0x3f, + 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x3f, 0x01, 0x2f, 0xd4, 0xed, + 0x10, 0xfd, 0xc4, 0x31, 0x30, 0x1b, 0xb4, 0x17, 0x51, 0x0c, 0x08, 0x03, + 0xb8, 0x01, 0x31, 0xb6, 0x40, 0x11, 0x50, 0x09, 0x53, 0x08, 0x51, 0x00, + 0x18, 0x3f, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x12, 0x39, 0x3f, 0x31, 0x30, + 0x59, 0x21, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x33, + 0x11, 0x07, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x02, 0xe9, + 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0xf4, 0x0c, 0x1f, 0x40, 0x4a, 0x56, 0x34, + 0x4e, 0x74, 0x4e, 0x27, 0x02, 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x7d, 0x05, + 0x85, 0xfe, 0xa4, 0xb8, 0x25, 0x3b, 0x28, 0x15, 0x33, 0x5d, 0x83, 0x51, + 0xfd, 0x56, 0x00, 0x02, 0x00, 0x91, 0x00, 0x00, 0x03, 0xf2, 0x05, 0xae, + 0x00, 0x13, 0x00, 0x1d, 0x00, 0x7f, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xbc, 0x00, 0x0a, 0x02, 0x3c, 0x00, 0x00, 0x00, 0x18, 0x02, 0x11, 0x40, + 0x12, 0x1d, 0x1c, 0x15, 0x1d, 0x19, 0x19, 0x1d, 0x15, 0x1c, 0x04, 0x1e, + 0x1f, 0x18, 0x1d, 0xfa, 0x1b, 0x51, 0x0f, 0xb8, 0x01, 0x4b, 0x40, 0x0d, + 0x0f, 0x05, 0x1f, 0x05, 0x02, 0x18, 0x03, 0x05, 0x14, 0xfa, 0x40, 0x16, + 0x4f, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0xde, 0x5f, 0x5e, 0x5d, 0xed, + 0x3f, 0xed, 0x32, 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, + 0x10, 0xfd, 0xd4, 0xed, 0x31, 0x30, 0x1b, 0xb5, 0x18, 0x1d, 0xfa, 0x1b, + 0x51, 0x0f, 0xb8, 0x01, 0x4b, 0x40, 0x0d, 0x0f, 0x05, 0x1f, 0x05, 0x02, + 0x18, 0x03, 0x05, 0x14, 0xfa, 0x40, 0x16, 0x4f, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xed, 0xde, 0x5f, 0x5e, 0x5d, 0xed, 0x3f, 0xed, 0x32, 0x31, 0x30, + 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x21, 0x35, 0x21, 0x11, 0x21, 0x15, + 0x21, 0x35, 0x21, 0x02, 0xe1, 0x18, 0x2b, 0x3a, 0x22, 0x22, 0x3b, 0x2b, + 0x18, 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, 0x2b, 0x18, 0xfe, 0xf2, 0xfe, + 0xe1, 0x02, 0x19, 0x01, 0x25, 0xfc, 0x9f, 0x01, 0x42, 0x05, 0x0e, 0x21, + 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, + 0x2c, 0x3a, 0xfe, 0x0b, 0xbe, 0xfc, 0xc6, 0xbe, 0xbe, 0x00, 0x00, 0x02, + 0x00, 0x77, 0xfe, 0x5c, 0x03, 0x87, 0x05, 0xae, 0x00, 0x15, 0x00, 0x29, + 0x00, 0x8c, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xbc, 0x00, 0x20, 0x02, + 0x3c, 0x00, 0x16, 0x00, 0x15, 0x02, 0x0f, 0x40, 0x09, 0x11, 0x13, 0x13, + 0x11, 0x09, 0x10, 0x2a, 0x05, 0x25, 0xb8, 0x01, 0x4b, 0x40, 0x0d, 0x0f, + 0x1b, 0x1f, 0x1b, 0x02, 0x18, 0x03, 0x1b, 0x12, 0xfa, 0x14, 0x4f, 0x08, + 0xb8, 0x01, 0x3e, 0xb5, 0x09, 0x0e, 0xff, 0x40, 0x05, 0x56, 0x00, 0x18, + 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0xde, 0x5f, 0x5e, 0x5d, + 0xed, 0x11, 0x12, 0x39, 0x01, 0x2f, 0xc6, 0x39, 0x2f, 0x10, 0xfd, 0xd4, + 0xed, 0x31, 0x30, 0x1b, 0xb3, 0x10, 0x2a, 0x05, 0x25, 0xb8, 0x01, 0x4b, + 0x40, 0x0d, 0x0f, 0x1b, 0x1f, 0x1b, 0x02, 0x18, 0x03, 0x1b, 0x12, 0xfa, + 0x14, 0x4f, 0x08, 0xb8, 0x01, 0x3e, 0xb5, 0x09, 0x0e, 0xff, 0x40, 0x05, + 0x56, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0xde, + 0x5f, 0x5e, 0x5d, 0xed, 0x11, 0x12, 0x39, 0x31, 0x30, 0x59, 0x25, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x36, + 0x35, 0x11, 0x21, 0x35, 0x21, 0x13, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x73, 0x43, + 0x7d, 0xaf, 0x6c, 0x58, 0x98, 0x31, 0x1c, 0x47, 0x4d, 0x50, 0x27, 0x6f, + 0x6e, 0xfe, 0x1d, 0x02, 0xdb, 0x14, 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, + 0x2b, 0x18, 0x18, 0x2b, 0x3a, 0x22, 0x22, 0x3b, 0x2b, 0x18, 0x1d, 0x72, + 0xa9, 0x6f, 0x37, 0x1e, 0x15, 0xe0, 0x0f, 0x1d, 0x17, 0x0d, 0x80, 0x7c, + 0x03, 0x1f, 0xbe, 0x01, 0x16, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, + 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0x01, 0x00, 0x95, + 0x00, 0x00, 0x04, 0x3f, 0x05, 0x85, 0x00, 0x0a, 0x00, 0x69, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0x40, 0x0c, 0x09, 0x06, 0x08, 0x07, 0x07, 0x00, + 0x09, 0x01, 0x0a, 0x00, 0x06, 0x01, 0xb8, 0x02, 0x0b, 0x40, 0x12, 0x40, + 0x03, 0x00, 0x0a, 0x51, 0x08, 0x4f, 0x07, 0x4f, 0x06, 0x01, 0x03, 0x04, + 0x53, 0x03, 0x51, 0x00, 0x51, 0x00, 0x18, 0x3f, 0x3f, 0x3f, 0x12, 0x39, + 0x39, 0x3f, 0x3f, 0x3f, 0x01, 0x2f, 0x2f, 0x1a, 0x4d, 0xfd, 0xc4, 0x11, + 0x33, 0x11, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x11, 0x33, 0x31, 0x30, 0x1b, + 0x40, 0x0f, 0x0a, 0x51, 0x08, 0x4f, 0x07, 0x4f, 0x06, 0x01, 0x03, 0x04, + 0x53, 0x03, 0x51, 0x00, 0x51, 0x00, 0x18, 0x3f, 0x3f, 0x3f, 0x12, 0x39, + 0x39, 0x3f, 0x3f, 0x3f, 0x31, 0x30, 0x59, 0x21, 0x01, 0x11, 0x23, 0x11, + 0x33, 0x11, 0x01, 0x21, 0x01, 0x01, 0x03, 0x00, 0xfe, 0x89, 0xf4, 0xf4, + 0x01, 0x63, 0x01, 0x31, 0xfe, 0x64, 0x01, 0xbe, 0x01, 0xfc, 0xfe, 0x04, + 0x05, 0x85, 0xfc, 0xc5, 0x01, 0xae, 0xfe, 0x31, 0xfd, 0xd7, 0x00, 0x01, + 0x00, 0x91, 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x00, 0x09, 0x00, 0x4f, + 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb4, 0x02, 0x02, 0x09, 0x08, 0x03, + 0xb8, 0x02, 0x11, 0x40, 0x0f, 0x06, 0x09, 0x09, 0x0a, 0x0b, 0x04, 0x09, + 0xfa, 0x07, 0x51, 0x00, 0xfa, 0x40, 0x02, 0x53, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xed, 0x3f, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xcd, 0xfd, + 0xc4, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x1b, 0x40, 0x0a, 0x04, 0x09, 0xfa, + 0x07, 0x51, 0x00, 0xfa, 0x40, 0x02, 0x53, 0x00, 0x18, 0x3f, 0x1a, 0x4d, + 0xed, 0x3f, 0xed, 0x32, 0x31, 0x30, 0x59, 0x01, 0x21, 0x35, 0x21, 0x11, + 0x21, 0x15, 0x21, 0x35, 0x21, 0x01, 0xd3, 0xfe, 0xe1, 0x02, 0x19, 0x01, + 0x25, 0xfc, 0x9f, 0x01, 0x42, 0x04, 0xc7, 0xbe, 0xfb, 0x39, 0xbe, 0xbe, + 0x00, 0x01, 0x00, 0x3b, 0x00, 0x00, 0x04, 0x2b, 0x04, 0x0c, 0x00, 0x2a, + 0x00, 0x7b, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x19, 0x16, 0xb8, + 0x01, 0xa8, 0xb2, 0x14, 0x21, 0x09, 0xbb, 0x01, 0xa7, 0x00, 0x0b, 0x00, + 0x29, 0x01, 0xa8, 0x40, 0x19, 0x00, 0x0b, 0x0b, 0x2b, 0x2c, 0x2a, 0x51, + 0x06, 0xfc, 0x26, 0x50, 0x11, 0xfc, 0x40, 0x1e, 0x50, 0x19, 0x21, 0x16, + 0x17, 0x4f, 0x16, 0x51, 0x0b, 0x51, 0x00, 0x18, 0x3f, 0x3f, 0x3f, 0x12, + 0x39, 0x39, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0x11, 0x12, 0x01, + 0x39, 0x2f, 0xd4, 0xed, 0x10, 0xfd, 0x32, 0xd4, 0xed, 0x33, 0x31, 0x30, + 0x1b, 0x40, 0x14, 0x2a, 0x51, 0x06, 0xfc, 0x26, 0x50, 0x11, 0xfc, 0x40, + 0x1e, 0x50, 0x19, 0x21, 0x16, 0x17, 0x4f, 0x16, 0x51, 0x0b, 0x51, 0x00, + 0x18, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, + 0xed, 0x3f, 0x31, 0x30, 0x59, 0x21, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x3e, + 0x03, 0x33, 0x32, 0x16, 0x15, 0x11, 0x03, 0x58, 0x04, 0x0c, 0x17, 0x14, + 0x1f, 0x3c, 0x26, 0xd1, 0x04, 0x0c, 0x18, 0x14, 0x1a, 0x40, 0x27, 0xd3, + 0xb5, 0x04, 0x16, 0x2c, 0x32, 0x39, 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, + 0x33, 0x3b, 0x24, 0x6f, 0x6a, 0x02, 0xb4, 0x26, 0x39, 0x26, 0x13, 0x54, + 0x65, 0xfd, 0x6d, 0x02, 0xb4, 0x26, 0x39, 0x26, 0x13, 0x54, 0x65, 0xfd, + 0x6d, 0x03, 0xf8, 0x94, 0x2d, 0x40, 0x29, 0x12, 0x59, 0x4f, 0x2d, 0x40, + 0x29, 0x12, 0x9b, 0x98, 0xfd, 0x27, 0x00, 0x01, 0x00, 0x8b, 0x00, 0x00, + 0x03, 0xdd, 0x04, 0x0e, 0x00, 0x16, 0x00, 0x5b, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb1, 0x0b, 0x06, 0xbb, 0x02, 0x0b, 0x00, 0x08, 0x00, 0x15, + 0x02, 0x0b, 0xb4, 0x00, 0x08, 0x16, 0x51, 0x03, 0xb8, 0x01, 0x31, 0x40, + 0x09, 0x40, 0x10, 0x50, 0x0b, 0x08, 0x09, 0x4f, 0x08, 0x51, 0x00, 0x18, + 0x3f, 0x3f, 0x12, 0x39, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x01, 0x2f, 0xd4, + 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, 0x1b, 0xb2, 0x16, 0x51, 0x03, 0xb8, + 0x01, 0x31, 0x40, 0x09, 0x40, 0x10, 0x50, 0x0b, 0x08, 0x09, 0x4f, 0x08, + 0x51, 0x00, 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, + 0x31, 0x30, 0x59, 0x21, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, + 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x02, + 0xe9, 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0xd3, 0x06, 0x1f, 0x43, 0x4e, 0x5a, + 0x38, 0x4e, 0x74, 0x4e, 0x27, 0x02, 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x7d, + 0x03, 0xf8, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, 0x51, 0xfd, + 0x56, 0x00, 0x00, 0x02, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x04, 0x0e, + 0x00, 0x13, 0x00, 0x23, 0x00, 0x4d, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xbf, 0x00, 0x00, 0x02, 0x15, 0x00, 0x14, 0x00, 0x1c, 0x02, 0x15, 0x00, + 0x0a, 0x00, 0x17, 0x01, 0x32, 0xb2, 0x0f, 0x50, 0x1f, 0xb8, 0x01, 0x32, + 0xb2, 0x40, 0x05, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, + 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x1b, 0xb9, 0x00, 0x17, 0x01, + 0x32, 0xb2, 0x0f, 0x50, 0x1f, 0xb8, 0x01, 0x32, 0xb2, 0x40, 0x05, 0x52, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1e, 0x44, 0x80, 0xba, 0x77, 0x71, + 0xb2, 0x7c, 0x42, 0x45, 0x81, 0xba, 0x75, 0x72, 0xb2, 0x7c, 0x41, 0xfe, + 0x77, 0x74, 0x40, 0x5a, 0x3a, 0x1b, 0x80, 0x6f, 0x3d, 0x5a, 0x38, 0x1c, + 0x02, 0x04, 0x78, 0xc7, 0x8e, 0x4e, 0x42, 0x83, 0xc5, 0x83, 0x79, 0xc6, + 0x8c, 0x4d, 0x43, 0x84, 0xc3, 0x86, 0x9e, 0x9f, 0x32, 0x57, 0x74, 0x42, + 0x9f, 0xa1, 0x31, 0x57, 0x76, 0x00, 0x00, 0x02, 0x00, 0x8b, 0xfe, 0x73, + 0x04, 0x1d, 0x04, 0x0e, 0x00, 0x16, 0x00, 0x27, 0x00, 0x67, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xb2, 0x0d, 0x08, 0x20, 0xbb, 0x02, 0x0b, 0x00, + 0x0a, 0x00, 0x00, 0x02, 0x17, 0xb5, 0x17, 0x0a, 0x0d, 0x0b, 0x28, 0x1c, + 0xb8, 0x01, 0x31, 0x40, 0x0b, 0x12, 0x50, 0x0b, 0x4f, 0x0a, 0x55, 0x23, + 0xfc, 0x40, 0x05, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x3f, + 0x3f, 0xed, 0x11, 0x12, 0x39, 0x01, 0x2f, 0xd4, 0xed, 0x10, 0xfd, 0xc4, + 0x33, 0x31, 0x30, 0x1b, 0xb3, 0x0d, 0x0b, 0x28, 0x1c, 0xb8, 0x01, 0x31, + 0x40, 0x0b, 0x12, 0x50, 0x0b, 0x4f, 0x0a, 0x55, 0x23, 0xfc, 0x40, 0x05, + 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x3f, 0x3f, 0xed, 0x11, + 0x12, 0x39, 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x27, 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, + 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x8d, 0xc0, 0x71, 0x26, 0x4c, 0x1f, + 0xf4, 0xd3, 0x06, 0x1f, 0x43, 0x4e, 0x5a, 0x38, 0x5a, 0x8c, 0x5f, 0x32, + 0xff, 0x00, 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x55, 0x2c, + 0x3a, 0x5f, 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, 0x41, 0x0a, 0x08, + 0xfe, 0x73, 0x05, 0x85, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x48, 0x85, 0xbd, + 0x80, 0x54, 0x76, 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, + 0x58, 0x7f, 0x00, 0x02, 0x00, 0x4c, 0xfe, 0x73, 0x03, 0xdd, 0x04, 0x0c, + 0x00, 0x18, 0x00, 0x29, 0x00, 0x61, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xb9, 0x00, 0x17, 0x02, 0x0b, 0xb3, 0x16, 0x01, 0x21, 0x19, 0xb8, 0x02, + 0x17, 0x40, 0x0a, 0x0c, 0x02, 0x2b, 0x17, 0x50, 0x25, 0xfc, 0x11, 0x50, + 0x1e, 0xb8, 0x01, 0x31, 0xb4, 0x40, 0x07, 0x52, 0x00, 0x55, 0x00, 0x18, + 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x01, 0x2f, + 0xed, 0xd4, 0xc4, 0x33, 0xed, 0x31, 0x30, 0x1b, 0x40, 0x09, 0x02, 0x2b, + 0x17, 0x50, 0x25, 0xfc, 0x11, 0x50, 0x1e, 0xb8, 0x01, 0x31, 0xb4, 0x40, + 0x07, 0x52, 0x00, 0x55, 0x00, 0x18, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, + 0xed, 0x3f, 0x12, 0x39, 0x31, 0x30, 0x59, 0x01, 0x11, 0x37, 0x0e, 0x03, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x17, 0x37, 0x11, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x02, 0xe9, 0x0b, 0x1c, 0x3f, 0x4b, + 0x58, 0x33, 0x5a, 0x8c, 0x5f, 0x32, 0x42, 0x83, 0xc4, 0x83, 0x19, 0x3c, + 0x3c, 0x37, 0x15, 0xa8, 0xfd, 0x6f, 0x17, 0x2d, 0x42, 0x2a, 0x3e, 0x70, + 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, 0xfe, 0x73, 0x01, 0x4e, + 0xc6, 0x23, 0x3a, 0x2a, 0x17, 0x48, 0x85, 0xbe, 0x75, 0x79, 0xc9, 0x90, + 0x4f, 0x06, 0x09, 0x0d, 0x07, 0x25, 0xfa, 0x67, 0x03, 0x81, 0x54, 0x77, + 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, + 0x00, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x04, 0x11, 0x04, 0x0e, 0x00, 0x17, + 0x00, 0x6f, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x0d, 0x09, 0xbb, + 0x02, 0x11, 0x00, 0x0a, 0x00, 0x17, 0x02, 0x0c, 0xb2, 0x00, 0x0a, 0x08, + 0xb8, 0x01, 0x3e, 0xb2, 0x0d, 0xca, 0x05, 0xb8, 0x01, 0x07, 0x40, 0x0a, + 0x40, 0x12, 0x50, 0x17, 0x17, 0x0a, 0x0b, 0x4f, 0x0a, 0x51, 0x00, 0x18, + 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x3f, 0x1a, 0x4d, 0xed, 0x7c, 0xfd, 0x18, + 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, 0x1b, 0xb9, + 0x00, 0x08, 0x01, 0x3e, 0xb2, 0x0d, 0xca, 0x05, 0xb8, 0x01, 0x07, 0x40, + 0x0a, 0x40, 0x12, 0x50, 0x17, 0x17, 0x0a, 0x0b, 0x4f, 0x0a, 0x51, 0x00, + 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x3f, 0x1a, 0x4d, 0xed, 0x7c, 0xfd, + 0x18, 0xed, 0x31, 0x30, 0x59, 0x01, 0x36, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, + 0x07, 0x03, 0x19, 0x02, 0x0f, 0x21, 0x30, 0x1f, 0x36, 0x73, 0x45, 0xfa, + 0xdd, 0x09, 0x19, 0x3f, 0x4d, 0x5e, 0x38, 0x4d, 0x77, 0x51, 0x27, 0x03, + 0x02, 0x6d, 0x39, 0x50, 0x34, 0x18, 0x59, 0x66, 0xfd, 0x7d, 0x03, 0xf8, + 0x94, 0x27, 0x3e, 0x2d, 0x18, 0x35, 0x68, 0x9d, 0x67, 0x00, 0x00, 0x01, + 0x00, 0x9c, 0xff, 0xe9, 0x03, 0xd1, 0x04, 0x0e, 0x00, 0x31, 0x00, 0x9b, + 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb2, 0x22, 0x19, 0x00, 0xbb, 0x02, + 0x24, 0x00, 0x0f, 0x00, 0x28, 0x02, 0x1c, 0xb2, 0x08, 0x19, 0x21, 0xb8, + 0x01, 0x02, 0x40, 0x10, 0x00, 0x22, 0x10, 0x22, 0x02, 0x12, 0x03, 0x22, + 0x25, 0xf2, 0x28, 0x0f, 0x05, 0x1e, 0x50, 0x08, 0xba, 0x01, 0x3a, 0x00, + 0x09, 0xff, 0xc0, 0x40, 0x09, 0x0e, 0x11, 0x48, 0x09, 0x0c, 0xf7, 0x40, + 0x05, 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0x2b, 0xed, 0x3f, + 0x12, 0x39, 0x39, 0xfd, 0xd6, 0x5f, 0x5e, 0x5d, 0xed, 0x01, 0x2f, 0xc4, + 0xed, 0xd4, 0xed, 0x11, 0x39, 0x31, 0x30, 0x1b, 0xb9, 0x00, 0x21, 0x01, + 0x02, 0x40, 0x10, 0x00, 0x22, 0x10, 0x22, 0x02, 0x12, 0x03, 0x22, 0x25, + 0xf2, 0x28, 0x0f, 0x05, 0x1e, 0x50, 0x08, 0xba, 0x01, 0x3a, 0x00, 0x09, + 0xff, 0xc0, 0x40, 0x09, 0x0e, 0x11, 0x48, 0x09, 0x0c, 0xf7, 0x40, 0x05, + 0x52, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0x2b, 0xed, 0x3f, 0x12, + 0x39, 0x39, 0xfd, 0xd6, 0x5f, 0x5e, 0x5d, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x03, 0xd1, 0x4d, 0x7f, 0xa1, 0x54, 0x70, + 0xb4, 0x50, 0x5e, 0xbb, 0x53, 0x60, 0x5f, 0x14, 0x37, 0x64, 0x51, 0x4b, + 0x71, 0x4a, 0x25, 0x38, 0x6f, 0xa6, 0x6f, 0x60, 0x94, 0x39, 0x57, 0x99, + 0x4b, 0x4b, 0x5b, 0x12, 0x35, 0x5f, 0x4e, 0x58, 0x78, 0x49, 0x20, 0x01, + 0x2b, 0x57, 0x7b, 0x4d, 0x23, 0x15, 0x14, 0xdc, 0x27, 0x23, 0x3d, 0x31, + 0x17, 0x26, 0x23, 0x25, 0x17, 0x15, 0x35, 0x48, 0x5f, 0x40, 0x3e, 0x6e, + 0x53, 0x30, 0x14, 0x0c, 0xc7, 0x1c, 0x17, 0x36, 0x30, 0x17, 0x24, 0x22, + 0x25, 0x16, 0x19, 0x39, 0x48, 0x5c, 0x00, 0x01, 0x00, 0x3b, 0xff, 0xe9, + 0x03, 0xd1, 0x05, 0x3d, 0x00, 0x19, 0x00, 0x67, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb4, 0x11, 0x19, 0x09, 0x0f, 0x12, 0xb8, 0x02, 0x11, 0x40, + 0x17, 0x0c, 0x09, 0x0a, 0x09, 0x0a, 0x09, 0x1a, 0x1b, 0x09, 0x12, 0xfa, + 0x0e, 0x0c, 0x0f, 0x4f, 0x00, 0xff, 0x19, 0x16, 0xff, 0x40, 0x03, 0x52, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0x33, 0xcd, 0xed, + 0x32, 0x11, 0x12, 0x01, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xc4, 0xfd, 0xc4, + 0x10, 0xd4, 0xc4, 0x31, 0x30, 0x1b, 0x40, 0x0f, 0x09, 0x12, 0xfa, 0x0e, + 0x0c, 0x0f, 0x4f, 0x00, 0xff, 0x19, 0x16, 0xff, 0x40, 0x03, 0x52, 0x00, + 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0x33, 0xcd, 0xed, 0x32, + 0x31, 0x30, 0x59, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, + 0x21, 0x35, 0x21, 0x11, 0x37, 0x11, 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x03, 0xd1, 0x42, 0x86, 0x3c, 0x64, 0x91, 0x5f, + 0x2d, 0xfe, 0xef, 0x01, 0x11, 0xfa, 0x01, 0x8b, 0xfe, 0x75, 0x50, 0x5e, + 0x3c, 0x72, 0x2f, 0x0a, 0x0f, 0x12, 0x2a, 0x56, 0x85, 0x5c, 0x01, 0xf0, + 0xbe, 0x01, 0x04, 0x41, 0xfe, 0xbb, 0xbe, 0xfe, 0x22, 0x57, 0x59, 0x14, + 0x0d, 0x00, 0x00, 0x01, 0x00, 0x89, 0xff, 0xe9, 0x03, 0xdb, 0x03, 0xf8, + 0x00, 0x17, 0x00, 0x59, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x0c, + 0x0a, 0xbb, 0x02, 0x0b, 0x00, 0x07, 0x00, 0x01, 0x02, 0x0b, 0xb3, 0x16, + 0x17, 0x4f, 0x04, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x40, 0x11, 0x52, 0x0c, + 0x09, 0x0a, 0x51, 0x09, 0x4f, 0x00, 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x3f, + 0x1a, 0x4d, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x33, 0x31, 0x30, + 0x1b, 0xb2, 0x17, 0x4f, 0x04, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x40, 0x11, + 0x52, 0x0c, 0x09, 0x0a, 0x51, 0x09, 0x4f, 0x00, 0x18, 0x3f, 0x3f, 0x12, + 0x39, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0x31, 0x30, 0x59, 0x01, 0x11, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x23, 0x27, 0x0e, 0x03, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x01, 0x7d, 0x3e, 0x3f, 0x3d, 0x71, + 0x3f, 0xf4, 0xd3, 0x06, 0x20, 0x42, 0x4d, 0x5b, 0x37, 0x4e, 0x75, 0x4e, + 0x27, 0x03, 0xf8, 0xfd, 0x6a, 0x53, 0x55, 0x65, 0x56, 0x02, 0x83, 0xfc, + 0x08, 0x96, 0x27, 0x40, 0x2d, 0x19, 0x33, 0x5e, 0x83, 0x51, 0x02, 0xaa, + 0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x04, 0x52, 0x03, 0xf8, 0x00, 0x08, + 0x00, 0x72, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0x40, 0x13, 0x07, 0x08, + 0x03, 0x02, 0x20, 0x01, 0x00, 0x05, 0x05, 0x09, 0x0a, 0x0d, 0x05, 0x1d, + 0x05, 0x02, 0x0f, 0x04, 0x05, 0xb8, 0xff, 0xd0, 0x40, 0x0a, 0x05, 0x01, + 0x08, 0x07, 0x03, 0x02, 0x4f, 0x00, 0x01, 0x51, 0x00, 0x18, 0x3f, 0x33, + 0x3f, 0x33, 0x33, 0x33, 0x12, 0x39, 0x38, 0x5f, 0x5e, 0x5d, 0x11, 0x12, + 0x01, 0x39, 0x19, 0x2f, 0x33, 0x33, 0x1a, 0x18, 0xcd, 0x32, 0xcd, 0x32, + 0x31, 0x30, 0x1b, 0xb7, 0x0d, 0x05, 0x1d, 0x05, 0x02, 0x0f, 0x04, 0x05, + 0xb8, 0xff, 0xd0, 0x40, 0x0a, 0x05, 0x01, 0x08, 0x07, 0x03, 0x02, 0x4f, + 0x00, 0x01, 0x51, 0x00, 0x18, 0x3f, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x12, + 0x39, 0x38, 0x5f, 0x5e, 0x5d, 0x31, 0x30, 0x59, 0x21, 0x21, 0x01, 0x21, + 0x13, 0x17, 0x37, 0x13, 0x21, 0x02, 0xc3, 0xfe, 0xe7, 0xfe, 0x6d, 0x01, + 0x10, 0xd3, 0x3f, 0x3e, 0xd5, 0x01, 0x06, 0x03, 0xf8, 0xfd, 0xc0, 0xba, + 0xb2, 0x02, 0x48, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x04, 0x5c, + 0x03, 0xf8, 0x00, 0x12, 0x00, 0xb0, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0x40, 0x19, 0x05, 0x0a, 0x0a, 0x06, 0x01, 0x0f, 0x0f, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x07, 0x11, 0x12, 0x08, 0x07, 0x0d, 0x0c, 0x03, 0x03, 0x13, + 0x14, 0x0d, 0x09, 0xb8, 0xff, 0xa0, 0xb2, 0x03, 0x30, 0x0a, 0xba, 0xff, + 0xd8, 0x00, 0x0f, 0xff, 0xd8, 0x40, 0x12, 0x0f, 0x0a, 0x03, 0x09, 0x04, + 0x0c, 0x0c, 0x06, 0x12, 0x11, 0x08, 0x07, 0x4f, 0x05, 0x01, 0x00, 0x06, + 0x51, 0x00, 0x18, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, 0x33, 0x12, + 0x39, 0x2f, 0x17, 0x39, 0x38, 0x38, 0x38, 0x38, 0x33, 0x11, 0x12, 0x01, + 0x39, 0x19, 0x2f, 0x33, 0x33, 0x18, 0xc4, 0x32, 0xc4, 0x32, 0x11, 0x39, + 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x31, + 0x30, 0x1b, 0xb1, 0x0d, 0x09, 0xb8, 0xff, 0xa0, 0xb2, 0x03, 0x30, 0x0a, + 0xba, 0xff, 0xd8, 0x00, 0x0f, 0xff, 0xd8, 0x40, 0x12, 0x0f, 0x0a, 0x03, + 0x09, 0x04, 0x0c, 0x0c, 0x06, 0x12, 0x11, 0x08, 0x07, 0x4f, 0x05, 0x01, + 0x00, 0x06, 0x51, 0x00, 0x18, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x33, 0x33, + 0x33, 0x12, 0x39, 0x2f, 0x17, 0x39, 0x38, 0x38, 0x38, 0x38, 0x33, 0x31, + 0x30, 0x59, 0x21, 0x21, 0x03, 0x27, 0x07, 0x03, 0x21, 0x03, 0x33, 0x13, + 0x17, 0x37, 0x13, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x03, 0xcd, 0xfe, + 0xf1, 0x6c, 0x21, 0x21, 0x68, 0xfe, 0xf0, 0x90, 0xe8, 0x49, 0x11, 0x29, + 0x66, 0xba, 0x6d, 0x2f, 0x13, 0x3d, 0xdd, 0x01, 0x42, 0x70, 0x73, 0xfe, + 0xc1, 0x03, 0xf8, 0xfd, 0xc2, 0x9d, 0x8d, 0x01, 0x35, 0xfe, 0xcd, 0x91, + 0xa1, 0x02, 0x3c, 0x00, 0x00, 0x01, 0x00, 0x21, 0x00, 0x00, 0x04, 0x48, + 0x03, 0xf8, 0x00, 0x0b, 0x00, 0xc5, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0x40, 0x26, 0x06, 0x05, 0x0a, 0x09, 0x02, 0x23, 0x52, 0x09, 0x04, 0x08, + 0x03, 0x23, 0x52, 0x08, 0x08, 0x09, 0x05, 0x09, 0x05, 0x09, 0x03, 0x00, + 0x0b, 0x07, 0x02, 0x03, 0x20, 0x01, 0x01, 0x0c, 0x0d, 0x0a, 0x07, 0x1a, + 0x07, 0x02, 0x03, 0x07, 0xb8, 0xff, 0xf0, 0x40, 0x1a, 0x00, 0x01, 0x10, + 0x01, 0x02, 0x0f, 0x05, 0x01, 0x20, 0x01, 0x04, 0x0a, 0x07, 0x04, 0x0b, + 0x09, 0x08, 0x06, 0x05, 0x4f, 0x0b, 0x0b, 0x02, 0x00, 0x03, 0x51, 0x00, + 0x18, 0x3f, 0x33, 0x33, 0x33, 0x2f, 0x3f, 0x33, 0x33, 0x33, 0x12, 0x17, + 0x39, 0x38, 0x5f, 0x5e, 0x5d, 0x38, 0x5f, 0x5d, 0x11, 0x12, 0x01, 0x39, + 0x19, 0x2f, 0x1a, 0x18, 0xcd, 0x32, 0x19, 0xd5, 0x18, 0xcd, 0x32, 0x11, + 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x10, 0x2b, 0x87, 0xc4, 0x10, 0x2b, + 0x87, 0xc4, 0x11, 0x01, 0x33, 0x31, 0x30, 0x1b, 0xb6, 0x0a, 0x07, 0x1a, + 0x07, 0x02, 0x03, 0x07, 0xb8, 0xff, 0xf0, 0x40, 0x1a, 0x00, 0x01, 0x10, + 0x01, 0x02, 0x0f, 0x05, 0x01, 0x20, 0x01, 0x04, 0x0a, 0x07, 0x04, 0x0b, + 0x09, 0x08, 0x06, 0x05, 0x4f, 0x0b, 0x0b, 0x02, 0x00, 0x03, 0x51, 0x00, + 0x18, 0x3f, 0x33, 0x33, 0x33, 0x2f, 0x3f, 0x33, 0x33, 0x33, 0x12, 0x17, + 0x39, 0x38, 0x5f, 0x5e, 0x5d, 0x38, 0x5f, 0x5d, 0x31, 0x30, 0x59, 0x21, + 0x03, 0x03, 0x21, 0x01, 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, 0x01, 0x03, + 0x19, 0xe8, 0xe9, 0xfe, 0xd9, 0x01, 0x7d, 0xfe, 0x97, 0x01, 0x29, 0xe4, + 0xe1, 0x01, 0x12, 0xfe, 0xa2, 0x01, 0x71, 0x01, 0x56, 0xfe, 0xaa, 0x02, + 0x00, 0x01, 0xf8, 0xfe, 0xb2, 0x01, 0x4e, 0xfe, 0x0a, 0xfd, 0xfe, 0x00, + 0x00, 0x01, 0x00, 0x17, 0xfe, 0x5c, 0x04, 0x52, 0x03, 0xf8, 0x00, 0x1a, + 0x00, 0x98, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0x40, 0x0d, 0x19, 0x1a, + 0x15, 0x14, 0x20, 0x13, 0x08, 0x01, 0x17, 0x17, 0x1b, 0x1c, 0x16, 0xb8, + 0xff, 0xe0, 0x40, 0x13, 0x16, 0x17, 0x14, 0x13, 0x13, 0x01, 0x20, 0x01, + 0x1b, 0x03, 0x05, 0x1a, 0x1a, 0x19, 0x15, 0x14, 0x4f, 0x09, 0x0e, 0xb8, + 0x01, 0x08, 0xb2, 0x40, 0x05, 0x56, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, + 0xc6, 0x3f, 0x33, 0x33, 0x33, 0x11, 0x12, 0x39, 0x11, 0x33, 0x38, 0x33, + 0x2f, 0x12, 0x39, 0x39, 0x38, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x33, + 0x18, 0xc4, 0x33, 0x1a, 0xcd, 0x32, 0xcd, 0x32, 0x31, 0x30, 0x1b, 0xb9, + 0x00, 0x16, 0xff, 0xe0, 0x40, 0x13, 0x16, 0x17, 0x14, 0x13, 0x13, 0x01, + 0x20, 0x01, 0x1b, 0x03, 0x05, 0x1a, 0x1a, 0x19, 0x15, 0x14, 0x4f, 0x09, + 0x0e, 0xb8, 0x01, 0x08, 0xb2, 0x40, 0x05, 0x56, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xfd, 0xc6, 0x3f, 0x33, 0x33, 0x33, 0x11, 0x12, 0x39, 0x11, 0x33, + 0x38, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x38, 0x31, 0x30, 0x59, 0x25, 0x0e, + 0x03, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, + 0x37, 0x01, 0x21, 0x13, 0x17, 0x37, 0x13, 0x21, 0x02, 0xee, 0x35, 0x73, + 0x8a, 0xa9, 0x69, 0x19, 0x3b, 0x1f, 0x0c, 0x1f, 0x22, 0x23, 0x0f, 0x2a, + 0x48, 0x3d, 0x32, 0x13, 0xfe, 0x6d, 0x01, 0x10, 0xd3, 0x3f, 0x3e, 0xd5, + 0x01, 0x06, 0x6f, 0x84, 0xc7, 0x85, 0x43, 0x05, 0x05, 0xcf, 0x02, 0x05, + 0x03, 0x02, 0x20, 0x39, 0x4f, 0x2f, 0x03, 0xf8, 0xfd, 0xc0, 0xba, 0xb2, + 0x02, 0x48, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xd1, 0x03, 0xf8, + 0x00, 0x09, 0x00, 0x6a, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0x40, 0x0a, + 0x08, 0x02, 0x06, 0x00, 0x07, 0x01, 0x01, 0x03, 0x00, 0x01, 0xbb, 0xff, + 0xe0, 0x00, 0x01, 0x00, 0x07, 0x01, 0x36, 0xb5, 0x09, 0x51, 0x06, 0x20, + 0x06, 0x02, 0xb8, 0x01, 0x31, 0xb2, 0x40, 0x04, 0x4f, 0x00, 0x18, 0x3f, + 0x1a, 0x4d, 0xed, 0x32, 0x38, 0x3f, 0xed, 0x32, 0x38, 0x01, 0x2f, 0xc4, + 0x33, 0x2f, 0x33, 0x10, 0xdd, 0x32, 0xc6, 0x31, 0x30, 0x1b, 0xbc, 0x00, + 0x01, 0xff, 0xe0, 0x00, 0x01, 0x00, 0x07, 0x01, 0x36, 0xb5, 0x09, 0x51, + 0x06, 0x20, 0x06, 0x02, 0xb8, 0x01, 0x31, 0xb2, 0x40, 0x04, 0x4f, 0x00, + 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x38, 0x3f, 0xed, 0x32, 0x38, 0x31, + 0x30, 0x59, 0x33, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x15, + 0x96, 0x01, 0xf1, 0xfe, 0x1b, 0x03, 0x27, 0xfe, 0x1a, 0x01, 0xee, 0xaa, + 0x02, 0x7d, 0xd1, 0xac, 0xfd, 0x8b, 0xd7, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x99, + 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x96, 0x02, 0x26, + 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x62, 0x02, 0x26, 0x00, 0x83, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xd9, 0x06, 0x10, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xeb, + 0x07, 0x27, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x26, 0x01, 0x4d, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x3f, 0x00, 0x0a, 0x00, 0xa0, 0x00, 0x66, + 0xb1, 0x05, 0x57, 0xb8, 0xff, 0xc0, 0xb3, 0x21, 0x28, 0x48, 0x57, 0xb8, + 0xff, 0xc0, 0xb3, 0x25, 0x26, 0x48, 0x57, 0xb8, 0xff, 0xc0, 0xb3, 0x16, + 0x18, 0x48, 0x57, 0xb8, 0xff, 0xc0, 0xb3, 0x17, 0x17, 0x48, 0x57, 0xb8, + 0xff, 0xc0, 0xb3, 0x11, 0x11, 0x48, 0x57, 0xb8, 0xff, 0xc0, 0xb3, 0x0d, + 0x0f, 0x48, 0x57, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, 0x57, 0xb8, + 0xff, 0x80, 0x40, 0x0c, 0x08, 0x0c, 0x48, 0x57, 0x05, 0x41, 0x54, 0x4f, + 0x03, 0x02, 0x52, 0x52, 0xb8, 0xff, 0xc0, 0xb4, 0x08, 0x0b, 0x48, 0x52, + 0x50, 0x00, 0x3f, 0x2b, 0x12, 0x34, 0x34, 0x2b, 0x12, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x34, 0x00, 0x02, 0x00, 0x6d, 0xfe, 0x6a, + 0x04, 0x00, 0x04, 0x0e, 0x00, 0x3c, 0x00, 0x49, 0x00, 0x65, 0xb9, 0x00, + 0x08, 0x01, 0xaf, 0xb2, 0x36, 0x3c, 0x30, 0xb8, 0x02, 0x0b, 0xb7, 0x1e, + 0x27, 0x27, 0x18, 0x3d, 0x0e, 0x1e, 0x43, 0xb8, 0x02, 0x17, 0x40, 0x24, + 0x18, 0x28, 0xff, 0x27, 0x27, 0x24, 0x1d, 0xcc, 0x00, 0x3e, 0x10, 0x3e, + 0x02, 0x08, 0x3e, 0x3e, 0x2b, 0x4a, 0x36, 0x03, 0x0d, 0x31, 0x51, 0x24, + 0xf4, 0x2b, 0x50, 0x46, 0xfd, 0x13, 0x52, 0x3c, 0x39, 0xc7, 0x03, 0x57, + 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x33, 0x12, 0x39, + 0x11, 0x12, 0x39, 0x2f, 0x5e, 0x5d, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0xed, 0xdd, 0x32, 0xc4, 0x12, 0x39, 0x2f, 0x10, 0xfd, 0xd6, 0xd6, + 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x37, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x33, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x0e, 0x03, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x04, 0x00, 0x20, 0x50, 0x1f, 0x40, + 0x58, 0x36, 0x18, 0x0b, 0x1c, 0x2f, 0x27, 0x06, 0x20, 0x46, 0x54, 0x63, + 0x3b, 0x4e, 0x76, 0x50, 0x29, 0x3d, 0x7d, 0xbb, 0x7e, 0x85, 0x16, 0x31, + 0x4e, 0x39, 0x5a, 0xaf, 0x52, 0x49, 0xbf, 0x67, 0x71, 0xa2, 0x69, 0x32, + 0x26, 0x2c, 0x18, 0x07, 0x21, 0x2d, 0x10, 0x2a, 0x10, 0xfe, 0xe5, 0x95, + 0x3e, 0x56, 0x36, 0x19, 0x50, 0x45, 0x33, 0x6e, 0x42, 0xfe, 0x7f, 0x09, + 0x0c, 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, 0x37, 0x3b, 0x21, 0x85, 0x22, + 0x39, 0x2a, 0x17, 0x2e, 0x52, 0x74, 0x46, 0x48, 0x7a, 0x58, 0x32, 0x3d, + 0x27, 0x3f, 0x2c, 0x18, 0x29, 0x25, 0xc3, 0x1d, 0x26, 0x2b, 0x56, 0x81, + 0x56, 0xfd, 0x4a, 0x26, 0x37, 0x2a, 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, + 0x02, 0xaf, 0x18, 0x2a, 0x37, 0x1f, 0x3e, 0x41, 0x4a, 0x45, 0x00, 0x03, + 0x00, 0x12, 0xff, 0xe9, 0x04, 0x4e, 0x04, 0x0e, 0x00, 0x3c, 0x00, 0x49, + 0x00, 0x50, 0x00, 0x72, 0xb3, 0x22, 0x03, 0x4d, 0x11, 0xb8, 0x01, 0x8c, + 0x40, 0x0b, 0x2e, 0x49, 0x49, 0x28, 0x4e, 0x19, 0x39, 0x19, 0x39, 0x28, + 0x0b, 0xbb, 0x01, 0x8c, 0x00, 0x4e, 0x00, 0x42, 0x01, 0xa8, 0x40, 0x27, + 0x28, 0x39, 0x39, 0x00, 0x4d, 0x2e, 0xad, 0x11, 0xcf, 0x49, 0xdf, 0x49, + 0x02, 0x00, 0x49, 0x10, 0x49, 0x02, 0x08, 0x49, 0x49, 0x00, 0x51, 0x45, + 0xd0, 0x25, 0x52, 0x16, 0xd0, 0x1d, 0x52, 0x4a, 0xce, 0x06, 0x50, 0x34, + 0xce, 0x00, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, + 0x11, 0x12, 0x39, 0x2f, 0x5e, 0x5d, 0x5d, 0x33, 0xed, 0x32, 0x11, 0x39, + 0x2f, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x11, + 0x12, 0x39, 0x2f, 0xc4, 0xed, 0x32, 0x39, 0x39, 0x31, 0x30, 0x01, 0x32, + 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x27, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x33, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, + 0x07, 0x35, 0x36, 0x36, 0x13, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x35, 0x01, 0x22, 0x06, 0x07, 0x33, 0x36, 0x26, 0x01, + 0x52, 0x5a, 0x7b, 0x25, 0x25, 0x6d, 0x45, 0x52, 0x72, 0x47, 0x20, 0x01, + 0x01, 0x01, 0x01, 0xfe, 0x43, 0x1b, 0x31, 0x47, 0x2c, 0x31, 0x71, 0x39, + 0x32, 0x88, 0x4a, 0x35, 0x53, 0x41, 0x31, 0x12, 0x3c, 0x78, 0x4c, 0x7b, + 0x8a, 0x2a, 0x58, 0x8b, 0x62, 0x50, 0x0d, 0x21, 0x38, 0x2c, 0x17, 0x3a, + 0x3f, 0x41, 0x1e, 0x36, 0x88, 0x67, 0x28, 0x37, 0x22, 0x0f, 0x2c, 0x2e, + 0x23, 0x49, 0x26, 0x01, 0x43, 0x3f, 0x3e, 0x08, 0xfc, 0x01, 0x41, 0x04, + 0x0e, 0x34, 0x2e, 0x2d, 0x35, 0x41, 0x77, 0xa9, 0x67, 0x0c, 0x21, 0x23, + 0x22, 0x0d, 0x46, 0x6f, 0x4d, 0x29, 0x1e, 0x19, 0xba, 0x14, 0x1c, 0x16, + 0x2a, 0x3b, 0x25, 0x54, 0x4c, 0x94, 0x9a, 0x4b, 0x7a, 0x55, 0x2f, 0x4a, + 0x25, 0x42, 0x31, 0x1c, 0x0c, 0x16, 0x1f, 0x13, 0xc3, 0x1f, 0x22, 0xfd, + 0xb9, 0x1a, 0x2d, 0x3b, 0x22, 0x41, 0x46, 0x48, 0x3f, 0xa4, 0x01, 0x97, + 0x84, 0x7a, 0x82, 0x7c, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4e, + 0x05, 0x85, 0x02, 0x26, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x29, 0xff, 0xee, 0x04, 0x31, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x29, 0x00, + 0xff, 0xff, 0x00, 0x29, 0xff, 0xee, 0x03, 0xc1, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x29, 0x00, 0xff, 0xff, + 0x00, 0x29, 0xff, 0xee, 0x03, 0xc1, 0x05, 0x85, 0x02, 0x26, 0x00, 0x85, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x29, 0x00, 0xff, 0xff, 0x00, 0x29, + 0xff, 0xee, 0x03, 0xc1, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x85, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x52, 0x29, 0x00, 0x00, 0x01, 0x00, 0x85, 0xfe, 0xd9, + 0x03, 0xc1, 0x04, 0x08, 0x00, 0x24, 0x00, 0x61, 0xbc, 0x00, 0x04, 0x01, + 0x72, 0x00, 0x05, 0x00, 0x03, 0x01, 0xd3, 0x40, 0x0c, 0x06, 0x05, 0x06, + 0x05, 0x06, 0x1a, 0x07, 0x02, 0x09, 0x12, 0x24, 0x1a, 0xbb, 0x02, 0x1b, + 0x00, 0x09, 0x00, 0x11, 0x01, 0x40, 0xb4, 0x7f, 0x12, 0x01, 0x12, 0x15, + 0xb8, 0x01, 0x31, 0xb4, 0x0e, 0x50, 0x04, 0x58, 0x00, 0xb8, 0x01, 0x37, + 0xb4, 0x24, 0x1f, 0x06, 0x06, 0x1f, 0xb8, 0x01, 0x32, 0xb1, 0x03, 0x52, + 0x00, 0x3f, 0xed, 0x39, 0x2f, 0x10, 0xd6, 0xed, 0x3f, 0x3f, 0xfd, 0xd6, + 0x5d, 0xed, 0x01, 0x2f, 0xed, 0xd4, 0xc6, 0x12, 0x39, 0x39, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x25, 0x06, 0x06, + 0x07, 0x03, 0x23, 0x13, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x03, 0xc1, 0x3b, 0x7e, 0x43, 0x69, + 0xb2, 0x3d, 0xa8, 0xba, 0x4d, 0x8c, 0xc5, 0x79, 0x63, 0x87, 0x36, 0x3e, + 0x91, 0x41, 0x44, 0x6c, 0x4a, 0x27, 0x2a, 0x4d, 0x6c, 0x42, 0x20, 0x47, + 0x47, 0x45, 0x1e, 0x27, 0x18, 0x1b, 0x04, 0xfe, 0xe9, 0x01, 0x27, 0x27, + 0xfb, 0xce, 0x7a, 0xc6, 0x8c, 0x4c, 0x15, 0x10, 0xed, 0x1f, 0x22, 0x2e, + 0x52, 0x75, 0x46, 0x49, 0x74, 0x51, 0x2b, 0x09, 0x11, 0x16, 0x0d, 0x00, + 0xff, 0xff, 0x00, 0x14, 0xff, 0xe9, 0x05, 0x04, 0x05, 0xd1, 0x02, 0x26, + 0x00, 0x86, 0xcd, 0x00, 0x00, 0x06, 0x01, 0x44, 0x14, 0x00, 0x00, 0x02, + 0x00, 0x4c, 0xff, 0xe9, 0x04, 0x04, 0x05, 0x85, 0x00, 0x22, 0x00, 0x35, + 0x00, 0x80, 0xb3, 0x22, 0x02, 0x07, 0x21, 0xb8, 0x02, 0x3b, 0x40, 0x11, + 0x20, 0x2e, 0x19, 0x1c, 0x1f, 0x04, 0x20, 0x2b, 0x1d, 0x20, 0x01, 0x01, + 0x20, 0x1d, 0x03, 0x13, 0x07, 0xbb, 0x02, 0x17, 0x00, 0x2b, 0x00, 0x23, + 0x02, 0x17, 0x40, 0x27, 0x13, 0x02, 0x1c, 0x1d, 0x01, 0xf4, 0x00, 0x22, + 0x1f, 0x00, 0x1e, 0xf4, 0x1d, 0x00, 0x1d, 0x00, 0x1d, 0x36, 0x6f, 0x21, + 0x7f, 0x21, 0x8f, 0x21, 0x03, 0x21, 0x53, 0x31, 0xfc, 0x10, 0x18, 0x20, + 0x18, 0x30, 0x18, 0x03, 0x18, 0x50, 0x26, 0xb8, 0x01, 0x31, 0xb1, 0x0e, + 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x5d, 0xed, 0x3f, 0x5d, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0x10, 0xed, 0x11, 0x39, 0x39, 0x10, 0xed, 0x11, 0x39, 0x39, + 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, + 0x12, 0x17, 0x39, 0x10, 0xed, 0x11, 0x39, 0x39, 0x31, 0x30, 0x01, 0x15, + 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x04, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x33, 0x26, 0x26, 0x27, 0x05, 0x35, 0x37, 0x27, + 0x21, 0x17, 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, + 0x27, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, 0xae, 0xb0, 0x4a, 0x64, + 0x3e, 0x1a, 0x12, 0x2c, 0x48, 0x6d, 0x94, 0x62, 0x77, 0xaf, 0x72, 0x37, + 0x4e, 0x86, 0xb4, 0x65, 0x04, 0x0f, 0x22, 0x12, 0xfe, 0xd7, 0xaa, 0x71, + 0x01, 0x3e, 0x3b, 0xfe, 0xc9, 0x6c, 0x71, 0x2e, 0x50, 0x3b, 0x22, 0x28, + 0x26, 0x18, 0x3d, 0x1b, 0x38, 0x5c, 0x42, 0x24, 0x05, 0x7f, 0xb8, 0x25, + 0x64, 0xad, 0xa2, 0x9c, 0x53, 0x3f, 0x80, 0x77, 0x68, 0x4d, 0x2c, 0x43, + 0x82, 0xbd, 0x7a, 0x8d, 0xcf, 0x87, 0x42, 0x19, 0x2f, 0x18, 0x3f, 0xb8, + 0x23, 0x7f, 0x46, 0xfc, 0xb3, 0xa3, 0x95, 0x27, 0x4e, 0x76, 0x4f, 0x58, + 0x9c, 0x53, 0x07, 0x08, 0x30, 0x59, 0x7f, 0x00, 0x00, 0x02, 0x00, 0x4c, + 0xff, 0xe9, 0x04, 0x58, 0x05, 0x85, 0x00, 0x1e, 0x00, 0x2f, 0x00, 0x49, + 0xb1, 0x1a, 0x1d, 0xb8, 0x02, 0x0b, 0x40, 0x09, 0x27, 0x15, 0x15, 0x0b, + 0x17, 0x14, 0x01, 0x27, 0x1f, 0xb8, 0x02, 0x17, 0x40, 0x11, 0x0b, 0x01, + 0x18, 0x1e, 0x51, 0x18, 0x53, 0x17, 0x1a, 0xd0, 0x14, 0x1d, 0x2b, 0xfc, + 0x10, 0x50, 0x22, 0xb8, 0x01, 0x31, 0xb1, 0x06, 0x52, 0x00, 0x3f, 0xed, + 0x3f, 0xed, 0xdc, 0x32, 0xed, 0x32, 0x3f, 0x3f, 0x12, 0x39, 0x01, 0x2f, + 0xed, 0xd4, 0x32, 0xc4, 0xc4, 0x12, 0x39, 0x2f, 0x10, 0xfd, 0xc4, 0x31, + 0x30, 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x35, 0x21, 0x35, 0x21, 0x35, 0x33, 0x15, + 0x33, 0x15, 0x23, 0x11, 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x02, 0x06, 0x20, 0x43, + 0x4c, 0x59, 0x36, 0x5a, 0x8a, 0x5e, 0x30, 0x4e, 0x8a, 0xbf, 0x71, 0x26, + 0x48, 0x1f, 0xfe, 0xf0, 0x01, 0x10, 0xf4, 0x83, 0x83, 0xfd, 0x77, 0x57, + 0x55, 0x1f, 0x39, 0x38, 0x39, 0x20, 0x1d, 0x51, 0x2b, 0x3b, 0x5d, 0x41, + 0x23, 0x96, 0x27, 0x40, 0x2d, 0x19, 0x48, 0x85, 0xbe, 0x75, 0x8c, 0xcd, + 0x87, 0x41, 0x0a, 0x08, 0x70, 0xb3, 0x6a, 0x6a, 0xb3, 0xfb, 0x98, 0x01, + 0xf4, 0xa8, 0x92, 0x1a, 0x31, 0x45, 0x2b, 0x01, 0xbc, 0x0b, 0x0e, 0x30, + 0x58, 0x7f, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, 0x02, 0x26, 0x00, 0x87, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x00, 0x05, 0x96, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, + 0x05, 0x62, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0xa8, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x66, 0xfe, 0x6a, 0x04, 0x00, 0x04, 0x0e, 0x00, 0x37, 0x00, 0x40, + 0x00, 0x6c, 0xb9, 0x00, 0x08, 0x01, 0xaf, 0xb2, 0x31, 0x37, 0x2c, 0xb8, + 0x01, 0xde, 0x40, 0x0e, 0x0d, 0x0d, 0x21, 0x29, 0x0f, 0x13, 0x2b, 0x29, + 0x37, 0x29, 0x37, 0x29, 0x13, 0x1d, 0xb8, 0x02, 0x0f, 0xb2, 0x38, 0x40, + 0x21, 0xb8, 0x02, 0x0f, 0x40, 0x19, 0x13, 0x38, 0xcd, 0x21, 0x21, 0x41, + 0x3d, 0xf3, 0x18, 0x50, 0x31, 0x03, 0x2c, 0x2c, 0x0d, 0x29, 0x26, 0xff, + 0x0d, 0x52, 0x37, 0x34, 0xc7, 0x03, 0x57, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, + 0xfd, 0xc6, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0xed, 0x32, 0xdd, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, + 0x12, 0x39, 0x12, 0x39, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x10, 0xd6, 0xed, + 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x37, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x37, 0x15, 0x06, 0x07, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x03, 0x36, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x03, 0x75, + 0x20, 0x51, 0x1f, 0x40, 0x57, 0x36, 0x18, 0x09, 0x16, 0x26, 0x1d, 0x0c, + 0x74, 0xb8, 0x80, 0x44, 0x44, 0x7c, 0xb1, 0x6d, 0x6c, 0xa6, 0x70, 0x3a, + 0x03, 0x03, 0xfd, 0x64, 0x29, 0x4b, 0x69, 0x40, 0x4a, 0xa9, 0x5b, 0x3a, + 0x42, 0x26, 0x2c, 0x17, 0x07, 0x21, 0x2d, 0x0f, 0x2b, 0x10, 0x6d, 0x01, + 0x20, 0x37, 0x49, 0x2a, 0x5c, 0x76, 0x0b, 0xfe, 0x7f, 0x09, 0x0c, 0x1c, + 0x30, 0x41, 0x26, 0x19, 0x31, 0x31, 0x34, 0x1d, 0x42, 0x81, 0xbe, 0x7d, + 0x7c, 0xcb, 0x91, 0x4f, 0x43, 0x78, 0xa6, 0x63, 0x19, 0x50, 0x23, 0x43, + 0x66, 0x45, 0x24, 0x17, 0x1a, 0xc2, 0x11, 0x0a, 0x26, 0x37, 0x2a, 0x22, + 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x03, 0x5b, 0x3c, 0x59, 0x3a, 0x1c, 0x7b, + 0x70, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd3, 0x05, 0x98, + 0x00, 0x21, 0x00, 0x22, 0x00, 0x4c, 0x40, 0x09, 0x07, 0x07, 0x05, 0x23, + 0x15, 0x15, 0x21, 0x20, 0x04, 0xbb, 0x01, 0xe3, 0x00, 0x05, 0x00, 0x21, + 0x01, 0xe3, 0x40, 0x16, 0x02, 0x09, 0x05, 0x15, 0x1a, 0xfd, 0x0f, 0x09, + 0x20, 0xfa, 0x06, 0x0a, 0x0f, 0x03, 0x03, 0x05, 0x0f, 0x54, 0x05, 0x51, + 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x33, + 0xed, 0x32, 0x10, 0xfd, 0xc6, 0x01, 0x2f, 0xc4, 0xd4, 0xed, 0x10, 0xfd, + 0xc4, 0x12, 0x39, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x21, 0x23, + 0x11, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x15, 0x21, 0x25, 0x03, 0xd3, 0xf0, 0xfe, 0xcb, 0xf0, 0x9d, 0x9d, + 0x43, 0x7e, 0xb5, 0x72, 0x21, 0x47, 0x46, 0x42, 0x1c, 0x19, 0x40, 0x45, + 0x47, 0x1f, 0x39, 0x5e, 0x43, 0x26, 0x02, 0x25, 0xfc, 0x2d, 0x02, 0xd3, + 0xfd, 0x2d, 0x02, 0xd3, 0xbe, 0x6b, 0x6e, 0x9c, 0x64, 0x2e, 0x05, 0x0a, + 0x0d, 0x07, 0xc5, 0x09, 0x0e, 0x0a, 0x06, 0x17, 0x34, 0x52, 0x3a, 0x6f, + 0x67, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd3, 0x05, 0x98, + 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x48, 0x40, 0x09, 0x10, 0x10, 0x0e, 0x1d, + 0x0b, 0x0b, 0x01, 0x09, 0x0d, 0xbb, 0x01, 0xe3, 0x00, 0x0e, 0x00, 0x00, + 0x01, 0xe3, 0x40, 0x14, 0x01, 0x12, 0x0e, 0x12, 0x09, 0xfa, 0x0f, 0x13, + 0x18, 0x0c, 0x0c, 0x0e, 0x05, 0xfd, 0x18, 0x54, 0x0e, 0x51, 0x00, 0x51, + 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0xc4, 0xd4, 0xed, 0x10, 0xfd, 0xc4, 0x12, 0x39, 0x2f, + 0x11, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x21, 0x23, 0x11, 0x26, 0x26, 0x23, + 0x22, 0x06, 0x15, 0x15, 0x33, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, + 0x33, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x01, 0x03, 0xd3, + 0xf0, 0x0e, 0x2e, 0x16, 0x76, 0x6d, 0xb6, 0xb6, 0xf0, 0x9d, 0x9d, 0x43, + 0x7a, 0xad, 0x6b, 0x51, 0x9e, 0x51, 0xfc, 0x2d, 0x04, 0xd1, 0x03, 0x03, + 0x65, 0x72, 0x6f, 0xbe, 0xfd, 0x2d, 0x02, 0xd3, 0xbe, 0x6b, 0x6e, 0x9c, + 0x64, 0x2e, 0x11, 0x12, 0xfe, 0x83, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, + 0x04, 0x25, 0x05, 0x85, 0x02, 0x26, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x25, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x25, 0x05, 0xa8, + 0x02, 0x26, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x25, 0x05, 0xba, 0x02, 0x26, + 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x01, 0x57, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xdd, 0x06, 0xcd, 0x02, 0x26, 0x00, 0x8a, + 0x00, 0x00, 0x01, 0x06, 0x01, 0x41, 0x00, 0x46, 0x00, 0x22, 0xb2, 0x01, + 0x1f, 0x1f, 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x0e, 0x0e, 0x48, 0x1f, 0x40, + 0x09, 0x09, 0x48, 0x1f, 0xb8, 0xff, 0xc0, 0xb4, 0x08, 0x0b, 0x48, 0x1f, + 0x53, 0x00, 0x3f, 0x2b, 0x2b, 0x2b, 0x12, 0x34, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xd3, 0x05, 0x85, 0x00, 0x20, 0x00, 0x21, 0x00, 0x44, + 0xb4, 0x18, 0x22, 0x20, 0x1d, 0x14, 0xbb, 0x02, 0x0a, 0x00, 0x16, 0x00, + 0x0a, 0x02, 0x0b, 0x40, 0x0b, 0x0b, 0x1a, 0x16, 0x1a, 0x1e, 0xf3, 0x20, + 0x18, 0x01, 0x16, 0x0f, 0xb8, 0x01, 0x08, 0x40, 0x09, 0x04, 0x21, 0x50, + 0x1c, 0x53, 0x16, 0x51, 0x0b, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xdc, + 0xed, 0x12, 0x39, 0xdc, 0x32, 0xed, 0x32, 0x01, 0x2f, 0xc4, 0xd4, 0xed, + 0x10, 0xf5, 0xc4, 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x07, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, + 0x21, 0x15, 0x21, 0x05, 0x01, 0x89, 0x0c, 0x36, 0x89, 0x62, 0x51, 0x75, + 0x4b, 0x24, 0xf4, 0x33, 0x44, 0x1b, 0x30, 0x34, 0x3b, 0x25, 0xf3, 0x96, + 0x96, 0xf3, 0x01, 0x0a, 0xfe, 0xf6, 0xfe, 0x77, 0x03, 0xfc, 0xb9, 0x4c, + 0x52, 0x32, 0x5d, 0x84, 0x51, 0xfd, 0x83, 0x02, 0x68, 0x53, 0x59, 0x15, + 0x2d, 0x47, 0x33, 0xfd, 0xa8, 0x04, 0x5e, 0xb6, 0x71, 0x71, 0xb6, 0x50, + 0xff, 0xff, 0x00, 0x14, 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, + 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, 0x14, 0x00, 0xff, 0xff, + 0x00, 0x14, 0x00, 0x00, 0x04, 0x1c, 0x05, 0x85, 0x02, 0x26, 0x00, 0xca, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x14, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x14, 0x00, 0x00, + 0x03, 0xf2, 0x05, 0x99, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x45, 0x14, 0x00, 0xff, 0xff, 0x00, 0x14, 0x00, 0x00, 0x03, 0xf2, + 0x05, 0x96, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x14, 0x00, 0xff, 0xff, 0x00, 0x14, 0x00, 0x00, 0x03, 0xf2, 0x05, 0x62, + 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x14, 0x00, + 0xff, 0xff, 0x00, 0x14, 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, + 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x14, 0x00, 0x00, 0x02, + 0x00, 0x91, 0xfe, 0x6a, 0x04, 0x19, 0x05, 0xae, 0x00, 0x22, 0x00, 0x36, + 0x00, 0x68, 0xb9, 0x00, 0x08, 0x01, 0xaf, 0xb2, 0x1c, 0x22, 0x0d, 0xb8, + 0x01, 0xa8, 0xb2, 0x16, 0x10, 0x2d, 0xb8, 0x02, 0x3c, 0xb6, 0x23, 0x15, + 0x12, 0x12, 0x10, 0x0f, 0x15, 0xb8, 0x02, 0x11, 0x40, 0x09, 0x10, 0x10, + 0x37, 0x38, 0x1c, 0x03, 0x17, 0x51, 0x32, 0xb8, 0x01, 0x4b, 0x40, 0x15, + 0x0f, 0x28, 0x01, 0xff, 0x28, 0x01, 0x28, 0x11, 0xfa, 0x13, 0x4f, 0x15, + 0x10, 0xfa, 0x0e, 0x51, 0x22, 0x1f, 0xc7, 0x03, 0x57, 0x00, 0x3f, 0xfd, + 0xc6, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0xde, 0x5d, 0x71, 0xed, 0x3f, 0x12, + 0x39, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xfd, 0xc4, 0x11, 0x39, 0x2f, 0x10, + 0xd4, 0xed, 0x10, 0xd4, 0xed, 0xd6, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x21, 0x35, + 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x15, 0x0e, 0x03, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x04, 0x19, 0x20, + 0x50, 0x1f, 0x40, 0x58, 0x36, 0x18, 0x0b, 0x1c, 0x2f, 0x25, 0xfd, 0x72, + 0x01, 0x42, 0xfe, 0xe1, 0x02, 0x19, 0x01, 0x25, 0x26, 0x2c, 0x18, 0x07, + 0x21, 0x2d, 0x10, 0x2a, 0x10, 0xfe, 0xc8, 0x18, 0x2b, 0x3a, 0x22, 0x22, + 0x3b, 0x2b, 0x18, 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, 0x2b, 0x18, 0xfe, + 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, 0x37, 0x3b, 0x21, + 0xbe, 0x02, 0x7c, 0xbe, 0xfc, 0xc6, 0xbe, 0x26, 0x37, 0x2a, 0x22, 0x0f, + 0x1f, 0x1f, 0x05, 0x03, 0x05, 0xfc, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, + 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0x00, 0x01, + 0x00, 0x91, 0x00, 0x00, 0x03, 0xf2, 0x03, 0xf8, 0x00, 0x09, 0x00, 0x2c, + 0xb4, 0x01, 0x01, 0x09, 0x08, 0x03, 0xb8, 0x02, 0x11, 0x40, 0x0e, 0x06, + 0x09, 0x09, 0x0a, 0x0b, 0x04, 0x09, 0xfa, 0x07, 0x51, 0x00, 0xfa, 0x02, + 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, + 0xcd, 0xfd, 0xc4, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, + 0x11, 0x21, 0x15, 0x21, 0x35, 0x21, 0x01, 0xd3, 0xfe, 0xe1, 0x02, 0x19, + 0x01, 0x25, 0xfc, 0x9f, 0x01, 0x42, 0x03, 0x3a, 0xbe, 0xfc, 0xc6, 0xbe, + 0xbe, 0x00, 0x00, 0x04, 0x00, 0x68, 0xfe, 0x5c, 0x04, 0x01, 0x05, 0xaa, + 0x00, 0x13, 0x00, 0x17, 0x00, 0x2b, 0x00, 0x3f, 0x00, 0x56, 0xb9, 0x00, + 0x18, 0x02, 0x3a, 0xb3, 0x22, 0x16, 0x09, 0x14, 0xbe, 0x02, 0x0b, 0x00, + 0x16, 0x00, 0x2c, 0x02, 0x3a, 0x00, 0x36, 0x00, 0x00, 0x02, 0x0b, 0xb3, + 0x12, 0x16, 0x3b, 0x27, 0xb8, 0x01, 0x4a, 0x40, 0x0e, 0x31, 0x0f, 0x1d, + 0x01, 0xff, 0x1d, 0x01, 0x1d, 0x12, 0x17, 0x4f, 0x16, 0x51, 0x08, 0xb8, + 0x01, 0x0a, 0xb4, 0x09, 0x0e, 0xfd, 0x05, 0x56, 0x00, 0x3f, 0xfd, 0xd6, + 0xed, 0x3f, 0x3f, 0x33, 0xde, 0x5d, 0x71, 0x32, 0xed, 0x32, 0x01, 0x2f, + 0xd4, 0xed, 0xd4, 0xed, 0x10, 0xfd, 0xc4, 0x10, 0xd4, 0xed, 0x31, 0x30, + 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, + 0x32, 0x36, 0x35, 0x11, 0x33, 0x21, 0x11, 0x23, 0x11, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x03, 0xdd, 0x38, 0x68, 0x95, 0x5c, 0x39, + 0x68, 0x2e, 0x12, 0x2e, 0x35, 0x36, 0x1a, 0x5c, 0x4b, 0xf4, 0xfd, 0xa2, + 0xf4, 0x01, 0x17, 0x18, 0x2a, 0x39, 0x21, 0x22, 0x3a, 0x2a, 0x18, 0x18, + 0x2a, 0x3a, 0x22, 0x21, 0x39, 0x2a, 0x18, 0x02, 0x5f, 0x18, 0x2b, 0x39, + 0x21, 0x22, 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x22, 0x21, 0x39, 0x2b, + 0x18, 0x19, 0x79, 0xa9, 0x6b, 0x30, 0x0c, 0x0d, 0xcf, 0x08, 0x0e, 0x0b, + 0x06, 0x77, 0x78, 0x03, 0xec, 0xfc, 0x08, 0x03, 0xf8, 0x01, 0x16, 0x21, + 0x39, 0x2b, 0x18, 0x18, 0x2b, 0x39, 0x21, 0x20, 0x39, 0x2a, 0x19, 0x19, + 0x2a, 0x39, 0x20, 0x21, 0x39, 0x2b, 0x18, 0x18, 0x2b, 0x39, 0x21, 0x20, + 0x39, 0x2a, 0x19, 0x19, 0x2a, 0x39, 0x00, 0x01, 0x00, 0x77, 0xfe, 0x5c, + 0x03, 0x73, 0x03, 0xf8, 0x00, 0x15, 0x00, 0x29, 0xb3, 0x13, 0x13, 0x09, + 0x00, 0xb8, 0x02, 0x0f, 0xb6, 0x11, 0x09, 0x12, 0xfa, 0x15, 0x4f, 0x08, + 0xb8, 0x01, 0x3e, 0xb4, 0x09, 0x0e, 0xff, 0x05, 0x56, 0x00, 0x3f, 0xfd, + 0xd6, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xd6, 0xed, 0x12, 0x39, 0x2f, 0x31, + 0x30, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, + 0x33, 0x32, 0x36, 0x35, 0x11, 0x21, 0x35, 0x21, 0x03, 0x73, 0x43, 0x7d, + 0xaf, 0x6c, 0x58, 0x98, 0x31, 0x1c, 0x47, 0x4d, 0x50, 0x27, 0x6f, 0x6e, + 0xfe, 0x1d, 0x02, 0xdb, 0x1d, 0x72, 0xa9, 0x6f, 0x37, 0x1e, 0x15, 0xe0, + 0x0f, 0x1d, 0x17, 0x0d, 0x80, 0x7c, 0x03, 0x1f, 0xbe, 0x00, 0xff, 0xff, + 0x00, 0x11, 0xfe, 0x5c, 0x03, 0x98, 0x05, 0x85, 0x02, 0x26, 0x00, 0xcc, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x11, 0x00, 0xff, 0xff, 0x00, 0x95, + 0xfe, 0x66, 0x04, 0x3f, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8d, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0xff, 0xff, 0x00, 0x96, 0x00, 0x00, + 0x04, 0x3d, 0x03, 0xf8, 0x02, 0x06, 0x01, 0xbc, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xf2, 0x06, 0xcd, 0x02, 0x26, 0x00, 0x8e, + 0x00, 0x00, 0x01, 0x06, 0x01, 0x3f, 0x00, 0x46, 0x00, 0x2d, 0xb9, 0x00, + 0x0d, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0xb4, + 0x0e, 0x0e, 0x48, 0x01, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, + 0x0e, 0xb8, 0xff, 0xc0, 0xb5, 0x08, 0x08, 0x48, 0x0e, 0x0e, 0x53, 0x00, + 0x3f, 0x12, 0x2b, 0x2b, 0x34, 0x2b, 0x2b, 0x00, 0xff, 0xff, 0xff, 0x7b, + 0x00, 0x00, 0x04, 0x6b, 0x05, 0xd1, 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, + 0x00, 0x07, 0x01, 0x44, 0xff, 0x7b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x91, + 0xfe, 0x66, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x56, 0x29, 0x00, 0x00, 0x01, 0x00, 0x91, 0x00, 0x00, + 0x03, 0xf2, 0x05, 0x85, 0x00, 0x11, 0x00, 0x7a, 0x40, 0x1c, 0x09, 0x10, + 0x11, 0x08, 0x11, 0x01, 0x06, 0x07, 0x00, 0x07, 0x07, 0x08, 0x08, 0x0a, + 0x0c, 0x0f, 0x00, 0x00, 0x11, 0x03, 0x11, 0x03, 0x11, 0x0f, 0x0d, 0x09, + 0x06, 0x0a, 0xb8, 0x02, 0x11, 0x40, 0x0b, 0x10, 0x01, 0x0f, 0x0f, 0x12, + 0x13, 0x0a, 0x0f, 0xfa, 0x0d, 0x08, 0xbb, 0x01, 0x39, 0x00, 0x07, 0x00, + 0x00, 0x01, 0x39, 0x40, 0x0c, 0x11, 0x07, 0x11, 0x07, 0x11, 0x04, 0x0d, + 0x51, 0x02, 0xfa, 0x04, 0x53, 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x10, 0xed, 0x32, 0x11, 0x12, 0x01, + 0x39, 0x2f, 0x33, 0x33, 0xfd, 0x32, 0x32, 0xcd, 0x11, 0x39, 0x39, 0x2f, + 0x2f, 0x11, 0x33, 0x2f, 0x10, 0xcd, 0x11, 0x39, 0x2f, 0x33, 0x2f, 0x7d, + 0x87, 0x04, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0x31, 0x30, 0x13, 0x25, + 0x11, 0x21, 0x35, 0x21, 0x11, 0x25, 0x15, 0x05, 0x11, 0x21, 0x15, 0x21, + 0x35, 0x21, 0x11, 0x05, 0xcb, 0x01, 0x08, 0xfe, 0xe1, 0x02, 0x19, 0x01, + 0x08, 0xfe, 0xf8, 0x01, 0x25, 0xfc, 0x9f, 0x01, 0x42, 0xfe, 0xf8, 0x02, + 0xaa, 0x85, 0x01, 0x98, 0xbe, 0xfe, 0x27, 0x85, 0xdb, 0x85, 0xfd, 0xed, + 0xbe, 0xbe, 0x01, 0x96, 0x85, 0x00, 0xff, 0xff, 0x00, 0x55, 0x00, 0x00, + 0x05, 0x0b, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8e, 0xc4, 0x00, 0x00, 0x07, + 0x01, 0x7d, 0x02, 0x13, 0x00, 0x3d, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdd, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdd, 0x05, 0x99, + 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x8b, 0xfe, 0x66, 0x03, 0xdd, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xf1, 0x06, 0x1f, 0x02, 0x26, 0x00, 0x90, + 0x14, 0x00, 0x00, 0x06, 0x01, 0x58, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8b, + 0xfe, 0x5c, 0x03, 0xdd, 0x04, 0x0e, 0x00, 0x1e, 0x00, 0x39, 0xb4, 0x06, + 0x06, 0x0a, 0x14, 0x10, 0xbb, 0x02, 0x0b, 0x00, 0x11, 0x00, 0x1e, 0x02, + 0x0b, 0xb2, 0x0a, 0x11, 0x0c, 0xb8, 0x01, 0x31, 0x40, 0x0c, 0x19, 0x50, + 0x14, 0x11, 0x12, 0x4f, 0x11, 0x51, 0x06, 0xff, 0x05, 0x56, 0x00, 0x3f, + 0xed, 0x3f, 0x3f, 0x12, 0x39, 0x3f, 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x10, + 0xed, 0x32, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x25, 0x14, 0x0e, 0x02, 0x23, + 0x35, 0x32, 0x36, 0x35, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, + 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x03, 0xdd, + 0x41, 0x7a, 0xae, 0x6c, 0x70, 0x71, 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0xd3, + 0x06, 0x1f, 0x43, 0x4e, 0x5a, 0x38, 0x4e, 0x74, 0x4e, 0x27, 0x1d, 0x72, + 0xa9, 0x6f, 0x37, 0xc3, 0x80, 0x7c, 0x02, 0x7b, 0xa7, 0x64, 0x56, 0xfd, + 0x7d, 0x03, 0xf8, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, 0x51, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x85, 0x02, 0x26, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x85, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x1e, 0x05, 0x99, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x45, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, + 0x05, 0x96, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x62, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x9e, 0x05, 0x85, 0x02, 0x26, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x48, + 0xff, 0x29, 0x04, 0x1f, 0x04, 0xcf, 0x00, 0x1b, 0x00, 0x25, 0x00, 0x2f, + 0x00, 0x76, 0x40, 0x15, 0x28, 0x2b, 0x21, 0x1e, 0x04, 0x1c, 0x26, 0x02, + 0x17, 0x09, 0x10, 0x04, 0x12, 0x04, 0x1a, 0x20, 0x1f, 0x0f, 0x04, 0x0e, + 0x1b, 0xb8, 0x01, 0x8b, 0xb7, 0x01, 0x29, 0x2a, 0x0c, 0x04, 0x0d, 0x00, + 0x04, 0xbe, 0x02, 0x08, 0x00, 0x26, 0x00, 0x1c, 0x02, 0x08, 0x00, 0x12, + 0x00, 0x0d, 0x01, 0x8c, 0xb5, 0x0e, 0x12, 0x29, 0x1f, 0x2b, 0x21, 0xb8, + 0x01, 0x02, 0x40, 0x0a, 0x0c, 0x0f, 0x01, 0x1a, 0x04, 0x09, 0x00, 0x17, + 0x50, 0x2b, 0xb8, 0x01, 0x02, 0xb2, 0x0e, 0x09, 0x52, 0x00, 0x3f, 0xc4, + 0xed, 0x3f, 0xc4, 0x12, 0x17, 0x39, 0xed, 0x11, 0x39, 0x39, 0x01, 0x2f, + 0xd4, 0xed, 0x10, 0xed, 0xd4, 0xfd, 0xd4, 0x11, 0x17, 0x39, 0xed, 0x11, + 0x17, 0x39, 0x11, 0x12, 0x17, 0x39, 0x11, 0x12, 0x17, 0x39, 0x31, 0x30, + 0x01, 0x07, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x07, 0x23, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x37, 0x01, 0x14, 0x16, 0x17, 0x13, 0x23, 0x22, 0x0e, 0x02, 0x05, + 0x34, 0x26, 0x27, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x8f, 0x56, 0x6e, + 0x78, 0x3e, 0x7c, 0xbb, 0x7d, 0x14, 0x27, 0x13, 0x43, 0xc5, 0x56, 0x6f, + 0x76, 0x3f, 0x7d, 0xba, 0x7b, 0x14, 0x26, 0x12, 0x46, 0xfe, 0x6e, 0x20, + 0x20, 0xc9, 0x13, 0x3f, 0x5d, 0x3e, 0x1c, 0x01, 0xf5, 0x1f, 0x23, 0xc9, + 0x14, 0x3d, 0x5d, 0x3e, 0x1f, 0x04, 0xcf, 0xfa, 0x3b, 0xe9, 0xad, 0x71, + 0xc5, 0x91, 0x54, 0x03, 0x02, 0xc5, 0xf8, 0x3b, 0xe8, 0xb2, 0x72, 0xc4, + 0x90, 0x52, 0x02, 0x02, 0xc5, 0xfd, 0x2d, 0x55, 0x7f, 0x2a, 0x02, 0x49, + 0x34, 0x5b, 0x78, 0x42, 0x55, 0x7d, 0x29, 0xfd, 0xb7, 0x33, 0x5a, 0x7a, + 0xff, 0xff, 0xff, 0xc5, 0xff, 0x29, 0x04, 0x1f, 0x05, 0xe5, 0x02, 0x26, + 0x00, 0xe3, 0x00, 0x00, 0x00, 0x07, 0x01, 0x3f, 0xff, 0xc5, 0xff, 0x5e, + 0x00, 0x03, 0x00, 0x1d, 0xff, 0xe9, 0x04, 0x4a, 0x04, 0x0e, 0x00, 0x30, + 0x00, 0x44, 0x00, 0x4b, 0x00, 0x5c, 0xb3, 0x00, 0x12, 0x4b, 0x20, 0xb8, + 0x01, 0x90, 0xb7, 0x31, 0x31, 0x45, 0x0a, 0x28, 0x28, 0x0a, 0x1a, 0xbb, + 0x01, 0x8b, 0x00, 0x45, 0x00, 0x3b, 0x01, 0x8b, 0x40, 0x1c, 0x0a, 0x29, + 0xcb, 0x28, 0x25, 0xcb, 0x2c, 0x52, 0x48, 0xcb, 0x15, 0x50, 0x45, 0xaf, + 0x12, 0x0f, 0x00, 0x20, 0x20, 0x05, 0x36, 0xcb, 0x0f, 0x50, 0x40, 0xcb, + 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x39, 0x12, + 0x39, 0xed, 0x3f, 0xed, 0x3f, 0xfd, 0xd6, 0xed, 0x01, 0x2f, 0xed, 0xd4, + 0xed, 0x11, 0x39, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x39, 0x39, + 0x31, 0x30, 0x25, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x03, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x25, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x02, 0x35, 0x0d, 0x2e, 0x3c, 0x48, + 0x28, 0x4f, 0x73, 0x4b, 0x24, 0x26, 0x4f, 0x79, 0x53, 0x4e, 0x78, 0x20, + 0x20, 0x72, 0x4b, 0x4e, 0x71, 0x48, 0x22, 0x01, 0x01, 0x01, 0x01, 0xfe, + 0x58, 0x1a, 0x2e, 0x42, 0x28, 0x2e, 0x6f, 0x38, 0x35, 0x83, 0x3e, 0x29, + 0x4d, 0x42, 0x33, 0x73, 0x0e, 0x1d, 0x2d, 0x1f, 0x1d, 0x2c, 0x20, 0x10, + 0x0e, 0x1d, 0x2e, 0x20, 0x1c, 0x2c, 0x1f, 0x10, 0x01, 0xb6, 0x38, 0x32, + 0x3b, 0x3e, 0x06, 0x89, 0x23, 0x3b, 0x2a, 0x18, 0x39, 0x7c, 0xc7, 0x8d, + 0x78, 0xc7, 0x8f, 0x4e, 0x4b, 0x50, 0x4a, 0x51, 0x41, 0x78, 0xa7, 0x66, + 0x0c, 0x22, 0x24, 0x24, 0x0d, 0x47, 0x70, 0x4f, 0x2a, 0x17, 0x17, 0xac, + 0x16, 0x18, 0x14, 0x27, 0x3c, 0x01, 0x9e, 0x61, 0x88, 0x55, 0x26, 0x28, + 0x56, 0x88, 0x60, 0x63, 0x89, 0x55, 0x26, 0x27, 0x57, 0x89, 0xc4, 0x89, + 0x79, 0x85, 0x7d, 0x00, 0x00, 0x02, 0x00, 0x8b, 0xfe, 0x73, 0x04, 0x1d, + 0x05, 0x85, 0x00, 0x15, 0x00, 0x26, 0x00, 0x35, 0xb2, 0x0d, 0x08, 0x1f, + 0xbb, 0x02, 0x0b, 0x00, 0x0a, 0x00, 0x00, 0x02, 0x17, 0xb4, 0x16, 0x0a, + 0x0e, 0x27, 0x1b, 0xb8, 0x01, 0x31, 0x40, 0x0a, 0x11, 0x50, 0x0b, 0x53, + 0x0a, 0x55, 0x22, 0xfc, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x3f, + 0xed, 0x12, 0x39, 0x01, 0x2f, 0xd4, 0xed, 0x10, 0xfd, 0xc4, 0xc4, 0x31, + 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x11, + 0x33, 0x11, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x04, 0x1d, 0x4f, 0x8d, 0xc0, 0x71, 0x26, 0x4c, 0x1f, 0xf4, 0xf4, 0x0a, + 0x37, 0x93, 0x67, 0x5a, 0x8c, 0x5f, 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, + 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x55, 0x2c, 0x3a, 0x5f, 0x43, 0x24, 0x02, + 0x0e, 0x8c, 0xcc, 0x87, 0x41, 0x0a, 0x08, 0xfe, 0x73, 0x07, 0x12, 0xfe, + 0xb4, 0xc8, 0x47, 0x56, 0x48, 0x85, 0xbd, 0x80, 0x54, 0x76, 0x4c, 0x23, + 0x64, 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x11, 0x05, 0x85, 0x02, 0x26, 0x00, 0x94, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x11, 0x05, 0x85, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb4, 0xfe, 0x66, + 0x04, 0x11, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x56, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x08, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd1, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd1, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x9c, 0xfe, 0xd9, 0x03, 0xd1, 0x04, 0x0e, 0x00, 0x34, 0x00, 0x70, + 0xbc, 0x00, 0x06, 0x01, 0x73, 0x00, 0x07, 0x00, 0x05, 0x01, 0xd9, 0x40, + 0x0a, 0x08, 0x08, 0x12, 0x09, 0x04, 0x1c, 0x25, 0x25, 0x1c, 0x00, 0xbb, + 0x02, 0x24, 0x00, 0x12, 0x00, 0x2b, 0x02, 0x1c, 0xb2, 0x0c, 0x1c, 0x24, + 0xb8, 0x01, 0x02, 0x40, 0x0e, 0x90, 0x25, 0xa0, 0x25, 0x02, 0x25, 0x28, + 0xf2, 0x2b, 0x12, 0x08, 0x21, 0x50, 0x0b, 0xba, 0x01, 0x3a, 0x00, 0x0c, + 0xff, 0xc0, 0x40, 0x0c, 0x0e, 0x11, 0x48, 0x0c, 0x0f, 0xf6, 0x08, 0x52, + 0x06, 0x58, 0x05, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0xfd, 0xd6, 0x2b, 0xed, + 0x3f, 0x12, 0x39, 0x39, 0xfd, 0xd6, 0x5d, 0xed, 0x01, 0x2f, 0xc4, 0xed, + 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x12, 0x39, 0x39, 0x11, 0x39, 0x2f, 0xed, + 0xdd, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x07, 0x03, 0x23, 0x13, + 0x26, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, + 0x03, 0x03, 0xd1, 0x2d, 0x4e, 0x69, 0x3c, 0x6b, 0xb3, 0x39, 0x58, 0x95, + 0x43, 0x5e, 0xbb, 0x53, 0x60, 0x5f, 0x14, 0x37, 0x64, 0x51, 0x4b, 0x71, + 0x4a, 0x25, 0x38, 0x6f, 0xa6, 0x6f, 0x60, 0x94, 0x39, 0x57, 0x99, 0x4b, + 0x4b, 0x5b, 0x12, 0x35, 0x5f, 0x4e, 0x58, 0x78, 0x49, 0x20, 0x01, 0x2b, + 0x42, 0x66, 0x4b, 0x31, 0x0d, 0xfe, 0xdf, 0x01, 0x11, 0x03, 0x14, 0x11, + 0xdc, 0x27, 0x23, 0x3d, 0x31, 0x17, 0x26, 0x23, 0x25, 0x17, 0x15, 0x35, + 0x48, 0x5f, 0x40, 0x3e, 0x6e, 0x53, 0x30, 0x14, 0x0c, 0xc7, 0x1c, 0x17, + 0x36, 0x30, 0x17, 0x24, 0x22, 0x25, 0x16, 0x19, 0x39, 0x48, 0x5c, 0x00, + 0xff, 0xff, 0x00, 0x9c, 0xfe, 0x66, 0x03, 0xd1, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x8b, 0xff, 0xf0, 0x04, 0x31, 0x05, 0x98, 0x00, 0x41, 0x00, 0x52, + 0xbc, 0x00, 0x3b, 0x02, 0x11, 0x00, 0x18, 0x00, 0x34, 0x02, 0x0d, 0x40, + 0x0a, 0x1f, 0x18, 0x09, 0x1f, 0x1f, 0x09, 0x18, 0x03, 0x11, 0x28, 0xbb, + 0x02, 0x0b, 0x00, 0x29, 0x00, 0x00, 0x02, 0x17, 0x40, 0x13, 0x11, 0x1f, + 0x29, 0x11, 0x18, 0x3b, 0x03, 0x05, 0x24, 0xf7, 0x2f, 0x54, 0x29, 0x51, + 0x09, 0x0c, 0xfa, 0x05, 0x52, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0x3f, 0xed, + 0x12, 0x17, 0x39, 0x12, 0x39, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x17, + 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x01, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x04, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x04, 0x15, 0x14, 0x1e, 0x04, 0x04, + 0x31, 0x38, 0x64, 0x8e, 0x55, 0x34, 0x63, 0x23, 0x25, 0x5b, 0x2c, 0x29, + 0x37, 0x20, 0x0d, 0x2e, 0x46, 0x51, 0x46, 0x2e, 0x21, 0x31, 0x39, 0x31, + 0x21, 0x19, 0x2c, 0x3c, 0x23, 0x57, 0x5b, 0xf4, 0x42, 0x75, 0x9e, 0x5d, + 0x57, 0x92, 0x6a, 0x3b, 0x20, 0x30, 0x39, 0x30, 0x20, 0x2f, 0x47, 0x53, + 0x47, 0x2f, 0x01, 0x27, 0x48, 0x73, 0x51, 0x2b, 0x08, 0x08, 0xc7, 0x0b, + 0x0e, 0x0f, 0x1a, 0x23, 0x14, 0x29, 0x3f, 0x3a, 0x3c, 0x4d, 0x63, 0x45, + 0x33, 0x4c, 0x3d, 0x32, 0x34, 0x3b, 0x26, 0x1e, 0x2d, 0x1f, 0x0f, 0x6b, + 0x6e, 0xfb, 0xfc, 0x03, 0xfc, 0x6a, 0x9b, 0x66, 0x31, 0x28, 0x4b, 0x6c, + 0x44, 0x3c, 0x56, 0x3e, 0x30, 0x2d, 0x33, 0x23, 0x26, 0x3a, 0x36, 0x3b, + 0x4c, 0x67, 0x00, 0x01, 0x01, 0x06, 0x00, 0x00, 0x04, 0x17, 0x05, 0x9c, + 0x00, 0x15, 0x00, 0x23, 0xb9, 0x00, 0x14, 0x02, 0x13, 0xb4, 0x09, 0x15, + 0x15, 0x51, 0x08, 0xbb, 0x01, 0x08, 0x00, 0x09, 0x00, 0x0e, 0x01, 0x01, + 0xb1, 0x05, 0x54, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x01, 0x2f, 0xc4, + 0xed, 0x31, 0x30, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x23, 0x01, 0x06, 0x39, + 0x7b, 0xc3, 0x89, 0x48, 0x90, 0x39, 0x1a, 0x40, 0x44, 0x43, 0x1d, 0x4f, + 0x6b, 0x40, 0x1d, 0xfc, 0x03, 0xbc, 0x60, 0xae, 0x84, 0x4e, 0x11, 0x0e, + 0xcd, 0x09, 0x0e, 0x0a, 0x06, 0x27, 0x44, 0x5e, 0x37, 0xfc, 0x29, 0x00, + 0xff, 0xff, 0xff, 0x64, 0xff, 0xe9, 0x04, 0x54, 0x05, 0xd1, 0x02, 0x26, + 0x00, 0x96, 0x00, 0x00, 0x00, 0x07, 0x01, 0x44, 0xff, 0x64, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x3b, 0xfe, 0x66, 0x03, 0xd1, 0x05, 0x3d, 0x02, 0x26, + 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd1, 0x05, 0x3d, 0x00, 0x21, 0x00, 0x22, + 0x00, 0x5e, 0xb2, 0x21, 0x1a, 0x1e, 0xb8, 0x02, 0x11, 0x40, 0x2d, 0x13, + 0x17, 0x10, 0x13, 0x15, 0x11, 0x13, 0x20, 0x06, 0x1c, 0x1c, 0x06, 0x20, + 0x13, 0x11, 0x15, 0x06, 0x23, 0x24, 0x1d, 0x14, 0xfa, 0x17, 0x1a, 0x1a, + 0x1f, 0x6f, 0x19, 0x01, 0x19, 0x22, 0x13, 0x1f, 0xfa, 0x21, 0x11, 0x11, + 0x0a, 0x22, 0x4f, 0x06, 0x03, 0xff, 0x0a, 0x52, 0x00, 0x3f, 0xfd, 0xc6, + 0x3f, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x10, 0xc4, 0x5d, 0x11, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x11, 0x33, 0x33, 0x10, 0xed, 0x32, 0x32, 0x31, 0x30, + 0x01, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x35, 0x23, 0x35, 0x33, 0x35, 0x21, 0x35, 0x21, 0x11, + 0x37, 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x01, 0x02, 0x46, + 0x50, 0x5e, 0x3c, 0x72, 0x2f, 0x42, 0x86, 0x3c, 0x64, 0x91, 0x5f, 0x2d, + 0xe8, 0xe8, 0xfe, 0xef, 0x01, 0x11, 0xfa, 0x01, 0x8b, 0xfe, 0x75, 0x01, + 0x4d, 0xfe, 0xb3, 0xfd, 0xba, 0x01, 0x5c, 0x57, 0x59, 0x14, 0x0d, 0xc3, + 0x0f, 0x12, 0x2a, 0x56, 0x85, 0x5c, 0x65, 0xbe, 0xcd, 0xbe, 0x01, 0x04, + 0x41, 0xfe, 0xbb, 0xbe, 0xcd, 0xbe, 0x02, 0x49, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x85, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x99, + 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x96, 0x02, 0x26, + 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x62, 0x02, 0x26, 0x00, 0x97, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x85, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xdb, 0x06, 0x10, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x9e, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x01, 0x50, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x89, 0xfe, 0x6a, 0x04, 0x02, 0x03, 0xf8, + 0x00, 0x2f, 0x00, 0x48, 0xb9, 0x00, 0x08, 0x01, 0xaf, 0xb2, 0x29, 0x2f, + 0x23, 0xb8, 0x02, 0x0b, 0xb2, 0x0e, 0x21, 0x1b, 0xb8, 0x02, 0x0b, 0x40, + 0x0c, 0x18, 0x29, 0x03, 0x0e, 0x23, 0x24, 0x51, 0x23, 0x4f, 0x19, 0x4f, + 0x1e, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x13, 0x52, 0x0d, 0x51, 0x2f, 0x2c, + 0xc7, 0x03, 0x57, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0x3f, 0xed, 0x3f, 0x3f, + 0x3f, 0x12, 0x39, 0x12, 0x39, 0x01, 0x2f, 0xed, 0xd4, 0x32, 0xfd, 0xd6, + 0xd6, 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, + 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x04, 0x02, 0x20, + 0x50, 0x1f, 0x40, 0x58, 0x36, 0x18, 0x0b, 0x1c, 0x2f, 0x25, 0x06, 0x20, + 0x42, 0x4d, 0x5b, 0x37, 0x4e, 0x75, 0x4e, 0x27, 0xf4, 0x3e, 0x3f, 0x3d, + 0x71, 0x3f, 0xf4, 0x26, 0x2c, 0x18, 0x07, 0x21, 0x2d, 0x10, 0x2a, 0x10, + 0xfe, 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, 0x37, 0x3b, + 0x21, 0x96, 0x27, 0x40, 0x2d, 0x19, 0x33, 0x5e, 0x83, 0x51, 0x02, 0xaa, + 0xfd, 0x6a, 0x53, 0x55, 0x65, 0x56, 0x02, 0x83, 0xfc, 0x08, 0x26, 0x37, + 0x2a, 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x5c, 0x05, 0x85, 0x02, 0x26, 0x00, 0x99, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x5c, 0x05, 0x85, 0x02, 0x26, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5c, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5c, 0x05, 0x96, + 0x02, 0x26, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, 0x05, 0x85, 0x02, 0x26, 0x00, 0x9b, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x5c, 0x04, 0x52, 0x05, 0x85, 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, + 0x04, 0x52, 0x05, 0x96, 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x08, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd1, 0x05, 0xa8, 0x02, 0x26, + 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x48, 0x00, 0x00, 0x04, 0x25, 0x05, 0x98, 0x00, 0x21, 0x00, 0x4a, + 0xb1, 0x0b, 0x0f, 0xb8, 0x02, 0x0d, 0x40, 0x14, 0x18, 0x14, 0x14, 0x12, + 0x00, 0x0d, 0x23, 0x16, 0x12, 0x22, 0x18, 0x0c, 0xfa, 0x0e, 0x0a, 0x16, + 0x16, 0x1e, 0x12, 0x21, 0xb8, 0x01, 0x01, 0x40, 0x0a, 0x00, 0x05, 0xfd, + 0x1e, 0x54, 0x14, 0x10, 0xfa, 0x12, 0x51, 0x00, 0x3f, 0xed, 0x32, 0x3f, + 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x39, 0x2f, 0x39, 0x33, 0xed, 0x32, 0x01, + 0x10, 0xde, 0xc6, 0x10, 0xde, 0xc6, 0x12, 0x39, 0x2f, 0xc4, 0xfd, 0xc4, + 0x31, 0x30, 0x01, 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x21, + 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x04, 0x25, 0x15, 0x38, + 0x3e, 0x3f, 0x1c, 0x2e, 0x4d, 0x38, 0x1f, 0x01, 0x99, 0xfe, 0x67, 0x01, + 0x2d, 0xfc, 0xce, 0x01, 0x0f, 0xfe, 0xd1, 0x01, 0x2f, 0x3f, 0x73, 0xa2, + 0x64, 0x42, 0x81, 0x33, 0x04, 0xb4, 0x07, 0x0d, 0x09, 0x06, 0x17, 0x32, + 0x4d, 0x37, 0xa4, 0xbe, 0xfe, 0x16, 0xbe, 0xbe, 0x01, 0xea, 0xbe, 0x9a, + 0x6c, 0x9b, 0x63, 0x2e, 0x11, 0x0e, 0x00, 0x01, 0x00, 0x48, 0xff, 0xe9, + 0x04, 0x44, 0x05, 0x98, 0x00, 0x27, 0x00, 0x59, 0xb6, 0x27, 0x27, 0x20, + 0x1e, 0x29, 0x1d, 0x20, 0xb8, 0x02, 0x11, 0x40, 0x0a, 0x14, 0x0a, 0x07, + 0x08, 0x07, 0x08, 0x07, 0x28, 0x29, 0x13, 0xb8, 0x01, 0x01, 0x40, 0x17, + 0x14, 0x17, 0xfd, 0x10, 0x0a, 0x1e, 0xfa, 0x20, 0x1c, 0x10, 0x21, 0x08, + 0x08, 0x03, 0x10, 0x54, 0x00, 0xfd, 0x27, 0x24, 0xfb, 0x03, 0x52, 0x00, + 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x39, 0x12, 0x39, 0x33, + 0xed, 0x32, 0x10, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x01, 0x39, 0x39, 0x2f, + 0x2f, 0x10, 0xc4, 0xcc, 0xfd, 0xc4, 0x10, 0xce, 0x11, 0x39, 0x2f, 0x31, + 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x15, 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x03, 0x71, 0x2d, 0x69, 0x35, 0xa5, 0xad, 0xfe, 0xf4, + 0x01, 0x0c, 0x4a, 0x80, 0xad, 0x64, 0x51, 0x91, 0x33, 0x2c, 0x8b, 0x4e, + 0x2e, 0x57, 0x43, 0x29, 0x01, 0xb8, 0xfe, 0x48, 0x3e, 0x41, 0x26, 0x55, + 0x29, 0x04, 0x0b, 0x10, 0xb0, 0xa4, 0x01, 0x6b, 0xbe, 0x9a, 0x6c, 0x9b, + 0x63, 0x2e, 0x15, 0x0e, 0xc5, 0x0e, 0x19, 0x17, 0x32, 0x4d, 0x37, 0xa4, + 0xbe, 0xfe, 0xac, 0x5e, 0x4e, 0x0f, 0x0e, 0x00, 0x00, 0x02, 0x00, 0x7b, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0xae, 0x00, 0x13, 0x00, 0x27, 0x00, 0x47, + 0xb9, 0x00, 0x1e, 0x02, 0x3d, 0xb2, 0x14, 0x08, 0x0b, 0xb8, 0x02, 0x11, + 0xb5, 0x13, 0x07, 0x07, 0x28, 0x29, 0x23, 0xb8, 0x01, 0x4b, 0x40, 0x15, + 0x0f, 0x19, 0x01, 0xff, 0x19, 0x01, 0x19, 0x0b, 0x06, 0x03, 0x08, 0xfb, + 0x0a, 0x4f, 0x00, 0xfd, 0x13, 0x10, 0xfb, 0x03, 0x52, 0x00, 0x3f, 0xfd, + 0xd6, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x39, 0xde, 0x5d, 0x71, 0xed, 0x11, + 0x12, 0x01, 0x39, 0x2f, 0xc4, 0xfd, 0xc4, 0xd4, 0xed, 0x31, 0x30, 0x25, + 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x03, 0xec, + 0x2d, 0x6a, 0x34, 0xbc, 0xb1, 0xfe, 0xc7, 0x02, 0x33, 0x10, 0x25, 0x3b, + 0x2a, 0x26, 0x55, 0x29, 0xfe, 0xdf, 0x19, 0x2b, 0x3a, 0x22, 0x22, 0x3a, + 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x22, 0x22, 0x3a, 0x2b, 0x19, 0x04, 0x0b, + 0x10, 0xb1, 0xa3, 0x01, 0xfc, 0xbf, 0xfd, 0x5c, 0x2f, 0x41, 0x29, 0x13, + 0x0f, 0x0e, 0x04, 0x49, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, + 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x99, + 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x96, 0x02, 0x26, + 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x62, 0x02, 0x26, 0x01, 0x14, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x7b, 0xfe, 0x6a, + 0x03, 0xfc, 0x05, 0xae, 0x00, 0x2e, 0x00, 0x42, 0x00, 0x56, 0xb9, 0x00, + 0x08, 0x01, 0xaf, 0xb4, 0x28, 0x2e, 0x1f, 0x12, 0x39, 0xb8, 0x02, 0x3d, + 0xb2, 0x2f, 0x14, 0x17, 0xb8, 0x02, 0x11, 0xb4, 0x12, 0x12, 0x43, 0x44, + 0x3e, 0xb8, 0x01, 0x4b, 0x40, 0x17, 0x0f, 0x34, 0x01, 0xff, 0x34, 0x01, + 0x34, 0x14, 0xfb, 0x16, 0x4f, 0x22, 0x22, 0x0e, 0x1f, 0x1c, 0xf9, 0x0e, + 0x52, 0x2b, 0xc7, 0x03, 0x57, 0x00, 0x3f, 0xed, 0x3f, 0xfd, 0xc6, 0x12, + 0x39, 0x2f, 0x3f, 0xed, 0xde, 0x5d, 0x71, 0xed, 0x11, 0x12, 0x01, 0x39, + 0x2f, 0xfd, 0xc4, 0xd4, 0xed, 0x10, 0xd4, 0xd6, 0xd6, 0xed, 0x31, 0x30, + 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x36, 0x37, + 0x36, 0x37, 0x26, 0x27, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x07, 0x06, 0x07, 0x0e, + 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x03, 0xfc, 0x20, 0x50, 0x1f, 0x40, 0x58, 0x36, 0x18, 0x0b, 0x1c, 0x17, + 0x10, 0x16, 0x93, 0x4c, 0x58, 0xfe, 0xc7, 0x02, 0x33, 0x10, 0x25, 0x3b, + 0x2a, 0x26, 0x55, 0x29, 0x0c, 0x0d, 0x25, 0x15, 0x16, 0x18, 0x07, 0x21, + 0x2d, 0x10, 0x2a, 0x10, 0xfe, 0xcf, 0x19, 0x2b, 0x3a, 0x22, 0x22, 0x3a, + 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x22, 0x22, 0x3a, 0x2b, 0x19, 0xfe, 0x7f, + 0x09, 0x0c, 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, 0x37, 0x1e, 0x14, 0x15, + 0x0b, 0x4b, 0x59, 0xa3, 0x01, 0xfc, 0xbf, 0xfd, 0x5c, 0x2f, 0x41, 0x29, + 0x13, 0x0f, 0x0e, 0xc1, 0x03, 0x02, 0x25, 0x1b, 0x1c, 0x2a, 0x22, 0x0f, + 0x1f, 0x1f, 0x05, 0x03, 0x05, 0xfc, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, + 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0x00, 0x01, + 0x00, 0x7b, 0xff, 0xe9, 0x03, 0xec, 0x03, 0xf8, 0x00, 0x13, 0x00, 0x2f, + 0xb1, 0x08, 0x0b, 0xb8, 0x02, 0x11, 0x40, 0x13, 0x13, 0x06, 0x06, 0x14, + 0x15, 0x0b, 0x06, 0x03, 0x08, 0xfb, 0x0a, 0x4f, 0x00, 0xfd, 0x13, 0x10, + 0xfb, 0x03, 0x52, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x39, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, 0xfd, 0xc4, 0x31, 0x30, 0x25, + 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0xec, 0x2d, 0x6a, 0x34, 0xbc, + 0xb1, 0xfe, 0xc7, 0x02, 0x33, 0x10, 0x25, 0x3b, 0x2a, 0x26, 0x55, 0x29, + 0x04, 0x0b, 0x10, 0xb1, 0xa3, 0x01, 0xfc, 0xbf, 0xfd, 0x5c, 0x2f, 0x41, + 0x29, 0x13, 0x0f, 0x0e, 0x00, 0x02, 0x00, 0x79, 0xff, 0xe9, 0x03, 0xee, + 0x05, 0xae, 0x00, 0x13, 0x00, 0x33, 0x00, 0x4f, 0xb9, 0x00, 0x0a, 0x02, + 0x3d, 0xb2, 0x00, 0x23, 0x2b, 0xb8, 0x02, 0x11, 0x40, 0x10, 0x33, 0x1a, + 0x1a, 0x34, 0x35, 0x24, 0xfd, 0x23, 0x20, 0xfa, 0x27, 0x1b, 0x2b, 0x27, + 0x17, 0x0f, 0xb8, 0x01, 0x4b, 0x40, 0x0f, 0x05, 0x40, 0x18, 0x1f, 0x48, + 0x05, 0x27, 0x50, 0x14, 0xfd, 0x33, 0x30, 0xfb, 0x17, 0x52, 0x00, 0x3f, + 0xfd, 0xd6, 0xed, 0x3f, 0xde, 0x2b, 0xed, 0x11, 0x12, 0x39, 0x39, 0x10, + 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, 0xfd, 0xc4, 0xd4, + 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x06, 0x06, 0x23, 0x22, + 0x26, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, + 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x02, 0xd3, 0x19, 0x2b, 0x3a, 0x22, 0x22, 0x3a, 0x2b, 0x19, 0x19, + 0x2b, 0x3a, 0x22, 0x22, 0x3a, 0x2b, 0x19, 0x01, 0x1b, 0x2d, 0x6a, 0x34, + 0xbc, 0xb1, 0x10, 0x25, 0x3a, 0x2a, 0x27, 0x55, 0x28, 0x2d, 0x69, 0x35, + 0xbb, 0xb1, 0x10, 0x25, 0x3b, 0x2a, 0x26, 0x55, 0x29, 0x05, 0x0e, 0x21, + 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, + 0x2c, 0x3a, 0xfa, 0xd5, 0x0b, 0x10, 0xb1, 0xa3, 0x01, 0x67, 0x2f, 0x41, + 0x29, 0x13, 0x0f, 0x0e, 0xc1, 0x0b, 0x0f, 0xb1, 0xa3, 0xfe, 0x9a, 0x2f, + 0x41, 0x29, 0x13, 0x0f, 0x0e, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xee, 0x05, 0x85, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x08, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x85, + 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x99, 0x02, 0x26, + 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x96, 0x02, 0x26, 0x01, 0x1e, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xee, 0x05, 0x62, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xee, 0x05, 0x85, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x79, 0xfe, 0x6a, 0x03, 0xfc, + 0x05, 0xae, 0x00, 0x3a, 0x00, 0x4e, 0x00, 0x64, 0xb9, 0x00, 0x08, 0x01, + 0xaf, 0xb4, 0x34, 0x3a, 0x2b, 0x12, 0x45, 0xb8, 0x02, 0x3d, 0xb2, 0x3b, + 0x1b, 0x23, 0xb8, 0x02, 0x11, 0xb4, 0x12, 0x12, 0x4f, 0x50, 0x4a, 0xb8, + 0x01, 0x4b, 0x40, 0x1f, 0x40, 0x40, 0x18, 0x1f, 0x48, 0x40, 0x1f, 0x1c, + 0xfd, 0x1b, 0x18, 0xfa, 0x13, 0x23, 0x1f, 0x50, 0x2e, 0x2e, 0x0e, 0x28, + 0x2c, 0xfd, 0x2b, 0x28, 0xf9, 0x0e, 0x52, 0x37, 0xc7, 0x03, 0x57, 0x00, + 0x3f, 0xed, 0x3f, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x39, 0x2f, 0x3f, 0x39, + 0x39, 0xfd, 0xd6, 0xed, 0x10, 0xde, 0x2b, 0xed, 0x11, 0x12, 0x01, 0x39, + 0x2f, 0xfd, 0xc4, 0xd4, 0xed, 0x10, 0xd4, 0xd6, 0xd6, 0xed, 0x31, 0x30, + 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x36, 0x37, + 0x36, 0x37, 0x26, 0x27, 0x26, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x07, 0x06, 0x07, 0x0e, 0x02, + 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x03, + 0xfc, 0x20, 0x50, 0x1f, 0x40, 0x58, 0x36, 0x18, 0x0b, 0x1c, 0x17, 0x10, + 0x16, 0x92, 0x4b, 0x58, 0x10, 0x25, 0x3a, 0x2a, 0x27, 0x55, 0x28, 0x2d, + 0x69, 0x35, 0xbb, 0xb1, 0x10, 0x25, 0x3b, 0x2a, 0x26, 0x55, 0x29, 0x0d, + 0x0e, 0x25, 0x15, 0x16, 0x18, 0x07, 0x21, 0x2d, 0x10, 0x2a, 0x10, 0xfe, + 0xd7, 0x19, 0x2b, 0x3a, 0x22, 0x22, 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, + 0x22, 0x22, 0x3a, 0x2b, 0x19, 0xfe, 0x7f, 0x09, 0x0c, 0x1c, 0x30, 0x41, + 0x26, 0x1b, 0x35, 0x37, 0x1e, 0x14, 0x15, 0x0c, 0x4a, 0x59, 0xa3, 0x01, + 0x67, 0x2f, 0x41, 0x29, 0x13, 0x0f, 0x0e, 0xc1, 0x0b, 0x0f, 0xb1, 0xa3, + 0xfe, 0x9a, 0x2f, 0x41, 0x29, 0x13, 0x0f, 0x0e, 0xc1, 0x03, 0x03, 0x24, + 0x1b, 0x1c, 0x2a, 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x05, 0xfc, 0x21, + 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, + 0x2c, 0x3a, 0x00, 0x01, 0x00, 0x79, 0xff, 0xe9, 0x03, 0xee, 0x04, 0x0e, + 0x00, 0x1f, 0x00, 0x34, 0xb1, 0x0f, 0x17, 0xb8, 0x02, 0x11, 0x40, 0x16, + 0x1f, 0x06, 0x06, 0x20, 0x21, 0x10, 0xfd, 0x0f, 0x0c, 0xfa, 0x07, 0x17, + 0x03, 0x13, 0x50, 0x00, 0xfd, 0x1f, 0x1c, 0xfb, 0x03, 0x52, 0x00, 0x3f, + 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, 0x39, 0xfd, 0xd6, 0xed, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0xc4, 0xfd, 0xc4, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x37, 0x03, 0xee, 0x2d, 0x6a, 0x34, 0xbc, 0xb1, 0x10, 0x25, 0x3a, + 0x2a, 0x27, 0x55, 0x28, 0x2d, 0x69, 0x35, 0xbb, 0xb1, 0x10, 0x25, 0x3b, + 0x2a, 0x26, 0x55, 0x29, 0x04, 0x0b, 0x10, 0xb1, 0xa3, 0x01, 0x67, 0x2f, + 0x41, 0x29, 0x13, 0x0f, 0x0e, 0xc1, 0x0b, 0x0f, 0xb1, 0xa3, 0xfe, 0x9a, + 0x2f, 0x41, 0x29, 0x13, 0x0f, 0x0e, 0x00, 0x02, 0x00, 0x37, 0xfe, 0x5c, + 0x03, 0x87, 0x05, 0xae, 0x00, 0x23, 0x00, 0x37, 0x00, 0x55, 0xb4, 0x1c, + 0x1c, 0x0b, 0x13, 0x2e, 0xbb, 0x02, 0x3c, 0x00, 0x24, 0x00, 0x00, 0x02, + 0x0f, 0xb5, 0x13, 0x0b, 0x0b, 0x38, 0x39, 0x33, 0xb8, 0x01, 0x4b, 0x40, + 0x12, 0x29, 0x40, 0x18, 0x1f, 0x48, 0x29, 0x20, 0x1d, 0xfd, 0x1c, 0x19, + 0xfa, 0x14, 0x13, 0x05, 0x20, 0x50, 0x0a, 0xb8, 0x01, 0x3e, 0xb4, 0x0b, + 0x0e, 0xff, 0x05, 0x56, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, + 0x39, 0xfd, 0xd6, 0xed, 0x10, 0xde, 0x2b, 0xed, 0x11, 0x12, 0x01, 0x39, + 0x2f, 0xd6, 0xfd, 0xd4, 0xed, 0x11, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x25, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x13, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x03, + 0x73, 0x4a, 0x85, 0xb8, 0x6f, 0x2c, 0x5c, 0x56, 0x4c, 0x1c, 0x3f, 0xa6, + 0x67, 0x37, 0x5c, 0x41, 0x24, 0x19, 0x37, 0x58, 0x40, 0x3a, 0x81, 0x3c, + 0x39, 0x89, 0x42, 0xf1, 0xe2, 0x14, 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, + 0x2b, 0x18, 0x18, 0x2b, 0x3a, 0x22, 0x22, 0x3b, 0x2b, 0x18, 0x33, 0x7b, + 0xb1, 0x74, 0x37, 0x08, 0x0f, 0x14, 0x0c, 0xe0, 0x22, 0x32, 0x21, 0x43, + 0x64, 0x44, 0x02, 0x54, 0x3d, 0x50, 0x30, 0x14, 0x0f, 0x0e, 0xc1, 0x0b, + 0x0f, 0xb9, 0xbb, 0x02, 0x74, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, + 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0x01, 0x00, 0x37, + 0xfe, 0x5c, 0x03, 0x73, 0x04, 0x0e, 0x00, 0x23, 0x00, 0x3b, 0xb3, 0x1c, + 0x1c, 0x0b, 0x00, 0xb8, 0x02, 0x0f, 0x40, 0x10, 0x13, 0x0b, 0x0b, 0x24, + 0x25, 0x1d, 0xfd, 0x1c, 0x19, 0xfa, 0x14, 0x13, 0x05, 0x20, 0x50, 0x0a, + 0xb8, 0x01, 0x3e, 0xb4, 0x0b, 0x0e, 0xff, 0x05, 0x56, 0x00, 0x3f, 0xfd, + 0xd6, 0xed, 0x3f, 0x12, 0x39, 0x39, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x01, + 0x39, 0x2f, 0xd6, 0xed, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x25, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, + 0x36, 0x33, 0x32, 0x16, 0x15, 0x03, 0x73, 0x4a, 0x85, 0xb8, 0x6f, 0x2c, + 0x5c, 0x56, 0x4c, 0x1c, 0x3f, 0xa6, 0x67, 0x37, 0x5c, 0x41, 0x24, 0x19, + 0x37, 0x58, 0x40, 0x3a, 0x81, 0x3c, 0x39, 0x89, 0x42, 0xf1, 0xe2, 0x33, + 0x7b, 0xb1, 0x74, 0x37, 0x08, 0x0f, 0x14, 0x0c, 0xe0, 0x22, 0x32, 0x21, + 0x43, 0x64, 0x44, 0x02, 0x54, 0x3d, 0x50, 0x30, 0x14, 0x0f, 0x0e, 0xc1, + 0x0b, 0x0f, 0xb9, 0xbb, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x03, 0x87, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x20, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x17, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x85, + 0x00, 0x15, 0x00, 0x28, 0xb1, 0x0a, 0x02, 0xb8, 0x02, 0x0c, 0x40, 0x0f, + 0x15, 0x15, 0x16, 0x17, 0x0b, 0xfa, 0x0a, 0x07, 0xff, 0x02, 0x01, 0x10, + 0x52, 0x01, 0x53, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0xfd, 0xd6, 0xed, 0x11, + 0x12, 0x01, 0x39, 0x2f, 0xed, 0xc4, 0x31, 0x30, 0x01, 0x33, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x01, 0x17, 0xf5, 0x1d, 0x37, 0x50, 0x33, 0x49, 0x8d, 0x35, + 0x16, 0x43, 0x50, 0x58, 0x2a, 0x72, 0xa2, 0x68, 0x30, 0x05, 0x85, 0xfc, + 0x13, 0x35, 0x56, 0x3f, 0x22, 0x1d, 0x12, 0xbe, 0x09, 0x13, 0x0f, 0x09, + 0x40, 0x70, 0x98, 0x58, 0xff, 0xff, 0x00, 0x52, 0xff, 0xe9, 0x04, 0x33, + 0x06, 0xb0, 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, 0x01, 0x06, 0x01, 0x3f, + 0x52, 0x29, 0x00, 0x2d, 0xb9, 0x00, 0x19, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, + 0x48, 0x18, 0xb8, 0xff, 0xc0, 0xb4, 0x0e, 0x0e, 0x48, 0x01, 0x1a, 0xb8, + 0xff, 0xc0, 0xb3, 0x0a, 0x0c, 0x48, 0x1a, 0xb8, 0xff, 0xc0, 0xb5, 0x08, + 0x08, 0x48, 0x1a, 0x1a, 0x53, 0x00, 0x3f, 0x12, 0x2b, 0x2b, 0x34, 0x2b, + 0x2b, 0x00, 0xff, 0xff, 0xff, 0x07, 0xff, 0xe9, 0x03, 0xf7, 0x05, 0xd1, + 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, 0x00, 0x07, 0x01, 0x44, 0xff, 0x07, + 0x00, 0x00, 0xff, 0xff, 0x01, 0x17, 0xfe, 0x66, 0x03, 0xee, 0x05, 0x85, + 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x42, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x85, 0x00, 0x1d, + 0x00, 0x61, 0xb1, 0x04, 0x08, 0xb8, 0x02, 0x0c, 0x40, 0x16, 0x10, 0x01, + 0x1b, 0x1d, 0x1b, 0x06, 0x06, 0x1b, 0x1d, 0x03, 0x1e, 0x1f, 0x11, 0xfa, + 0x10, 0x0d, 0xff, 0x16, 0x01, 0x04, 0x05, 0x00, 0xb8, 0x01, 0x39, 0xb4, + 0x1d, 0x1c, 0x07, 0x1d, 0x06, 0xb8, 0x01, 0x39, 0x40, 0x0d, 0x05, 0x1b, + 0x08, 0x16, 0x1d, 0x05, 0x1d, 0x05, 0x03, 0x16, 0x52, 0x03, 0x53, 0x00, + 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x10, 0xed, + 0x11, 0x39, 0x39, 0x10, 0xed, 0x11, 0x39, 0x39, 0x10, 0xfd, 0xd6, 0xed, + 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xc4, 0xc4, 0xfd, + 0xc4, 0x31, 0x30, 0x13, 0x37, 0x11, 0x33, 0x11, 0x25, 0x15, 0x05, 0x11, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x35, 0x07, 0x42, 0xd5, 0xf5, 0x01, 0x40, 0xfe, 0xc0, + 0x1d, 0x37, 0x50, 0x33, 0x49, 0x8d, 0x35, 0x16, 0x43, 0x50, 0x58, 0x2a, + 0x72, 0xa2, 0x68, 0x30, 0xd5, 0x02, 0xaa, 0x6a, 0x02, 0x71, 0xfe, 0x0a, + 0xa2, 0xdb, 0xa2, 0xfe, 0xe4, 0x35, 0x56, 0x3f, 0x22, 0x1d, 0x12, 0xbe, + 0x09, 0x13, 0x0f, 0x09, 0x40, 0x70, 0x98, 0x58, 0xb0, 0x6a, 0xff, 0xff, + 0x00, 0xc8, 0xff, 0xe9, 0x04, 0x7e, 0x05, 0x85, 0x02, 0x26, 0x01, 0x22, + 0xb1, 0x00, 0x00, 0x07, 0x01, 0x7d, 0x01, 0x86, 0x00, 0x0a, 0x00, 0x01, + 0x00, 0x79, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x9a, 0x00, 0x1f, 0x00, 0x34, + 0xb1, 0x0f, 0x17, 0xb8, 0x02, 0x11, 0x40, 0x16, 0x1f, 0x06, 0x06, 0x20, + 0x21, 0x10, 0xfd, 0x0f, 0x0c, 0xfb, 0x07, 0x17, 0x03, 0x13, 0x54, 0x00, + 0xfd, 0x1f, 0x1c, 0xfb, 0x03, 0x52, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, + 0x12, 0x39, 0x39, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, + 0xfd, 0xc4, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0xee, + 0x2d, 0x6a, 0x34, 0xbc, 0xb1, 0x10, 0x25, 0x3a, 0x2a, 0x27, 0x55, 0x28, + 0x2d, 0x69, 0x35, 0xbb, 0xb1, 0x10, 0x25, 0x3b, 0x2a, 0x26, 0x55, 0x29, + 0x04, 0x0b, 0x10, 0xb1, 0xa3, 0x02, 0xf2, 0x2f, 0x41, 0x29, 0x13, 0x0f, + 0x0e, 0xc1, 0x0b, 0x10, 0xb1, 0xa3, 0xfd, 0x0e, 0x2f, 0x41, 0x29, 0x13, + 0x0f, 0x0e, 0xff, 0xff, 0x00, 0x52, 0xff, 0xe9, 0x04, 0x33, 0x06, 0xb0, + 0x02, 0x26, 0x01, 0x28, 0x00, 0x00, 0x01, 0x06, 0x01, 0x3f, 0x52, 0x29, + 0x00, 0x2d, 0xb9, 0x00, 0x23, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, 0x22, + 0xb8, 0xff, 0xc0, 0xb4, 0x0e, 0x0e, 0x48, 0x01, 0x24, 0xb8, 0xff, 0xc0, + 0xb3, 0x0a, 0x0c, 0x48, 0x24, 0xb8, 0xff, 0xc0, 0xb5, 0x08, 0x08, 0x48, + 0x24, 0x24, 0x53, 0x00, 0x3f, 0x12, 0x2b, 0x2b, 0x34, 0x2b, 0x2b, 0x00, + 0xff, 0xff, 0xff, 0x9d, 0xff, 0xe9, 0x04, 0x8d, 0x05, 0xd1, 0x02, 0x26, + 0x01, 0x28, 0x00, 0x00, 0x00, 0x06, 0x01, 0x44, 0x9d, 0x00, 0xff, 0xff, + 0x00, 0x79, 0xfe, 0x66, 0x03, 0xee, 0x05, 0x9a, 0x02, 0x26, 0x01, 0x28, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x79, + 0xff, 0xe9, 0x03, 0xee, 0x05, 0x9a, 0x00, 0x27, 0x00, 0x72, 0x40, 0x0b, + 0x1d, 0x1d, 0x20, 0x27, 0x06, 0x08, 0x08, 0x06, 0x13, 0x1b, 0x20, 0xb8, + 0x02, 0x11, 0x40, 0x0f, 0x0a, 0x06, 0x06, 0x28, 0x29, 0x14, 0xfd, 0x13, + 0x10, 0xfb, 0x17, 0x07, 0x1e, 0x08, 0x1d, 0xb8, 0x01, 0x39, 0xb4, 0x1c, + 0x1b, 0x0a, 0x1c, 0x09, 0xb8, 0x01, 0x39, 0x40, 0x13, 0x08, 0x0b, 0x1c, + 0x20, 0x08, 0x1c, 0x08, 0x1c, 0x08, 0x03, 0x17, 0x54, 0x00, 0xfd, 0x27, + 0x24, 0xfb, 0x03, 0x52, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x11, 0x39, 0x12, 0x39, 0x10, 0xed, 0x11, 0x39, 0x39, + 0x10, 0xed, 0x11, 0x39, 0x39, 0x10, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x01, + 0x39, 0x2f, 0xc4, 0xfd, 0xc4, 0xc4, 0x11, 0x39, 0x2f, 0x10, 0xc4, 0x11, + 0x39, 0x2f, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, + 0x05, 0x35, 0x25, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x15, 0x25, 0x15, 0x05, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0xee, 0x2d, 0x6a, 0x34, 0xbc, + 0xb1, 0xfe, 0xf8, 0x01, 0x08, 0x10, 0x25, 0x3a, 0x2a, 0x27, 0x55, 0x28, + 0x2d, 0x69, 0x35, 0xbb, 0xb1, 0x01, 0x08, 0xfe, 0xf8, 0x10, 0x25, 0x3b, + 0x2a, 0x26, 0x55, 0x29, 0x04, 0x0b, 0x10, 0xb1, 0xa3, 0x01, 0x17, 0x85, + 0xdb, 0x85, 0x01, 0x00, 0x2f, 0x41, 0x29, 0x13, 0x0f, 0x0e, 0xc1, 0x0b, + 0x10, 0xb1, 0xa3, 0x99, 0x84, 0xdb, 0x84, 0xfe, 0x82, 0x2f, 0x41, 0x29, + 0x13, 0x0f, 0x0e, 0x00, 0xff, 0xff, 0xff, 0xf8, 0xff, 0xe9, 0x04, 0xd8, + 0x05, 0x9a, 0x02, 0x27, 0x01, 0x28, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x07, + 0x01, 0x7d, 0x01, 0xe0, 0x00, 0x32, 0x00, 0x01, 0x00, 0x54, 0x00, 0x00, + 0x04, 0x14, 0x04, 0x0e, 0x00, 0x19, 0x00, 0x54, 0xb7, 0x0a, 0x0a, 0x08, + 0x19, 0x10, 0x0d, 0x13, 0x08, 0xb8, 0x02, 0x11, 0xb7, 0x0e, 0x0d, 0x0e, + 0x0d, 0x0e, 0x1a, 0x1b, 0x08, 0xb8, 0x01, 0x3d, 0xb3, 0x13, 0xcb, 0x16, + 0x19, 0xbb, 0x01, 0x37, 0x00, 0x00, 0x00, 0x03, 0x01, 0x07, 0x40, 0x0b, + 0x16, 0x50, 0x10, 0xfb, 0x12, 0x4f, 0x0e, 0x0a, 0xfa, 0x0c, 0x51, 0x00, + 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x3f, 0xfd, 0xd6, 0xed, 0x7c, 0x10, 0xfd, + 0x18, 0xed, 0x11, 0x12, 0x01, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x32, + 0x10, 0xc6, 0xc4, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x11, 0x21, 0x15, 0x21, 0x35, 0x33, 0x11, 0x23, + 0x35, 0x21, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x04, 0x14, 0x2e, + 0x5a, 0x24, 0x39, 0x62, 0x55, 0x4c, 0x24, 0x01, 0x0f, 0xfd, 0x3f, 0xb8, + 0xba, 0x01, 0x93, 0x07, 0x4b, 0xbf, 0x87, 0x23, 0x4d, 0x25, 0x03, 0x27, + 0x0c, 0x0f, 0x1d, 0x33, 0x46, 0x29, 0xfe, 0x3b, 0xbe, 0xbe, 0x02, 0x7b, + 0xbf, 0x96, 0x53, 0x59, 0x06, 0x08, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x14, 0x05, 0x85, 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x54, 0xfe, 0x66, 0x04, 0x14, 0x04, 0x0e, + 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x07, 0x01, 0x56, 0xff, 0x6b, + 0x00, 0x00, 0x00, 0x01, 0x00, 0xa0, 0x00, 0x00, 0x03, 0xfe, 0x04, 0x0e, + 0x00, 0x17, 0x00, 0x3b, 0xb1, 0x0f, 0x0a, 0xb8, 0x02, 0x11, 0xb5, 0x17, + 0x0c, 0x0c, 0x18, 0x19, 0x0a, 0xb8, 0x01, 0x3d, 0xb3, 0x0f, 0xcb, 0x12, + 0x17, 0xbb, 0x01, 0x3b, 0x00, 0x00, 0x00, 0x05, 0x01, 0x07, 0xb5, 0x12, + 0x50, 0x0e, 0x4f, 0x0c, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, + 0x7c, 0x10, 0xfd, 0x18, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, 0xed, + 0x32, 0x31, 0x30, 0x01, 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, + 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x03, + 0xfe, 0x1f, 0x44, 0x45, 0x41, 0x1b, 0x3a, 0x61, 0x55, 0x4c, 0x24, 0xfa, + 0xd9, 0x06, 0x4b, 0xbf, 0x87, 0x1e, 0x41, 0x3f, 0x3a, 0x16, 0x03, 0x0a, + 0x0c, 0x15, 0x0f, 0x08, 0x1d, 0x33, 0x46, 0x29, 0xfd, 0x7d, 0x03, 0xf8, + 0x96, 0x53, 0x59, 0x06, 0x0a, 0x0e, 0x09, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xfe, 0x05, 0x85, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0xa0, 0xfe, 0x66, 0x03, 0xfe, + 0x04, 0x0e, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, 0xff, 0xe9, 0x04, 0x14, 0x04, 0x0e, + 0x00, 0x2d, 0x00, 0x4c, 0xb4, 0x2d, 0x2d, 0x1c, 0x14, 0x25, 0xb8, 0x02, + 0x11, 0xb7, 0x1c, 0x0c, 0x06, 0x06, 0x2e, 0x2f, 0x0d, 0x1b, 0xbb, 0x01, + 0x37, 0x00, 0x1c, 0x00, 0x1f, 0x01, 0x07, 0x40, 0x12, 0x25, 0x07, 0x14, + 0x03, 0x03, 0x18, 0x50, 0x0a, 0xfa, 0x11, 0x50, 0x00, 0xfd, 0x2d, 0x2a, + 0xfb, 0x03, 0x52, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0x3f, 0x12, + 0x17, 0x39, 0xfd, 0xd6, 0xed, 0x01, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x39, + 0xc4, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, + 0x36, 0x33, 0x32, 0x16, 0x17, 0x37, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x03, 0x46, 0x2d, 0x69, 0x35, 0xbc, 0xb1, 0x40, + 0x45, 0x14, 0x1d, 0x06, 0x0c, 0x2b, 0x13, 0x85, 0xa5, 0x23, 0x05, 0x4b, + 0xbf, 0x87, 0x23, 0x4d, 0x25, 0x2e, 0x5a, 0x24, 0x39, 0x62, 0x55, 0x4c, + 0x24, 0x10, 0x25, 0x3b, 0x2a, 0x26, 0x55, 0x29, 0x04, 0x0b, 0x10, 0xb1, + 0xa3, 0x01, 0x67, 0x5e, 0x4e, 0x02, 0x02, 0xbe, 0x02, 0x02, 0x59, 0x57, + 0x04, 0x53, 0x59, 0x06, 0x08, 0xd9, 0x0c, 0x0f, 0x1d, 0x33, 0x46, 0x29, + 0xfe, 0xd1, 0x2f, 0x41, 0x29, 0x13, 0x0f, 0x0e, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x14, 0x05, 0x85, 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x14, 0x05, 0x85, 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, 0xfe, 0x66, 0x04, 0x14, + 0x04, 0x0e, 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, 0x00, 0x06, 0x01, 0x56, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x1f, 0xff, 0xe9, 0x04, 0x83, 0x05, 0x7d, + 0x00, 0x2a, 0x00, 0x36, 0x00, 0x49, 0x00, 0x7a, 0xb6, 0x03, 0x27, 0x26, + 0x44, 0x04, 0x04, 0x41, 0xb8, 0x01, 0xda, 0x40, 0x09, 0x17, 0x06, 0x33, + 0x34, 0x13, 0x04, 0x17, 0x05, 0x21, 0xb8, 0x01, 0xda, 0xb7, 0x37, 0x17, + 0x37, 0x17, 0x37, 0x0e, 0x2a, 0x05, 0xbe, 0x02, 0x2c, 0x00, 0x04, 0x00, + 0x00, 0x01, 0xd7, 0x00, 0x2a, 0x00, 0x2b, 0x02, 0x08, 0x40, 0x15, 0x0e, + 0x06, 0x33, 0x03, 0x27, 0x04, 0x05, 0x26, 0x13, 0x45, 0x03, 0x1c, 0x34, + 0x00, 0x00, 0x09, 0x3c, 0xf8, 0x1c, 0x53, 0x30, 0xb8, 0x01, 0x01, 0xb3, + 0x09, 0x52, 0x05, 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x39, 0x12, 0x17, 0x39, 0x12, 0x17, 0x39, 0x01, 0x2f, 0xed, 0xd4, + 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x11, + 0x12, 0x17, 0x39, 0x10, 0xed, 0x11, 0x17, 0x39, 0x31, 0x30, 0x01, 0x14, + 0x06, 0x07, 0x13, 0x21, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x27, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x13, 0x36, 0x36, 0x27, + 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x01, 0x06, 0x06, 0x01, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x17, + 0x3e, 0x03, 0x04, 0x14, 0x34, 0x32, 0xd5, 0xfe, 0xdf, 0x47, 0x44, 0xa6, + 0x5e, 0x68, 0xa2, 0x70, 0x3a, 0x26, 0x40, 0x54, 0x2f, 0x14, 0x38, 0x3d, + 0x32, 0x61, 0x8e, 0x5c, 0x57, 0x88, 0x5e, 0x31, 0x34, 0x55, 0x6d, 0x39, + 0xdc, 0x0e, 0x0e, 0x02, 0xfd, 0xdf, 0x1e, 0x37, 0x4e, 0x30, 0x35, 0x5f, + 0x27, 0xfe, 0xe1, 0x32, 0x3d, 0x01, 0x73, 0x13, 0x24, 0x34, 0x22, 0x22, + 0x36, 0x25, 0x13, 0x34, 0x2d, 0x02, 0x26, 0x44, 0x33, 0x1d, 0x02, 0xaa, + 0x7f, 0xd4, 0x55, 0xfe, 0xfe, 0x56, 0x36, 0x37, 0x35, 0x62, 0x8b, 0x55, + 0x48, 0x74, 0x5d, 0x49, 0x1f, 0x1b, 0x45, 0x91, 0x45, 0x46, 0x81, 0x63, + 0x3c, 0x31, 0x53, 0x70, 0x3f, 0x4e, 0x75, 0x59, 0x45, 0x20, 0xfe, 0xf1, + 0x33, 0x78, 0x45, 0xfe, 0xcb, 0x2c, 0x49, 0x35, 0x1d, 0x20, 0x22, 0x01, + 0x60, 0x2a, 0x67, 0x02, 0x76, 0x1a, 0x33, 0x27, 0x18, 0x19, 0x2a, 0x38, + 0x1f, 0x36, 0x61, 0x38, 0x04, 0x17, 0x2f, 0x36, 0x3f, 0x00, 0x00, 0x02, + 0x00, 0x21, 0xff, 0xe9, 0x04, 0x0c, 0x05, 0x7f, 0x00, 0x10, 0x00, 0x3a, + 0x00, 0x56, 0xb3, 0x2f, 0x2f, 0x10, 0x37, 0xb8, 0x01, 0xe3, 0xb5, 0x23, + 0x10, 0x26, 0x26, 0x1e, 0x14, 0xb8, 0x01, 0xe2, 0xb2, 0x11, 0x10, 0x05, + 0xb8, 0x02, 0x13, 0x40, 0x13, 0x1e, 0x12, 0x13, 0x23, 0x3a, 0xfb, 0x00, + 0x13, 0x00, 0x13, 0x00, 0x2b, 0x3b, 0x2f, 0x32, 0xfd, 0x2b, 0x53, 0x0a, + 0xb8, 0x01, 0x01, 0xb1, 0x19, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xfd, 0xc6, + 0x11, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x39, 0x10, 0xcd, 0x01, + 0x2f, 0xed, 0xd4, 0xc4, 0xed, 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x11, + 0x39, 0x2f, 0x31, 0x30, 0x01, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x3e, 0x02, 0x3d, 0x03, 0x37, 0x11, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x16, 0x33, 0x02, 0x3f, 0x45, 0x6c, 0x4a, 0x27, 0x1f, + 0x3f, 0x5e, 0x40, 0x46, 0x62, 0x3f, 0x1d, 0xef, 0x3f, 0x80, 0xc3, 0x84, + 0x73, 0xb4, 0x7d, 0x41, 0x25, 0x43, 0x5c, 0x38, 0x5a, 0x65, 0x3e, 0x75, + 0xaa, 0x6c, 0x2e, 0x5f, 0x2b, 0x31, 0x60, 0x31, 0x38, 0x4f, 0x32, 0x16, + 0x7c, 0x73, 0x02, 0x89, 0x24, 0x42, 0x5c, 0x38, 0x31, 0x53, 0x3c, 0x21, + 0x28, 0x48, 0x62, 0x3a, 0xcf, 0xbf, 0xaa, 0x3d, 0xfd, 0x8b, 0x5d, 0xa9, + 0x80, 0x4b, 0x3a, 0x6a, 0x97, 0x5d, 0x4b, 0x7b, 0x5d, 0x3e, 0x0c, 0x25, + 0x8a, 0x67, 0x57, 0x8c, 0x63, 0x35, 0x07, 0x09, 0xc1, 0x09, 0x07, 0x1f, + 0x32, 0x40, 0x21, 0x5d, 0x67, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x02, 0xac, 0x05, 0x85, 0x00, 0x03, 0x00, 0x04, 0x00, 0x27, 0xbc, 0x00, + 0x01, 0x02, 0x0b, 0x00, 0x02, 0x00, 0x00, 0x02, 0x42, 0x40, 0x0c, 0x40, + 0x03, 0x03, 0x40, 0x0e, 0x13, 0x48, 0x03, 0x80, 0x02, 0x04, 0x4f, 0x00, + 0x3f, 0xde, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0x1a, 0xed, 0xdd, 0xed, 0x31, + 0x30, 0x01, 0x01, 0x23, 0x01, 0x03, 0x01, 0xa6, 0x01, 0x06, 0xf4, 0xfe, + 0xa4, 0x5c, 0x05, 0x85, 0xfe, 0xfa, 0x01, 0x06, 0xfe, 0x73, 0x00, 0x02, + 0x00, 0x00, 0x05, 0x1b, 0x02, 0xae, 0x06, 0x87, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x2f, 0xbc, 0x00, 0x01, 0x01, 0xf3, 0x00, 0x02, 0x00, 0x00, 0x02, + 0x35, 0x40, 0x12, 0x40, 0x03, 0x03, 0x40, 0x0e, 0x16, 0x48, 0x03, 0x80, + 0x00, 0x02, 0x10, 0x02, 0x02, 0x08, 0x02, 0x04, 0x41, 0x00, 0x3f, 0xd6, + 0x5e, 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0x1a, 0xed, 0xdd, 0xed, 0x31, + 0x30, 0x01, 0x17, 0x23, 0x25, 0x03, 0x01, 0xcf, 0xdf, 0xf4, 0xfe, 0xcb, + 0x85, 0x06, 0x87, 0xe1, 0xe1, 0xfe, 0x94, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x03, 0xf8, 0x04, 0x08, 0x05, 0x85, 0x00, 0x03, 0x00, 0x04, 0x00, 0x27, + 0xbc, 0x00, 0x03, 0x02, 0x42, 0x00, 0x02, 0x00, 0x00, 0x02, 0x0b, 0x40, + 0x0c, 0x40, 0x01, 0x02, 0x40, 0x0e, 0x13, 0x48, 0x02, 0x80, 0x01, 0x04, + 0x4f, 0x00, 0x3f, 0xde, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0x1a, 0xed, 0xdd, + 0xed, 0x31, 0x30, 0x01, 0x23, 0x01, 0x21, 0x01, 0x02, 0xac, 0xf4, 0x01, + 0x06, 0x01, 0x4a, 0xfb, 0xf8, 0x04, 0x7f, 0x01, 0x06, 0xfe, 0x73, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xe1, 0x06, 0x87, 0x00, 0x03, + 0x00, 0x04, 0x00, 0x2f, 0xbc, 0x00, 0x03, 0x02, 0x34, 0x00, 0x02, 0x00, + 0x00, 0x01, 0xf3, 0x40, 0x12, 0x40, 0x01, 0x02, 0x40, 0x0e, 0x16, 0x48, + 0x02, 0x80, 0x00, 0x01, 0x10, 0x01, 0x02, 0x08, 0x01, 0x04, 0x41, 0x00, + 0x3f, 0xd6, 0x5e, 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0x1a, 0xed, 0xdd, + 0xed, 0x31, 0x30, 0x01, 0x23, 0x37, 0x21, 0x01, 0x02, 0xac, 0xf4, 0xe0, + 0x01, 0x49, 0xfc, 0x1f, 0x05, 0xa6, 0xe1, 0xfe, 0x94, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0x87, 0x05, 0x85, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x3f, 0xb2, 0x06, 0x03, 0x04, 0xb8, 0x01, 0xa9, 0xb6, 0x40, 0x05, + 0x03, 0x20, 0x00, 0x03, 0x02, 0xb8, 0x01, 0xac, 0x40, 0x10, 0x40, 0x01, + 0x20, 0x03, 0x03, 0x06, 0x40, 0x0e, 0x13, 0x48, 0x06, 0x80, 0x02, 0x04, + 0x07, 0x4f, 0x00, 0x3f, 0xde, 0x32, 0x1a, 0xcd, 0x2b, 0x39, 0x01, 0x19, + 0x2f, 0x1a, 0x18, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x1a, 0x10, 0xdd, 0x1a, + 0xed, 0x12, 0x39, 0x31, 0x30, 0x01, 0x13, 0x23, 0x27, 0x07, 0x23, 0x13, + 0x01, 0x02, 0x91, 0xf6, 0xd9, 0x7b, 0x7b, 0xd5, 0xf6, 0xfe, 0x27, 0x05, + 0x85, 0xfe, 0xfa, 0x7b, 0x7b, 0x01, 0x06, 0xfe, 0x73, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x05, 0x1b, 0x03, 0x89, 0x06, 0x87, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x4b, 0xb2, 0x05, 0x02, 0x03, 0xb8, 0x01, 0xa0, 0xb6, 0x40, 0x04, + 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0xa3, 0x40, 0x19, 0x40, 0x00, + 0x20, 0x6f, 0x02, 0x01, 0x02, 0x02, 0x05, 0x40, 0x0e, 0x16, 0x48, 0x05, + 0x80, 0x01, 0x00, 0x03, 0x10, 0x03, 0x02, 0x08, 0x03, 0x07, 0x41, 0x00, + 0x3f, 0xd6, 0x5e, 0x5d, 0x32, 0x1a, 0xcd, 0x2b, 0x39, 0x01, 0x19, 0x2f, + 0x5d, 0x1a, 0x18, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x1a, 0x10, 0xdd, 0x1a, + 0xed, 0x12, 0x39, 0x31, 0x30, 0x01, 0x23, 0x27, 0x07, 0x23, 0x37, 0x33, + 0x01, 0x03, 0x89, 0xdb, 0x7b, 0x7b, 0xd7, 0xee, 0xcd, 0xfd, 0x64, 0x05, + 0xa6, 0x5e, 0x5e, 0xe1, 0xfe, 0x94, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x03, 0x85, 0x05, 0x85, 0x00, 0x06, 0x00, 0x07, 0x00, 0x3f, 0xb2, 0x06, + 0x03, 0x04, 0xb8, 0x01, 0xa9, 0xb6, 0x40, 0x05, 0x03, 0x20, 0x00, 0x03, + 0x02, 0xb8, 0x01, 0xac, 0x40, 0x10, 0x40, 0x01, 0x20, 0x03, 0x03, 0x04, + 0x02, 0x40, 0x0e, 0x13, 0x48, 0x02, 0x80, 0x00, 0x07, 0x4f, 0x00, 0x3f, + 0xde, 0x1a, 0xcd, 0x2b, 0x32, 0x39, 0x01, 0x19, 0x2f, 0x1a, 0x18, 0xdd, + 0x1a, 0xed, 0x12, 0x39, 0x1a, 0x10, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x31, + 0x30, 0x01, 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x05, 0x01, 0xd7, 0xf6, + 0xd9, 0x7b, 0x7b, 0xd5, 0xf6, 0xfd, 0x71, 0x04, 0x7f, 0x01, 0x06, 0x7b, + 0x7b, 0xfe, 0xfa, 0x87, 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x87, + 0x06, 0x87, 0x00, 0x06, 0x00, 0x07, 0x00, 0x4b, 0xb2, 0x05, 0x02, 0x03, + 0xb8, 0x01, 0xa0, 0xb6, 0x40, 0x04, 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, + 0x01, 0xa3, 0x40, 0x19, 0x40, 0x00, 0x20, 0x6f, 0x02, 0x01, 0x02, 0x02, + 0x03, 0x01, 0x40, 0x0e, 0x16, 0x48, 0x01, 0x80, 0x00, 0x06, 0x10, 0x06, + 0x02, 0x08, 0x06, 0x07, 0x41, 0x00, 0x3f, 0xd6, 0x5e, 0x5d, 0x1a, 0xcd, + 0x2b, 0x32, 0x39, 0x01, 0x19, 0x2f, 0x5d, 0x1a, 0x18, 0xdd, 0x1a, 0xed, + 0x12, 0x39, 0x1a, 0x10, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x31, 0x30, 0x13, + 0x33, 0x17, 0x37, 0x33, 0x07, 0x23, 0x05, 0xdf, 0xdb, 0x7b, 0x7b, 0xd7, + 0xed, 0xcd, 0xfe, 0x33, 0x06, 0x87, 0x5e, 0x5e, 0xe1, 0x8b, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x04, 0xf0, 0x05, 0xd1, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x27, 0xbc, 0x00, 0x03, 0x01, 0xdd, 0x00, 0x02, 0x00, 0x00, 0x01, + 0x7f, 0x40, 0x0c, 0x40, 0x01, 0x5f, 0x02, 0x6f, 0x02, 0x02, 0x02, 0x80, + 0x01, 0x04, 0x4f, 0x00, 0x3f, 0xde, 0x1a, 0xcd, 0x5d, 0x01, 0x2f, 0x1a, + 0xed, 0xdd, 0xed, 0x31, 0x30, 0x01, 0x23, 0x13, 0x33, 0x01, 0x04, 0x79, + 0xc1, 0x4e, 0xea, 0xfb, 0x10, 0x04, 0x7f, 0x01, 0x52, 0xfe, 0x27, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, 0x05, 0x99, 0x00, 0x17, + 0x00, 0x18, 0x00, 0x3b, 0x40, 0x23, 0x17, 0x00, 0x0b, 0x6f, 0x0c, 0x01, + 0x5b, 0x0c, 0x01, 0x3f, 0x0c, 0x4f, 0x0c, 0x02, 0x0c, 0x0c, 0x0b, 0x03, + 0x00, 0x17, 0x0f, 0xce, 0x5f, 0x08, 0x6f, 0x08, 0x7f, 0x08, 0x03, 0x08, + 0x14, 0xce, 0x03, 0x18, 0x4f, 0x00, 0x3f, 0xde, 0xed, 0xdc, 0x5d, 0xfd, + 0xd4, 0xcd, 0x10, 0xd4, 0xcd, 0x01, 0x2f, 0x5d, 0x5d, 0x5d, 0xcd, 0xdd, + 0xcd, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x01, 0x03, 0xac, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, + 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, + 0x25, 0x38, 0x1b, 0xfc, 0xc1, 0x05, 0x19, 0x51, 0x4d, 0x22, 0x2a, 0x22, + 0x2e, 0x2c, 0x6d, 0x50, 0x4d, 0x23, 0x28, 0x23, 0x2f, 0x2b, 0xfe, 0x73, + 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xac, 0x06, 0xa0, 0x00, 0x17, + 0x00, 0x18, 0x00, 0x37, 0x40, 0x20, 0x17, 0x00, 0x0b, 0x3f, 0x0c, 0x5f, + 0x0c, 0x02, 0x0c, 0x0c, 0x0b, 0x03, 0x00, 0x17, 0x0f, 0xc2, 0x5f, 0x08, + 0x6f, 0x08, 0x7f, 0x08, 0x03, 0x08, 0x14, 0xc2, 0x00, 0x03, 0x01, 0x03, + 0x18, 0x41, 0x00, 0x3f, 0xd6, 0x5d, 0xed, 0xdc, 0x5d, 0xfd, 0xd4, 0xcd, + 0x10, 0xd4, 0xcd, 0x01, 0x2f, 0x5d, 0xcd, 0xdd, 0xcd, 0x31, 0x30, 0x01, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x01, 0x03, 0xac, + 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, + 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfc, + 0xc1, 0x06, 0x2b, 0x50, 0x4e, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0x68, 0x51, + 0x4d, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0xfe, 0x88, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x8d, 0x05, 0x96, 0x00, 0x13, 0x00, 0x27, 0x00, 0x28, + 0x00, 0x2f, 0xbc, 0x00, 0x14, 0x02, 0x27, 0x00, 0x1e, 0x00, 0x0a, 0x02, + 0x27, 0x40, 0x09, 0x5f, 0x00, 0x01, 0x00, 0x00, 0x29, 0x2a, 0x23, 0x0f, + 0xb8, 0x01, 0x43, 0xb3, 0x19, 0x05, 0x28, 0x4f, 0x00, 0x3f, 0xde, 0x32, + 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0x5d, 0xed, 0xd6, 0xed, 0x31, + 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x01, 0xeb, + 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, + 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, + 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0xfc, 0x73, + 0x05, 0x0c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, + 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, + 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xfe, 0xd0, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x99, 0x06, 0x9a, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x28, 0x00, 0x2a, 0xbc, 0x00, 0x14, 0x02, 0x21, 0x00, + 0x1e, 0x00, 0x0a, 0x02, 0x21, 0xb5, 0x00, 0x00, 0x29, 0x2a, 0x23, 0x0f, + 0xb8, 0x01, 0x41, 0xb3, 0x19, 0x05, 0x28, 0x41, 0x00, 0x3f, 0xde, 0x32, + 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xed, 0xd6, 0xed, 0x31, 0x30, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x01, 0xdf, 0x15, + 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, + 0x32, 0x26, 0x15, 0x01, 0xba, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, + 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0xfc, 0x67, 0x06, + 0x10, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, + 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, + 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xfe, 0xef, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0x4a, 0x05, 0x62, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x18, 0x40, 0x0c, 0x02, 0x00, 0x6f, 0x02, 0x7f, 0x02, 0x02, 0x02, + 0xcc, 0x00, 0x04, 0x4f, 0x00, 0x3f, 0xde, 0xed, 0x5d, 0x01, 0x2f, 0xcd, + 0x31, 0x30, 0x01, 0x35, 0x21, 0x15, 0x05, 0x01, 0x1c, 0x02, 0x2e, 0xfc, + 0xb6, 0x04, 0xb4, 0xae, 0xae, 0xbc, 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, + 0x03, 0x56, 0x06, 0x64, 0x00, 0x03, 0x00, 0x04, 0x00, 0x18, 0x40, 0x0c, + 0x02, 0x00, 0x6f, 0x02, 0x7f, 0x02, 0x02, 0x02, 0xc3, 0x00, 0x04, 0x41, + 0x00, 0x3f, 0xde, 0xed, 0x5d, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x35, + 0x21, 0x15, 0x05, 0x01, 0x10, 0x02, 0x46, 0xfc, 0xaa, 0x05, 0xb6, 0xae, + 0xae, 0x9b, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x53, 0x05, 0x85, + 0x00, 0x13, 0x00, 0x14, 0x00, 0x2e, 0xbc, 0x00, 0x00, 0x01, 0x74, 0x00, + 0x13, 0x00, 0x0a, 0x01, 0x74, 0x40, 0x12, 0x5f, 0x0b, 0x01, 0x0b, 0x00, + 0x5f, 0x0b, 0x6f, 0x0b, 0x7f, 0x0b, 0x03, 0x0b, 0x10, 0xc9, 0x05, 0x14, + 0x4f, 0x00, 0x3f, 0xde, 0xfd, 0xce, 0x5d, 0x32, 0x01, 0x2f, 0x5d, 0xed, + 0xd6, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x01, 0x03, 0x53, + 0x28, 0x4b, 0x6c, 0x44, 0x44, 0x6a, 0x49, 0x26, 0xb5, 0x0f, 0x1c, 0x27, + 0x18, 0x2d, 0x3f, 0xfd, 0x62, 0x05, 0x85, 0x39, 0x65, 0x4b, 0x2b, 0x2c, + 0x4c, 0x64, 0x38, 0x16, 0x27, 0x1e, 0x11, 0x37, 0x35, 0xfe, 0x73, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x59, 0x06, 0x8f, 0x00, 0x13, + 0x00, 0x14, 0x00, 0x2e, 0xbc, 0x00, 0x00, 0x01, 0x6d, 0x00, 0x13, 0x00, + 0x0a, 0x01, 0x6d, 0x40, 0x12, 0x0b, 0x13, 0x5f, 0x0b, 0x6f, 0x0b, 0x7f, + 0x0b, 0x03, 0x0b, 0x10, 0xc1, 0x00, 0x05, 0x01, 0x05, 0x14, 0x41, 0x00, + 0x3f, 0xd6, 0x5d, 0xfd, 0xce, 0x5d, 0x32, 0x01, 0x2f, 0xed, 0xd6, 0xed, + 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x01, 0x03, 0x59, 0x24, 0x49, + 0x70, 0x4c, 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, 0x3c, + 0x3b, 0xfd, 0x56, 0x06, 0x8f, 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, 0x5c, + 0x30, 0x11, 0x21, 0x1b, 0x11, 0x36, 0x28, 0xfe, 0x8c, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0x23, 0x06, 0x10, 0x00, 0x13, 0x00, 0x1f, + 0x00, 0x20, 0x00, 0x2f, 0xbc, 0x00, 0x00, 0x01, 0x5e, 0x00, 0x14, 0x00, + 0x0a, 0x01, 0x5e, 0x40, 0x12, 0x7f, 0x1a, 0x01, 0x1a, 0x0f, 0x9a, 0x17, + 0x1d, 0x9a, 0x00, 0x05, 0x10, 0x05, 0x02, 0x07, 0x05, 0x20, 0x4f, 0x00, + 0x3f, 0xde, 0x5e, 0x5d, 0xfd, 0xde, 0xed, 0x01, 0x2f, 0x5d, 0xed, 0xd6, + 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x01, 0x03, 0x23, 0x26, 0x42, + 0x57, 0x31, 0x31, 0x57, 0x42, 0x26, 0x26, 0x42, 0x57, 0x31, 0x32, 0x57, + 0x41, 0x26, 0x92, 0x36, 0x28, 0x28, 0x36, 0x36, 0x28, 0x28, 0x36, 0xfd, + 0x6f, 0x05, 0x2d, 0x30, 0x54, 0x3e, 0x23, 0x22, 0x3d, 0x53, 0x32, 0x32, + 0x54, 0x3c, 0x22, 0x22, 0x3c, 0x53, 0x33, 0x28, 0x36, 0x36, 0x28, 0x28, + 0x36, 0x36, 0xfe, 0xf4, 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x14, + 0x06, 0xcd, 0x00, 0x13, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x2b, 0xbc, 0x00, + 0x00, 0x01, 0x54, 0x00, 0x14, 0x00, 0x0a, 0x01, 0x54, 0x40, 0x0f, 0x1a, + 0x0f, 0x97, 0x17, 0x1d, 0x97, 0x00, 0x05, 0x10, 0x05, 0x02, 0x08, 0x05, + 0x20, 0x41, 0x00, 0x3f, 0xd6, 0x5e, 0x5d, 0xfd, 0xd6, 0xed, 0x01, 0x2f, + 0xed, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x05, 0x03, 0x14, + 0x23, 0x3d, 0x52, 0x2f, 0x2f, 0x52, 0x3d, 0x23, 0x23, 0x3d, 0x52, 0x2f, + 0x30, 0x52, 0x3c, 0x23, 0x8b, 0x30, 0x26, 0x26, 0x30, 0x30, 0x26, 0x26, + 0x30, 0xfd, 0x77, 0x06, 0x03, 0x2e, 0x4a, 0x35, 0x1d, 0x1c, 0x34, 0x4a, + 0x30, 0x30, 0x4b, 0x34, 0x1b, 0x1b, 0x34, 0x4b, 0x30, 0x26, 0x2c, 0x2c, + 0x26, 0x26, 0x2c, 0x2c, 0xc2, 0x00, 0x00, 0x04, 0x00, 0x00, 0x05, 0x1b, + 0x03, 0xd2, 0x07, 0x9e, 0x00, 0x03, 0x00, 0x17, 0x00, 0x23, 0x00, 0x24, + 0x00, 0x57, 0xb9, 0x00, 0x04, 0x01, 0x5c, 0xb2, 0x18, 0x1e, 0x03, 0xbe, + 0x02, 0x33, 0x00, 0x02, 0x00, 0x00, 0x01, 0xc8, 0x00, 0x01, 0x00, 0x0e, + 0x01, 0x5c, 0x40, 0x0a, 0x1e, 0x01, 0x01, 0x02, 0x13, 0x8e, 0x1b, 0x21, + 0x8e, 0x09, 0xb8, 0xff, 0x80, 0x40, 0x09, 0x1c, 0x28, 0x48, 0xd0, 0x09, + 0xe0, 0x09, 0x02, 0x09, 0xb8, 0xff, 0xc0, 0xb7, 0x08, 0x11, 0x48, 0x09, + 0x24, 0x41, 0x02, 0x72, 0x00, 0x3f, 0x3f, 0xd6, 0x2b, 0x5d, 0x2b, 0xfd, + 0xde, 0xed, 0x11, 0x39, 0x2f, 0x01, 0x2f, 0xed, 0xd4, 0xed, 0xdd, 0xed, + 0x10, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x23, 0x37, 0x21, 0x03, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x05, 0x02, 0xac, 0xe7, 0xd4, 0x01, 0x39, 0xb6, 0x25, 0x41, 0x57, + 0x32, 0x32, 0x57, 0x41, 0x25, 0x25, 0x41, 0x57, 0x32, 0x33, 0x57, 0x40, + 0x25, 0x94, 0x33, 0x28, 0x29, 0x32, 0x32, 0x29, 0x28, 0x33, 0xfd, 0x78, + 0x06, 0xd6, 0xc8, 0xfe, 0x5b, 0x2a, 0x45, 0x31, 0x1b, 0x1a, 0x30, 0x45, + 0x2c, 0x2c, 0x44, 0x30, 0x19, 0x19, 0x30, 0x44, 0x2d, 0x23, 0x28, 0x28, + 0x23, 0x23, 0x28, 0x28, 0xba, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, + 0x04, 0x9e, 0x05, 0x85, 0x00, 0x03, 0x00, 0x07, 0x00, 0x08, 0x00, 0x3f, + 0xbc, 0x00, 0x07, 0x02, 0x36, 0x00, 0x06, 0x00, 0x04, 0x01, 0xaf, 0xb2, + 0x05, 0x03, 0x00, 0xbb, 0x01, 0xac, 0x00, 0x01, 0x00, 0x02, 0x02, 0x29, + 0x40, 0x0e, 0x40, 0x03, 0x06, 0x02, 0x40, 0x0e, 0x13, 0x48, 0x02, 0x80, + 0x05, 0x01, 0x08, 0x4f, 0x00, 0x3f, 0xde, 0x32, 0x1a, 0xcd, 0x2b, 0x32, + 0x01, 0x2f, 0x1a, 0xfd, 0xdd, 0xed, 0x7d, 0x10, 0xd6, 0x18, 0xed, 0xdd, + 0xed, 0x31, 0x30, 0x01, 0x23, 0x13, 0x21, 0x13, 0x23, 0x13, 0x21, 0x01, + 0x01, 0xd1, 0xd9, 0xc9, 0x01, 0x16, 0x89, 0xdd, 0xec, 0x01, 0x2f, 0xfb, + 0x62, 0x04, 0x7f, 0x01, 0x06, 0xfe, 0xfa, 0x01, 0x06, 0xfe, 0x73, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x04, 0x9c, 0x06, 0x87, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x4a, 0x41, 0x0b, 0x00, 0x05, 0x01, 0xc1, + 0x00, 0x06, 0x00, 0x04, 0x02, 0x32, 0x00, 0x07, 0x00, 0x01, 0x01, 0xa2, + 0x00, 0x02, 0x00, 0x03, 0x02, 0x23, 0x40, 0x14, 0x40, 0x00, 0x07, 0x03, + 0x40, 0x0e, 0x16, 0x48, 0x03, 0x80, 0x06, 0x00, 0x02, 0x10, 0x02, 0x02, + 0x08, 0x02, 0x08, 0x41, 0x00, 0x3f, 0xd6, 0x5e, 0x5d, 0x32, 0x1a, 0xcd, + 0x2b, 0x32, 0x01, 0x7d, 0x2f, 0x1a, 0x18, 0xfd, 0xdd, 0xed, 0x7c, 0x2f, + 0x18, 0xed, 0x7d, 0xd5, 0x18, 0xed, 0x31, 0x30, 0x01, 0x05, 0x23, 0x37, + 0x21, 0x05, 0x23, 0x37, 0x01, 0x02, 0xf4, 0xfe, 0xdf, 0xd9, 0xd7, 0x02, + 0xcb, 0xfe, 0xc0, 0xdf, 0xe9, 0xfc, 0x9a, 0x06, 0x87, 0xe1, 0xe1, 0xe1, + 0xe1, 0xfe, 0x94, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xd1, + 0x05, 0xa8, 0x00, 0x13, 0x00, 0x14, 0x00, 0x1c, 0xbc, 0x00, 0x00, 0x02, + 0x39, 0x00, 0x0a, 0x00, 0x0f, 0x01, 0x47, 0xb5, 0xff, 0x05, 0x01, 0x05, + 0x14, 0x4f, 0x00, 0x3f, 0xde, 0x5d, 0xed, 0x01, 0x2f, 0xed, 0x31, 0x30, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x01, 0x02, 0xd1, 0x18, 0x2a, 0x3a, 0x22, 0x20, + 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x20, 0x20, 0x3a, 0x2b, 0x19, 0xfd, + 0x2f, 0x05, 0x0e, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, 0x37, 0x20, 0x20, + 0x38, 0x2a, 0x18, 0x18, 0x2a, 0x38, 0xfe, 0xca, 0x00, 0x02, 0x00, 0x00, + 0x05, 0x1b, 0x02, 0xcd, 0x06, 0xa6, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, + 0xbc, 0x00, 0x00, 0x02, 0x31, 0x00, 0x0a, 0x00, 0x0f, 0x01, 0x44, 0xb2, + 0x05, 0x14, 0x41, 0x00, 0x3f, 0xde, 0xed, 0x01, 0x2f, 0xed, 0x31, 0x30, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x01, 0x02, 0xcd, 0x17, 0x2a, 0x38, 0x21, 0x20, + 0x37, 0x28, 0x18, 0x18, 0x28, 0x37, 0x20, 0x1f, 0x38, 0x2a, 0x19, 0xfd, + 0x33, 0x06, 0x10, 0x20, 0x36, 0x28, 0x17, 0x17, 0x28, 0x36, 0x20, 0x20, + 0x37, 0x28, 0x17, 0x17, 0x28, 0x37, 0xfe, 0xeb, 0x00, 0x01, 0x01, 0xa4, + 0xfe, 0xd9, 0x02, 0xc5, 0x00, 0x00, 0x00, 0x03, 0x00, 0x1b, 0xbc, 0x00, + 0x00, 0x01, 0x72, 0x00, 0x01, 0x00, 0x03, 0x01, 0xd8, 0xb4, 0x02, 0x03, + 0x51, 0x00, 0x58, 0x00, 0x3f, 0x3f, 0x01, 0x2f, 0xed, 0xdd, 0xed, 0x31, + 0x30, 0x01, 0x23, 0x13, 0x33, 0x02, 0x56, 0xb2, 0x3d, 0xe4, 0xfe, 0xd9, + 0x01, 0x27, 0x00, 0x01, 0x02, 0x87, 0xfe, 0x6a, 0x03, 0xfc, 0x00, 0x00, + 0x00, 0x19, 0x00, 0x1f, 0xb1, 0x19, 0x08, 0xb8, 0x01, 0xaf, 0x40, 0x0a, + 0x13, 0x13, 0x03, 0x0e, 0x51, 0x19, 0x16, 0xc7, 0x03, 0x57, 0x00, 0x3f, + 0xfd, 0xc6, 0x3f, 0x12, 0x39, 0x01, 0x2f, 0xed, 0xc6, 0x31, 0x30, 0x01, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x33, + 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x03, 0xfc, 0x20, + 0x50, 0x1f, 0x40, 0x58, 0x36, 0x18, 0x0b, 0x1c, 0x2f, 0x25, 0xd3, 0x26, + 0x2c, 0x18, 0x07, 0x21, 0x2d, 0x10, 0x2a, 0x10, 0xfe, 0x7f, 0x09, 0x0c, + 0x1c, 0x30, 0x41, 0x26, 0x1b, 0x35, 0x37, 0x3b, 0x21, 0x26, 0x37, 0x2a, + 0x22, 0x0f, 0x1f, 0x1f, 0x05, 0x03, 0x00, 0x01, 0x01, 0x8d, 0xfe, 0x66, + 0x02, 0xaa, 0xff, 0x8d, 0x00, 0x03, 0x00, 0x1c, 0xbc, 0x00, 0x01, 0x01, + 0x7f, 0x00, 0x02, 0x00, 0x00, 0x01, 0xd7, 0xb4, 0x03, 0x03, 0x04, 0x01, + 0x57, 0x00, 0x3f, 0x10, 0xce, 0x01, 0x2f, 0xed, 0xdd, 0xed, 0x31, 0x30, + 0x05, 0x03, 0x23, 0x13, 0x02, 0xaa, 0x5c, 0xc1, 0x3a, 0x73, 0xfe, 0xd9, + 0x01, 0x27, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xec, 0x05, 0xba, + 0x00, 0x03, 0x00, 0x04, 0x00, 0x1c, 0xbc, 0x00, 0x02, 0x01, 0x7f, 0x00, + 0x01, 0x00, 0x03, 0x01, 0xd7, 0xb4, 0x00, 0x01, 0x00, 0x04, 0x4f, 0x00, + 0x3f, 0xde, 0xcd, 0x01, 0x2f, 0xed, 0xdd, 0xed, 0x31, 0x30, 0x01, 0x13, + 0x33, 0x03, 0x05, 0x01, 0xc1, 0x6a, 0xc1, 0x48, 0xfd, 0x5c, 0x04, 0x93, + 0x01, 0x27, 0xfe, 0xd9, 0x9b, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x01, 0x5e, 0x06, 0x1f, 0x00, 0x17, 0x00, 0x18, 0x00, 0x16, 0xb9, 0x00, + 0x12, 0x02, 0x2a, 0xb5, 0x08, 0x00, 0x0d, 0x00, 0x99, 0x17, 0x00, 0x2f, + 0xed, 0xc4, 0x01, 0x2f, 0xd6, 0xed, 0x31, 0x30, 0x11, 0x32, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x15, 0x45, 0x4a, 0x17, 0x1d, 0x17, 0x11, 0x21, + 0x2f, 0x1e, 0x25, 0x3a, 0x28, 0x14, 0x2a, 0x57, 0x84, 0x59, 0x04, 0xa8, + 0x28, 0x2e, 0x1d, 0x23, 0x1f, 0x27, 0x22, 0x18, 0x2b, 0x22, 0x14, 0x1e, + 0x35, 0x47, 0x29, 0x41, 0x6f, 0x52, 0x2f, 0x33, 0x00, 0x01, 0x00, 0xd3, + 0xfe, 0xa0, 0x02, 0xf2, 0x01, 0x75, 0x00, 0x1b, 0x00, 0x16, 0xb9, 0x00, + 0x16, 0x02, 0x4a, 0xb5, 0x00, 0x0c, 0x11, 0x00, 0xc6, 0x1b, 0x00, 0x2f, + 0xed, 0xc4, 0x01, 0x2f, 0xc6, 0xed, 0x31, 0x30, 0x17, 0x16, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0xd3, 0x3c, 0x68, 0x4d, 0x2c, 0x11, 0x1a, + 0x1d, 0x1a, 0x11, 0x16, 0x2a, 0x3d, 0x27, 0x31, 0x4e, 0x36, 0x1c, 0x44, + 0x88, 0xcb, 0x88, 0xc1, 0x02, 0x12, 0x27, 0x3c, 0x29, 0x1d, 0x29, 0x21, + 0x1f, 0x23, 0x2d, 0x20, 0x1f, 0x3b, 0x2e, 0x1c, 0x2d, 0x4d, 0x63, 0x36, + 0x5d, 0xa4, 0x7a, 0x47, 0x00, 0x02, 0x00, 0xdf, 0xfe, 0xa0, 0x02, 0xfe, + 0x04, 0x02, 0x00, 0x1b, 0x00, 0x2f, 0x00, 0x27, 0xbc, 0x00, 0x21, 0x02, + 0x47, 0x00, 0x2b, 0x00, 0x16, 0x02, 0x4a, 0xb2, 0x00, 0x0c, 0x26, 0xb8, + 0x01, 0x4d, 0xb5, 0x1c, 0x4f, 0x11, 0x00, 0xc6, 0x1b, 0x00, 0x2f, 0xed, + 0xc4, 0x3f, 0xed, 0x01, 0x2f, 0xc6, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x17, + 0x16, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x01, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0xdf, 0x3c, 0x68, 0x4d, 0x2c, 0x11, 0x1a, 0x1d, 0x1a, 0x11, 0x16, 0x2a, + 0x3d, 0x27, 0x31, 0x4e, 0x36, 0x1c, 0x44, 0x87, 0xcc, 0x88, 0x01, 0x54, + 0x26, 0x42, 0x30, 0x1c, 0x1c, 0x30, 0x42, 0x26, 0x26, 0x41, 0x31, 0x1c, + 0x1c, 0x31, 0x41, 0xc1, 0x02, 0x12, 0x27, 0x3c, 0x29, 0x1d, 0x29, 0x21, + 0x1f, 0x23, 0x2d, 0x20, 0x1f, 0x3b, 0x2e, 0x1c, 0x2d, 0x4d, 0x63, 0x36, + 0x5d, 0xa4, 0x7a, 0x47, 0x05, 0x62, 0x1c, 0x31, 0x42, 0x25, 0x26, 0x42, + 0x30, 0x1c, 0x1c, 0x30, 0x42, 0x26, 0x25, 0x42, 0x31, 0x1c, 0x00, 0x02, + 0x01, 0x7f, 0xff, 0xe9, 0x02, 0xe7, 0x04, 0x02, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x23, 0xb1, 0x05, 0x19, 0xb8, 0x02, 0x47, 0xb2, 0x0f, 0x23, 0x14, + 0xb8, 0x01, 0x4d, 0xb2, 0x1e, 0x52, 0x0a, 0xb8, 0x01, 0x4d, 0xb1, 0x00, + 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xc4, 0xfd, 0xc4, 0x31, + 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x13, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x33, 0x26, + 0x42, 0x30, 0x1c, 0x1c, 0x30, 0x42, 0x26, 0x26, 0x41, 0x31, 0x1c, 0x1c, + 0x31, 0x41, 0x26, 0x26, 0x42, 0x30, 0x1c, 0x1c, 0x30, 0x42, 0x26, 0x26, + 0x41, 0x31, 0x1c, 0x1c, 0x31, 0x41, 0x04, 0x02, 0x1c, 0x31, 0x42, 0x25, + 0x26, 0x42, 0x30, 0x1c, 0x1c, 0x30, 0x42, 0x26, 0x25, 0x42, 0x31, 0x1c, + 0xfd, 0x4f, 0x1c, 0x30, 0x42, 0x25, 0x26, 0x42, 0x31, 0x1c, 0x1c, 0x31, + 0x42, 0x26, 0x25, 0x42, 0x30, 0x1c, 0x00, 0x01, 0x01, 0x6d, 0xff, 0xe9, + 0x02, 0xf2, 0x01, 0x71, 0x00, 0x13, 0x00, 0x16, 0xbc, 0x00, 0x05, 0x02, + 0x4b, 0x00, 0x0f, 0x00, 0x00, 0x01, 0x50, 0xb1, 0x0a, 0x52, 0x00, 0x3f, + 0xed, 0x01, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x2d, + 0x2a, 0x48, 0x35, 0x1e, 0x1e, 0x35, 0x48, 0x2a, 0x28, 0x46, 0x34, 0x1e, + 0x1e, 0x34, 0x46, 0x01, 0x71, 0x1f, 0x35, 0x48, 0x29, 0x28, 0x47, 0x35, + 0x1f, 0x1f, 0x35, 0x47, 0x28, 0x29, 0x48, 0x35, 0x1f, 0x00, 0x00, 0x03, + 0x00, 0x23, 0xff, 0xe9, 0x04, 0x4a, 0x01, 0x14, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x3b, 0x00, 0x35, 0xbf, 0x00, 0x28, 0x02, 0x2d, 0x00, 0x32, 0x00, + 0x14, 0x02, 0x2d, 0x00, 0x1e, 0x00, 0x00, 0x02, 0x2d, 0x40, 0x09, 0x0a, + 0x2d, 0x19, 0x19, 0x05, 0x37, 0x23, 0x23, 0x0f, 0xb8, 0x01, 0x46, 0xb1, + 0x05, 0x52, 0x00, 0x3f, 0xed, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x01, 0x2f, 0xed, 0xd4, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x25, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x48, 0x18, + 0x29, 0x36, 0x1f, 0x1d, 0x34, 0x27, 0x17, 0x17, 0x27, 0x34, 0x1d, 0x1f, + 0x36, 0x29, 0x18, 0x01, 0x81, 0x18, 0x29, 0x36, 0x1f, 0x1d, 0x34, 0x27, + 0x17, 0x17, 0x27, 0x34, 0x1d, 0x1f, 0x36, 0x29, 0x18, 0x01, 0x81, 0x18, + 0x29, 0x36, 0x1f, 0x1d, 0x34, 0x27, 0x17, 0x17, 0x27, 0x34, 0x1d, 0x1f, + 0x36, 0x29, 0x18, 0x81, 0x20, 0x37, 0x29, 0x18, 0x18, 0x29, 0x37, 0x20, + 0x1e, 0x35, 0x29, 0x17, 0x17, 0x29, 0x35, 0x1e, 0x20, 0x37, 0x29, 0x18, + 0x18, 0x29, 0x37, 0x20, 0x1e, 0x35, 0x29, 0x17, 0x17, 0x29, 0x35, 0x1e, + 0x20, 0x37, 0x29, 0x18, 0x18, 0x29, 0x37, 0x20, 0x1e, 0x35, 0x29, 0x17, + 0x17, 0x29, 0x35, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x01, 0xb4, 0x03, 0x6a, + 0x02, 0x8d, 0x00, 0x03, 0x00, 0x11, 0xb2, 0x02, 0x00, 0x02, 0xb9, 0x01, + 0x37, 0x00, 0x00, 0x00, 0x2f, 0xed, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x13, + 0x35, 0x21, 0x15, 0xfc, 0x02, 0x6e, 0x01, 0xb4, 0xd9, 0xd9, 0xff, 0xff, + 0x00, 0xfc, 0x02, 0x37, 0x03, 0x6a, 0x03, 0x10, 0x02, 0x07, 0x01, 0x5e, + 0x00, 0x00, 0x00, 0x83, 0x00, 0x02, 0x01, 0x98, 0xff, 0xe9, 0x02, 0xcf, + 0x05, 0x85, 0x00, 0x03, 0x00, 0x17, 0x00, 0x23, 0xbc, 0x00, 0x02, 0x02, + 0x2b, 0x00, 0x03, 0x00, 0x09, 0x02, 0x38, 0xb2, 0x13, 0x01, 0x04, 0xb8, + 0x01, 0x49, 0xb3, 0x0e, 0x52, 0x02, 0x53, 0x00, 0x3f, 0x3f, 0xfd, 0xce, + 0x01, 0x2f, 0xfd, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x23, 0x03, 0x21, 0x03, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x02, 0x9c, 0xd1, 0x25, 0x01, 0x1b, 0x8e, 0x20, 0x39, + 0x2a, 0x19, 0x19, 0x2a, 0x39, 0x20, 0x20, 0x39, 0x2a, 0x18, 0x18, 0x2a, + 0x39, 0x01, 0x96, 0x03, 0xef, 0xfb, 0x9c, 0x18, 0x2a, 0x39, 0x21, 0x21, + 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x21, 0x21, 0x39, 0x2a, 0x18, 0x00, + 0x00, 0x02, 0x01, 0x98, 0xfe, 0x73, 0x02, 0xcf, 0x04, 0x0e, 0x00, 0x03, + 0x00, 0x17, 0x00, 0x23, 0xbc, 0x00, 0x02, 0x02, 0x2b, 0x00, 0x03, 0x00, + 0x13, 0x02, 0x38, 0xb2, 0x09, 0x00, 0x04, 0xb8, 0x01, 0x48, 0xb3, 0x0e, + 0x50, 0x03, 0x55, 0x00, 0x3f, 0x3f, 0xfd, 0xce, 0x01, 0x2f, 0xed, 0xd4, + 0xed, 0x31, 0x30, 0x01, 0x33, 0x13, 0x21, 0x13, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x01, + 0xcb, 0xd1, 0x25, 0xfe, 0xe5, 0x8d, 0x20, 0x39, 0x2a, 0x18, 0x18, 0x2a, + 0x39, 0x20, 0x20, 0x39, 0x2a, 0x19, 0x19, 0x2a, 0x39, 0x02, 0x62, 0xfc, + 0x11, 0x04, 0x64, 0x18, 0x2a, 0x39, 0x21, 0x21, 0x39, 0x29, 0x18, 0x18, + 0x29, 0x39, 0x21, 0x21, 0x39, 0x2a, 0x18, 0x00, 0xff, 0xff, 0x01, 0x98, + 0xff, 0xb7, 0x02, 0xcf, 0x05, 0x52, 0x02, 0x07, 0x01, 0x61, 0x00, 0x00, + 0x01, 0x44, 0x00, 0x02, 0x01, 0x19, 0xff, 0xe9, 0x03, 0xc5, 0x05, 0x85, + 0x00, 0x1a, 0x00, 0x2e, 0x00, 0x45, 0xbc, 0x00, 0x05, 0x01, 0xe0, 0x00, + 0x08, 0x00, 0x1b, 0x02, 0x41, 0xb3, 0x25, 0x25, 0x14, 0x00, 0xb8, 0x02, + 0x26, 0xb3, 0x0e, 0x14, 0x07, 0x2a, 0xb8, 0x01, 0x4c, 0x40, 0x0a, 0x20, + 0x05, 0xf8, 0x0e, 0x08, 0x08, 0x15, 0x20, 0x52, 0x14, 0xb8, 0x01, 0x3f, + 0xb1, 0x15, 0x53, 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x39, 0xed, + 0x10, 0xfd, 0xce, 0x01, 0x2f, 0xd6, 0xed, 0x12, 0x39, 0x2f, 0xed, 0xd4, + 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x23, 0x03, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, + 0x1e, 0x02, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x03, 0xc5, 0x33, 0x5f, 0x86, 0x53, + 0x0a, 0xd1, 0x12, 0x91, 0x31, 0x47, 0x2d, 0x15, 0x29, 0x57, 0x86, 0x5e, + 0x3b, 0x45, 0x9a, 0xe6, 0x9a, 0x4d, 0xfe, 0xc8, 0x1a, 0x2c, 0x3c, 0x22, + 0x22, 0x3b, 0x2c, 0x1a, 0x1a, 0x2c, 0x3b, 0x22, 0x22, 0x3c, 0x2c, 0x1a, + 0x03, 0xd3, 0x54, 0x85, 0x61, 0x3c, 0x0b, 0xbc, 0x01, 0x78, 0x1c, 0x30, + 0x3f, 0x23, 0x30, 0x53, 0x3f, 0x24, 0xe3, 0x49, 0x79, 0x9c, 0xfc, 0x62, + 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, + 0x19, 0x2c, 0x3a, 0x00, 0x00, 0x02, 0x00, 0xa2, 0xfe, 0x73, 0x03, 0x4e, + 0x04, 0x0e, 0x00, 0x1a, 0x00, 0x2e, 0x00, 0x41, 0xb9, 0x00, 0x05, 0x01, + 0xe1, 0xb5, 0x08, 0x1b, 0x25, 0x25, 0x15, 0x00, 0xb8, 0x02, 0x25, 0xb3, + 0x0e, 0x15, 0x07, 0x2a, 0xb8, 0x01, 0x4b, 0x40, 0x0a, 0x20, 0x05, 0xf9, + 0x0e, 0x08, 0x08, 0x15, 0x20, 0x50, 0x14, 0xb8, 0x01, 0x3f, 0xb1, 0x15, + 0x55, 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x39, 0xed, 0x10, 0xfd, + 0xce, 0x01, 0x2f, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0xcd, 0xd4, 0xed, 0x31, + 0x30, 0x37, 0x34, 0x3e, 0x02, 0x37, 0x37, 0x33, 0x13, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x15, 0x23, 0x22, 0x2e, 0x02, + 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0xa2, 0x33, 0x5e, 0x86, 0x53, 0x0b, 0xd0, 0x13, + 0x92, 0x31, 0x47, 0x2d, 0x15, 0x29, 0x57, 0x87, 0x5d, 0x3c, 0x46, 0x99, + 0xe7, 0x99, 0x4d, 0x01, 0x37, 0x1a, 0x2d, 0x3b, 0x22, 0x22, 0x3b, 0x2d, + 0x1a, 0x1a, 0x2d, 0x3b, 0x22, 0x22, 0x3b, 0x2d, 0x1a, 0x25, 0x54, 0x85, + 0x61, 0x3c, 0x0b, 0xbc, 0xfe, 0x87, 0x1c, 0x2f, 0x3f, 0x24, 0x30, 0x53, + 0x3e, 0x24, 0xe3, 0x49, 0x79, 0x9c, 0x03, 0x9e, 0x21, 0x3a, 0x2b, 0x19, + 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, + 0xff, 0xff, 0x00, 0xa2, 0xff, 0xb7, 0x03, 0x4e, 0x05, 0x52, 0x02, 0x07, + 0x01, 0x64, 0x00, 0x00, 0x01, 0x44, 0x00, 0x03, 0x00, 0xb7, 0xff, 0xe9, + 0x03, 0xc7, 0x06, 0x43, 0x00, 0x16, 0x00, 0x2a, 0x00, 0x34, 0x00, 0x56, + 0xb9, 0x00, 0x11, 0x02, 0x16, 0xb2, 0x2b, 0x06, 0x17, 0xb8, 0x02, 0x41, + 0x40, 0x0a, 0x21, 0x0c, 0x30, 0x16, 0x00, 0x01, 0x02, 0x09, 0x07, 0x0b, + 0xb8, 0x02, 0x2b, 0x40, 0x0e, 0x0a, 0x06, 0x2f, 0x05, 0x01, 0x30, 0xf3, + 0x0c, 0x06, 0x16, 0x16, 0x06, 0x01, 0x26, 0xb8, 0x01, 0x4c, 0xb3, 0x1c, + 0x52, 0x0a, 0x05, 0xb8, 0x01, 0x39, 0xb1, 0x06, 0x53, 0x00, 0x3f, 0xed, + 0x2f, 0x3f, 0xfd, 0xce, 0x11, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x11, 0x12, + 0x39, 0x01, 0x2f, 0xde, 0xed, 0x17, 0x39, 0xd4, 0xed, 0x10, 0xd4, 0xed, + 0x31, 0x30, 0x01, 0x23, 0x03, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x17, + 0x27, 0x21, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x13, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x13, 0x34, 0x26, 0x26, 0x27, 0x03, 0x3e, 0x03, 0x02, 0x1c, + 0xd1, 0x18, 0x1f, 0x22, 0x3b, 0x45, 0x18, 0x19, 0x07, 0x01, 0x1b, 0x07, + 0x3f, 0x88, 0x79, 0x4d, 0x33, 0x60, 0x9c, 0x75, 0x32, 0x1a, 0x2c, 0x3c, + 0x22, 0x22, 0x3b, 0x2c, 0x1a, 0x1a, 0x2c, 0x3b, 0x22, 0x22, 0x3c, 0x2c, + 0x1a, 0x73, 0x2f, 0x46, 0x20, 0x0c, 0x19, 0x3c, 0x34, 0x18, 0x01, 0x96, + 0x03, 0x0b, 0x01, 0xdb, 0x01, 0xc7, 0xd9, 0x08, 0x37, 0x63, 0x9c, 0x57, + 0x56, 0x86, 0x64, 0x45, 0x06, 0xfe, 0x3f, 0x21, 0x3a, 0x2c, 0x19, 0x19, + 0x2c, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x03, 0x11, + 0x35, 0x5b, 0x33, 0x09, 0xfe, 0x79, 0x03, 0x1a, 0x33, 0x45, 0x00, 0x01, + 0x01, 0x75, 0x02, 0xc3, 0x03, 0x93, 0x05, 0x98, 0x00, 0x1b, 0x00, 0x17, + 0xb1, 0x00, 0x0c, 0xb8, 0x02, 0x49, 0xb5, 0x16, 0x11, 0x00, 0xc7, 0x1b, + 0x54, 0x00, 0x3f, 0xed, 0xc4, 0x01, 0x2f, 0xfd, 0xc6, 0x31, 0x30, 0x01, + 0x26, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x03, 0x93, 0x3c, 0x67, + 0x4d, 0x2c, 0x11, 0x19, 0x1e, 0x19, 0x11, 0x16, 0x29, 0x3d, 0x27, 0x31, + 0x4e, 0x36, 0x1c, 0x44, 0x87, 0xcb, 0x88, 0x04, 0xf8, 0x01, 0x11, 0x26, + 0x3c, 0x2a, 0x1d, 0x29, 0x21, 0x1f, 0x23, 0x2d, 0x20, 0x1f, 0x3a, 0x2e, + 0x1c, 0x2d, 0x4c, 0x63, 0x36, 0x5d, 0xa4, 0x7b, 0x47, 0x00, 0x00, 0x01, + 0x00, 0xd3, 0x02, 0xc3, 0x02, 0xf2, 0x05, 0x98, 0x00, 0x1b, 0x00, 0x17, + 0xb9, 0x00, 0x16, 0x02, 0x4a, 0xb6, 0x00, 0x0d, 0x00, 0xc6, 0x1b, 0x11, + 0x54, 0x00, 0x3f, 0xd4, 0xed, 0x01, 0x2f, 0xc6, 0xed, 0x31, 0x30, 0x13, + 0x16, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0xd3, 0x3c, 0x68, 0x4d, + 0x2c, 0x11, 0x1a, 0x1d, 0x1a, 0x11, 0x16, 0x2a, 0x3d, 0x27, 0x31, 0x4e, + 0x36, 0x1c, 0x44, 0x88, 0xcb, 0x88, 0x03, 0x62, 0x02, 0x12, 0x26, 0x3c, + 0x2a, 0x1d, 0x29, 0x21, 0x1f, 0x23, 0x2d, 0x20, 0x1f, 0x3b, 0x2e, 0x1c, + 0x2e, 0x4c, 0x63, 0x36, 0x5d, 0xa4, 0x7a, 0x47, 0x00, 0x02, 0x00, 0x52, + 0x03, 0x2b, 0x04, 0x2f, 0x05, 0x98, 0x00, 0x17, 0x00, 0x2f, 0x00, 0x2a, + 0xb1, 0x18, 0x20, 0xb8, 0x02, 0x45, 0xb2, 0x2a, 0x00, 0x12, 0xb8, 0x02, + 0x45, 0x40, 0x0a, 0x08, 0x00, 0x25, 0x0d, 0x18, 0x00, 0xae, 0x2f, 0x17, + 0x54, 0x00, 0x3f, 0x33, 0xed, 0x32, 0xc4, 0x32, 0x01, 0x2f, 0xd6, 0xed, + 0x10, 0xd6, 0xfd, 0xc6, 0x31, 0x30, 0x01, 0x26, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x05, 0x26, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x02, 0x23, + 0x69, 0x70, 0x1c, 0x22, 0x1c, 0x15, 0x27, 0x39, 0x23, 0x2c, 0x45, 0x30, + 0x19, 0x3a, 0x74, 0xae, 0x75, 0x02, 0x0c, 0x69, 0x70, 0x1c, 0x22, 0x1c, + 0x15, 0x27, 0x38, 0x23, 0x2d, 0x45, 0x30, 0x19, 0x3a, 0x74, 0xae, 0x75, + 0x04, 0xfe, 0x03, 0x35, 0x3f, 0x23, 0x2a, 0x27, 0x30, 0x28, 0x1d, 0x36, + 0x2a, 0x19, 0x26, 0x41, 0x57, 0x30, 0x53, 0x8c, 0x66, 0x3a, 0x9a, 0x03, + 0x35, 0x3f, 0x23, 0x2a, 0x27, 0x30, 0x28, 0x1d, 0x36, 0x2a, 0x19, 0x26, + 0x41, 0x57, 0x30, 0x53, 0x8c, 0x66, 0x3a, 0x00, 0x00, 0x02, 0x00, 0x37, + 0x03, 0x2b, 0x04, 0x14, 0x05, 0x98, 0x00, 0x17, 0x00, 0x2f, 0x00, 0x2a, + 0xb1, 0x18, 0x20, 0xbb, 0x02, 0x45, 0x00, 0x2a, 0x00, 0x12, 0x02, 0x44, + 0x40, 0x0b, 0x08, 0x00, 0x2a, 0x00, 0x18, 0xae, 0x17, 0x2f, 0x0d, 0x25, + 0x54, 0x00, 0x3f, 0x33, 0xd4, 0x32, 0xed, 0x32, 0x01, 0x2f, 0xd6, 0xd6, + 0xed, 0x10, 0xfd, 0xc6, 0x31, 0x30, 0x01, 0x16, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x25, 0x16, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x02, 0x44, + 0x69, 0x70, 0x1c, 0x22, 0x1c, 0x15, 0x27, 0x38, 0x23, 0x2d, 0x45, 0x2f, + 0x19, 0x3a, 0x73, 0xae, 0x75, 0xfd, 0xf3, 0x6a, 0x6f, 0x1c, 0x22, 0x1c, + 0x15, 0x27, 0x39, 0x23, 0x2d, 0x45, 0x2f, 0x19, 0x3a, 0x73, 0xaf, 0x75, + 0x03, 0xc5, 0x03, 0x34, 0x3f, 0x23, 0x2b, 0x27, 0x2f, 0x29, 0x1d, 0x36, + 0x2a, 0x19, 0x26, 0x41, 0x57, 0x30, 0x53, 0x8c, 0x66, 0x3a, 0x9a, 0x03, + 0x34, 0x3f, 0x23, 0x2b, 0x27, 0x2f, 0x29, 0x1d, 0x36, 0x2a, 0x19, 0x26, + 0x41, 0x57, 0x30, 0x53, 0x8c, 0x66, 0x3a, 0x00, 0x00, 0x01, 0x00, 0xd3, + 0xfe, 0xa0, 0x02, 0xf2, 0x01, 0x75, 0x00, 0x1b, 0x00, 0x1d, 0xb9, 0x00, + 0x16, 0x02, 0x4a, 0xb5, 0x00, 0x0c, 0x00, 0xc6, 0x1b, 0x11, 0xb8, 0x01, + 0x4e, 0xb1, 0x06, 0x51, 0x00, 0x3f, 0xfd, 0xd4, 0xed, 0x01, 0x2f, 0xc6, + 0xed, 0x31, 0x30, 0x17, 0x16, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x04, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0xd3, 0x3c, 0x68, 0x4d, 0x2c, 0x11, 0x1a, 0x1d, 0x1a, 0x11, 0x16, 0x2a, + 0x3d, 0x27, 0x31, 0x4e, 0x36, 0x1c, 0x44, 0x88, 0xcb, 0x88, 0xc1, 0x02, + 0x12, 0x27, 0x3c, 0x29, 0x1d, 0x29, 0x21, 0x1f, 0x23, 0x2d, 0x20, 0x1f, + 0x3b, 0x2e, 0x1c, 0x2d, 0x4d, 0x63, 0x36, 0x5d, 0xa4, 0x7a, 0x47, 0x00, + 0x00, 0x02, 0x00, 0x37, 0xfe, 0xcd, 0x04, 0x14, 0x01, 0x39, 0x00, 0x17, + 0x00, 0x2f, 0x00, 0x32, 0xb1, 0x18, 0x20, 0xbb, 0x02, 0x45, 0x00, 0x2a, + 0x00, 0x12, 0x02, 0x44, 0x40, 0x0a, 0x08, 0x00, 0x2a, 0x00, 0x18, 0xad, + 0x17, 0x2f, 0x0d, 0x25, 0xb8, 0x01, 0x4b, 0xb2, 0x04, 0x1c, 0x51, 0x00, + 0x3f, 0x33, 0xfd, 0x32, 0xd4, 0x32, 0xed, 0x32, 0x01, 0x2f, 0xd6, 0xd6, + 0xed, 0x10, 0xfd, 0xc6, 0x31, 0x30, 0x05, 0x16, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x25, 0x16, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x02, 0x44, + 0x69, 0x70, 0x1c, 0x22, 0x1c, 0x15, 0x27, 0x38, 0x23, 0x2d, 0x45, 0x2f, + 0x19, 0x3a, 0x73, 0xae, 0x75, 0xfd, 0xf3, 0x6a, 0x6f, 0x1c, 0x22, 0x1c, + 0x15, 0x27, 0x39, 0x23, 0x2d, 0x45, 0x2f, 0x19, 0x3a, 0x73, 0xaf, 0x75, + 0x9a, 0x03, 0x35, 0x3f, 0x23, 0x2a, 0x27, 0x30, 0x29, 0x1d, 0x36, 0x29, + 0x19, 0x26, 0x40, 0x57, 0x30, 0x53, 0x8c, 0x66, 0x3a, 0x99, 0x03, 0x35, + 0x3f, 0x23, 0x2a, 0x27, 0x30, 0x29, 0x1d, 0x36, 0x29, 0x19, 0x26, 0x40, + 0x57, 0x30, 0x53, 0x8c, 0x66, 0x3a, 0x00, 0x01, 0x01, 0x04, 0x00, 0x4b, + 0x03, 0x2c, 0x03, 0xf7, 0x00, 0x05, 0x00, 0x21, 0xbf, 0x00, 0x02, 0x01, + 0x61, 0x00, 0x01, 0x00, 0x04, 0x01, 0x5f, 0x00, 0x05, 0x00, 0x03, 0x02, + 0x14, 0xb2, 0x00, 0x04, 0x02, 0x00, 0x2f, 0xc4, 0x01, 0x2f, 0xed, 0xdd, + 0xed, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x01, 0x07, 0x01, 0x01, 0x17, 0x02, + 0x01, 0x01, 0x2b, 0xa7, 0xfe, 0x7f, 0x01, 0x83, 0xa5, 0x02, 0x21, 0xfe, + 0x9e, 0x74, 0x01, 0xd6, 0x01, 0xd6, 0x74, 0x00, 0x00, 0x01, 0x01, 0x3a, + 0x00, 0x4b, 0x03, 0x62, 0x03, 0xf6, 0x00, 0x05, 0x00, 0x21, 0xbf, 0x00, + 0x04, 0x01, 0x5f, 0x00, 0x05, 0x00, 0x02, 0x01, 0x60, 0x00, 0x01, 0x00, + 0x03, 0x02, 0x14, 0xb2, 0x00, 0x02, 0x04, 0x00, 0x2f, 0xc4, 0x01, 0x2f, + 0xfd, 0xdd, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x01, 0x37, 0x01, 0x01, + 0x27, 0x02, 0x65, 0xfe, 0xd5, 0xa6, 0x01, 0x82, 0xfe, 0x7d, 0xa5, 0x02, + 0x21, 0x01, 0x62, 0x73, 0xfe, 0x2b, 0xfe, 0x2a, 0x74, 0x00, 0xff, 0xff, + 0x01, 0x04, 0x00, 0xb1, 0x03, 0x2c, 0x04, 0x5d, 0x02, 0x06, 0x01, 0x6d, + 0x00, 0x66, 0xff, 0xff, 0x01, 0x3a, 0x00, 0xb1, 0x03, 0x62, 0x04, 0x5c, + 0x02, 0x06, 0x01, 0x6e, 0x00, 0x66, 0x00, 0x02, 0x00, 0x73, 0x00, 0x81, + 0x03, 0xe5, 0x03, 0xbc, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x27, 0xb2, 0x07, + 0x0b, 0x06, 0xb8, 0x01, 0xde, 0xb2, 0x09, 0x05, 0x03, 0xb8, 0x01, 0xde, + 0xb6, 0x00, 0x01, 0x05, 0x0a, 0x04, 0x08, 0x02, 0x00, 0x2f, 0x33, 0xc4, + 0x32, 0x01, 0x2f, 0xc4, 0xdd, 0xed, 0x10, 0xd6, 0xfd, 0xdd, 0xc4, 0x31, + 0x30, 0x01, 0x13, 0x07, 0x01, 0x01, 0x17, 0x13, 0x13, 0x07, 0x01, 0x01, + 0x17, 0x01, 0x5e, 0xd9, 0xbc, 0xfe, 0xf8, 0x01, 0x0e, 0xb6, 0xd3, 0xdb, + 0xb6, 0xfe, 0xf0, 0x01, 0x16, 0xb0, 0x02, 0x1f, 0xfe, 0xbe, 0x5c, 0x01, + 0x9e, 0x01, 0x9d, 0x5c, 0xfe, 0xbf, 0xfe, 0xc8, 0x5c, 0x01, 0x94, 0x01, + 0x93, 0x5c, 0x00, 0x02, 0x00, 0x81, 0x00, 0x85, 0x03, 0xf4, 0x03, 0xc1, + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x41, 0xbf, 0x00, 0x0a, 0x01, 0x71, 0x00, + 0x0b, 0x00, 0x08, 0x01, 0x75, 0x00, 0x07, 0x00, 0x06, 0x01, 0xdf, 0xb2, + 0x09, 0x01, 0x04, 0xb8, 0x01, 0x75, 0xb2, 0x05, 0x01, 0x03, 0xbb, 0x01, + 0xdf, 0x00, 0x00, 0x00, 0x02, 0x01, 0x77, 0xb4, 0x01, 0x02, 0x08, 0x04, + 0x0a, 0x00, 0x2f, 0x33, 0xc4, 0x32, 0x01, 0x2f, 0xed, 0xdd, 0xed, 0x10, + 0xd4, 0xed, 0x10, 0xd6, 0xfd, 0xdd, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x01, + 0x03, 0x37, 0x01, 0x01, 0x27, 0x03, 0x03, 0x37, 0x01, 0x01, 0x27, 0x03, + 0x08, 0xd9, 0xbd, 0x01, 0x08, 0xfe, 0xf1, 0xb6, 0xd3, 0xdb, 0xb6, 0x01, + 0x11, 0xfe, 0xe9, 0xb0, 0x02, 0x23, 0x01, 0x41, 0x5d, 0xfe, 0x62, 0xfe, + 0x62, 0x5c, 0x01, 0x42, 0x01, 0x37, 0x5c, 0xfe, 0x6d, 0xfe, 0x6c, 0x5d, + 0xff, 0xff, 0x00, 0x73, 0x00, 0xe7, 0x03, 0xe5, 0x04, 0x22, 0x02, 0x06, + 0x01, 0x71, 0x00, 0x66, 0xff, 0xff, 0x00, 0x81, 0x00, 0xeb, 0x03, 0xf4, + 0x04, 0x27, 0x02, 0x06, 0x01, 0x72, 0x00, 0x66, 0x00, 0x01, 0x00, 0x48, + 0xff, 0x29, 0x03, 0xf0, 0x05, 0x85, 0x00, 0x03, 0x00, 0x18, 0x40, 0x0a, + 0x00, 0x03, 0x02, 0x01, 0x02, 0x03, 0x53, 0x00, 0x01, 0x59, 0x00, 0x3f, + 0x33, 0x3f, 0x33, 0x01, 0x2f, 0xcd, 0x32, 0x33, 0x31, 0x30, 0x05, 0x23, + 0x01, 0x33, 0x01, 0x35, 0xed, 0x02, 0xba, 0xee, 0xd7, 0x06, 0x5c, 0x00, + 0x00, 0x01, 0x01, 0xc3, 0xfe, 0x66, 0x02, 0xa4, 0x06, 0x66, 0x00, 0x03, + 0x00, 0x13, 0xb9, 0x00, 0x03, 0x01, 0xd5, 0xb4, 0x00, 0x02, 0x5d, 0x00, + 0x57, 0x00, 0x3f, 0x3f, 0x01, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x11, 0x33, + 0x11, 0x01, 0xc3, 0xe1, 0xfe, 0x66, 0x08, 0x00, 0xf8, 0x00, 0x00, 0x01, + 0x00, 0x85, 0x01, 0xb6, 0x03, 0xe1, 0x02, 0x8b, 0x00, 0x03, 0x00, 0x11, + 0xb2, 0x02, 0x00, 0x02, 0xb9, 0x01, 0x34, 0x00, 0x00, 0x00, 0x2f, 0xed, + 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x13, 0x35, 0x21, 0x15, 0x85, 0x03, 0x5c, + 0x01, 0xb6, 0xd5, 0xd5, 0xff, 0xff, 0x00, 0x85, 0x02, 0x1c, 0x03, 0xe1, + 0x02, 0xf1, 0x02, 0x06, 0x01, 0x77, 0x00, 0x66, 0x00, 0x01, 0xff, 0xfc, + 0x01, 0xb6, 0x04, 0x6a, 0x02, 0x8b, 0x00, 0x03, 0x00, 0x11, 0xb2, 0x02, + 0x00, 0x02, 0xb9, 0x01, 0x34, 0x00, 0x00, 0x00, 0x2f, 0xed, 0x01, 0x2f, + 0xcd, 0x31, 0x30, 0x03, 0x35, 0x21, 0x15, 0x04, 0x04, 0x6e, 0x01, 0xb6, + 0xd5, 0xd5, 0xff, 0xff, 0xff, 0xfc, 0x02, 0x1c, 0x04, 0x6a, 0x02, 0xf1, + 0x02, 0x06, 0x01, 0x79, 0x00, 0x66, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xb6, + 0x04, 0x6a, 0x02, 0x8b, 0x02, 0x06, 0x01, 0x79, 0x00, 0x00, 0x00, 0x01, + 0x00, 0xc9, 0x00, 0xc1, 0x03, 0x9e, 0x03, 0x96, 0x00, 0x13, 0x00, 0x0d, + 0xb3, 0x05, 0x0f, 0x00, 0x0a, 0x00, 0x2f, 0xcd, 0x01, 0x2f, 0xcd, 0x31, + 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x33, 0x4b, 0x85, 0x62, 0x39, 0x39, + 0x62, 0x85, 0x4b, 0x4b, 0x84, 0x62, 0x39, 0x39, 0x62, 0x84, 0x03, 0x96, + 0x39, 0x62, 0x85, 0x4b, 0x4b, 0x84, 0x62, 0x39, 0x39, 0x62, 0x84, 0x4b, + 0x4b, 0x85, 0x62, 0x39, 0x00, 0x01, 0x01, 0x73, 0x01, 0x6f, 0x02, 0xf8, + 0x02, 0xf6, 0x00, 0x13, 0x00, 0x15, 0xbd, 0x00, 0x05, 0x02, 0x4b, 0x00, + 0x0f, 0x00, 0x00, 0x01, 0x4f, 0x00, 0x0a, 0x00, 0x2f, 0xed, 0x01, 0x2f, + 0xed, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x33, 0x2a, 0x48, 0x35, + 0x1e, 0x1e, 0x35, 0x48, 0x2a, 0x28, 0x46, 0x34, 0x1e, 0x1e, 0x34, 0x46, + 0x02, 0xf6, 0x1f, 0x35, 0x48, 0x29, 0x28, 0x46, 0x35, 0x1f, 0x1f, 0x35, + 0x46, 0x28, 0x29, 0x48, 0x35, 0x1f, 0xff, 0xff, 0x01, 0x73, 0x01, 0xd5, + 0x02, 0xf8, 0x03, 0x5c, 0x02, 0x06, 0x01, 0x7d, 0x00, 0x66, 0x00, 0x01, + 0x01, 0x10, 0xfe, 0x5c, 0x03, 0x87, 0x05, 0xd3, 0x00, 0x0f, 0x00, 0x1b, + 0xb2, 0x0f, 0x09, 0x0c, 0xb8, 0x01, 0xe3, 0xb6, 0x08, 0x00, 0x03, 0x08, + 0x6d, 0x00, 0x56, 0x00, 0x3f, 0x3f, 0x01, 0x2f, 0x33, 0x33, 0xed, 0xd4, + 0xc4, 0x31, 0x30, 0x01, 0x26, 0x02, 0x11, 0x34, 0x12, 0x36, 0x36, 0x37, + 0x17, 0x06, 0x02, 0x15, 0x14, 0x12, 0x17, 0x02, 0xf6, 0xf3, 0xf3, 0x48, + 0x83, 0xb5, 0x6c, 0x8b, 0xc3, 0xc4, 0xc4, 0xc3, 0xfe, 0x5c, 0xce, 0x01, + 0xd8, 0x01, 0x10, 0x98, 0x01, 0x0f, 0xee, 0xd1, 0x5b, 0x8b, 0xaf, 0xfe, + 0x6a, 0xe0, 0xe3, 0xfe, 0x5d, 0xad, 0x00, 0x01, 0x00, 0xe5, 0xfe, 0x5c, + 0x03, 0x5a, 0x05, 0xd3, 0x00, 0x0f, 0x00, 0x1c, 0xb9, 0x00, 0x0c, 0x01, + 0xe0, 0x40, 0x09, 0x08, 0x00, 0x03, 0x0f, 0x09, 0x08, 0x56, 0x00, 0x6d, + 0x00, 0x3f, 0x3f, 0x01, 0x2f, 0xc4, 0xd4, 0x32, 0x32, 0xed, 0x31, 0x30, + 0x01, 0x16, 0x12, 0x11, 0x14, 0x02, 0x06, 0x06, 0x07, 0x27, 0x36, 0x12, + 0x35, 0x34, 0x02, 0x27, 0x01, 0x75, 0xf5, 0xf0, 0x48, 0x81, 0xb4, 0x6c, + 0x8c, 0xc4, 0xc4, 0xc4, 0xc4, 0x05, 0xd3, 0xcc, 0xfe, 0x27, 0xfe, 0xef, + 0x98, 0xfe, 0xf2, 0xf0, 0xd1, 0x5a, 0x8b, 0xaf, 0x01, 0x98, 0xe0, 0xe2, + 0x01, 0xa4, 0xae, 0x00, 0xff, 0xff, 0x01, 0x10, 0xfe, 0xc2, 0x03, 0x87, + 0x06, 0x39, 0x02, 0x06, 0x01, 0x7f, 0x00, 0x66, 0xff, 0xff, 0x00, 0xe5, + 0xfe, 0xc2, 0x03, 0x5a, 0x06, 0x39, 0x02, 0x06, 0x01, 0x80, 0x00, 0x66, + 0x00, 0x01, 0x01, 0x31, 0xfe, 0x73, 0x03, 0x3f, 0x05, 0xb2, 0x00, 0x07, + 0x00, 0x1e, 0xb2, 0x03, 0x06, 0x00, 0xb8, 0x01, 0xd5, 0x40, 0x09, 0x05, + 0x05, 0xfa, 0x07, 0x55, 0x04, 0xfa, 0x02, 0x6c, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x01, 0x2f, 0xed, 0xdd, 0xc4, 0x31, 0x30, 0x01, 0x11, 0x21, 0x15, + 0x21, 0x11, 0x21, 0x15, 0x01, 0x31, 0x02, 0x0e, 0xfe, 0xd3, 0x01, 0x2d, + 0xfe, 0x73, 0x07, 0x3f, 0xbe, 0xfa, 0x3d, 0xbe, 0x00, 0x01, 0x01, 0x08, + 0xfe, 0x73, 0x03, 0x14, 0x05, 0xb2, 0x00, 0x07, 0x00, 0x1e, 0xb2, 0x01, + 0x04, 0x06, 0xb8, 0x01, 0xd5, 0x40, 0x09, 0x03, 0x03, 0xfa, 0x05, 0x6c, + 0x02, 0xfa, 0x00, 0x55, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, + 0xdd, 0xc4, 0x31, 0x30, 0x01, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, + 0x01, 0x08, 0x01, 0x2b, 0xfe, 0xd5, 0x02, 0x0c, 0xfe, 0x73, 0xbe, 0x05, + 0xc3, 0xbe, 0xf8, 0xc1, 0xff, 0xff, 0x01, 0x31, 0xfe, 0xd9, 0x03, 0x3f, + 0x06, 0x18, 0x02, 0x06, 0x01, 0x83, 0x00, 0x66, 0xff, 0xff, 0x01, 0x08, + 0xfe, 0xd9, 0x03, 0x14, 0x06, 0x18, 0x02, 0x06, 0x01, 0x84, 0x00, 0x66, + 0x00, 0x01, 0x00, 0x98, 0xfe, 0x73, 0x03, 0x8d, 0x05, 0xb2, 0x00, 0x2e, + 0x00, 0x31, 0xb5, 0x17, 0x2d, 0x26, 0x0f, 0x08, 0x04, 0xb8, 0x01, 0xaf, + 0x40, 0x10, 0x1e, 0x26, 0x23, 0x09, 0xf9, 0x08, 0x08, 0x17, 0x2d, 0xf8, + 0x2e, 0x55, 0x17, 0xf8, 0x16, 0x6c, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0xc4, 0xfd, 0xc6, 0xc4, 0x10, 0xd6, + 0xc4, 0x31, 0x30, 0x01, 0x22, 0x26, 0x35, 0x35, 0x34, 0x26, 0x23, 0x23, + 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, + 0x15, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, + 0x16, 0x15, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x15, 0x03, 0x39, 0xcf, + 0xcc, 0x5c, 0x6b, 0x3f, 0x3f, 0x36, 0x4c, 0x30, 0x15, 0x2f, 0x64, 0x9b, + 0x6d, 0x54, 0x3f, 0x30, 0x4d, 0x38, 0x1e, 0x19, 0x34, 0x50, 0x36, 0x6b, + 0x68, 0x1e, 0x38, 0x4d, 0x30, 0x3f, 0xfe, 0x73, 0xc7, 0xd8, 0xfe, 0x67, + 0x68, 0xbd, 0x17, 0x30, 0x4b, 0x34, 0xb0, 0x67, 0x9c, 0x68, 0x35, 0xbc, + 0x17, 0x34, 0x55, 0x3f, 0xaf, 0x4b, 0x6a, 0x47, 0x27, 0x08, 0x0c, 0x8f, + 0x94, 0xfe, 0x41, 0x56, 0x34, 0x16, 0xbc, 0x00, 0x00, 0x01, 0x00, 0xd9, + 0xfe, 0x73, 0x03, 0xcf, 0x05, 0xb2, 0x00, 0x2e, 0x00, 0x31, 0xb5, 0x2d, + 0x17, 0x1e, 0x09, 0x04, 0x0f, 0xb8, 0x01, 0xaf, 0x40, 0x10, 0x26, 0x1e, + 0x23, 0x08, 0xf9, 0x09, 0x09, 0x16, 0x2d, 0xf8, 0x2e, 0x6c, 0x17, 0xf8, + 0x16, 0x55, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, + 0x01, 0x2f, 0xc4, 0xfd, 0xc4, 0xc6, 0x10, 0xd6, 0xc4, 0x31, 0x30, 0x01, + 0x32, 0x16, 0x15, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x11, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x2d, 0xd0, 0xcc, 0x5b, 0x6b, 0x40, + 0x40, 0x36, 0x4c, 0x2f, 0x15, 0x2f, 0x64, 0x9c, 0x6d, 0x54, 0x40, 0x30, + 0x4d, 0x38, 0x1e, 0x19, 0x33, 0x50, 0x36, 0x6b, 0x67, 0x1e, 0x38, 0x4d, + 0x30, 0x40, 0x05, 0xb2, 0xc7, 0xd9, 0xa8, 0x67, 0x67, 0xbd, 0x17, 0x30, + 0x4b, 0x34, 0xfe, 0xf9, 0x67, 0x9b, 0x68, 0x35, 0xbc, 0x16, 0x35, 0x55, + 0x3f, 0x01, 0x04, 0x4b, 0x6b, 0x47, 0x26, 0x08, 0x0d, 0x8f, 0x94, 0xa7, + 0x41, 0x57, 0x34, 0x16, 0xbc, 0x00, 0xff, 0xff, 0x00, 0x98, 0xfe, 0xd9, + 0x03, 0x8d, 0x06, 0x18, 0x02, 0x06, 0x01, 0x87, 0x00, 0x66, 0xff, 0xff, + 0x00, 0xd9, 0xfe, 0xd9, 0x03, 0xcf, 0x06, 0x18, 0x02, 0x06, 0x01, 0x88, + 0x00, 0x66, 0x00, 0x01, 0x00, 0x87, 0x02, 0x25, 0x03, 0xdf, 0x05, 0x85, + 0x00, 0x11, 0x00, 0x3d, 0xb6, 0x04, 0x06, 0x01, 0x0d, 0x0f, 0x0a, 0x00, + 0xb8, 0x01, 0xa7, 0x40, 0x13, 0x09, 0x01, 0x07, 0x0c, 0x0b, 0x08, 0x02, + 0x11, 0x10, 0x08, 0x11, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x00, 0x09, 0x53, + 0x00, 0x3f, 0xcd, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x32, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, 0xc4, 0xfd, 0xc4, 0xd4, 0xc4, + 0x10, 0xd4, 0xc4, 0x31, 0x30, 0x01, 0x23, 0x13, 0x07, 0x27, 0x25, 0x25, + 0x37, 0x17, 0x03, 0x33, 0x03, 0x37, 0x17, 0x05, 0x05, 0x07, 0x27, 0x02, + 0x9c, 0xd1, 0x1c, 0xfb, 0x65, 0x01, 0x19, 0xfe, 0xe7, 0x65, 0xfb, 0x1c, + 0xd1, 0x1d, 0xfc, 0x64, 0xfe, 0xe8, 0x01, 0x18, 0x64, 0xfc, 0x02, 0x25, + 0x01, 0x35, 0xb4, 0xae, 0x81, 0x81, 0xae, 0xb4, 0x01, 0x35, 0xfe, 0xcb, + 0xb4, 0xae, 0x81, 0x81, 0xae, 0xb4, 0x00, 0x01, 0x00, 0xa0, 0x00, 0xfe, + 0x03, 0xc6, 0x05, 0x85, 0x00, 0x0b, 0x00, 0x26, 0xb2, 0x0b, 0x09, 0x00, + 0xb8, 0x02, 0x09, 0x40, 0x0c, 0x06, 0x04, 0x03, 0x00, 0x04, 0xf6, 0x06, + 0x0a, 0x0a, 0x02, 0x08, 0x53, 0x00, 0x3f, 0xcd, 0x39, 0x2f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0xcd, 0xc4, 0xfd, 0xc4, 0xcd, 0x31, 0x30, 0x01, 0x11, + 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x15, 0x02, 0xaa, + 0xf2, 0xfe, 0xe8, 0x01, 0x18, 0xf2, 0x01, 0x1c, 0x03, 0xc1, 0xfd, 0x3d, + 0x02, 0xc3, 0xba, 0x01, 0x0a, 0xfe, 0xf6, 0xba, 0x00, 0x01, 0x00, 0xa0, + 0x00, 0x00, 0x03, 0xc6, 0x05, 0x85, 0x00, 0x13, 0x00, 0x46, 0xb4, 0x01, + 0x12, 0x10, 0x03, 0x13, 0xb8, 0x02, 0x09, 0x40, 0x1b, 0x0a, 0x08, 0x0b, + 0x0d, 0x06, 0x0a, 0x13, 0x0b, 0xf6, 0x11, 0x0d, 0x11, 0x00, 0x09, 0xf6, + 0x07, 0x03, 0x07, 0x11, 0x07, 0x11, 0x07, 0x05, 0x0e, 0x53, 0x05, 0x51, + 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x10, 0xed, + 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xc4, 0xc4, 0xdd, 0xc4, + 0x10, 0xfd, 0xc4, 0xc4, 0xdd, 0xc4, 0x31, 0x30, 0x01, 0x21, 0x15, 0x21, + 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, + 0x11, 0x21, 0x15, 0x21, 0x02, 0xaa, 0x01, 0x1c, 0xfe, 0xe4, 0xf2, 0xfe, + 0xe8, 0x01, 0x18, 0xfe, 0xe8, 0x01, 0x18, 0xf2, 0x01, 0x1c, 0xfe, 0xe4, + 0x01, 0xd1, 0xba, 0xfe, 0xe9, 0x01, 0x17, 0xba, 0x01, 0xf0, 0xba, 0x01, + 0x0a, 0xfe, 0xf6, 0xba, 0x00, 0x02, 0x00, 0x5a, 0xff, 0x14, 0x04, 0x19, + 0x05, 0x98, 0x00, 0x3f, 0x00, 0x51, 0x00, 0x79, 0xb9, 0x00, 0x12, 0x02, + 0x19, 0x40, 0x09, 0x03, 0x40, 0x03, 0x2c, 0x03, 0x2c, 0x03, 0x3b, 0x4d, + 0xbe, 0x02, 0x19, 0x00, 0x1b, 0x00, 0x3b, 0x02, 0x1a, 0x00, 0x43, 0x00, + 0x32, 0x02, 0x18, 0x40, 0x0a, 0x23, 0x48, 0x23, 0x0c, 0x23, 0x0c, 0x23, + 0x43, 0x1b, 0x2b, 0xba, 0x01, 0x04, 0x00, 0x2c, 0xff, 0xc0, 0x40, 0x11, + 0x11, 0x14, 0x48, 0x2c, 0x2f, 0xf5, 0x12, 0x00, 0x40, 0x48, 0x20, 0x32, + 0x06, 0x08, 0x28, 0x54, 0x0b, 0xb8, 0x01, 0x34, 0xb7, 0x70, 0x0c, 0x01, + 0x0c, 0x0f, 0xf7, 0x08, 0x5c, 0x00, 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x3f, + 0x12, 0x17, 0x39, 0xfd, 0xd6, 0x2b, 0xed, 0x01, 0x2f, 0xc4, 0x39, 0x39, + 0x2f, 0x2f, 0x11, 0x39, 0x10, 0xed, 0x10, 0xed, 0x10, 0xed, 0x11, 0x39, + 0x39, 0x2f, 0x2f, 0x11, 0x39, 0x10, 0xed, 0x31, 0x30, 0x25, 0x16, 0x16, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x06, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, + 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x06, 0x15, 0x14, 0x0e, 0x02, 0x27, + 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x1e, + 0x02, 0x03, 0x68, 0x14, 0x17, 0x4c, 0x7c, 0x9e, 0x52, 0x6d, 0xb1, 0x4e, + 0x5c, 0xb7, 0x51, 0x5e, 0x5e, 0x31, 0x4f, 0x66, 0x69, 0x66, 0x4f, 0x31, + 0x17, 0x2d, 0x44, 0x2c, 0x15, 0x1a, 0x37, 0x6e, 0xa3, 0x6c, 0x5d, 0x91, + 0x39, 0x55, 0x96, 0x4a, 0x48, 0x5c, 0x31, 0x50, 0x66, 0x6a, 0x66, 0x50, + 0x31, 0x1a, 0x2f, 0x41, 0xbc, 0x20, 0x21, 0x44, 0x69, 0x82, 0x3d, 0x11, + 0x1b, 0x14, 0x0a, 0x46, 0x6d, 0x84, 0xe3, 0x18, 0x46, 0x2d, 0x58, 0x7b, + 0x4e, 0x23, 0x15, 0x14, 0xd5, 0x25, 0x1e, 0x3e, 0x30, 0x22, 0x39, 0x37, + 0x37, 0x3e, 0x4a, 0x5b, 0x71, 0x46, 0x28, 0x53, 0x4f, 0x46, 0x1b, 0x22, + 0x4b, 0x2e, 0x40, 0x6f, 0x53, 0x30, 0x15, 0x0c, 0xc9, 0x1a, 0x17, 0x33, + 0x31, 0x20, 0x39, 0x36, 0x38, 0x40, 0x4a, 0x5c, 0x70, 0x45, 0x32, 0x5a, + 0x4e, 0x42, 0x7a, 0x1c, 0x4a, 0x23, 0x32, 0x52, 0x4a, 0x48, 0x29, 0x0c, + 0x21, 0x24, 0x26, 0x12, 0x33, 0x50, 0x4a, 0x48, 0x00, 0x01, 0x00, 0x4a, + 0xff, 0x14, 0x04, 0x14, 0x05, 0x85, 0x00, 0x1d, 0x00, 0x30, 0xb5, 0x08, + 0x08, 0x1d, 0x17, 0x12, 0x1d, 0xb8, 0x01, 0xe2, 0x40, 0x0f, 0x10, 0x12, + 0x12, 0x12, 0x1e, 0x10, 0xfa, 0x1d, 0x53, 0x08, 0x09, 0x0c, 0xff, 0x05, + 0x5c, 0x00, 0x3f, 0xfd, 0xd6, 0xcd, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x01, + 0x2f, 0xd6, 0xed, 0x10, 0xcd, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x25, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x37, 0x16, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x11, 0x23, 0x11, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x21, 0x04, 0x14, 0x42, 0x7a, 0xaf, 0x6c, 0x5e, 0xb4, 0x4c, 0x73, 0x2e, + 0x77, 0x4d, 0x6f, 0x72, 0x83, 0x9b, 0xe2, 0x93, 0x48, 0x49, 0x91, 0xd8, + 0x8f, 0x01, 0x89, 0xd5, 0x72, 0xa9, 0x6f, 0x37, 0x3f, 0x3e, 0xa8, 0x28, + 0x3a, 0x80, 0x7c, 0x03, 0xf4, 0xfd, 0x35, 0x3e, 0x75, 0xa5, 0x68, 0x67, + 0xa9, 0x78, 0x41, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, + 0x05, 0x1b, 0x02, 0x06, 0x00, 0x04, 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, + 0x00, 0x00, 0x04, 0x19, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xc5, 0x00, 0x00, 0x03, 0xe7, 0x05, 0x1b, 0x00, 0x05, + 0x00, 0x1b, 0xb1, 0x05, 0x01, 0xbb, 0x01, 0xf4, 0x00, 0x03, 0x00, 0x01, + 0x01, 0x0c, 0xb3, 0x04, 0x41, 0x03, 0x43, 0x00, 0x3f, 0x3f, 0xed, 0x01, + 0x2f, 0xed, 0xc4, 0x31, 0x30, 0x01, 0x21, 0x11, 0x23, 0x11, 0x21, 0x03, + 0xe7, 0xfd, 0xd3, 0xf5, 0x03, 0x22, 0x04, 0x4a, 0xfb, 0xb6, 0x05, 0x1b, + 0x00, 0x02, 0x00, 0x39, 0x00, 0x00, 0x04, 0x2d, 0x05, 0x1b, 0x00, 0x05, + 0x00, 0x0a, 0x00, 0x44, 0x40, 0x1c, 0x08, 0x02, 0x09, 0x01, 0x03, 0x07, + 0x0a, 0x02, 0x01, 0x04, 0x01, 0x20, 0x07, 0x07, 0x0b, 0x0c, 0x08, 0x06, + 0x07, 0x03, 0x00, 0x03, 0x02, 0x41, 0x0a, 0x04, 0x01, 0x09, 0xb8, 0x01, + 0x12, 0xb1, 0x00, 0x43, 0x00, 0x3f, 0xed, 0x32, 0x32, 0x32, 0x3f, 0x33, + 0x12, 0x17, 0x39, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x1a, 0x18, 0xcd, + 0xcd, 0x11, 0x39, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, + 0x33, 0x35, 0x01, 0x21, 0x01, 0x15, 0x01, 0x0b, 0x02, 0x21, 0x39, 0x01, + 0x58, 0x01, 0x46, 0x01, 0x56, 0xfe, 0x46, 0x48, 0x4a, 0xa6, 0x01, 0xe0, + 0xd3, 0x04, 0x48, 0xfb, 0xb8, 0xd3, 0x03, 0x19, 0x01, 0x02, 0xfe, 0xef, + 0xfd, 0xcf, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, 0x03, 0xcb, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x08, 0x00, 0x00, 0xff, 0xff, 0x00, 0x68, 0x00, 0x00, + 0x03, 0xfe, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x1d, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x5f, 0x00, 0x00, 0x04, 0x07, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x0b, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x21, 0xff, 0xe9, 0x04, 0x46, 0x05, 0x31, + 0x00, 0x11, 0x00, 0x21, 0x00, 0x25, 0x00, 0x3c, 0xb5, 0x25, 0x23, 0x25, + 0x23, 0x12, 0x1a, 0xbb, 0x02, 0x00, 0x00, 0x08, 0x00, 0x00, 0x02, 0x00, + 0xb7, 0x12, 0x08, 0x23, 0xe0, 0x25, 0x25, 0x05, 0x15, 0xb8, 0x01, 0x15, + 0xb2, 0x0d, 0x42, 0x1d, 0xb8, 0x01, 0x15, 0xb1, 0x05, 0x44, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x10, + 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x14, 0x02, 0x06, + 0x06, 0x23, 0x20, 0x00, 0x11, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x05, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x25, 0x21, 0x15, 0x21, 0x04, 0x46, 0x55, 0x92, 0xc5, + 0x6f, 0xfe, 0xfe, 0xfe, 0xf8, 0x55, 0x92, 0xc4, 0x6f, 0x81, 0xc4, 0x83, + 0x43, 0xfe, 0xfe, 0x80, 0x8d, 0x47, 0x67, 0x45, 0x21, 0x82, 0x8e, 0x47, + 0x67, 0x43, 0x20, 0xfe, 0x31, 0x01, 0x7d, 0xfe, 0x83, 0x02, 0x9c, 0xb1, + 0xfe, 0xfb, 0xaa, 0x53, 0x01, 0x55, 0x01, 0x43, 0xb0, 0x01, 0x03, 0xaa, + 0x53, 0x57, 0xa8, 0xf6, 0xb5, 0xe8, 0xe6, 0x3c, 0x74, 0xa7, 0x6b, 0xe9, + 0xe5, 0x3c, 0x73, 0xa7, 0xeb, 0xcb, 0xff, 0xff, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xd0, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x81, 0x00, 0x00, 0x04, 0x42, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, 0x05, 0x1b, + 0x00, 0x08, 0x00, 0x30, 0x40, 0x18, 0x01, 0x04, 0x02, 0x04, 0x06, 0x06, + 0x00, 0x07, 0x00, 0x03, 0x08, 0x06, 0x04, 0x05, 0x03, 0x08, 0x43, 0x03, + 0x43, 0x02, 0x43, 0x01, 0x00, 0x41, 0x00, 0x3f, 0x32, 0x3f, 0x3f, 0x3f, + 0x17, 0x39, 0x01, 0x2f, 0xc4, 0x39, 0x33, 0x11, 0x33, 0x11, 0x33, 0x32, + 0x11, 0x33, 0x31, 0x30, 0x01, 0x21, 0x01, 0x21, 0x0b, 0x03, 0x21, 0x01, + 0x91, 0x01, 0x46, 0x01, 0x8b, 0xfe, 0xea, 0xd9, 0x48, 0x4a, 0xd7, 0xfe, + 0xfa, 0x05, 0x1b, 0xfa, 0xe5, 0x03, 0x12, 0x01, 0x02, 0xfe, 0xf0, 0xfc, + 0xfc, 0x00, 0xff, 0xff, 0x00, 0x2d, 0x00, 0x00, 0x04, 0x39, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x10, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5e, 0x00, 0x00, + 0x04, 0x10, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x11, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x91, 0x00, 0x00, 0x03, 0xd5, 0x05, 0x1b, 0x00, 0x03, 0x00, 0x07, + 0x00, 0x0b, 0x00, 0x38, 0x40, 0x09, 0x04, 0x06, 0x04, 0x06, 0x08, 0x0b, + 0x02, 0x08, 0x05, 0xb8, 0x01, 0x0d, 0xb6, 0xf0, 0x07, 0x01, 0x07, 0x07, + 0x01, 0x0a, 0xb8, 0x01, 0x11, 0xb2, 0x08, 0x43, 0x03, 0xb8, 0x01, 0x11, + 0xb1, 0x01, 0x41, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, + 0xed, 0x01, 0x2f, 0xd4, 0xc4, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, + 0x13, 0x35, 0x21, 0x15, 0x01, 0x35, 0x21, 0x15, 0x01, 0x35, 0x21, 0x15, + 0x9c, 0x03, 0x2f, 0xfd, 0x08, 0x02, 0xc0, 0xfc, 0xfe, 0x03, 0x44, 0x04, + 0x43, 0xd8, 0xd8, 0xfd, 0xf4, 0xd3, 0xd3, 0xfd, 0xc9, 0xd8, 0xd8, 0x00, + 0xff, 0xff, 0x00, 0x25, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x02, 0x06, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x5f, 0x00, 0x00, 0x04, 0x07, + 0x05, 0x1b, 0x00, 0x07, 0x00, 0x24, 0xbc, 0x00, 0x06, 0x01, 0xf5, 0x00, + 0x01, 0x00, 0x02, 0x01, 0xf5, 0xb3, 0x04, 0x07, 0x43, 0x02, 0xb8, 0x01, + 0x0e, 0xb3, 0x05, 0x41, 0x04, 0x43, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x01, + 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, + 0x21, 0x11, 0x03, 0x11, 0xfe, 0x44, 0xf6, 0x03, 0xa8, 0x04, 0x46, 0xfb, + 0xba, 0x05, 0x1b, 0xfa, 0xe5, 0x00, 0xff, 0xff, 0x00, 0x87, 0x00, 0x00, + 0x04, 0x12, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x66, 0x00, 0x00, 0x03, 0xfe, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x3a, + 0x40, 0x0f, 0x0a, 0x06, 0x0b, 0x0b, 0x05, 0x00, 0x05, 0x04, 0x02, 0x09, + 0x06, 0x04, 0x0c, 0x06, 0x0a, 0xb8, 0x01, 0x15, 0xb5, 0x05, 0x03, 0x07, + 0x41, 0x04, 0x00, 0xb8, 0x01, 0x1a, 0xb1, 0x03, 0x43, 0x00, 0x3f, 0xed, + 0x32, 0x3f, 0x12, 0x39, 0xed, 0x32, 0x01, 0x10, 0xd6, 0xc6, 0xd4, 0xc4, + 0x12, 0x39, 0x32, 0x11, 0x33, 0x33, 0x11, 0x33, 0x31, 0x30, 0x25, 0x21, + 0x15, 0x21, 0x35, 0x01, 0x01, 0x35, 0x21, 0x15, 0x21, 0x01, 0x01, 0xa2, + 0x02, 0x5c, 0xfc, 0x68, 0x01, 0x90, 0xfe, 0x85, 0x03, 0x7b, 0xfd, 0xd5, + 0x01, 0x63, 0xe1, 0xe1, 0xcf, 0x01, 0xd6, 0x01, 0xad, 0xc9, 0xdc, 0xfe, + 0x75, 0x00, 0xff, 0xff, 0x00, 0x4f, 0x00, 0x00, 0x04, 0x17, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x17, 0x00, 0x00, 0xff, 0xff, 0x00, 0x0a, 0x00, 0x00, + 0x04, 0x5a, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0xff, 0xac, 0x04, 0x45, 0x05, 0x6f, 0x00, 0x15, 0x00, 0x1c, + 0x00, 0x23, 0x00, 0x24, 0x00, 0x5b, 0xb9, 0x00, 0x16, 0x01, 0xd0, 0xb3, + 0x04, 0x1a, 0x0a, 0x00, 0xb8, 0x01, 0xca, 0xb5, 0x20, 0x0b, 0x0b, 0x25, + 0x26, 0x1d, 0xb8, 0x01, 0xd0, 0xb3, 0x0f, 0x0c, 0x21, 0x19, 0xb8, 0x01, + 0x0c, 0xb4, 0x01, 0x14, 0x01, 0x1a, 0x20, 0xb8, 0x01, 0x0c, 0x40, 0x0d, + 0x0c, 0x09, 0x0c, 0x01, 0x0c, 0x01, 0x0c, 0x15, 0x0a, 0x25, 0x15, 0x24, + 0x41, 0x00, 0x3f, 0xc6, 0x10, 0xc4, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xdd, + 0xed, 0x11, 0x12, 0x39, 0x2f, 0xc4, 0xfd, 0xd4, 0xc4, 0xd4, 0xed, 0x31, + 0x30, 0x01, 0x15, 0x16, 0x12, 0x11, 0x14, 0x0e, 0x02, 0x07, 0x15, 0x23, + 0x35, 0x26, 0x02, 0x11, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x01, 0x34, 0x26, + 0x27, 0x11, 0x36, 0x36, 0x25, 0x14, 0x16, 0x17, 0x11, 0x06, 0x06, 0x01, + 0x02, 0xa8, 0xd0, 0xcd, 0x3d, 0x6d, 0x98, 0x5b, 0xea, 0xd2, 0xcb, 0x3d, + 0x6d, 0x98, 0x5b, 0x01, 0x96, 0x52, 0x5a, 0x5a, 0x52, 0xfd, 0xbe, 0x53, + 0x59, 0x58, 0x54, 0xfe, 0xee, 0x05, 0x6f, 0x71, 0x20, 0xfe, 0xc9, 0xfe, + 0xf5, 0x90, 0xdf, 0x9f, 0x61, 0x12, 0x6f, 0x6f, 0x20, 0x01, 0x38, 0x01, + 0x0e, 0x8e, 0xdc, 0x9f, 0x61, 0x13, 0x71, 0xfd, 0x1a, 0xae, 0xd0, 0x26, + 0xfc, 0xbf, 0x28, 0xd4, 0xae, 0xaf, 0xd3, 0x28, 0x03, 0x41, 0x2a, 0xd2, + 0x01, 0xea, 0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x04, 0x5e, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x27, 0x00, 0x00, + 0x04, 0x3f, 0x05, 0x1b, 0x00, 0x1d, 0x00, 0x47, 0xb9, 0x00, 0x09, 0x01, + 0xc9, 0xb2, 0x08, 0x01, 0x16, 0xb8, 0x01, 0xc9, 0xb2, 0x17, 0x10, 0x00, + 0xb8, 0x01, 0xc6, 0x40, 0x15, 0x0d, 0x01, 0x01, 0x1e, 0x1f, 0x1d, 0x02, + 0xdb, 0x0d, 0x0d, 0x10, 0x10, 0x08, 0x01, 0x16, 0x0e, 0x0e, 0x08, 0x41, + 0x01, 0x43, 0x00, 0x3f, 0x3f, 0x33, 0x11, 0x33, 0x11, 0x12, 0x39, 0x2f, + 0x33, 0x10, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0x33, 0xfd, 0x32, + 0xd4, 0xed, 0x10, 0xd4, 0xed, 0x31, 0x30, 0x21, 0x23, 0x11, 0x2e, 0x03, + 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x17, 0x11, 0x33, 0x11, 0x3e, 0x03, + 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0x07, 0x02, 0xa6, 0xe5, 0x66, + 0x9a, 0x67, 0x33, 0xe9, 0x5f, 0x52, 0xe5, 0x26, 0x41, 0x2f, 0x1a, 0xe9, + 0x3b, 0x6c, 0x97, 0x5b, 0x01, 0x77, 0x08, 0x43, 0x6f, 0x97, 0x5d, 0x01, + 0xf6, 0xfe, 0x18, 0x6f, 0x79, 0x10, 0x02, 0xe0, 0xfd, 0x20, 0x08, 0x26, + 0x40, 0x59, 0x3b, 0x01, 0xde, 0xfe, 0x3b, 0x6c, 0xa8, 0x78, 0x47, 0x0c, + 0x00, 0x01, 0x00, 0x23, 0x00, 0x00, 0x04, 0x43, 0x05, 0x31, 0x00, 0x2f, + 0x00, 0x50, 0xbc, 0x00, 0x19, 0x01, 0xf5, 0x00, 0x15, 0x00, 0x2d, 0x01, + 0xc9, 0xb6, 0x01, 0x15, 0x01, 0x15, 0x01, 0x06, 0x10, 0xb8, 0x02, 0x02, + 0xb2, 0x1e, 0x2e, 0x28, 0xb8, 0x02, 0x04, 0xb5, 0x06, 0x1e, 0x30, 0x2f, + 0x43, 0x0b, 0xb8, 0x01, 0x18, 0x40, 0x0a, 0x23, 0x42, 0x01, 0x15, 0x15, + 0x2d, 0x19, 0xd1, 0x17, 0x43, 0x00, 0x3f, 0xed, 0x32, 0x39, 0x11, 0x33, + 0x3f, 0xed, 0x3f, 0x01, 0x10, 0xd6, 0xd4, 0xfd, 0xc4, 0x10, 0xed, 0x11, + 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x21, 0x35, + 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x17, 0x15, 0x21, 0x35, 0x33, 0x2e, 0x03, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x33, 0x15, + 0x02, 0x7f, 0x36, 0x48, 0x2d, 0x13, 0x1a, 0x3d, 0x64, 0x4b, 0x48, 0x66, + 0x42, 0x1e, 0x0f, 0x2b, 0x4c, 0x3d, 0xfe, 0x37, 0xd3, 0x32, 0x4e, 0x35, + 0x1c, 0x53, 0x90, 0xc3, 0x70, 0x79, 0xc1, 0x86, 0x48, 0x21, 0x3b, 0x50, + 0x2f, 0xdb, 0xaa, 0x25, 0x67, 0x81, 0x98, 0x57, 0x5c, 0x9d, 0x72, 0x41, + 0x3c, 0x6f, 0x9c, 0x5f, 0x58, 0x95, 0x7e, 0x69, 0x2c, 0xac, 0xb4, 0x22, + 0x6a, 0x84, 0x97, 0x4f, 0x9d, 0xf1, 0xa4, 0x55, 0x50, 0x9d, 0xec, 0x9c, + 0x51, 0x9f, 0x8b, 0x6e, 0x1f, 0xb4, 0xff, 0xff, 0xff, 0xc5, 0x00, 0x00, + 0x04, 0xd8, 0x05, 0x9a, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, + 0x01, 0xd9, 0x00, 0xa4, 0x00, 0x00, 0xff, 0xff, 0xff, 0x5e, 0x00, 0x00, + 0x04, 0x71, 0x05, 0x9a, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, + 0x01, 0xd9, 0x3d, 0x00, 0xff, 0xff, 0xff, 0x21, 0x00, 0x00, 0x04, 0x34, + 0x05, 0x9a, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x01, 0xd9, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x35, 0x00, 0x00, 0x04, 0x48, 0x05, 0x9a, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0xd9, 0x14, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, 0x06, 0x9a, 0x02, 0x26, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, + 0xff, 0x3f, 0xff, 0xe9, 0x04, 0x52, 0x05, 0x9a, 0x02, 0x22, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x02, 0x01, 0xd9, 0x1e, 0x00, 0xff, 0xff, 0xfe, 0xf0, + 0x00, 0x00, 0x04, 0x5a, 0x05, 0x9a, 0x02, 0x22, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x02, 0x01, 0xd9, 0xcf, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x5a, 0x06, 0x9a, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, 0xff, 0x4a, 0x00, 0x00, 0x04, 0x5d, + 0x05, 0x9a, 0x02, 0x22, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x02, 0x01, 0xd9, + 0x29, 0x00, 0x00, 0x02, 0x00, 0x2d, 0xff, 0xdc, 0x04, 0x5c, 0x04, 0x0e, + 0x00, 0x1a, 0x00, 0x2b, 0x00, 0x50, 0xbc, 0x00, 0x12, 0x01, 0xdd, 0x00, + 0x11, 0x00, 0x15, 0x02, 0x0f, 0x40, 0x09, 0x1b, 0x00, 0x1b, 0x11, 0x1b, + 0x11, 0x1b, 0x17, 0x23, 0xb8, 0x02, 0x11, 0xb4, 0x08, 0x10, 0x00, 0x12, + 0x17, 0xb8, 0x01, 0x32, 0xb4, 0x18, 0x51, 0x12, 0x4f, 0x1e, 0xb8, 0x01, + 0x31, 0xb2, 0x0d, 0x50, 0x26, 0xb8, 0x01, 0x31, 0xb1, 0x03, 0x52, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x01, 0x2f, + 0xed, 0xc4, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x10, 0xed, 0x10, 0xed, + 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x37, 0x33, 0x03, 0x15, 0x14, 0x16, 0x37, + 0x15, 0x06, 0x26, 0x03, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x03, 0x23, 0x38, 0xa3, 0x69, 0x67, + 0xa1, 0x6f, 0x3b, 0x3e, 0x77, 0xaf, 0x71, 0x74, 0x9f, 0x26, 0x1d, 0xea, + 0x6f, 0x45, 0x44, 0x82, 0x9d, 0x62, 0x71, 0x64, 0x3b, 0x55, 0x36, 0x19, + 0x6e, 0x67, 0x34, 0x53, 0x39, 0x1f, 0x8d, 0x4a, 0x5a, 0x42, 0x83, 0xc5, + 0x83, 0x72, 0xc4, 0x90, 0x52, 0x5d, 0x51, 0x98, 0xfd, 0xe9, 0x0c, 0x8c, + 0x85, 0x0b, 0xd3, 0x20, 0x4e, 0x01, 0xd4, 0x9e, 0xa1, 0x33, 0x57, 0x75, + 0x42, 0x9f, 0xa3, 0x2f, 0x53, 0x70, 0x42, 0x00, 0x00, 0x02, 0x00, 0x8b, + 0xfe, 0x73, 0x04, 0x31, 0x05, 0x9c, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x4e, + 0xb9, 0x00, 0x26, 0x02, 0x0d, 0xb5, 0x15, 0x05, 0x10, 0x10, 0x05, 0x1a, + 0xb8, 0x02, 0x17, 0xb3, 0x37, 0x2d, 0x1f, 0x03, 0xb8, 0x02, 0x0b, 0x40, + 0x16, 0x05, 0x3d, 0x15, 0x20, 0xfa, 0x37, 0x3d, 0x2c, 0x0b, 0x1f, 0x1f, + 0x3d, 0x29, 0xfa, 0x0b, 0x54, 0x04, 0x55, 0x32, 0xfa, 0x00, 0x52, 0x00, + 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x12, 0x39, + 0xed, 0x39, 0x01, 0x10, 0xd6, 0xfd, 0xcc, 0x33, 0xd4, 0xed, 0x11, 0x39, + 0x2f, 0x12, 0x39, 0xed, 0x31, 0x30, 0x05, 0x22, 0x26, 0x27, 0x11, 0x23, + 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x03, 0x35, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x11, 0x1e, 0x03, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x02, 0x50, 0x3c, 0x61, + 0x34, 0xf4, 0x46, 0x76, 0x9e, 0x58, 0x62, 0x9a, 0x6b, 0x39, 0x1c, 0x33, + 0x46, 0x2b, 0x3b, 0x65, 0x4a, 0x2a, 0x3f, 0x7b, 0xb3, 0xe3, 0x3a, 0x35, + 0x4d, 0x32, 0x18, 0x5e, 0x54, 0x5a, 0x5c, 0x14, 0x31, 0x35, 0x33, 0x16, + 0x39, 0x58, 0x3e, 0x20, 0x1f, 0x42, 0x6a, 0x4b, 0x14, 0x13, 0x17, 0xfe, + 0x5d, 0x05, 0x85, 0x6c, 0x9d, 0x69, 0x32, 0x32, 0x5e, 0x82, 0x51, 0x37, + 0x61, 0x4e, 0x35, 0x0c, 0x05, 0x3e, 0x61, 0x79, 0x3f, 0x67, 0xa9, 0x78, + 0x42, 0x02, 0xac, 0xbe, 0x23, 0x3b, 0x4b, 0x28, 0x57, 0x60, 0x77, 0x67, + 0xfc, 0xdd, 0x0b, 0x12, 0x0e, 0x08, 0x24, 0x40, 0x5a, 0x36, 0x36, 0x5c, + 0x43, 0x25, 0x00, 0x03, 0x00, 0x52, 0xff, 0xe9, 0x04, 0x14, 0x05, 0x98, + 0x00, 0x1d, 0x00, 0x31, 0x00, 0x41, 0x00, 0x47, 0xb1, 0x41, 0x29, 0xbb, + 0x02, 0x11, 0x00, 0x0a, 0x00, 0x37, 0x02, 0x10, 0xb3, 0x14, 0x14, 0x0a, + 0x00, 0xb8, 0x02, 0x12, 0x40, 0x0b, 0x1e, 0x0a, 0x42, 0x19, 0x33, 0xfe, + 0x1e, 0x24, 0x24, 0x05, 0x3c, 0xb8, 0x01, 0x0a, 0xb2, 0x0f, 0x54, 0x2d, + 0xb8, 0x01, 0x31, 0xb1, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0x39, 0xed, 0x39, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x11, 0x39, + 0x2f, 0xed, 0x10, 0xfd, 0xc4, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x26, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x07, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x07, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, + 0x02, 0x01, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, + 0x07, 0x04, 0x14, 0x40, 0x7c, 0xb7, 0x78, 0x71, 0xaf, 0x78, 0x3f, 0x42, + 0x84, 0xc4, 0x82, 0x51, 0x81, 0x5a, 0x30, 0x21, 0x38, 0x4a, 0x29, 0x34, + 0x69, 0x54, 0x35, 0xfb, 0x1c, 0x37, 0x50, 0x34, 0x1f, 0x3a, 0x20, 0x7d, + 0x1f, 0x3c, 0x57, 0x37, 0x3a, 0x55, 0x39, 0x1c, 0xfe, 0xb8, 0x4b, 0x5d, + 0x35, 0x13, 0x0f, 0x1e, 0x2c, 0x1c, 0x35, 0x51, 0x3b, 0x26, 0x0b, 0x01, + 0xfa, 0x71, 0xc1, 0x8e, 0x51, 0x4d, 0xa9, 0x01, 0x0e, 0xc1, 0xaa, 0x01, + 0x13, 0xc3, 0x6a, 0x25, 0x48, 0x6a, 0x44, 0x28, 0x53, 0x48, 0x36, 0x0b, + 0x09, 0x32, 0x5c, 0x89, 0x6b, 0x3b, 0x62, 0x47, 0x28, 0x09, 0x08, 0x1e, + 0x15, 0x8d, 0xc2, 0x78, 0x35, 0x33, 0x55, 0x6f, 0x01, 0xf9, 0x12, 0x2d, + 0x30, 0x30, 0x15, 0x13, 0x26, 0x1f, 0x13, 0x2d, 0x53, 0x74, 0x48, 0x00, + 0x00, 0x01, 0x00, 0x29, 0xfe, 0x73, 0x04, 0x0e, 0x04, 0x0b, 0x00, 0x2d, + 0x00, 0x49, 0xb1, 0x00, 0x0d, 0xbb, 0x02, 0x0a, 0x00, 0x0e, 0x00, 0x27, + 0x01, 0xaa, 0xb6, 0x16, 0x0e, 0x16, 0x0e, 0x16, 0x1d, 0x04, 0xb8, 0x02, + 0x08, 0xb5, 0x02, 0x1e, 0x2e, 0x1d, 0x1e, 0x1b, 0xb8, 0x01, 0x33, 0x40, + 0x0a, 0x1f, 0x22, 0x50, 0x00, 0x09, 0x04, 0x0e, 0x55, 0x04, 0x4f, 0x00, + 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x3f, 0xc5, 0xfd, 0xc6, 0x01, 0x2f, 0x10, + 0xd6, 0xd4, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, + 0x32, 0x31, 0x30, 0x25, 0x36, 0x12, 0x27, 0x33, 0x14, 0x0a, 0x02, 0x07, + 0x16, 0x16, 0x15, 0x15, 0x23, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x05, + 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x04, 0x17, + 0x1e, 0x03, 0x02, 0x46, 0x78, 0x5f, 0x0b, 0xfc, 0x2e, 0x61, 0x94, 0x66, + 0x04, 0x06, 0xf3, 0x08, 0x19, 0x2d, 0x25, 0x1e, 0x2f, 0x27, 0x21, 0x1e, + 0x1e, 0x10, 0x07, 0x12, 0x06, 0x1c, 0x38, 0x12, 0x2c, 0x49, 0x3e, 0x38, + 0x39, 0x3c, 0x23, 0x08, 0x11, 0x0e, 0x0b, 0xce, 0xcb, 0x01, 0x98, 0xc7, + 0x96, 0xfe, 0xf2, 0xfe, 0xfc, 0xfe, 0xfd, 0x8b, 0x3a, 0x81, 0x48, 0x4c, + 0x42, 0x4a, 0x9e, 0xb1, 0xca, 0x77, 0x64, 0x8d, 0x5e, 0x36, 0x1c, 0x07, + 0x02, 0x02, 0xc6, 0x09, 0x09, 0x0e, 0x2b, 0x4d, 0x7d, 0xb4, 0x7d, 0x1d, + 0x45, 0x47, 0x44, 0x00, 0x00, 0x02, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x12, + 0x05, 0x9a, 0x00, 0x29, 0x00, 0x3a, 0x00, 0x49, 0xb3, 0x0c, 0x0c, 0x03, + 0x1b, 0xb8, 0x02, 0x15, 0xb6, 0x37, 0x00, 0x2a, 0x03, 0x03, 0x37, 0x2f, + 0xb8, 0x02, 0x15, 0x40, 0x09, 0x25, 0x3b, 0x2a, 0x00, 0x15, 0x03, 0x08, + 0x3b, 0x32, 0xb8, 0x01, 0x32, 0xb2, 0x20, 0x52, 0x0b, 0xb8, 0x01, 0x07, + 0xb4, 0x0c, 0x0f, 0xfd, 0x08, 0x54, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, + 0xed, 0x11, 0x12, 0x17, 0x39, 0x01, 0x10, 0xd6, 0xed, 0xc4, 0x39, 0x2f, + 0x39, 0x39, 0x10, 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x26, 0x26, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, + 0x22, 0x06, 0x15, 0x14, 0x16, 0x17, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x17, 0x0e, 0x03, + 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, 0x01, + 0x82, 0x27, 0x34, 0x31, 0x60, 0x8f, 0x5f, 0x35, 0x93, 0x42, 0x51, 0x98, + 0x31, 0x40, 0x31, 0x28, 0x23, 0x9a, 0x4b, 0x66, 0x3d, 0x1a, 0x44, 0x80, + 0xb7, 0x73, 0x71, 0xb0, 0x7b, 0x40, 0x2b, 0x51, 0x74, 0xed, 0x38, 0x53, + 0x35, 0x1f, 0x7b, 0x6e, 0x38, 0x56, 0x3a, 0x1d, 0x4e, 0x4d, 0x03, 0xd5, + 0x26, 0x60, 0x3c, 0x39, 0x5f, 0x45, 0x26, 0x0e, 0x0f, 0xcc, 0x14, 0x14, + 0x1f, 0x1e, 0x1a, 0x2d, 0x1a, 0x77, 0x3b, 0x77, 0x78, 0x76, 0x38, 0x74, + 0xbc, 0x89, 0x4a, 0x40, 0x7d, 0xb7, 0x78, 0x5a, 0x9d, 0x82, 0x65, 0x6e, + 0x12, 0x3d, 0x54, 0x72, 0x4b, 0x88, 0xa1, 0x2e, 0x4f, 0x69, 0x3b, 0x55, + 0x95, 0x3c, 0x00, 0x01, 0x00, 0x64, 0xff, 0xe9, 0x03, 0xf2, 0x04, 0x0e, + 0x00, 0x36, 0x00, 0x58, 0xb9, 0x00, 0x0a, 0x02, 0x12, 0x40, 0x09, 0x2e, + 0x11, 0x00, 0x00, 0x11, 0x2e, 0x03, 0x1d, 0x17, 0xb8, 0x02, 0x19, 0x40, + 0x11, 0x24, 0x37, 0x29, 0x0f, 0xcc, 0x1f, 0x12, 0x2f, 0x12, 0x02, 0x12, + 0x12, 0x37, 0x33, 0x36, 0xfb, 0x00, 0xb8, 0xff, 0xc0, 0x40, 0x0f, 0x14, + 0x19, 0x48, 0x00, 0x05, 0xf3, 0x33, 0x50, 0x1e, 0xfd, 0x1d, 0x1a, 0xf5, + 0x21, 0x52, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0xfd, 0xd6, 0x2b, 0xed, + 0x11, 0x12, 0x39, 0x2f, 0x71, 0xed, 0x39, 0x01, 0x10, 0xd6, 0xed, 0xc4, + 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x2e, 0x03, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x15, 0x23, 0x0e, + 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x20, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x03, 0xd8, 0x20, 0x4f, 0x57, 0x61, 0x32, + 0x44, 0x5b, 0x36, 0x17, 0x1c, 0x39, 0x5c, 0x40, 0xe8, 0xf8, 0x53, 0x63, + 0x3d, 0x19, 0x88, 0x95, 0x55, 0xb8, 0x60, 0x5b, 0xc0, 0x66, 0xfe, 0xf1, + 0xfe, 0x1f, 0x3e, 0x5b, 0x3c, 0x2c, 0x47, 0x32, 0x1b, 0x36, 0x77, 0xbd, + 0x87, 0x5f, 0xa5, 0x4b, 0x03, 0x31, 0x06, 0x0e, 0x0b, 0x08, 0x0f, 0x1f, + 0x2a, 0x19, 0x1b, 0x33, 0x25, 0x13, 0xae, 0x01, 0x0e, 0x21, 0x30, 0x1e, + 0x40, 0x53, 0x1a, 0x1a, 0xc1, 0x15, 0x17, 0xa0, 0x96, 0x2f, 0x53, 0x3f, + 0x2c, 0x08, 0x06, 0x25, 0x37, 0x46, 0x29, 0x46, 0x6e, 0x4d, 0x28, 0x10, + 0x0e, 0x00, 0x00, 0x01, 0x00, 0x7b, 0xfe, 0x91, 0x03, 0xf0, 0x05, 0x85, + 0x00, 0x2a, 0x00, 0x48, 0xb9, 0x00, 0x27, 0x01, 0xe3, 0xb2, 0x28, 0x00, + 0x11, 0xbb, 0x02, 0x48, 0x00, 0x15, 0x00, 0x24, 0x02, 0x13, 0xb6, 0x00, + 0x12, 0x12, 0x00, 0x0a, 0x2b, 0x20, 0xb8, 0x01, 0x38, 0x40, 0x09, 0x1a, + 0x0a, 0x04, 0x04, 0x13, 0x28, 0x55, 0x15, 0x11, 0xb8, 0x01, 0x00, 0xb1, + 0x13, 0x53, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x2f, 0x39, 0x39, + 0xed, 0x01, 0x10, 0xd6, 0xc4, 0x39, 0x2f, 0x10, 0xfd, 0xd4, 0xed, 0x10, + 0xd6, 0xed, 0x31, 0x30, 0x05, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, + 0x34, 0x3e, 0x04, 0x37, 0x21, 0x35, 0x21, 0x15, 0x0e, 0x03, 0x15, 0x14, + 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, 0x23, 0x36, 0x36, + 0x02, 0xf4, 0x0e, 0x27, 0x45, 0x38, 0x75, 0xab, 0x71, 0x36, 0x33, 0x51, + 0x64, 0x71, 0x70, 0x34, 0xfe, 0x38, 0x03, 0x38, 0x9e, 0xe7, 0x98, 0x4a, + 0x21, 0x45, 0x6b, 0x4a, 0x61, 0x83, 0x4f, 0x21, 0x30, 0x2a, 0xf0, 0x28, + 0x26, 0x9c, 0x1c, 0x28, 0x1e, 0x18, 0x0b, 0x18, 0x4a, 0x70, 0x9d, 0x6b, + 0x58, 0xa0, 0x90, 0x80, 0x70, 0x5f, 0x27, 0xc4, 0xaa, 0x76, 0xd3, 0xc1, + 0xb0, 0x52, 0x41, 0x55, 0x38, 0x24, 0x10, 0x15, 0x3d, 0x52, 0x67, 0x3f, + 0x3f, 0x7b, 0x38, 0x45, 0x61, 0x00, 0x00, 0x01, 0x00, 0x79, 0xfe, 0x73, + 0x03, 0xe2, 0x04, 0x0e, 0x00, 0x1d, 0x00, 0x39, 0xb9, 0x00, 0x10, 0x01, + 0xa7, 0xb2, 0x11, 0x12, 0x08, 0xbb, 0x02, 0x0b, 0x00, 0x0a, 0x00, 0x1c, + 0x02, 0x0b, 0xb5, 0x01, 0x0a, 0x1e, 0x12, 0x0a, 0x03, 0xb8, 0x01, 0x31, + 0xb7, 0x17, 0x50, 0x11, 0x4f, 0x0a, 0x51, 0x00, 0x55, 0x00, 0x3f, 0x3f, + 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x10, 0xfd, + 0x32, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x11, 0x34, 0x23, 0x22, 0x0e, 0x02, + 0x07, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x02, 0x27, 0x33, 0x17, 0x3e, 0x03, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x02, 0xee, 0x7a, 0x1c, 0x37, 0x3b, + 0x3f, 0x23, 0xf4, 0x03, 0x06, 0x09, 0x05, 0xd1, 0x14, 0x2b, 0x48, 0x4e, + 0x59, 0x35, 0x4d, 0x74, 0x4d, 0x27, 0xfe, 0x73, 0x04, 0x23, 0xa7, 0x15, + 0x2d, 0x47, 0x31, 0xfd, 0x7d, 0x02, 0x0f, 0x27, 0x69, 0x7e, 0x8f, 0x4c, + 0xa4, 0x37, 0x42, 0x2b, 0x16, 0x33, 0x5d, 0x83, 0x51, 0xfb, 0xc9, 0x00, + 0x00, 0x03, 0x00, 0x52, 0xff, 0xe9, 0x04, 0x14, 0x05, 0x98, 0x00, 0x13, + 0x00, 0x1c, 0x00, 0x25, 0x00, 0x38, 0xb1, 0x14, 0x00, 0xb8, 0x02, 0x14, + 0xb3, 0x25, 0x0a, 0x1c, 0x1d, 0xb8, 0x02, 0x15, 0xb7, 0x0a, 0x26, 0x14, + 0xfa, 0x1d, 0x1d, 0x05, 0x19, 0xb8, 0x01, 0x31, 0xb2, 0x0f, 0x54, 0x22, + 0xb8, 0x01, 0x31, 0xb1, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xfd, 0xc4, 0x10, 0xdd, 0xed, 0xc4, + 0x31, 0x30, 0x01, 0x14, 0x02, 0x06, 0x06, 0x23, 0x22, 0x26, 0x26, 0x02, + 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x16, 0x16, 0x12, 0x07, 0x2e, + 0x03, 0x23, 0x22, 0x06, 0x07, 0x15, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, + 0x04, 0x14, 0x40, 0x7d, 0xb7, 0x77, 0x71, 0xaf, 0x78, 0x3f, 0x41, 0x7e, + 0xb7, 0x75, 0x72, 0xb0, 0x77, 0x3e, 0xfd, 0x05, 0x20, 0x38, 0x51, 0x34, + 0x6a, 0x6f, 0x0c, 0x04, 0x22, 0x3a, 0x52, 0x33, 0x6a, 0x6e, 0x0a, 0x02, + 0xcd, 0xa8, 0xfe, 0xee, 0xc1, 0x69, 0x50, 0xad, 0x01, 0x11, 0xc1, 0xaa, + 0x01, 0x10, 0xbf, 0x67, 0x52, 0xad, 0xfe, 0xf1, 0x5f, 0x72, 0x9d, 0x61, + 0x2c, 0xd3, 0xc9, 0xbe, 0x79, 0xa6, 0x67, 0x2d, 0xdc, 0xd7, 0x00, 0x02, + 0x00, 0x52, 0xff, 0xe9, 0x04, 0x66, 0x05, 0x9c, 0x00, 0x2f, 0x00, 0x3d, + 0x00, 0x4e, 0xb9, 0x00, 0x34, 0x02, 0x0d, 0xb5, 0x15, 0x15, 0x00, 0x21, + 0x1f, 0x26, 0xb8, 0x02, 0x11, 0xb2, 0x39, 0x0b, 0x03, 0xb8, 0x02, 0x11, + 0xb6, 0x00, 0x3e, 0x00, 0x00, 0x20, 0x3e, 0x07, 0xb8, 0x01, 0x31, 0x40, + 0x09, 0x2a, 0x52, 0x0f, 0x21, 0xfa, 0x39, 0x20, 0x4f, 0x30, 0xb8, 0x01, + 0x06, 0xb1, 0x1a, 0x54, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0xed, 0x11, 0x12, 0x39, 0x2f, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0x32, 0xfd, + 0x32, 0xc6, 0x11, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x13, 0x33, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x33, + 0x15, 0x23, 0x14, 0x14, 0x15, 0x14, 0x02, 0x06, 0x06, 0x23, 0x22, 0x26, + 0x26, 0x02, 0x35, 0x01, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, + 0x2e, 0x03, 0x52, 0xfa, 0x20, 0x3b, 0x50, 0x30, 0x39, 0x55, 0x38, 0x1b, + 0x01, 0x01, 0x3d, 0xb5, 0xc1, 0x74, 0x2f, 0x35, 0x64, 0x90, 0x5c, 0x51, + 0x90, 0x73, 0x52, 0x13, 0x78, 0x64, 0x3e, 0x79, 0xb6, 0x78, 0x73, 0xac, + 0x73, 0x39, 0x01, 0xd5, 0x3b, 0x46, 0x16, 0x37, 0x5f, 0x77, 0x2a, 0x08, + 0x21, 0x32, 0x45, 0x03, 0x10, 0x43, 0x9f, 0xce, 0x77, 0x2f, 0x3f, 0x8b, + 0xdc, 0x9c, 0x0f, 0x23, 0x0c, 0x2f, 0x51, 0x6a, 0x3c, 0x3e, 0x73, 0x57, + 0x34, 0x2c, 0x64, 0xa0, 0x74, 0xbe, 0x09, 0x15, 0x0b, 0xc3, 0xfe, 0xd3, + 0xcd, 0x6b, 0x54, 0xb1, 0x01, 0x11, 0xbd, 0x02, 0x15, 0x37, 0x2d, 0x1b, + 0x2b, 0x1e, 0x11, 0x30, 0x50, 0x39, 0x20, 0x00, 0x00, 0x01, 0x00, 0x7b, + 0xff, 0xe9, 0x03, 0xec, 0x03, 0xf8, 0x00, 0x13, 0x00, 0x2a, 0xb1, 0x08, + 0x0a, 0xb8, 0x02, 0x11, 0x40, 0x10, 0x13, 0x06, 0x06, 0x14, 0x15, 0x0b, + 0x03, 0x07, 0xf2, 0x09, 0x4f, 0x13, 0x10, 0xfb, 0x03, 0x52, 0x00, 0x3f, + 0xfd, 0xc6, 0x3f, 0xed, 0x12, 0x39, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xc4, + 0xfd, 0xcd, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, + 0x21, 0x35, 0x21, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, + 0xec, 0x2d, 0x6a, 0x34, 0xbc, 0xb1, 0xfe, 0xc7, 0x02, 0x33, 0x10, 0x25, + 0x3b, 0x2a, 0x26, 0x55, 0x29, 0x04, 0x0b, 0x10, 0xb1, 0xa3, 0x02, 0x07, + 0xb4, 0xfd, 0x5c, 0x2f, 0x41, 0x29, 0x13, 0x0f, 0x0e, 0x00, 0x00, 0x01, + 0x00, 0x96, 0x00, 0x00, 0x04, 0x3d, 0x03, 0xf8, 0x00, 0x0a, 0x00, 0x3e, + 0x40, 0x0c, 0x09, 0x06, 0x07, 0x08, 0x08, 0x03, 0x0a, 0x09, 0x0a, 0x00, + 0x06, 0x01, 0xb8, 0x01, 0xe2, 0x40, 0x10, 0x00, 0x03, 0x0b, 0x0a, 0x51, + 0x08, 0x4f, 0x06, 0x01, 0x03, 0x04, 0x4f, 0x03, 0x51, 0x00, 0x51, 0x00, + 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x3f, 0x3f, 0x01, 0x10, 0xd6, 0xc4, + 0xed, 0x32, 0x11, 0x33, 0x32, 0x11, 0x12, 0x39, 0x2f, 0x33, 0x11, 0x33, + 0x31, 0x30, 0x21, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, 0x21, 0x01, + 0x01, 0x03, 0x04, 0xfe, 0x81, 0xef, 0xef, 0x01, 0x69, 0x01, 0x2d, 0xfe, + 0x64, 0x01, 0xbe, 0x01, 0xfc, 0xfe, 0x04, 0x03, 0xf8, 0xfe, 0x52, 0x01, + 0xae, 0xfe, 0x31, 0xfd, 0xd7, 0x00, 0x00, 0x01, 0x00, 0x0e, 0xff, 0xee, + 0x04, 0x4c, 0x05, 0x98, 0x00, 0x27, 0x00, 0x4c, 0x40, 0x23, 0x24, 0x27, + 0x25, 0x26, 0x20, 0x13, 0x20, 0x10, 0x02, 0x02, 0x27, 0x28, 0x20, 0x29, + 0x23, 0x23, 0x28, 0x29, 0x26, 0x51, 0x10, 0x02, 0x27, 0x23, 0x24, 0x13, + 0x20, 0x07, 0x0c, 0x15, 0xf7, 0x19, 0x51, 0x08, 0x05, 0xb8, 0x01, 0x31, + 0xb1, 0x0c, 0x54, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0xed, 0x12, 0x17, 0x39, + 0x3f, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x12, 0x39, 0x12, 0x39, 0x39, + 0x11, 0x33, 0x11, 0x33, 0x1a, 0x18, 0xcd, 0x32, 0x11, 0x33, 0x31, 0x30, + 0x01, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x17, 0x01, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x03, 0x27, 0x07, 0x03, 0x21, 0x01, + 0x01, 0xc0, 0x12, 0x25, 0x2a, 0x2f, 0x1d, 0x1e, 0x51, 0x1f, 0x2b, 0x60, + 0x21, 0x47, 0x70, 0x5c, 0x4e, 0x25, 0x01, 0x13, 0x15, 0x25, 0x20, 0x08, + 0x18, 0x08, 0x2a, 0x38, 0x1e, 0x2f, 0x43, 0x33, 0x2a, 0x15, 0x84, 0x2f, + 0x37, 0xe5, 0xfe, 0xf5, 0x01, 0xb9, 0x04, 0x2b, 0x32, 0x3d, 0x22, 0x0b, + 0x0c, 0x08, 0xcc, 0x0c, 0x0d, 0x1a, 0x4a, 0x84, 0x69, 0xfc, 0xde, 0x3d, + 0x2c, 0x02, 0x02, 0xbf, 0x0b, 0x08, 0x15, 0x32, 0x54, 0x3e, 0x01, 0x87, + 0x97, 0x97, 0xfd, 0xb2, 0x04, 0x17, 0x00, 0x01, 0x00, 0x87, 0xfe, 0x73, + 0x04, 0x3b, 0x03, 0xf8, 0x00, 0x22, 0x00, 0x4a, 0xb3, 0x19, 0x07, 0x10, + 0x0a, 0xb8, 0x02, 0x0b, 0xb5, 0x07, 0x21, 0x1e, 0x21, 0x1f, 0x01, 0xb8, + 0x02, 0x0b, 0x40, 0x0a, 0x21, 0x23, 0x19, 0x09, 0x23, 0x22, 0x4f, 0x21, + 0x55, 0x04, 0xb8, 0x01, 0x31, 0xb2, 0x1b, 0x52, 0x0e, 0xb8, 0x01, 0x30, + 0xb5, 0x14, 0x52, 0x11, 0x51, 0x09, 0x4f, 0x00, 0x3f, 0x3f, 0x3f, 0xed, + 0x3f, 0xed, 0x3f, 0x3f, 0x11, 0x12, 0x39, 0x01, 0x10, 0xd6, 0xfd, 0xc0, + 0x12, 0x39, 0x10, 0xd4, 0xfd, 0xc6, 0x12, 0x39, 0x31, 0x30, 0x01, 0x11, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, + 0x33, 0x33, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x06, 0x23, + 0x22, 0x26, 0x27, 0x17, 0x15, 0x23, 0x11, 0x01, 0x7b, 0x3a, 0x41, 0x33, + 0x70, 0x42, 0xf4, 0x05, 0x11, 0x1e, 0x1a, 0x1e, 0x29, 0x3a, 0x22, 0x2f, + 0x43, 0x2e, 0x1b, 0x07, 0x79, 0x91, 0x29, 0x44, 0x12, 0x10, 0xf4, 0x03, + 0xf8, 0xfd, 0x6c, 0x52, 0x58, 0x65, 0x60, 0x02, 0x79, 0xfd, 0x54, 0x24, + 0x36, 0x24, 0x12, 0xbc, 0x0b, 0x09, 0x15, 0x2a, 0x3f, 0x29, 0xaa, 0x19, + 0x14, 0xc6, 0xdd, 0x05, 0x85, 0x00, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, + 0x04, 0x29, 0x03, 0xf8, 0x00, 0x0d, 0x00, 0x3b, 0xb7, 0x06, 0x09, 0x08, + 0x09, 0x07, 0x0a, 0x20, 0x0d, 0xb8, 0x02, 0x1b, 0x40, 0x11, 0x40, 0x00, + 0x20, 0x05, 0x0a, 0x0a, 0x0f, 0x0e, 0x09, 0x0a, 0x06, 0x07, 0x4f, 0x06, + 0x51, 0x00, 0x4f, 0x00, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x11, 0x12, + 0x01, 0x39, 0x19, 0x2f, 0x33, 0x1a, 0x18, 0xdd, 0x1a, 0xed, 0x1a, 0x10, + 0xcd, 0x33, 0x32, 0x11, 0x33, 0x31, 0x30, 0x01, 0x06, 0x02, 0x06, 0x06, + 0x07, 0x23, 0x01, 0x21, 0x13, 0x17, 0x36, 0x12, 0x37, 0x04, 0x29, 0x15, + 0x4d, 0x69, 0x82, 0x4b, 0xef, 0xfe, 0x79, 0x01, 0x10, 0xcd, 0x3d, 0x5a, + 0x7b, 0x19, 0x03, 0xf8, 0x86, 0xfe, 0xf9, 0xff, 0xf7, 0x75, 0x03, 0xf8, + 0xfd, 0xbc, 0xba, 0xaa, 0x01, 0x84, 0xd0, 0x00, 0x00, 0x01, 0x00, 0x7f, + 0xfe, 0x91, 0x04, 0x02, 0x05, 0x85, 0x00, 0x3c, 0x00, 0x77, 0xb9, 0x00, + 0x05, 0x02, 0x15, 0x40, 0x10, 0x35, 0x30, 0x38, 0x0a, 0x35, 0x3c, 0x0a, + 0x35, 0x39, 0x39, 0x35, 0x0a, 0x3c, 0x04, 0x2b, 0x1a, 0xbb, 0x02, 0x13, + 0x00, 0x21, 0x00, 0x10, 0x02, 0x18, 0xb6, 0x2b, 0x3d, 0x30, 0x09, 0xfb, + 0x0a, 0x15, 0xb8, 0x01, 0x03, 0x40, 0x14, 0x27, 0x05, 0x35, 0x3a, 0x10, + 0x2b, 0x0a, 0x1a, 0x21, 0x27, 0x5f, 0x0a, 0x01, 0x0a, 0x27, 0x0a, 0x27, + 0x1e, 0x38, 0x01, 0xb8, 0x01, 0x00, 0xb3, 0x3a, 0x53, 0x1e, 0x55, 0x00, + 0x3f, 0x3f, 0xed, 0x32, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x11, 0x39, + 0x39, 0x12, 0x39, 0x39, 0x11, 0x39, 0x39, 0x10, 0xed, 0x10, 0xed, 0x39, + 0x01, 0x10, 0xd6, 0xfd, 0xd4, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, + 0x2f, 0x11, 0x12, 0x39, 0x39, 0x10, 0xed, 0x31, 0x30, 0x01, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x16, 0x33, 0x33, 0x15, 0x21, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, 0x23, 0x36, + 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, + 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, 0x23, 0x35, 0x21, 0x15, 0x03, + 0x31, 0x6f, 0x8e, 0x53, 0x20, 0x6c, 0x75, 0xf6, 0xfe, 0xf1, 0x44, 0x63, + 0x41, 0x20, 0x17, 0x42, 0x75, 0x5f, 0x61, 0x83, 0x4f, 0x21, 0x30, 0x2a, + 0xf0, 0x29, 0x25, 0x0e, 0x27, 0x45, 0x38, 0x87, 0xb4, 0x6d, 0x2d, 0x25, + 0x3f, 0x53, 0x2e, 0x2d, 0x3e, 0x25, 0x11, 0x48, 0x3f, 0x9e, 0x03, 0x1b, + 0x04, 0xc1, 0x2a, 0x40, 0x4f, 0x25, 0x48, 0x59, 0xbf, 0x23, 0x3a, 0x4e, + 0x2a, 0x2a, 0x41, 0x35, 0x2c, 0x15, 0x15, 0x3d, 0x52, 0x67, 0x3f, 0x3f, + 0x7b, 0x38, 0x45, 0x61, 0x2d, 0x1c, 0x28, 0x1e, 0x18, 0x0b, 0x1c, 0x4b, + 0x69, 0x8b, 0x5c, 0x3d, 0x69, 0x54, 0x3c, 0x11, 0x0b, 0x31, 0x41, 0x4b, + 0x24, 0x4a, 0x7d, 0x27, 0xc4, 0xc4, 0xff, 0xff, 0x00, 0x48, 0xff, 0xe9, + 0x04, 0x1e, 0x04, 0x0e, 0x02, 0x06, 0x00, 0x91, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x1f, 0xff, 0xec, 0x04, 0x43, 0x03, 0xf8, 0x00, 0x21, 0x00, 0x44, + 0xbc, 0x00, 0x0c, 0x01, 0xdc, 0x00, 0x11, 0x00, 0x18, 0x02, 0x09, 0x40, + 0x11, 0x09, 0x0f, 0x11, 0x09, 0x09, 0x11, 0x0f, 0x03, 0x13, 0x21, 0x15, + 0x13, 0x22, 0x17, 0x17, 0x12, 0x0b, 0xb8, 0x01, 0x01, 0xb7, 0x14, 0x4f, + 0x0f, 0x51, 0x21, 0xf2, 0x00, 0x51, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, + 0x32, 0x32, 0x2f, 0x01, 0x10, 0xd6, 0xdd, 0xc6, 0x12, 0x17, 0x39, 0x2f, + 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x05, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x04, 0x11, 0x23, 0x14, 0x02, 0x07, 0x23, 0x36, 0x12, 0x35, + 0x23, 0x35, 0x21, 0x15, 0x23, 0x14, 0x14, 0x1e, 0x03, 0x33, 0x32, 0x36, + 0x37, 0x04, 0x43, 0x18, 0x43, 0x22, 0x31, 0x5d, 0x52, 0x37, 0x1c, 0x04, + 0xf9, 0x27, 0x4b, 0xfd, 0x4d, 0x39, 0x8e, 0x04, 0x16, 0xb4, 0x08, 0x13, + 0x1f, 0x26, 0x14, 0x12, 0x28, 0x14, 0x06, 0x06, 0x08, 0x0e, 0x32, 0x61, + 0x9d, 0xc6, 0x01, 0x43, 0xea, 0xfe, 0x75, 0xbe, 0xbd, 0x01, 0x8b, 0xeb, + 0xc5, 0xc5, 0xf0, 0x85, 0x8c, 0x5c, 0x24, 0x0a, 0x03, 0x03, 0x00, 0x02, + 0x00, 0x89, 0xfe, 0x73, 0x04, 0x1b, 0x04, 0x0e, 0x00, 0x14, 0x00, 0x25, + 0x00, 0x34, 0xb1, 0x09, 0x1d, 0xbb, 0x02, 0x0b, 0x00, 0x0b, 0x00, 0x00, + 0x02, 0x15, 0xb5, 0x15, 0x0b, 0x26, 0x08, 0x09, 0x1a, 0xb8, 0x01, 0x09, + 0xb4, 0x10, 0x50, 0x09, 0x55, 0x21, 0xb8, 0x01, 0x09, 0xb1, 0x05, 0x52, + 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x01, 0x10, 0xd6, 0xd4, + 0xed, 0x10, 0xfd, 0xc4, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x07, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x11, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x04, 0x1b, 0x4b, 0x7f, 0xaa, 0x5f, 0x2e, 0x7d, 0x20, + 0xf4, 0x36, 0x71, 0xb1, 0x7b, 0x74, 0xa9, 0x6d, 0x35, 0xfe, 0x1a, 0x35, + 0x4e, 0x34, 0x64, 0x6b, 0x29, 0x64, 0x39, 0x2a, 0x4f, 0x3d, 0x24, 0x02, + 0x10, 0x8d, 0xd0, 0x87, 0x42, 0x1a, 0x13, 0xfe, 0x5c, 0x03, 0x93, 0x74, + 0xbf, 0x89, 0x4c, 0x48, 0x85, 0xbd, 0x7e, 0x48, 0x73, 0x53, 0x2c, 0x8d, + 0x98, 0xfe, 0xcf, 0x16, 0x1c, 0x24, 0x50, 0x7f, 0x00, 0x02, 0x00, 0x42, + 0xff, 0xe9, 0x04, 0x56, 0x04, 0x0e, 0x00, 0x1e, 0x00, 0x33, 0x00, 0x4a, + 0xb9, 0x00, 0x1f, 0x02, 0x15, 0xb6, 0x22, 0x14, 0x00, 0x00, 0x0f, 0x1a, + 0x05, 0xbb, 0x02, 0x13, 0x00, 0x2f, 0x00, 0x27, 0x02, 0x15, 0xb4, 0x0f, + 0x34, 0x1f, 0x14, 0x1a, 0xb8, 0x01, 0x06, 0xb3, 0x17, 0x19, 0x4f, 0x22, + 0xb8, 0x01, 0x32, 0xb2, 0x14, 0x50, 0x2a, 0xb8, 0x01, 0x32, 0xb1, 0x0a, + 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x11, 0x39, 0x01, + 0x10, 0xd6, 0xed, 0xd4, 0xfd, 0xc6, 0x12, 0x39, 0x2f, 0x39, 0x39, 0xed, + 0x31, 0x30, 0x01, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x15, 0x22, + 0x2e, 0x02, 0x25, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x03, 0x87, 0x18, 0x2b, + 0x21, 0x14, 0x3f, 0x7b, 0xb4, 0x75, 0x6d, 0xaf, 0x7b, 0x43, 0x45, 0x81, + 0xba, 0x75, 0x30, 0x5a, 0x76, 0xa4, 0x7b, 0x16, 0x36, 0x38, 0x36, 0xfe, + 0xed, 0x14, 0x2f, 0x17, 0x40, 0x5a, 0x3a, 0x1b, 0x77, 0x6e, 0x37, 0x53, + 0x38, 0x1c, 0x14, 0x21, 0x2c, 0x03, 0x33, 0x18, 0x49, 0x57, 0x60, 0x2d, + 0x72, 0xbe, 0x89, 0x4c, 0x41, 0x83, 0xc4, 0x83, 0x78, 0xc7, 0x8d, 0x4e, + 0x07, 0x08, 0x07, 0xcb, 0x01, 0x02, 0x02, 0x05, 0x02, 0x02, 0x33, 0x57, + 0x74, 0x41, 0x95, 0xab, 0x2b, 0x4f, 0x6f, 0x43, 0x35, 0x61, 0x54, 0x48, + 0x00, 0x01, 0x00, 0x85, 0xfe, 0x91, 0x03, 0xdf, 0x04, 0x08, 0x00, 0x29, + 0x00, 0x4a, 0xb9, 0x00, 0x27, 0x01, 0xe2, 0xb5, 0x26, 0x23, 0x12, 0x12, + 0x09, 0x23, 0xbb, 0x02, 0x13, 0x00, 0x00, 0x00, 0x1a, 0x02, 0x1b, 0xb4, + 0x09, 0x2a, 0x27, 0x55, 0x11, 0xb8, 0x01, 0x40, 0xb6, 0x80, 0x12, 0x90, + 0x12, 0x02, 0x12, 0x15, 0xb8, 0x01, 0x35, 0xb2, 0x0f, 0x50, 0x1f, 0xb8, + 0x01, 0x36, 0xb1, 0x04, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xfd, 0xd6, 0x5d, + 0xed, 0x3f, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x10, + 0xdd, 0xed, 0x31, 0x30, 0x05, 0x34, 0x2e, 0x06, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x06, 0x15, 0x14, 0x06, 0x07, 0x23, 0x36, 0x36, 0x02, 0xe3, + 0x0c, 0x20, 0x36, 0xb1, 0xa7, 0x70, 0x34, 0x47, 0x88, 0xc8, 0x80, 0x63, + 0x87, 0x36, 0x41, 0x98, 0x48, 0x46, 0x66, 0x43, 0x21, 0x1b, 0x3e, 0x65, + 0xa9, 0x7f, 0x4d, 0x21, 0x30, 0x2a, 0xef, 0x28, 0x25, 0x9c, 0x1c, 0x2c, + 0x21, 0x16, 0x1f, 0x4c, 0x7f, 0xaf, 0x70, 0x78, 0xc6, 0x8f, 0x4f, 0x15, + 0x10, 0xe9, 0x1b, 0x1d, 0x2d, 0x51, 0x71, 0x43, 0x42, 0x67, 0x4c, 0x30, + 0x21, 0x37, 0x51, 0x6b, 0x3b, 0x3f, 0x84, 0x38, 0x45, 0x61, 0x00, 0x01, + 0x00, 0x33, 0xff, 0xe9, 0x03, 0xe5, 0x03, 0xf8, 0x00, 0x17, 0x00, 0x38, + 0xb9, 0x00, 0x0f, 0x01, 0xe3, 0x40, 0x15, 0x08, 0x0a, 0x08, 0x17, 0x0d, + 0x0d, 0x17, 0x08, 0x0a, 0x04, 0x18, 0x19, 0x0f, 0x03, 0x0e, 0x09, 0xfa, + 0x0b, 0x4f, 0x17, 0x14, 0xb8, 0x01, 0x08, 0xb1, 0x03, 0x52, 0x00, 0x3f, + 0xfd, 0xc6, 0x3f, 0xed, 0x32, 0x12, 0x39, 0x11, 0x12, 0x01, 0x17, 0x39, + 0x2f, 0x2f, 0x2f, 0x2f, 0x10, 0xed, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0xb8, 0x37, 0x84, 0x3c, 0x64, + 0x8b, 0x56, 0x26, 0xfe, 0xdd, 0x03, 0xb2, 0xfe, 0x61, 0x0f, 0x25, 0x3e, + 0x2f, 0x35, 0x71, 0x2b, 0x04, 0x0b, 0x10, 0x2a, 0x56, 0x85, 0x5c, 0x01, + 0xf0, 0xbe, 0xbe, 0xfe, 0x22, 0x27, 0x3e, 0x2a, 0x17, 0x12, 0x09, 0x00, + 0x00, 0x01, 0x00, 0x7b, 0xff, 0xe9, 0x03, 0xec, 0x03, 0xf8, 0x00, 0x25, + 0x00, 0x26, 0xbc, 0x00, 0x00, 0x01, 0xe3, 0x00, 0x1f, 0x00, 0x15, 0x01, + 0xe3, 0xb6, 0x08, 0x26, 0x23, 0x4f, 0x0f, 0x4f, 0x1a, 0xb8, 0x01, 0x08, + 0xb1, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x01, 0x10, 0xd6, 0xed, + 0xd4, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x36, 0x35, 0x34, 0x26, 0x27, 0x33, 0x16, 0x16, 0x15, 0x14, 0x06, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, + 0x33, 0x16, 0x16, 0x03, 0xec, 0x40, 0x7c, 0xb4, 0x75, 0xc3, 0xb5, 0x05, + 0x0b, 0x0e, 0xf0, 0x0d, 0x0c, 0x05, 0x11, 0x27, 0x3d, 0x2d, 0x2f, 0x50, + 0x3b, 0x21, 0x0e, 0x0d, 0xf0, 0x0c, 0x0f, 0x02, 0x39, 0x86, 0xda, 0x9b, + 0x55, 0xb9, 0xc9, 0x3e, 0x78, 0x3e, 0x65, 0xcf, 0x65, 0x61, 0xc6, 0x61, + 0x3f, 0x76, 0x39, 0x36, 0x4e, 0x31, 0x17, 0x2b, 0x5b, 0x8b, 0x60, 0x76, + 0xe6, 0x75, 0x72, 0xdb, 0x00, 0x03, 0x00, 0x19, 0xfe, 0x73, 0x04, 0x4d, + 0x05, 0x85, 0x00, 0x19, 0x00, 0x22, 0x00, 0x2b, 0x00, 0x59, 0xb4, 0x19, + 0x2b, 0x2b, 0x0e, 0x28, 0xb8, 0x01, 0xe0, 0xb6, 0x14, 0x0e, 0x0c, 0x22, + 0x22, 0x01, 0x1f, 0xbb, 0x01, 0xe0, 0x00, 0x07, 0x00, 0x01, 0x01, 0xdc, + 0xb5, 0x0e, 0x0e, 0x2c, 0x2d, 0x1a, 0x2b, 0xb8, 0x01, 0x34, 0xb6, 0x0c, + 0x0f, 0x52, 0x0d, 0x55, 0x23, 0x22, 0xb8, 0x01, 0x34, 0xb7, 0x19, 0x02, + 0x50, 0x70, 0x00, 0x01, 0x00, 0x53, 0x00, 0x3f, 0x5d, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xfd, + 0xd4, 0xed, 0x11, 0x33, 0x11, 0x33, 0x10, 0xd4, 0xed, 0x11, 0x33, 0x11, + 0x33, 0x31, 0x30, 0x01, 0x33, 0x11, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x11, 0x23, 0x11, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x13, + 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, 0x07, 0x0e, 0x03, 0x15, 0x14, 0x16, + 0x17, 0x01, 0xc1, 0xe9, 0x64, 0x9c, 0x6b, 0x38, 0x34, 0x67, 0x9e, 0x6a, + 0xe9, 0x63, 0x9e, 0x6d, 0x3a, 0x35, 0x6b, 0x9f, 0x69, 0xe9, 0x2c, 0x44, + 0x2e, 0x18, 0x5e, 0x58, 0xe9, 0x2d, 0x46, 0x30, 0x18, 0x65, 0x56, 0x05, + 0x85, 0xfe, 0x89, 0x0d, 0x4f, 0x84, 0xb6, 0x74, 0x63, 0xb2, 0x8e, 0x62, + 0x13, 0xfe, 0x87, 0x01, 0x76, 0x0d, 0x4f, 0x83, 0xb7, 0x77, 0x63, 0xb1, + 0x8d, 0x62, 0x13, 0xfc, 0xb5, 0x0e, 0x3b, 0x52, 0x67, 0x3b, 0x8b, 0x99, + 0x17, 0x02, 0x0f, 0x3b, 0x53, 0x65, 0x39, 0x8c, 0x9b, 0x17, 0x00, 0x02, + 0x00, 0x19, 0xfe, 0x73, 0x04, 0x4d, 0x04, 0x0e, 0x00, 0x25, 0x00, 0x31, + 0x00, 0x4c, 0xb9, 0x00, 0x29, 0x01, 0xe0, 0xb2, 0x13, 0x18, 0x31, 0xbb, + 0x01, 0xdc, 0x00, 0x1a, 0x00, 0x03, 0x01, 0xe0, 0x40, 0x09, 0x20, 0x08, + 0x00, 0x1a, 0x1a, 0x32, 0x33, 0x26, 0x08, 0xb8, 0x01, 0x34, 0xb7, 0x1b, + 0x18, 0x1b, 0x1b, 0x32, 0x19, 0x55, 0x2e, 0xb8, 0x01, 0x32, 0xb2, 0x25, + 0x0e, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x10, + 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xcc, 0x33, 0xd4, 0xed, 0x10, + 0xfd, 0x32, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x17, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, + 0x37, 0x01, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, + 0x01, 0xac, 0x55, 0x51, 0x1e, 0x33, 0x44, 0x26, 0x27, 0x48, 0x68, 0x41, + 0x56, 0x8a, 0x60, 0x34, 0x3f, 0x6f, 0x9a, 0x5b, 0xe9, 0x5c, 0x9c, 0x71, + 0x3f, 0x27, 0x46, 0x63, 0x3c, 0x01, 0x85, 0x52, 0x64, 0x15, 0x24, 0x30, + 0x1c, 0x1c, 0x15, 0x03, 0x75, 0x42, 0xc1, 0x70, 0x50, 0x72, 0x4d, 0x2c, + 0x09, 0x01, 0xfe, 0x50, 0x7d, 0x57, 0x2e, 0x4c, 0x88, 0xba, 0x6e, 0x76, + 0xbe, 0x8c, 0x57, 0x0f, 0xfe, 0x87, 0x01, 0x76, 0x0c, 0x44, 0x7e, 0xbf, + 0x86, 0x54, 0x9d, 0x88, 0x70, 0x29, 0xfc, 0xb0, 0x1c, 0xa4, 0x88, 0x46, + 0x72, 0x51, 0x2c, 0x47, 0x36, 0x00, 0x00, 0x01, 0x00, 0x11, 0xfe, 0x5c, + 0x04, 0x2f, 0x04, 0x0c, 0x00, 0x2a, 0x00, 0x82, 0x40, 0x33, 0x10, 0x2a, + 0x14, 0x0f, 0x0c, 0x16, 0x0c, 0x0c, 0x01, 0x16, 0x00, 0x2a, 0x25, 0x22, + 0x01, 0x22, 0x01, 0x22, 0x13, 0x05, 0x05, 0x29, 0x27, 0x13, 0x28, 0x13, + 0x11, 0x29, 0x12, 0x29, 0x12, 0x13, 0x28, 0x29, 0x1b, 0x13, 0x29, 0x10, + 0x26, 0x13, 0x29, 0x55, 0x22, 0x16, 0x14, 0x2a, 0x01, 0x0c, 0x06, 0x09, + 0x18, 0xb8, 0x01, 0x0a, 0xb4, 0x1f, 0x56, 0x13, 0x4f, 0x03, 0xb8, 0x01, + 0x0a, 0xb1, 0x09, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x12, 0x17, + 0x39, 0x3f, 0x12, 0x39, 0x39, 0x01, 0x2f, 0xdd, 0xc6, 0x11, 0x33, 0x11, + 0x33, 0x10, 0x7d, 0x87, 0x0e, 0xc4, 0x10, 0x87, 0x0e, 0xc4, 0x12, 0x01, + 0x39, 0x18, 0x2f, 0x12, 0x39, 0x39, 0x10, 0x7d, 0x87, 0x0e, 0xc4, 0x05, + 0xc4, 0x0e, 0xc4, 0x01, 0x33, 0x11, 0x33, 0x10, 0x87, 0x0e, 0xc4, 0x05, + 0xc4, 0x11, 0x01, 0x39, 0x31, 0x30, 0x13, 0x26, 0x26, 0x23, 0x22, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x1f, 0x02, 0x37, 0x13, 0x21, + 0x01, 0x13, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x2f, 0x02, 0x07, 0x03, 0x21, 0x01, 0xf0, 0x19, 0x38, + 0x20, 0x20, 0x2e, 0x1f, 0x4a, 0x20, 0x3a, 0x52, 0x3f, 0x35, 0x1d, 0x2a, + 0x3d, 0x45, 0x94, 0x01, 0x14, 0xfe, 0x8d, 0xbf, 0x15, 0x35, 0x20, 0x13, + 0x27, 0x14, 0x2a, 0x48, 0x19, 0x39, 0x51, 0x3d, 0x33, 0x1b, 0x43, 0x37, + 0x41, 0xad, 0xfe, 0xea, 0x01, 0x8d, 0x02, 0xdd, 0x39, 0x27, 0x0c, 0xc9, + 0x08, 0x0a, 0x14, 0x33, 0x58, 0x44, 0x64, 0xa8, 0xa5, 0x01, 0x36, 0xfd, + 0x39, 0xfe, 0x50, 0x30, 0x26, 0x05, 0x05, 0xc6, 0x0a, 0x09, 0x14, 0x32, + 0x53, 0x3e, 0x9b, 0x96, 0x96, 0xfe, 0xa5, 0x02, 0xdf, 0x00, 0x00, 0x01, + 0x00, 0x33, 0xfe, 0x73, 0x04, 0x3d, 0x05, 0x85, 0x00, 0x23, 0x00, 0x4b, + 0xb2, 0x09, 0x08, 0x05, 0xb8, 0x01, 0xaa, 0xb2, 0x0c, 0x11, 0x23, 0xbb, + 0x01, 0xa7, 0x00, 0x13, 0x00, 0x1c, 0x01, 0xa8, 0x40, 0x17, 0x19, 0x21, + 0x13, 0x13, 0x24, 0x25, 0x00, 0x21, 0xf3, 0x14, 0x14, 0x11, 0x11, 0x24, + 0x13, 0x23, 0x53, 0x1a, 0x4f, 0x13, 0x55, 0x09, 0x4f, 0x00, 0x3f, 0x3f, + 0x3f, 0x3f, 0x11, 0x12, 0x39, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0x33, 0xd4, 0xed, 0x10, 0xfd, 0x32, 0xd4, 0xfd, 0xd6, + 0xc1, 0x31, 0x30, 0x25, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, 0x33, 0x16, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x2e, 0x03, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x17, 0x11, 0x33, 0x02, 0x9c, 0x37, + 0x4d, 0x30, 0x16, 0x14, 0x0c, 0xd7, 0x0c, 0x14, 0x36, 0x6a, 0x9c, 0x65, + 0xd1, 0x5c, 0x96, 0x6b, 0x3b, 0xd3, 0x16, 0x2f, 0x4b, 0x35, 0xd1, 0xa8, + 0x0d, 0x38, 0x5e, 0x89, 0x5f, 0x70, 0xde, 0x77, 0x76, 0xda, 0x6d, 0x7a, + 0xc9, 0x96, 0x60, 0x10, 0xfe, 0x81, 0x01, 0x7f, 0x05, 0x39, 0x69, 0x9b, + 0x68, 0x02, 0x5c, 0xfd, 0xc4, 0x42, 0x60, 0x42, 0x27, 0x09, 0x04, 0xdd, + 0x00, 0x01, 0x00, 0x19, 0xff, 0xe9, 0x04, 0x4d, 0x03, 0xf8, 0x00, 0x32, + 0x00, 0x5e, 0xb9, 0x00, 0x24, 0x02, 0x15, 0xb3, 0x25, 0x25, 0x30, 0x2a, + 0xb8, 0x02, 0x08, 0xb2, 0x21, 0x30, 0x0e, 0xb8, 0x02, 0x18, 0xb3, 0x0d, + 0x0d, 0x00, 0x08, 0xbb, 0x02, 0x08, 0x00, 0x11, 0x00, 0x00, 0x01, 0xe1, + 0x40, 0x0b, 0x30, 0x30, 0x34, 0x31, 0x31, 0x33, 0x19, 0x1c, 0x24, 0x4f, + 0x2d, 0xb8, 0x01, 0x32, 0xb2, 0x1c, 0x52, 0x03, 0xb8, 0x01, 0x32, 0xb3, + 0x16, 0x52, 0x0e, 0x4f, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x12, + 0x39, 0x12, 0x39, 0x2f, 0x11, 0x01, 0x39, 0x2f, 0xfd, 0xd4, 0xed, 0x11, + 0x39, 0x2f, 0xed, 0x10, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x31, 0x30, + 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, + 0x21, 0x16, 0x12, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x37, 0x33, 0x0e, 0x03, + 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x02, 0xaa, 0x1d, + 0x38, 0x15, 0x20, 0x19, 0x0f, 0x11, 0x1c, 0x27, 0x15, 0x01, 0x02, 0x27, + 0x31, 0x2f, 0x58, 0x7d, 0x4d, 0x5d, 0x69, 0x09, 0x13, 0x6e, 0x54, 0x4c, + 0x73, 0x53, 0x2d, 0x30, 0x2a, 0xfe, 0x19, 0x26, 0x1a, 0x0e, 0x28, 0x36, + 0x30, 0x24, 0xee, 0x01, 0xba, 0x73, 0x8b, 0x16, 0x3d, 0x74, 0x61, 0x49, + 0x95, 0x8b, 0x7b, 0x30, 0x66, 0xfe, 0xf7, 0xa2, 0x7b, 0xbe, 0x82, 0x43, + 0x55, 0x58, 0x50, 0x5d, 0x37, 0x72, 0xb8, 0x8b, 0xad, 0x01, 0x0f, 0x67, + 0x35, 0x7f, 0x89, 0x8e, 0x45, 0x8f, 0x9d, 0x73, 0x71, 0x01, 0x3b, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0x9a, 0x02, 0x26, + 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xf2, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xb6, + 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x73, 0x03, 0xe2, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, + 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, + 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x05, 0x96, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x21, 0x05, 0x9a, + 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x01, 0xda, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x9a, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x21, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x06, 0x01, 0xda, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0x96, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, + 0x05, 0x9a, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x71, 0x05, 0x9a, + 0x00, 0x03, 0x00, 0x04, 0x00, 0x20, 0xbc, 0x00, 0x03, 0x02, 0x2e, 0x00, + 0x02, 0x00, 0x00, 0x01, 0xdd, 0xb6, 0x40, 0x01, 0x02, 0x80, 0x01, 0x04, + 0x4f, 0x00, 0x3f, 0xde, 0x1a, 0xcd, 0x01, 0x2f, 0x1a, 0xed, 0xdd, 0xed, + 0x31, 0x30, 0x01, 0x23, 0x13, 0x21, 0x01, 0x02, 0xa6, 0xea, 0x8e, 0x01, + 0x27, 0xfc, 0x8f, 0x04, 0x71, 0x01, 0x29, 0xfe, 0x5e, 0x00, 0x00, 0x02, + 0xff, 0x21, 0x04, 0x48, 0x04, 0x34, 0x05, 0x9a, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x20, 0xbc, 0x00, 0x03, 0x01, 0xfd, 0x00, 0x02, 0x00, 0x00, 0x01, + 0x9e, 0xb6, 0x40, 0x01, 0x02, 0x80, 0x01, 0x04, 0x41, 0x00, 0x3f, 0xdc, + 0x1a, 0xcd, 0x01, 0x2f, 0x1a, 0xed, 0xdd, 0xed, 0x31, 0x30, 0x03, 0x23, + 0x13, 0x33, 0x05, 0x0a, 0xd5, 0x3b, 0xfe, 0x03, 0xda, 0x04, 0x48, 0x01, + 0x52, 0x7f, 0x00, 0x04, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x21, 0x05, 0x9a, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x3a, 0xbc, 0x00, + 0x14, 0x02, 0x28, 0x00, 0x1e, 0x00, 0x2b, 0x02, 0x24, 0xb2, 0x2a, 0x29, + 0x0a, 0xbb, 0x02, 0x28, 0x00, 0x00, 0x00, 0x28, 0x01, 0x90, 0xb3, 0x29, + 0x2a, 0x23, 0x0f, 0xb8, 0x01, 0x42, 0xb4, 0x19, 0x05, 0x29, 0x2c, 0x4f, + 0x00, 0x3f, 0xde, 0xd6, 0x32, 0xfd, 0x32, 0xce, 0x01, 0x2f, 0xed, 0xde, + 0xed, 0x10, 0xdd, 0xfd, 0xde, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x05, 0x23, 0x13, 0x21, 0x01, 0x01, 0x96, 0x16, + 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x25, 0x16, 0x02, 0x8b, 0x16, 0x25, 0x32, 0x1c, 0x1d, 0x32, 0x25, + 0x16, 0x16, 0x25, 0x32, 0x1d, 0x1c, 0x32, 0x25, 0x16, 0xfe, 0x64, 0xcd, + 0x44, 0x01, 0x0a, 0xfc, 0xfa, 0x04, 0xfc, 0x1d, 0x31, 0x26, 0x15, 0x15, + 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x15, 0x26, 0x32, 0x1c, 0x1d, + 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x15, + 0x26, 0x32, 0xa7, 0x01, 0x29, 0xfe, 0x5e, 0x00, 0xff, 0xff, 0x01, 0x73, + 0x03, 0x34, 0x02, 0xf8, 0x04, 0xbb, 0x02, 0x07, 0x01, 0x7d, 0x00, 0x00, + 0x01, 0xc5, 0xff, 0xff, 0x01, 0x73, 0x04, 0x57, 0x02, 0xf8, 0x05, 0xde, + 0x02, 0x07, 0x01, 0x7d, 0x00, 0x00, 0x02, 0xe8, 0xff, 0xff, 0x00, 0xdf, + 0xfe, 0xa0, 0x02, 0xfe, 0x04, 0x02, 0x02, 0x06, 0x01, 0x5a, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xcb, 0x02, 0xa6, 0x02, 0xfc, 0x05, 0x9c, 0x00, 0x17, + 0x00, 0x14, 0xb9, 0x00, 0x12, 0x02, 0x3e, 0xb4, 0x00, 0x08, 0x17, 0x0d, + 0x54, 0x00, 0x3f, 0xc4, 0x01, 0x2f, 0xc6, 0xed, 0x31, 0x30, 0x13, 0x3e, + 0x03, 0x35, 0x34, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0xcb, 0x4a, 0x60, 0x38, 0x16, 0x09, 0x17, + 0x28, 0x38, 0x21, 0x2d, 0x40, 0x29, 0x14, 0x3e, 0x7b, 0xb7, 0x7a, 0x03, + 0x39, 0x21, 0x49, 0x51, 0x59, 0x30, 0x1d, 0x43, 0x1d, 0x24, 0x3c, 0x2a, + 0x18, 0x22, 0x37, 0x47, 0x25, 0x4e, 0xa0, 0x94, 0x80, 0x2f, 0x00, 0x01, + 0x00, 0xbc, 0xfe, 0x8b, 0x02, 0xf7, 0x01, 0x64, 0x00, 0x1a, 0x00, 0x13, + 0xb9, 0x00, 0x00, 0x01, 0xa8, 0xb3, 0x1a, 0x0d, 0x1a, 0x08, 0x00, 0x2f, + 0xc4, 0x01, 0x2f, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x16, 0x0e, 0x02, 0x07, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x3e, 0x03, + 0x37, 0x3e, 0x03, 0x27, 0x02, 0xf0, 0x07, 0x0b, 0x2b, 0x4e, 0x3c, 0x39, + 0x74, 0x36, 0x25, 0x39, 0x27, 0x13, 0x15, 0x14, 0x1a, 0x39, 0x3c, 0x3d, + 0x1c, 0x16, 0x20, 0x14, 0x08, 0x02, 0x01, 0x64, 0x5c, 0xad, 0x9e, 0x8d, + 0x3c, 0x39, 0x30, 0x15, 0x24, 0x2f, 0x1b, 0x1f, 0x34, 0x14, 0x19, 0x1a, + 0x16, 0x1d, 0x1d, 0x16, 0x3e, 0x57, 0x75, 0x4c, 0xff, 0xff, 0x00, 0x04, + 0x00, 0x00, 0x04, 0x62, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x04, 0x19, 0x05, 0x1b, 0x00, 0x0e, + 0x00, 0x1b, 0x00, 0x37, 0xb1, 0x0e, 0x1b, 0xb8, 0x01, 0xf3, 0xb4, 0x09, + 0x0b, 0x0b, 0x09, 0x05, 0xb8, 0x02, 0x06, 0x40, 0x10, 0x14, 0x09, 0x1c, + 0x0e, 0xd8, 0x1a, 0x1a, 0x09, 0x0d, 0xda, 0x0a, 0x41, 0x1b, 0xdc, 0x09, + 0x43, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x10, + 0xd6, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x04, 0x23, 0x21, 0x11, 0x21, 0x15, 0x21, + 0x11, 0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, + 0x02, 0x25, 0x7f, 0xbd, 0x7b, 0x3d, 0xfe, 0xf6, 0xff, 0xfe, 0x71, 0x03, + 0x3d, 0xfd, 0xb7, 0xac, 0x3b, 0x59, 0x3c, 0x1f, 0x1d, 0x3f, 0x61, 0x45, + 0x99, 0x03, 0x0e, 0x3a, 0x65, 0x8a, 0x4f, 0xc9, 0xcd, 0x05, 0x1b, 0xc3, + 0xfe, 0xb6, 0xfd, 0xb7, 0x21, 0x38, 0x4a, 0x29, 0x2a, 0x46, 0x32, 0x1b, + 0xfe, 0x77, 0xff, 0xff, 0x00, 0x81, 0x00, 0x00, 0x04, 0x19, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc5, 0x00, 0x00, + 0x03, 0xe7, 0x05, 0x1b, 0x00, 0x05, 0x00, 0x1b, 0xb1, 0x05, 0x01, 0xbb, + 0x01, 0xf4, 0x00, 0x03, 0x00, 0x01, 0x01, 0x10, 0xb3, 0x04, 0x41, 0x03, + 0x43, 0x00, 0x3f, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0xc4, 0x31, 0x30, 0x01, + 0x21, 0x11, 0x23, 0x11, 0x21, 0x03, 0xe7, 0xfd, 0xd3, 0xf5, 0x03, 0x22, + 0x04, 0x44, 0xfb, 0xbc, 0x05, 0x1b, 0x00, 0x02, 0x00, 0x00, 0xfe, 0xe5, + 0x04, 0x5c, 0x05, 0x1b, 0x00, 0x09, 0x00, 0x1b, 0x00, 0x57, 0xb9, 0x00, + 0x09, 0x01, 0xf7, 0xb2, 0x18, 0x19, 0x04, 0xb8, 0x01, 0xc2, 0xb3, 0x13, + 0x13, 0x0f, 0x1b, 0xb8, 0x01, 0xf5, 0xb2, 0x19, 0x1d, 0x00, 0xb8, 0x01, + 0xc4, 0xb3, 0x16, 0x0e, 0x1c, 0x0c, 0xb8, 0x01, 0xca, 0xb3, 0x0f, 0x1b, + 0x49, 0x00, 0xb8, 0x01, 0x0e, 0xb7, 0x17, 0x41, 0x0d, 0x49, 0x10, 0x08, + 0x08, 0x19, 0xb8, 0x01, 0x0e, 0xb1, 0x0b, 0x43, 0x00, 0x3f, 0xed, 0x32, + 0x11, 0x33, 0x3f, 0x3f, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x10, 0xd4, 0xd6, + 0xed, 0x10, 0xd6, 0xed, 0x12, 0x39, 0x10, 0xed, 0x10, 0xdd, 0xed, 0x31, + 0x30, 0x01, 0x0e, 0x05, 0x07, 0x21, 0x11, 0x13, 0x21, 0x11, 0x23, 0x03, + 0x33, 0x32, 0x3e, 0x03, 0x12, 0x37, 0x21, 0x11, 0x33, 0x03, 0x23, 0x02, + 0x10, 0x08, 0x12, 0x15, 0x19, 0x20, 0x26, 0x18, 0x01, 0x96, 0x66, 0xfd, + 0x90, 0xe6, 0x10, 0x0c, 0x2b, 0x49, 0x3a, 0x2e, 0x24, 0x19, 0x08, 0x02, + 0xcb, 0x64, 0x10, 0xe6, 0x04, 0x46, 0xa3, 0xf2, 0xb5, 0x7f, 0x59, 0x3a, + 0x15, 0x03, 0x71, 0xfb, 0xba, 0xfe, 0xe5, 0x01, 0xf0, 0x16, 0x4c, 0x90, + 0xf3, 0x01, 0x65, 0xfc, 0xfb, 0xba, 0xfe, 0x10, 0xff, 0xff, 0x00, 0xb8, + 0x00, 0x00, 0x03, 0xcb, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x01, 0xff, 0xf8, 0x00, 0x00, 0x04, 0x6f, 0x05, 0x1b, 0x00, 0x11, + 0x00, 0x78, 0x40, 0x1e, 0x0e, 0x11, 0x10, 0x0f, 0x11, 0x00, 0x0f, 0x0f, + 0x00, 0x0e, 0x0b, 0x0c, 0x0d, 0x00, 0x0b, 0x00, 0x05, 0x08, 0x07, 0x08, + 0x01, 0x05, 0x02, 0x03, 0x04, 0x04, 0x06, 0x02, 0x09, 0x01, 0xb8, 0x01, + 0xa5, 0x40, 0x1b, 0x0a, 0x00, 0x00, 0x13, 0x12, 0x08, 0x0b, 0x11, 0x02, + 0x04, 0x09, 0x06, 0x06, 0x09, 0x09, 0x0d, 0x43, 0x0f, 0x0f, 0x10, 0x10, + 0x04, 0x00, 0x00, 0x03, 0x04, 0x41, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x11, + 0x33, 0x11, 0x33, 0x2f, 0x3f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x17, 0x39, + 0x11, 0x12, 0x01, 0x39, 0x2f, 0x33, 0xfd, 0x32, 0x32, 0xc4, 0x39, 0x2f, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x32, 0x11, 0x33, 0x11, 0x33, 0x10, 0xc4, + 0x32, 0x11, 0x33, 0x11, 0x39, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x31, 0x30, 0x01, 0x33, 0x11, 0x13, 0x33, 0x03, 0x13, 0x23, 0x03, 0x11, + 0x23, 0x11, 0x03, 0x23, 0x13, 0x03, 0x33, 0x13, 0x01, 0xc5, 0xdd, 0xd1, + 0xeb, 0xeb, 0xfc, 0xfc, 0xd1, 0xdd, 0xd1, 0xfc, 0xfc, 0xec, 0xec, 0xd1, + 0x05, 0x1b, 0xfd, 0x8f, 0x02, 0x71, 0xfd, 0x91, 0xfd, 0x54, 0x02, 0x93, + 0xfd, 0x6d, 0x02, 0x93, 0xfd, 0x6d, 0x02, 0xac, 0x02, 0x6f, 0xfd, 0x8f, + 0x00, 0x01, 0x00, 0x5c, 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x31, 0x00, 0x34, + 0x00, 0x68, 0xb9, 0x00, 0x15, 0x01, 0xff, 0x40, 0x0a, 0x26, 0x1f, 0x0e, + 0x26, 0x26, 0x0e, 0x1f, 0x03, 0x34, 0x2e, 0xb8, 0x02, 0x05, 0x40, 0x13, + 0x08, 0x34, 0x35, 0x29, 0x0f, 0xd5, 0x08, 0x31, 0xc0, 0x0e, 0x01, 0xf0, + 0x0e, 0x01, 0x0e, 0x0e, 0x23, 0x31, 0x34, 0xb8, 0x01, 0x0e, 0x40, 0x16, + 0x5f, 0x00, 0x01, 0x00, 0x03, 0xe0, 0x31, 0x44, 0x20, 0xe2, 0x50, 0x1f, + 0x60, 0x1f, 0x70, 0x1f, 0x03, 0x1f, 0x1a, 0xdb, 0x23, 0x42, 0x00, 0x3f, + 0xfd, 0xd6, 0x5d, 0xed, 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x11, 0x12, 0x39, + 0x2f, 0x5d, 0x71, 0x12, 0x39, 0xed, 0x39, 0x01, 0x10, 0xd6, 0xd4, 0xed, + 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xed, 0x31, 0x30, 0x37, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x21, 0x35, + 0x21, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, + 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x1e, + 0x03, 0x15, 0x14, 0x04, 0x23, 0x22, 0x26, 0x27, 0x5c, 0x78, 0xc4, 0x6c, + 0x3b, 0x5a, 0x3c, 0x1f, 0x20, 0x40, 0x61, 0x41, 0xfe, 0xc8, 0x01, 0x29, + 0x3d, 0x57, 0x38, 0x1a, 0x19, 0x36, 0x57, 0x3e, 0x2e, 0x53, 0x54, 0x5b, + 0x36, 0x55, 0xc0, 0x64, 0xe9, 0xe8, 0x5b, 0x66, 0x31, 0x59, 0x43, 0x27, + 0xfe, 0xf7, 0xff, 0x73, 0xc3, 0x62, 0xfa, 0x25, 0x21, 0x21, 0x39, 0x4b, + 0x2a, 0x2a, 0x47, 0x32, 0x1c, 0xbc, 0x1f, 0x36, 0x47, 0x27, 0x25, 0x3f, + 0x2e, 0x1a, 0x08, 0x0f, 0x18, 0x0f, 0xcd, 0x1a, 0x1b, 0xac, 0xaa, 0x6f, + 0x91, 0x23, 0x08, 0x32, 0x4f, 0x69, 0x3f, 0xc9, 0xd5, 0x1d, 0x1f, 0x00, + 0x00, 0x01, 0x00, 0x5d, 0x00, 0x00, 0x04, 0x09, 0x05, 0x1b, 0x00, 0x0b, + 0x00, 0x3f, 0xb6, 0x09, 0x01, 0x03, 0x08, 0x07, 0x07, 0x06, 0xbb, 0x01, + 0xf7, 0x00, 0x04, 0x00, 0x0a, 0x01, 0xf9, 0x40, 0x11, 0x02, 0x02, 0x01, + 0x04, 0x0c, 0x0b, 0x43, 0x07, 0x01, 0x04, 0x09, 0x06, 0x0a, 0x41, 0x03, + 0x04, 0x43, 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x33, 0x12, 0x39, 0x39, 0x3f, + 0x01, 0x10, 0xd6, 0xc4, 0x32, 0x10, 0xed, 0x10, 0xed, 0x32, 0x11, 0x33, + 0x33, 0x11, 0x33, 0x31, 0x30, 0x21, 0x11, 0x23, 0x01, 0x23, 0x11, 0x33, + 0x11, 0x33, 0x01, 0x33, 0x11, 0x03, 0x11, 0x02, 0xfe, 0x3c, 0xee, 0xf8, + 0x02, 0x01, 0xc5, 0xed, 0x03, 0x44, 0xfc, 0xbc, 0x05, 0x1b, 0xfc, 0xbc, + 0x03, 0x44, 0xfa, 0xe5, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, + 0x06, 0x77, 0x02, 0x26, 0x01, 0xe8, 0x00, 0x00, 0x00, 0x06, 0x02, 0x4a, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, 0x00, 0x00, 0x04, 0x42, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0xff, 0xf4, + 0x03, 0xf8, 0x05, 0x1b, 0x00, 0x15, 0x00, 0x46, 0xbc, 0x00, 0x11, 0x01, + 0xc4, 0x00, 0x04, 0x00, 0x0e, 0x01, 0xc3, 0xb5, 0x04, 0x00, 0x09, 0x09, + 0x00, 0x0b, 0xb8, 0x01, 0xf7, 0xb7, 0x0c, 0x15, 0x00, 0x16, 0x05, 0x0a, + 0x13, 0x01, 0xb8, 0x01, 0x0d, 0xb4, 0x15, 0x43, 0x0c, 0x43, 0x0e, 0xb8, + 0x01, 0x12, 0xb1, 0x0a, 0x41, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0xc5, + 0x12, 0x39, 0x01, 0x10, 0xd6, 0xc5, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x12, + 0x39, 0xed, 0x10, 0xed, 0x31, 0x30, 0x37, 0x16, 0x3e, 0x05, 0x12, 0x37, + 0x21, 0x11, 0x23, 0x11, 0x23, 0x02, 0x02, 0x0e, 0x03, 0x27, 0x14, 0x1d, + 0x34, 0x2f, 0x29, 0x24, 0x1d, 0x19, 0x12, 0x06, 0x02, 0xc9, 0xf8, 0xf0, + 0x09, 0x28, 0x3f, 0x56, 0x6e, 0x85, 0x4f, 0xdd, 0x02, 0x06, 0x1f, 0x3e, + 0x6b, 0xa0, 0xe3, 0x01, 0x2d, 0xc2, 0xfa, 0xe5, 0x04, 0x42, 0xff, 0x00, + 0xfe, 0x8e, 0xfe, 0x95, 0x46, 0x03, 0x14, 0x00, 0xff, 0xff, 0x00, 0x2d, + 0x00, 0x00, 0x04, 0x39, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x10, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x5f, 0x00, 0x00, 0x04, 0x07, 0x05, 0x1b, 0x02, 0x06, + 0x00, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, 0xff, 0xe9, 0x04, 0x41, + 0x05, 0x31, 0x02, 0x06, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, + 0x00, 0x00, 0x04, 0x05, 0x05, 0x1b, 0x00, 0x07, 0x00, 0x26, 0xbc, 0x00, + 0x06, 0x01, 0xf7, 0x00, 0x01, 0x00, 0x02, 0x01, 0xf7, 0xb4, 0x04, 0x08, + 0x07, 0x43, 0x02, 0xb8, 0x01, 0x12, 0xb3, 0x05, 0x41, 0x04, 0x43, 0x00, + 0x3f, 0x3f, 0xed, 0x3f, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0xed, 0x31, 0x30, + 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x03, 0x0d, 0xfe, 0x4c, + 0xf8, 0x03, 0xa4, 0x04, 0x42, 0xfb, 0xbe, 0x05, 0x1b, 0xfa, 0xe5, 0x00, + 0xff, 0xff, 0x00, 0x87, 0x00, 0x00, 0x04, 0x12, 0x05, 0x1b, 0x02, 0x06, + 0x00, 0x13, 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, 0xff, 0xee, 0x03, 0xec, + 0x05, 0x2d, 0x02, 0x06, 0x00, 0x06, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4f, + 0x00, 0x00, 0x04, 0x17, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x17, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x27, 0xff, 0xe9, 0x04, 0x58, 0x05, 0x1b, 0x00, 0x19, + 0x00, 0x53, 0x40, 0x20, 0x15, 0x14, 0x13, 0x12, 0x17, 0x18, 0x10, 0x18, + 0x01, 0x10, 0x18, 0x19, 0x16, 0x08, 0x10, 0x08, 0x10, 0x13, 0x20, 0x16, + 0x19, 0x41, 0x10, 0x12, 0x16, 0x15, 0x17, 0x05, 0x08, 0x13, 0x41, 0x09, + 0xb8, 0x01, 0x0c, 0xb2, 0x08, 0x43, 0x0c, 0xb8, 0x01, 0x19, 0xb1, 0x05, + 0x44, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x12, 0x17, 0x39, 0x3f, 0x01, + 0x19, 0x2f, 0x1a, 0x18, 0xcd, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x32, + 0x11, 0x33, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0x11, 0x01, 0x33, 0x32, 0x31, + 0x30, 0x01, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x37, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x37, 0x37, 0x01, 0x21, 0x13, 0x17, 0x37, 0x13, 0x21, + 0x02, 0xbe, 0x27, 0x4b, 0x56, 0x68, 0x42, 0x2f, 0x6f, 0x25, 0x0a, 0x17, + 0x43, 0x23, 0x1b, 0x35, 0x3c, 0x2e, 0x19, 0x13, 0xfe, 0x31, 0x01, 0x29, + 0xd1, 0x50, 0x49, 0x94, 0x01, 0x0a, 0x01, 0x42, 0x5c, 0x81, 0x53, 0x29, + 0x11, 0x0c, 0xd1, 0x05, 0x09, 0x0c, 0x2d, 0x4d, 0x37, 0x2c, 0x03, 0x69, + 0xfe, 0x54, 0xb5, 0xcd, 0x01, 0x94, 0x00, 0x04, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x45, 0x05, 0x31, 0x00, 0x19, 0x00, 0x24, 0x00, 0x2f, 0x00, 0x30, + 0x00, 0x53, 0xb9, 0x00, 0x25, 0x01, 0xd0, 0xb2, 0x13, 0x0d, 0x1a, 0xb8, + 0x01, 0xd0, 0xb3, 0x06, 0x1f, 0x0b, 0x00, 0xb8, 0x01, 0xca, 0xb7, 0x2a, + 0x18, 0x0d, 0x0d, 0x31, 0x32, 0x1f, 0x2b, 0xb8, 0x01, 0x0c, 0xb3, 0x19, + 0x01, 0x2a, 0x20, 0xb8, 0x01, 0x0c, 0x40, 0x09, 0x0c, 0x0e, 0x01, 0x0e, + 0x01, 0x0e, 0x31, 0x30, 0x41, 0x00, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, + 0x10, 0xcd, 0xed, 0x32, 0x10, 0xcd, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, + 0x2f, 0x33, 0x33, 0xfd, 0x32, 0x32, 0xd4, 0xed, 0x10, 0xd4, 0xed, 0x31, + 0x30, 0x01, 0x15, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, 0x23, + 0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x01, 0x34, 0x2e, + 0x02, 0x27, 0x11, 0x3e, 0x03, 0x25, 0x14, 0x1e, 0x02, 0x17, 0x11, 0x0e, + 0x03, 0x01, 0x02, 0xa8, 0x64, 0x9b, 0x68, 0x36, 0x3d, 0x6d, 0x98, 0x5b, + 0xea, 0x65, 0x9b, 0x68, 0x35, 0x3e, 0x6f, 0x97, 0x59, 0x01, 0x96, 0x16, + 0x2b, 0x41, 0x2a, 0x28, 0x40, 0x2d, 0x17, 0xfd, 0xbe, 0x18, 0x2d, 0x3f, + 0x28, 0x28, 0x3f, 0x2d, 0x18, 0xfe, 0xee, 0x05, 0x31, 0x79, 0x0c, 0x48, + 0x82, 0xc1, 0x85, 0x92, 0xcc, 0x85, 0x4a, 0x0f, 0x77, 0x77, 0x0d, 0x45, + 0x80, 0xc3, 0x8c, 0x90, 0xc9, 0x84, 0x4a, 0x10, 0x79, 0xfd, 0x58, 0x58, + 0x78, 0x4f, 0x30, 0x0f, 0xfd, 0x4a, 0x10, 0x31, 0x4f, 0x74, 0x61, 0x5e, + 0x7b, 0x50, 0x2d, 0x0f, 0x02, 0xb6, 0x11, 0x2f, 0x4c, 0x71, 0x02, 0x31, + 0xff, 0xff, 0x00, 0x08, 0x00, 0x00, 0x04, 0x5e, 0x05, 0x1b, 0x02, 0x06, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x58, 0xfe, 0xe5, 0x04, 0x5c, + 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x36, 0xbc, 0x00, 0x08, 0x01, 0xf6, 0x00, + 0x0a, 0x00, 0x02, 0x01, 0xf5, 0xb4, 0x1f, 0x00, 0x01, 0x00, 0x06, 0xb8, + 0x01, 0xf7, 0xb6, 0x04, 0x0c, 0x06, 0x0a, 0x41, 0x0b, 0x08, 0xb8, 0x01, + 0x10, 0xb3, 0x03, 0x43, 0x02, 0x49, 0x00, 0x3f, 0x3f, 0xed, 0x32, 0x3f, + 0x33, 0x01, 0x10, 0xd6, 0xed, 0xdd, 0x5d, 0xed, 0xde, 0xed, 0x31, 0x30, + 0x25, 0x03, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, + 0x04, 0x5c, 0x10, 0xe6, 0xfc, 0xf2, 0xf8, 0x01, 0xa2, 0xf7, 0xd7, 0xfe, + 0x0e, 0x01, 0x1b, 0x05, 0x1b, 0xfb, 0xbc, 0x04, 0x44, 0xfb, 0xbc, 0x00, + 0x00, 0x01, 0x00, 0x50, 0x00, 0x00, 0x04, 0x0a, 0x05, 0x1b, 0x00, 0x17, + 0x00, 0x2a, 0xb9, 0x00, 0x16, 0x01, 0xf7, 0xb2, 0x14, 0x00, 0x0b, 0xb8, + 0x01, 0xf7, 0x40, 0x0c, 0x09, 0x18, 0x04, 0xe0, 0x11, 0x11, 0x16, 0x41, + 0x0b, 0x41, 0x00, 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0x39, 0x2f, 0xed, 0x01, + 0x10, 0xd6, 0xed, 0xd4, 0x32, 0xed, 0x31, 0x30, 0x21, 0x11, 0x22, 0x22, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x32, 0x33, 0x11, 0x33, 0x11, 0x03, 0x12, 0x36, 0x76, 0x37, 0x84, + 0xb4, 0x72, 0x35, 0xf8, 0x18, 0x37, 0x5a, 0x46, 0x35, 0x6f, 0x37, 0xf8, + 0x01, 0xf8, 0x40, 0x76, 0xad, 0x72, 0x01, 0x4e, 0xfe, 0xc6, 0x49, 0x6a, + 0x45, 0x26, 0x02, 0x58, 0xfa, 0xe5, 0x00, 0x01, 0x00, 0x31, 0x00, 0x00, + 0x04, 0x35, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x35, 0xbf, 0x00, 0x07, 0x01, + 0xc2, 0x00, 0x09, 0x00, 0x05, 0x01, 0xa4, 0x00, 0x03, 0x00, 0x02, 0x01, + 0xc2, 0x40, 0x0e, 0x00, 0x03, 0x03, 0x0c, 0x0d, 0x06, 0x03, 0xde, 0x0b, + 0x43, 0x05, 0x01, 0x09, 0x41, 0x00, 0x3f, 0x33, 0x33, 0x3f, 0xed, 0x32, + 0x11, 0x12, 0x01, 0x39, 0x2f, 0xd4, 0xed, 0x10, 0xfd, 0xd4, 0xed, 0x31, + 0x30, 0x13, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x21, 0x31, 0xe0, 0xb4, 0xdc, 0xb4, 0xe0, 0xfb, 0xfc, 0x05, 0x1b, 0xfb, + 0xae, 0x04, 0x52, 0xfb, 0xae, 0x04, 0x52, 0xfa, 0xe5, 0x00, 0x00, 0x01, + 0x00, 0x31, 0xfe, 0xe5, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x45, + 0x41, 0x0b, 0x00, 0x0f, 0x01, 0xc2, 0x00, 0x0c, 0x00, 0x09, 0x01, 0xc2, + 0x00, 0x0b, 0x00, 0x06, 0x01, 0xa4, 0x00, 0x04, 0x00, 0x03, 0x01, 0xc2, + 0x40, 0x13, 0x01, 0x04, 0x04, 0x10, 0x11, 0x0b, 0x04, 0x07, 0xde, 0x0f, + 0x43, 0x0e, 0x49, 0x0a, 0x41, 0x05, 0x41, 0x01, 0x41, 0x00, 0x3f, 0x3f, + 0x3f, 0x3f, 0x3f, 0xed, 0x32, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xd4, + 0xed, 0x10, 0xfd, 0xd4, 0xed, 0xdd, 0xed, 0x31, 0x30, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x03, 0x23, + 0x11, 0x31, 0xe0, 0xa8, 0xdc, 0xa8, 0xe0, 0x49, 0x10, 0xd0, 0x05, 0x1b, + 0xfb, 0xae, 0x04, 0x52, 0xfb, 0xae, 0x04, 0x52, 0xfb, 0xae, 0xfe, 0x1c, + 0x01, 0x1b, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x00, 0x04, 0x39, 0x05, 0x1b, + 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x35, 0xb1, 0x1b, 0x0d, 0xb8, 0x01, 0xf3, + 0xb3, 0x09, 0x09, 0x0b, 0x05, 0xb8, 0x02, 0x05, 0x40, 0x10, 0x14, 0x0b, + 0x1c, 0x1a, 0xdc, 0x0e, 0x0e, 0x09, 0x0a, 0xdc, 0x0c, 0x41, 0x1b, 0xdc, + 0x09, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x10, 0xd6, 0xd4, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x04, 0x23, 0x21, 0x11, 0x23, 0x35, 0x21, + 0x11, 0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, + 0x02, 0x66, 0x7b, 0xb1, 0x71, 0x36, 0xfe, 0xfa, 0xed, 0xfe, 0x99, 0xd5, + 0x01, 0xc9, 0x83, 0x37, 0x52, 0x37, 0x1b, 0x1a, 0x38, 0x5b, 0x40, 0x71, + 0x03, 0x27, 0x3f, 0x6c, 0x8e, 0x4e, 0xc7, 0xd9, 0x04, 0x56, 0xc5, 0xfe, + 0x0c, 0xfd, 0x9e, 0x25, 0x3d, 0x4d, 0x28, 0x28, 0x48, 0x36, 0x20, 0xfe, + 0x63, 0x00, 0x00, 0x03, 0x00, 0x39, 0x00, 0x00, 0x04, 0x2d, 0x05, 0x1b, + 0x00, 0x0c, 0x00, 0x19, 0x00, 0x1d, 0x00, 0x52, 0xbc, 0x00, 0x1d, 0x01, + 0xcb, 0x00, 0x1b, 0x00, 0x12, 0x01, 0xfd, 0xb4, 0x00, 0x05, 0x01, 0x08, + 0x05, 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x0a, 0x0d, 0x48, 0x05, 0x05, 0x09, + 0x1f, 0x0b, 0x19, 0xb8, 0x01, 0xcb, 0x40, 0x12, 0x0a, 0x1e, 0x09, 0x1d, + 0x43, 0x1b, 0x41, 0x18, 0xdc, 0x0c, 0x0c, 0x09, 0x0a, 0x41, 0x19, 0xdc, + 0x09, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x3f, 0x3f, + 0x01, 0x2f, 0x10, 0xd6, 0xed, 0x32, 0x11, 0x12, 0x39, 0x2f, 0x2b, 0x5e, + 0x5d, 0xed, 0xde, 0xed, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x06, 0x23, 0x21, 0x11, 0x33, 0x11, 0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x11, 0x05, 0x11, 0x33, 0x11, 0x01, 0x63, 0x6f, + 0xa4, 0x69, 0x31, 0xe3, 0xdf, 0xfe, 0xeb, 0xeb, 0x3a, 0x33, 0x45, 0x2a, + 0x12, 0x10, 0x2a, 0x4a, 0x3a, 0x30, 0x02, 0x1e, 0xeb, 0x03, 0x27, 0x3b, + 0x68, 0x90, 0x54, 0xcc, 0xd4, 0x05, 0x1b, 0xfe, 0x0c, 0xfd, 0x9e, 0x21, + 0x39, 0x4f, 0x2e, 0x2a, 0x48, 0x36, 0x1e, 0xfe, 0x63, 0xc5, 0x05, 0x1b, + 0xfa, 0xe5, 0x00, 0x02, 0x00, 0x81, 0x00, 0x00, 0x04, 0x2b, 0x05, 0x1b, + 0x00, 0x0c, 0x00, 0x19, 0x00, 0x2c, 0xb9, 0x00, 0x05, 0x02, 0x05, 0xb2, + 0x12, 0x19, 0x0b, 0xb8, 0x01, 0xf3, 0x40, 0x0d, 0x09, 0x1a, 0x18, 0xdc, + 0x0c, 0x0c, 0x09, 0x0a, 0x41, 0x19, 0xdc, 0x09, 0x43, 0x00, 0x3f, 0xed, + 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xed, 0x32, 0xd4, 0xed, + 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x04, 0x21, 0x21, 0x11, + 0x33, 0x11, 0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, + 0x11, 0x02, 0x44, 0x80, 0xb8, 0x77, 0x38, 0xfe, 0xfc, 0xfe, 0xfc, 0xfe, + 0x5e, 0xf4, 0xbe, 0x3f, 0x5b, 0x3a, 0x1c, 0x1c, 0x3d, 0x63, 0x46, 0xac, + 0x03, 0x27, 0x3b, 0x68, 0x90, 0x54, 0xd1, 0xcf, 0x05, 0x1b, 0xfe, 0x0c, + 0xfd, 0x9e, 0x22, 0x3b, 0x4e, 0x2c, 0x2c, 0x49, 0x34, 0x1d, 0xfe, 0x63, + 0x00, 0x01, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x17, 0x05, 0x31, 0x00, 0x26, + 0x00, 0x51, 0xb3, 0x25, 0x25, 0x1b, 0x11, 0xb8, 0x02, 0x1e, 0x40, 0x0f, + 0x00, 0x24, 0x08, 0x1b, 0x27, 0x00, 0xe0, 0xf0, 0x24, 0x01, 0x24, 0x24, + 0x0c, 0x16, 0x1b, 0xbb, 0x01, 0x22, 0x00, 0x1c, 0x00, 0x1f, 0x01, 0x19, + 0xb2, 0x16, 0x44, 0x09, 0xb8, 0x01, 0x1b, 0xb4, 0x4f, 0x08, 0x01, 0x08, + 0x05, 0xb8, 0x01, 0x14, 0xb1, 0x0c, 0x42, 0x00, 0x3f, 0xfd, 0xd6, 0x5d, + 0xed, 0x3f, 0xfd, 0xd6, 0xed, 0x11, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x01, + 0x10, 0xd6, 0xc4, 0xd4, 0x32, 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x01, + 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x02, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x21, 0x35, 0x03, 0x04, 0x09, + 0x2f, 0x54, 0x7b, 0x55, 0x52, 0x9d, 0x48, 0x55, 0xb1, 0x58, 0x91, 0xdb, + 0x92, 0x4a, 0x4b, 0x9e, 0xeb, 0x93, 0x2b, 0x4f, 0x4f, 0x52, 0x2f, 0x5e, + 0xa7, 0x53, 0x4e, 0x7d, 0x56, 0x28, 0x01, 0xfd, 0xa8, 0x03, 0x06, 0x58, + 0x7f, 0x52, 0x27, 0x30, 0x22, 0xe3, 0x26, 0x24, 0x4f, 0xa4, 0xfd, 0xae, + 0xa6, 0xfe, 0xfd, 0xaf, 0x52, 0x06, 0x0d, 0x16, 0x0f, 0xf1, 0x2b, 0x1e, + 0x2e, 0x64, 0x8c, 0x54, 0xcb, 0x00, 0x00, 0x02, 0x00, 0x35, 0xff, 0xe9, + 0x04, 0x52, 0x05, 0x31, 0x00, 0x1a, 0x00, 0x2c, 0x00, 0x4b, 0xb9, 0x00, + 0x25, 0x01, 0xa0, 0xb3, 0x1a, 0x13, 0x14, 0x18, 0xbb, 0x01, 0xa5, 0x00, + 0x16, 0x00, 0x1b, 0x01, 0xa3, 0x40, 0x1b, 0x09, 0x40, 0x0a, 0x0e, 0x48, + 0x09, 0x16, 0x2d, 0x14, 0xe0, 0x1a, 0x1a, 0x16, 0x18, 0x41, 0x16, 0x43, + 0x12, 0x04, 0x2a, 0xe0, 0x0e, 0x44, 0x20, 0xe0, 0x04, 0x42, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x12, 0x39, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x10, 0xd6, 0xd4, 0x2b, 0xed, 0x10, 0xfd, 0x32, 0xd4, 0x32, 0xed, 0x31, + 0x30, 0x00, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x02, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x33, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x36, 0x01, 0xa0, 0x36, 0x57, 0x7b, 0x4e, 0x6a, 0x88, + 0x4d, 0x1d, 0x2d, 0x59, 0x86, 0x5a, 0x5c, 0x7f, 0x51, 0x26, 0x04, 0x84, + 0xdd, 0xdd, 0x86, 0x01, 0xdf, 0x0c, 0x1e, 0x33, 0x28, 0x24, 0x33, 0x20, + 0x0e, 0x0e, 0x20, 0x31, 0x24, 0x48, 0x3f, 0x03, 0x9e, 0xd4, 0x84, 0x3b, + 0x53, 0xa6, 0xf8, 0xa4, 0xbb, 0xfe, 0xfa, 0xa6, 0x4c, 0x42, 0x90, 0xe1, + 0x9f, 0xfd, 0xc5, 0x05, 0x1b, 0xfd, 0xeb, 0x7f, 0x79, 0xb5, 0x76, 0x3b, + 0x37, 0x72, 0xb1, 0x79, 0x83, 0xb7, 0x72, 0x33, 0xe2, 0x00, 0x00, 0x02, + 0x00, 0x3e, 0x00, 0x00, 0x03, 0xee, 0x05, 0x1b, 0x00, 0x17, 0x00, 0x22, + 0x00, 0x4d, 0xb5, 0x1d, 0x14, 0x01, 0x16, 0x17, 0x18, 0xb8, 0x02, 0x00, + 0xb5, 0x03, 0x01, 0x08, 0x08, 0x17, 0x0e, 0xb8, 0x01, 0xf5, 0x40, 0x16, + 0x10, 0x1f, 0x17, 0x23, 0x16, 0x17, 0x43, 0x03, 0x11, 0xd9, 0x14, 0x01, + 0x0f, 0x1e, 0x1e, 0x0e, 0x0f, 0x43, 0x1f, 0xe2, 0x0e, 0x41, 0x00, 0x3f, + 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x39, 0xed, 0x39, 0x3f, 0x33, + 0x01, 0x10, 0xd6, 0xd4, 0x32, 0xed, 0x11, 0x39, 0x2f, 0x39, 0x39, 0xed, + 0x11, 0x33, 0x11, 0x33, 0xc0, 0x31, 0x30, 0x13, 0x36, 0x36, 0x37, 0x2e, + 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x21, 0x11, 0x23, 0x11, 0x23, 0x22, + 0x06, 0x07, 0x03, 0x21, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x11, 0x23, + 0x22, 0x06, 0xb3, 0x28, 0x6b, 0x30, 0x30, 0x54, 0x40, 0x25, 0x42, 0x81, + 0xbe, 0x7d, 0x01, 0x63, 0xf6, 0x71, 0x4f, 0x64, 0x1f, 0x5f, 0xfe, 0xe8, + 0x01, 0x51, 0x23, 0x43, 0x5d, 0x39, 0x6d, 0x75, 0x7f, 0x75, 0x01, 0x60, + 0x73, 0x67, 0x09, 0x0f, 0x33, 0x4c, 0x66, 0x44, 0x6f, 0x9e, 0x65, 0x2e, + 0xfa, 0xe5, 0x01, 0xf4, 0x4d, 0x6a, 0xfe, 0xc3, 0x03, 0x81, 0x32, 0x54, + 0x2e, 0x18, 0x01, 0x99, 0x62, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe7, 0x06, 0x87, 0x02, 0x26, 0x01, 0xe3, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0xc5, 0x00, 0x00, 0x03, 0xe7, + 0x06, 0x17, 0x00, 0x07, 0x00, 0x26, 0xbc, 0x00, 0x07, 0x01, 0x9f, 0x00, + 0x02, 0x00, 0x03, 0x01, 0xf4, 0xb2, 0x05, 0x08, 0x03, 0xb8, 0x01, 0x0c, + 0xb5, 0x06, 0x41, 0x05, 0x43, 0x00, 0x4b, 0x00, 0x3f, 0x3f, 0x3f, 0xed, + 0x01, 0x10, 0xd6, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x33, 0x11, 0x21, + 0x11, 0x23, 0x11, 0x21, 0x03, 0x1b, 0xcc, 0xfd, 0xd3, 0xf5, 0x02, 0x4c, + 0x06, 0x17, 0xfe, 0x33, 0xfb, 0xb6, 0x05, 0x1b, 0x00, 0x01, 0x00, 0x00, + 0xff, 0xf5, 0x04, 0x52, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x43, 0xb1, 0x0a, + 0x14, 0xb8, 0x01, 0xf3, 0xb5, 0x16, 0x19, 0x16, 0x19, 0x17, 0x06, 0xb8, + 0x01, 0xf5, 0x40, 0x11, 0x0f, 0x17, 0x1b, 0x17, 0xde, 0x19, 0x01, 0xdc, + 0x0f, 0x13, 0x13, 0x15, 0x19, 0x41, 0x15, 0x43, 0x0a, 0xb8, 0x01, 0x0d, + 0xb1, 0x09, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x39, + 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xd4, 0xed, 0x11, 0x39, 0x39, 0x2f, + 0x2f, 0xfd, 0xc6, 0x31, 0x30, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x06, 0x27, 0x35, 0x16, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, + 0x23, 0x11, 0x23, 0x35, 0x21, 0x15, 0x21, 0x01, 0xc3, 0xb0, 0x75, 0xb3, + 0x79, 0x3e, 0xfa, 0xf0, 0x45, 0x5e, 0x39, 0x18, 0x84, 0x7a, 0x9b, 0xf4, + 0xcf, 0x02, 0xec, 0xfe, 0xd7, 0x03, 0x6d, 0x3a, 0x6c, 0x98, 0x5e, 0xf5, + 0xe7, 0x09, 0xd3, 0x03, 0x1e, 0x3f, 0x5d, 0x3b, 0x6d, 0x78, 0xfd, 0x58, + 0x04, 0x52, 0xc9, 0xc9, 0x00, 0x01, 0x00, 0x50, 0xff, 0xe9, 0x03, 0xfe, + 0x05, 0x31, 0x00, 0x24, 0x00, 0x57, 0xb7, 0x23, 0x23, 0x0f, 0x1a, 0x06, + 0x0f, 0x22, 0x00, 0xb8, 0x02, 0x1f, 0xb2, 0x0f, 0x25, 0x19, 0xb8, 0x01, + 0x21, 0xb4, 0x50, 0x1a, 0x01, 0x1a, 0x1d, 0xb8, 0x01, 0x12, 0x40, 0x0c, + 0x14, 0x22, 0xe0, 0xf0, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x14, 0x42, 0x07, + 0xb8, 0x01, 0x18, 0xb4, 0x40, 0x06, 0x01, 0x06, 0x03, 0xb8, 0x01, 0x15, + 0xb1, 0x0a, 0x44, 0x00, 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x3f, 0x12, 0x39, + 0x2f, 0x5d, 0xed, 0x10, 0xfd, 0xd6, 0x5d, 0xed, 0x01, 0x10, 0xd6, 0xfd, + 0xc4, 0x10, 0xd4, 0xc6, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x16, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x07, 0x21, 0x15, 0x01, 0x60, 0x0a, 0xab, 0xa9, + 0x55, 0xa3, 0x48, 0x55, 0xb9, 0x58, 0x8c, 0xe1, 0x96, 0x45, 0x4f, 0x99, + 0xe1, 0x91, 0x2d, 0x4f, 0x4f, 0x52, 0x2f, 0x4c, 0xa5, 0x49, 0x51, 0x79, + 0x54, 0x32, 0x0c, 0x02, 0x56, 0x02, 0x3b, 0xc4, 0xb2, 0x2f, 0x20, 0xdf, + 0x23, 0x29, 0x4d, 0xa6, 0xfd, 0xa0, 0xa9, 0x01, 0x04, 0xb1, 0x5a, 0x04, + 0x0b, 0x13, 0x0f, 0xf0, 0x23, 0x25, 0x2d, 0x56, 0x7e, 0x51, 0xcb, 0x00, + 0xff, 0xff, 0x00, 0x62, 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x31, 0x02, 0x06, + 0x00, 0x16, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x06, 0x9a, + 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x96, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x1b, 0x02, 0x06, + 0x00, 0x0c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, + 0x06, 0x9a, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, + 0x00, 0x00, 0xff, 0xff, 0x00, 0xac, 0xff, 0xec, 0x03, 0x89, 0x05, 0x1b, + 0x02, 0x06, 0x00, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x09, 0x06, 0x87, 0x02, 0x26, 0x01, 0xe8, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, + 0x00, 0x00, 0x00, 0x02, 0xff, 0xf2, 0xff, 0xf6, 0x04, 0x66, 0x05, 0x1b, + 0x00, 0x21, 0x00, 0x2e, 0x00, 0x5c, 0xb7, 0x1d, 0x11, 0x20, 0x0f, 0x0f, + 0x11, 0x0e, 0x2d, 0xb8, 0x01, 0xa3, 0xb5, 0x19, 0x11, 0x0d, 0x0d, 0x18, + 0x26, 0xb8, 0x01, 0xc6, 0x40, 0x1e, 0x06, 0x30, 0x18, 0x2f, 0x1f, 0x0f, + 0x1d, 0x11, 0x04, 0x15, 0x21, 0x2c, 0xd9, 0x01, 0x01, 0x0c, 0x20, 0x0e, + 0xd9, 0x21, 0x41, 0x15, 0x19, 0xd7, 0x18, 0x43, 0x2d, 0xd9, 0x0c, 0x43, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0xc5, 0x3f, 0xed, 0x33, 0x12, 0x39, 0x2f, + 0xed, 0x11, 0x12, 0x17, 0x39, 0x01, 0x10, 0xc5, 0x10, 0xd4, 0xed, 0x12, + 0x39, 0x2f, 0x39, 0x39, 0xed, 0xc6, 0x11, 0x39, 0x11, 0x33, 0x11, 0x33, + 0x31, 0x30, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x23, 0x11, 0x23, 0x06, 0x02, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x37, + 0x16, 0x3e, 0x03, 0x12, 0x13, 0x21, 0x12, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x23, 0x11, 0x33, 0x02, 0xc7, 0x25, 0x69, 0x90, 0x5a, 0x27, + 0x2c, 0x5f, 0x96, 0x6a, 0xef, 0x63, 0x09, 0x18, 0x24, 0x30, 0x3f, 0x50, + 0x32, 0x17, 0x33, 0x17, 0x0a, 0x17, 0x2a, 0x27, 0x21, 0x1d, 0x17, 0x08, + 0x02, 0x06, 0x52, 0x3b, 0x21, 0x0c, 0x0b, 0x22, 0x40, 0x35, 0x18, 0x22, + 0x03, 0x29, 0x3c, 0x69, 0x90, 0x54, 0x61, 0x9a, 0x6c, 0x39, 0x04, 0x5a, + 0xdd, 0xfe, 0xae, 0xfa, 0xa9, 0x66, 0x2c, 0x07, 0x07, 0xbf, 0x02, 0x14, + 0x4c, 0x93, 0xf8, 0x01, 0x6e, 0x01, 0x01, 0xfb, 0xa6, 0x20, 0x3a, 0x51, + 0x30, 0x2a, 0x4a, 0x38, 0x20, 0xfe, 0x59, 0x00, 0x00, 0x02, 0x00, 0x31, + 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x14, 0x00, 0x21, 0x00, 0x4b, + 0xb1, 0x08, 0x21, 0xb8, 0x01, 0xa3, 0xb4, 0x13, 0x07, 0x07, 0x02, 0x1a, + 0xb8, 0x01, 0xc6, 0xb3, 0x0f, 0x23, 0x01, 0x04, 0xb8, 0x01, 0xa3, 0x40, + 0x15, 0x02, 0x22, 0x15, 0xd9, 0x13, 0x43, 0x08, 0x41, 0x00, 0xd9, 0x06, + 0x06, 0x20, 0xd9, 0x0a, 0x0a, 0x02, 0x04, 0x41, 0x02, 0x43, 0x00, 0x3f, + 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x2f, 0xed, 0x3f, 0x3f, 0xed, 0x01, + 0x10, 0xd6, 0xed, 0x32, 0x10, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x33, 0xed, + 0x32, 0x31, 0x30, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x23, 0x23, 0x11, 0x01, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x01, 0x0c, + 0xdb, 0xdb, 0xc7, 0xdb, 0x2d, 0x69, 0x96, 0x60, 0x2c, 0xcb, 0xd0, 0xf8, + 0x01, 0x06, 0x30, 0x40, 0x26, 0x12, 0x10, 0x28, 0x45, 0x35, 0x21, 0x02, + 0x54, 0xfd, 0xac, 0x05, 0x1b, 0xfd, 0xfa, 0x02, 0x06, 0xfe, 0x0e, 0x3c, + 0x69, 0x90, 0x54, 0xc6, 0xda, 0x02, 0x54, 0xfe, 0x6d, 0x20, 0x3a, 0x51, + 0x30, 0x2c, 0x4b, 0x36, 0x1f, 0xfe, 0x59, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x42, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x3d, 0xb1, 0x1b, + 0x13, 0xb8, 0x01, 0xf3, 0xb6, 0x15, 0x19, 0x15, 0x19, 0x15, 0x18, 0x0b, + 0xb8, 0x01, 0xf3, 0x40, 0x11, 0x08, 0x18, 0x1b, 0x16, 0xde, 0x18, 0x03, + 0xdc, 0x10, 0x10, 0x09, 0x18, 0x41, 0x15, 0x43, 0x09, 0x43, 0x00, 0x3f, + 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xd4, + 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x32, 0x32, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x22, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x15, + 0x21, 0x01, 0xc3, 0x2f, 0x66, 0x36, 0x7e, 0xa7, 0x66, 0x29, 0xf4, 0x14, + 0x2f, 0x4e, 0x39, 0x2e, 0x66, 0x2d, 0xf4, 0xcf, 0x02, 0xeb, 0xfe, 0xd8, + 0x03, 0x6d, 0x40, 0x78, 0xab, 0x6a, 0xfe, 0x60, 0x01, 0x92, 0x3f, 0x66, + 0x48, 0x29, 0xfd, 0x58, 0x04, 0x52, 0xc9, 0xc9, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x58, 0x06, 0x77, 0x02, 0x26, 0x01, 0xf3, 0x00, 0x00, + 0x00, 0x06, 0x02, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x61, 0xfe, 0xe5, + 0x04, 0x05, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x3b, 0xbf, 0x00, 0x07, 0x01, + 0xf7, 0x00, 0x0a, 0x00, 0x0b, 0x01, 0xf3, 0x00, 0x02, 0x00, 0x06, 0x01, + 0xf7, 0x40, 0x09, 0x03, 0x02, 0x02, 0x0c, 0x0d, 0x05, 0x09, 0x41, 0x07, + 0xb8, 0x01, 0x10, 0xb5, 0x0b, 0x0b, 0x02, 0x43, 0x00, 0x49, 0x00, 0x3f, + 0x3f, 0x33, 0x2f, 0xed, 0x3f, 0x33, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xdd, + 0xed, 0x10, 0xfd, 0xdd, 0xed, 0x31, 0x30, 0x01, 0x23, 0x03, 0x21, 0x11, + 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x02, 0xa6, 0xe6, 0x07, 0xfe, + 0xa8, 0xf8, 0x01, 0xb4, 0xf8, 0xfe, 0xa8, 0xfe, 0xe5, 0x01, 0x1b, 0x05, + 0x1b, 0xfb, 0xbc, 0x04, 0x44, 0xfa, 0xe5, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x39, 0x05, 0x1b, 0x00, 0x10, 0x00, 0x1d, 0x00, 0x3b, + 0xb1, 0x1d, 0x0f, 0xb8, 0x01, 0xf3, 0xb5, 0x09, 0x0e, 0x09, 0x0e, 0x0c, + 0x16, 0xb8, 0x02, 0x05, 0x40, 0x11, 0x05, 0x0c, 0x0f, 0x0a, 0xde, 0x0c, + 0x1b, 0xdb, 0x00, 0x00, 0x09, 0x0c, 0x41, 0x1d, 0xdc, 0x09, 0x43, 0x00, + 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, + 0xd4, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x04, 0x23, 0x21, 0x11, 0x23, 0x35, 0x21, + 0x15, 0x21, 0x11, 0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x23, 0x11, 0x02, 0x52, 0x7c, 0xb8, 0x78, 0x3b, 0xfe, 0xf7, 0xff, 0xfe, + 0x9e, 0xcf, 0x02, 0xec, 0xfe, 0xd7, 0x7f, 0x3b, 0x59, 0x3c, 0x1f, 0x1d, + 0x3f, 0x62, 0x44, 0x6c, 0x03, 0x12, 0x39, 0x66, 0x8b, 0x52, 0xc9, 0xcd, + 0x04, 0x52, 0xc9, 0xc9, 0xfe, 0xc0, 0xfd, 0xb3, 0x21, 0x38, 0x4a, 0x29, + 0x2a, 0x46, 0x32, 0x1b, 0xfe, 0x77, 0x00, 0x03, 0x00, 0x25, 0xff, 0xe9, + 0x04, 0x42, 0x05, 0x31, 0x00, 0x08, 0x00, 0x11, 0x00, 0x21, 0x00, 0x3b, + 0xb1, 0x0e, 0x06, 0xbb, 0x02, 0x03, 0x00, 0x1a, 0x00, 0x12, 0x02, 0x03, + 0x40, 0x0c, 0x0f, 0x05, 0x1a, 0x0f, 0xe0, 0xf0, 0x06, 0x01, 0x06, 0x06, + 0x17, 0x09, 0xb8, 0x01, 0x14, 0xb2, 0x1f, 0x42, 0x00, 0xb8, 0x01, 0x15, + 0xb1, 0x17, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, + 0xed, 0x01, 0x2f, 0xdd, 0xc5, 0xed, 0x10, 0xfd, 0xc5, 0x31, 0x30, 0x25, + 0x32, 0x3e, 0x02, 0x37, 0x21, 0x16, 0x16, 0x13, 0x22, 0x0e, 0x02, 0x07, + 0x21, 0x26, 0x26, 0x01, 0x14, 0x02, 0x06, 0x06, 0x23, 0x20, 0x00, 0x11, + 0x34, 0x12, 0x36, 0x36, 0x33, 0x20, 0x00, 0x02, 0x33, 0x43, 0x61, 0x3f, + 0x22, 0x05, 0xfd, 0xed, 0x08, 0x7d, 0x84, 0x41, 0x5c, 0x3f, 0x23, 0x09, + 0x02, 0x10, 0x0c, 0x87, 0x01, 0x9a, 0x54, 0x91, 0xc3, 0x6f, 0xfe, 0xfe, + 0xfe, 0xfc, 0x53, 0x91, 0xc3, 0x6f, 0x01, 0x02, 0x01, 0x05, 0xc5, 0x34, + 0x5e, 0x86, 0x5e, 0xb5, 0xc1, 0x03, 0x91, 0x30, 0x56, 0x77, 0x53, 0xac, + 0xa4, 0xfe, 0x3d, 0xb2, 0xfe, 0xfe, 0xa6, 0x50, 0x01, 0x57, 0x01, 0x47, + 0xb2, 0x01, 0x02, 0xa6, 0x50, 0xfe, 0xaa, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x60, 0x05, 0x2d, 0x00, 0x15, 0x00, 0x3e, 0x40, 0x0f, + 0x07, 0x0c, 0x0e, 0x05, 0x05, 0x15, 0x08, 0x0a, 0x09, 0x20, 0x0c, 0x0c, + 0x16, 0x17, 0x04, 0xb8, 0x01, 0x1c, 0x40, 0x0c, 0x12, 0x42, 0x0c, 0x05, + 0x0e, 0x03, 0x08, 0x09, 0x41, 0x07, 0x08, 0x43, 0x00, 0x3f, 0x33, 0x3f, + 0x12, 0x17, 0x39, 0x3f, 0xed, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x1a, + 0x18, 0xcd, 0x32, 0x33, 0xcd, 0x39, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, + 0x01, 0x26, 0x22, 0x23, 0x22, 0x06, 0x07, 0x01, 0x21, 0x01, 0x21, 0x1b, + 0x02, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x04, 0x60, 0x08, 0x0e, 0x06, + 0x20, 0x28, 0x10, 0xfe, 0xdf, 0xfe, 0xba, 0xfe, 0x7b, 0x01, 0x17, 0xd5, + 0x43, 0xd1, 0x0d, 0x2b, 0x41, 0x5c, 0x3f, 0x11, 0x29, 0x12, 0x04, 0x46, + 0x02, 0x28, 0x39, 0xfc, 0x19, 0x05, 0x1b, 0xfc, 0xed, 0xfe, 0xfe, 0x03, + 0x35, 0x35, 0x59, 0x40, 0x24, 0x03, 0x03, 0x00, 0xff, 0xff, 0x00, 0x6d, + 0xff, 0xe9, 0x03, 0xd9, 0x04, 0x0e, 0x02, 0x06, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x62, 0xff, 0xe9, 0x04, 0x23, 0x05, 0xa7, 0x00, 0x28, + 0x00, 0x36, 0x00, 0x4c, 0xb3, 0x14, 0x14, 0x0a, 0x00, 0xbb, 0x02, 0x13, + 0x00, 0x29, 0x00, 0x2e, 0x02, 0x0d, 0xb5, 0x0a, 0x37, 0x2e, 0x05, 0x1f, + 0x2b, 0xb8, 0x01, 0x08, 0xb5, 0x24, 0x4f, 0x1d, 0x10, 0x05, 0x14, 0xbb, + 0x01, 0x3e, 0x00, 0x15, 0x00, 0x17, 0x01, 0x3c, 0xb2, 0x10, 0x53, 0x34, + 0xb8, 0x01, 0x02, 0xb1, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xfd, 0xdd, + 0xed, 0x11, 0x12, 0x39, 0x3f, 0xed, 0xcd, 0x11, 0x39, 0x01, 0x10, 0xd6, + 0xed, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x37, 0x3e, 0x03, + 0x37, 0x15, 0x06, 0x06, 0x07, 0x0e, 0x05, 0x07, 0x3e, 0x03, 0x33, 0x32, + 0x1e, 0x02, 0x07, 0x10, 0x23, 0x22, 0x06, 0x07, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x04, 0x23, 0x42, 0x7e, 0xb8, 0x76, 0x75, 0xaf, 0x75, + 0x3a, 0x33, 0x82, 0xc7, 0x75, 0x4f, 0x58, 0x48, 0x57, 0x31, 0x43, 0xed, + 0x52, 0x24, 0x41, 0x42, 0x30, 0x19, 0x14, 0x05, 0x1a, 0x51, 0x55, 0x63, + 0x3c, 0x59, 0x91, 0x67, 0x34, 0xfc, 0xbf, 0x48, 0x87, 0x41, 0x1d, 0x3b, + 0x57, 0x3b, 0x6a, 0x7b, 0x02, 0x08, 0x6b, 0xd0, 0x93, 0x51, 0x4b, 0x9b, + 0xf0, 0xa5, 0xb8, 0x01, 0x15, 0xc3, 0x6d, 0x15, 0x0e, 0x09, 0x06, 0x0a, + 0x0a, 0xe0, 0x0c, 0x15, 0x11, 0x08, 0x1d, 0x37, 0x50, 0x4a, 0x4d, 0x23, + 0x24, 0x43, 0x2a, 0x19, 0x41, 0x7a, 0xb0, 0x6e, 0x01, 0x0c, 0x63, 0x51, + 0x0a, 0x6b, 0x9f, 0x69, 0x2b, 0xb3, 0x00, 0x03, 0x00, 0x7d, 0xff, 0xee, + 0x04, 0x14, 0x04, 0x0a, 0x00, 0x15, 0x00, 0x22, 0x00, 0x2d, 0x00, 0x47, + 0xb9, 0x00, 0x16, 0x02, 0x13, 0xb3, 0x09, 0x09, 0x03, 0x13, 0xb8, 0x02, + 0x19, 0xb2, 0x26, 0x2b, 0x1c, 0xb8, 0x01, 0xe3, 0x40, 0x18, 0x03, 0x2e, + 0x0e, 0x1d, 0xca, 0x00, 0x2a, 0x01, 0x50, 0x2a, 0x60, 0x2a, 0x02, 0x2a, + 0x2a, 0x00, 0x19, 0xf3, 0x06, 0x50, 0x23, 0xf4, 0x00, 0x52, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x71, 0x72, 0xed, 0x39, 0x01, 0x10, + 0xd6, 0xed, 0x32, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x05, + 0x22, 0x26, 0x27, 0x11, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x1e, 0x03, 0x15, 0x14, 0x04, 0x03, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x15, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x23, 0x11, 0x16, 0x16, 0x02, 0x0e, 0x66, 0xc7, 0x64, 0xd3, 0xd3, + 0xe6, 0xd8, 0x17, 0x30, 0x48, 0x32, 0x32, 0x58, 0x43, 0x27, 0xfe, 0xf7, + 0x26, 0x62, 0x61, 0x3d, 0x50, 0x28, 0xad, 0x40, 0x48, 0x2d, 0x16, 0xb8, + 0x71, 0x72, 0x6c, 0x78, 0xbf, 0x30, 0x5a, 0x12, 0x0f, 0x0f, 0x03, 0xe2, + 0x1c, 0x7f, 0x7b, 0x28, 0x4b, 0x3f, 0x35, 0x10, 0x06, 0x24, 0x3a, 0x53, + 0x33, 0xa4, 0x9d, 0x02, 0xf5, 0x38, 0x39, 0x03, 0x05, 0xec, 0x13, 0x21, + 0x31, 0xfd, 0xe1, 0x4c, 0x41, 0x3e, 0x45, 0xfe, 0xfe, 0x08, 0x06, 0x00, + 0x00, 0x01, 0x00, 0xcd, 0x00, 0x00, 0x03, 0xe1, 0x03, 0xf8, 0x00, 0x05, + 0x00, 0x23, 0xb9, 0x00, 0x01, 0x02, 0x0b, 0xb6, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x07, 0x01, 0xb8, 0x01, 0x31, 0xb3, 0x04, 0x4f, 0x03, 0x51, 0x00, + 0x3f, 0x3f, 0xed, 0x11, 0x12, 0x01, 0x39, 0x39, 0x2f, 0x2f, 0xed, 0x31, + 0x30, 0x01, 0x21, 0x11, 0x23, 0x11, 0x21, 0x03, 0xe1, 0xfd, 0xe0, 0xf4, + 0x03, 0x14, 0x03, 0x27, 0xfc, 0xd9, 0x03, 0xf8, 0x00, 0x02, 0x00, 0x10, + 0xff, 0x00, 0x04, 0x54, 0x03, 0xf8, 0x00, 0x07, 0x00, 0x19, 0x00, 0x5a, + 0xb9, 0x00, 0x00, 0x01, 0xe2, 0x40, 0x0c, 0x18, 0x08, 0x03, 0x15, 0x02, + 0x16, 0x15, 0x16, 0x17, 0x17, 0x0f, 0x0b, 0xbb, 0x01, 0xe1, 0x00, 0x08, + 0x00, 0x0c, 0x01, 0xe1, 0x40, 0x09, 0x0f, 0x1a, 0x16, 0x02, 0x15, 0x03, + 0x04, 0x0c, 0x01, 0xb8, 0x01, 0x08, 0xb6, 0x17, 0x4f, 0x0d, 0x5c, 0x19, + 0x0f, 0x06, 0xb8, 0x01, 0x08, 0xb3, 0x0c, 0x51, 0x0a, 0x5c, 0x00, 0x3f, + 0x3f, 0xed, 0x32, 0x32, 0x3f, 0x3f, 0xed, 0x12, 0x17, 0x39, 0x01, 0x10, + 0xd6, 0xed, 0xd4, 0xed, 0x12, 0x39, 0x2f, 0x39, 0x39, 0x11, 0x33, 0x11, + 0x33, 0x10, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x23, 0x0e, 0x03, 0x07, 0x21, + 0x21, 0x03, 0x23, 0x11, 0x21, 0x11, 0x23, 0x03, 0x33, 0x32, 0x3e, 0x03, + 0x12, 0x37, 0x21, 0x11, 0x02, 0xfa, 0xe3, 0x0a, 0x14, 0x20, 0x34, 0x18, + 0x01, 0x6d, 0x01, 0x5a, 0x0c, 0xe2, 0xfd, 0x98, 0xe1, 0x0d, 0x19, 0x26, + 0x41, 0x38, 0x2c, 0x24, 0x19, 0x08, 0x02, 0xb0, 0x03, 0x2b, 0x84, 0xc7, + 0x91, 0x63, 0x1f, 0xfe, 0x33, 0x01, 0x00, 0xff, 0x00, 0x01, 0xcd, 0x16, + 0x3e, 0x70, 0xb4, 0x01, 0x02, 0xb1, 0xfc, 0xd5, 0xff, 0xff, 0x00, 0x66, + 0xff, 0xe9, 0x04, 0x00, 0x04, 0x0e, 0x02, 0x06, 0x00, 0x87, 0x00, 0x00, + 0x00, 0x01, 0xff, 0xfa, 0x00, 0x00, 0x04, 0x6c, 0x03, 0xf8, 0x00, 0x11, + 0x00, 0x66, 0x40, 0x1b, 0x0e, 0x11, 0x10, 0x0f, 0x0e, 0x11, 0x0c, 0x11, + 0x00, 0x05, 0x02, 0x03, 0x04, 0x0f, 0x04, 0x0f, 0x04, 0x06, 0x0d, 0x00, + 0x05, 0x08, 0x07, 0x08, 0x06, 0x02, 0x01, 0xb8, 0x01, 0xac, 0x40, 0x17, + 0x0b, 0x00, 0x00, 0x12, 0x13, 0x08, 0x0b, 0x11, 0x02, 0x04, 0x06, 0x0f, + 0x4f, 0x0d, 0x51, 0x09, 0x51, 0x06, 0x51, 0x04, 0x4f, 0x00, 0x4f, 0x00, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x12, 0x17, 0x39, 0x11, 0x12, 0x01, + 0x39, 0x2f, 0x33, 0xfd, 0x32, 0xc4, 0x33, 0x32, 0x11, 0x33, 0x10, 0xc4, + 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x32, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x01, 0x33, 0x11, 0x13, + 0x33, 0x03, 0x13, 0x23, 0x03, 0x11, 0x23, 0x11, 0x03, 0x23, 0x13, 0x03, + 0x33, 0x13, 0x01, 0xc7, 0xd9, 0xcf, 0xed, 0xeb, 0xfb, 0xfd, 0xcf, 0xd9, + 0xcf, 0xfe, 0xfc, 0xec, 0xee, 0xcf, 0x03, 0xf8, 0xfe, 0x1c, 0x01, 0xe4, + 0xfe, 0x1c, 0xfd, 0xec, 0x02, 0x00, 0xfe, 0x00, 0x02, 0x00, 0xfe, 0x00, + 0x02, 0x14, 0x01, 0xe4, 0xfe, 0x1c, 0x00, 0x01, 0x00, 0x69, 0xff, 0xe9, + 0x03, 0xfc, 0x04, 0x0e, 0x00, 0x34, 0x00, 0x57, 0x40, 0x09, 0x1d, 0x0e, + 0x24, 0x24, 0x0e, 0x1d, 0x03, 0x00, 0x2e, 0xb8, 0x02, 0x19, 0x40, 0x0a, + 0x08, 0x00, 0x35, 0x0f, 0xcc, 0x0e, 0x0e, 0x21, 0x31, 0x34, 0xb8, 0x01, + 0x03, 0x40, 0x0f, 0x9f, 0x00, 0xaf, 0x00, 0xbf, 0x00, 0x03, 0x00, 0x03, + 0xf5, 0x31, 0x52, 0x1e, 0xfb, 0x1d, 0xb8, 0xff, 0xc0, 0xb7, 0x14, 0x17, + 0x48, 0x1d, 0x1a, 0xf3, 0x21, 0x50, 0x00, 0x3f, 0xfd, 0xd6, 0x2b, 0xed, + 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x10, + 0xd6, 0xd6, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x31, 0x30, 0x37, + 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x21, + 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x1e, 0x03, 0x15, 0x14, 0x04, 0x21, 0x22, 0x26, 0x27, 0x6a, 0x54, 0xd7, + 0x58, 0x59, 0x59, 0x3b, 0x1e, 0x1c, 0x40, 0x6a, 0x4c, 0xfe, 0xf3, 0xff, + 0x5b, 0x53, 0x32, 0x15, 0x16, 0x34, 0x5f, 0x4c, 0x44, 0xb7, 0x58, 0x54, + 0xbf, 0x5d, 0xf3, 0xe1, 0x17, 0x30, 0x49, 0x31, 0x31, 0x59, 0x43, 0x27, + 0xfe, 0xf2, 0xfe, 0xef, 0x56, 0xbd, 0x61, 0xd4, 0x18, 0x1a, 0x16, 0x27, + 0x35, 0x1f, 0x1f, 0x30, 0x22, 0x12, 0xae, 0x15, 0x24, 0x2f, 0x1b, 0x1a, + 0x2a, 0x1d, 0x10, 0x14, 0x17, 0xbf, 0x0e, 0x14, 0x88, 0x82, 0x23, 0x46, + 0x3e, 0x30, 0x0e, 0x07, 0x26, 0x3d, 0x53, 0x33, 0xa1, 0xa5, 0x12, 0x11, + 0x00, 0x01, 0x00, 0x7e, 0x00, 0x00, 0x03, 0xe8, 0x03, 0xf8, 0x00, 0x0b, + 0x00, 0x34, 0xb3, 0x03, 0x09, 0x01, 0x07, 0xbb, 0x01, 0xe3, 0x00, 0x04, + 0x00, 0x0b, 0x01, 0xe3, 0x40, 0x0e, 0x01, 0x04, 0x0c, 0x01, 0x07, 0x04, + 0x09, 0x06, 0x0a, 0x4f, 0x03, 0x00, 0x04, 0x51, 0x00, 0x3f, 0x33, 0x33, + 0x3f, 0x33, 0x33, 0x12, 0x39, 0x39, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x10, + 0xed, 0x11, 0x33, 0x32, 0x31, 0x30, 0x21, 0x11, 0x23, 0x01, 0x23, 0x11, + 0x33, 0x11, 0x33, 0x01, 0x33, 0x11, 0x02, 0xf8, 0x02, 0xfe, 0x6f, 0xe7, + 0xf0, 0x02, 0x01, 0x90, 0xe8, 0x02, 0x7b, 0xfd, 0x85, 0x03, 0xf8, 0xfd, + 0x85, 0x02, 0x7b, 0xfc, 0x08, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe8, 0x05, 0x85, 0x02, 0x26, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x06, + 0x02, 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x04, 0x3d, + 0x03, 0xf8, 0x00, 0x0a, 0x00, 0x3b, 0x40, 0x0c, 0x09, 0x06, 0x07, 0x08, + 0x08, 0x03, 0x09, 0x01, 0x00, 0x0a, 0x01, 0x06, 0xb8, 0x01, 0xe3, 0x40, + 0x0d, 0x03, 0x0b, 0x06, 0x01, 0x03, 0x07, 0x05, 0x08, 0x4f, 0x0a, 0x00, + 0x03, 0x51, 0x00, 0x3f, 0x33, 0x32, 0x3f, 0x33, 0x33, 0x12, 0x39, 0x39, + 0x01, 0x10, 0xd6, 0xed, 0x32, 0xc4, 0x32, 0x11, 0x33, 0x11, 0x39, 0x2f, + 0x33, 0x11, 0x33, 0x31, 0x30, 0x21, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x01, 0x21, 0x01, 0x01, 0x03, 0x04, 0xfe, 0x82, 0xf0, 0xf0, 0x01, 0x68, + 0x01, 0x2d, 0xfe, 0x64, 0x01, 0xbe, 0x01, 0xfc, 0xfe, 0x04, 0x03, 0xf8, + 0xfe, 0x52, 0x01, 0xae, 0xfe, 0x31, 0xfd, 0xd7, 0x00, 0x01, 0x00, 0x10, + 0xff, 0xfa, 0x03, 0xe3, 0x03, 0xf8, 0x00, 0x13, 0x00, 0x4f, 0x40, 0x0e, + 0x11, 0x01, 0x0e, 0x0e, 0x05, 0x0d, 0x06, 0x05, 0x06, 0x13, 0x07, 0x07, + 0x13, 0x08, 0xb8, 0x01, 0xe2, 0x40, 0x0b, 0x0b, 0x13, 0x14, 0x06, 0x0d, + 0x05, 0x0e, 0x04, 0x08, 0x12, 0x00, 0xb8, 0x01, 0x0a, 0xb4, 0x13, 0x51, + 0x09, 0x51, 0x0c, 0xb8, 0x01, 0x08, 0xb2, 0x07, 0x08, 0x4f, 0x00, 0x3f, + 0x33, 0xed, 0x3f, 0x3f, 0xed, 0xc5, 0x11, 0x17, 0x39, 0x01, 0x10, 0xd6, + 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x12, 0x39, 0x39, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x33, 0x31, 0x30, 0x37, 0x16, 0x3e, 0x03, 0x12, 0x37, 0x21, + 0x11, 0x23, 0x11, 0x23, 0x06, 0x02, 0x0e, 0x03, 0x27, 0x19, 0x29, 0x46, + 0x39, 0x2d, 0x23, 0x1a, 0x08, 0x02, 0xb0, 0xef, 0xe4, 0x09, 0x29, 0x40, + 0x56, 0x6c, 0x81, 0x4b, 0xd7, 0x01, 0x0c, 0x35, 0x69, 0xb3, 0x01, 0x09, + 0xbc, 0xfc, 0x08, 0x03, 0x2b, 0xbf, 0xfe, 0xee, 0xbc, 0x6e, 0x34, 0x02, + 0x0e, 0x00, 0x00, 0x01, 0x00, 0x2d, 0x00, 0x00, 0x04, 0x39, 0x03, 0xf8, + 0x00, 0x12, 0x00, 0x69, 0x40, 0x32, 0x04, 0x10, 0x02, 0x02, 0x0e, 0x01, + 0x01, 0x00, 0x11, 0x12, 0x0e, 0x0c, 0x07, 0x05, 0x0e, 0x07, 0x07, 0x08, + 0x0e, 0x08, 0x09, 0x0b, 0x0a, 0x0e, 0x0e, 0x14, 0x13, 0x04, 0x0e, 0x01, + 0x08, 0x07, 0x02, 0x05, 0x0b, 0x05, 0x05, 0x0a, 0x0b, 0x0b, 0x0c, 0x0c, + 0x10, 0x11, 0x4f, 0x12, 0x00, 0x09, 0x0a, 0x51, 0x00, 0x3f, 0x33, 0x33, + 0x32, 0x3f, 0x33, 0x33, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0x12, 0x17, + 0x39, 0x33, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x18, 0xd4, 0xcd, 0x33, + 0x32, 0x11, 0x12, 0x39, 0x19, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x18, 0x10, + 0xd4, 0xcd, 0x33, 0x32, 0x11, 0x12, 0x39, 0x19, 0x2f, 0x33, 0x32, 0x31, + 0x30, 0x21, 0x03, 0x27, 0x07, 0x03, 0x23, 0x03, 0x27, 0x07, 0x03, 0x23, + 0x13, 0x21, 0x13, 0x17, 0x37, 0x13, 0x21, 0x13, 0x03, 0x60, 0x18, 0x09, + 0x3f, 0x91, 0x9a, 0x83, 0x37, 0x07, 0x16, 0xd1, 0x40, 0x01, 0x16, 0x73, + 0x37, 0x37, 0x79, 0x01, 0x1b, 0x41, 0x02, 0x17, 0xf7, 0xaa, 0xfe, 0x8a, + 0x01, 0x76, 0xaa, 0xf3, 0xfd, 0xe5, 0x03, 0xf8, 0xfe, 0xc4, 0xb0, 0xa8, + 0x01, 0x44, 0xfc, 0x08, 0x00, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x03, 0xe9, + 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x36, 0xb1, 0x03, 0x06, 0xbb, 0x01, 0xe3, + 0x00, 0x04, 0x00, 0x0a, 0x01, 0xe2, 0x40, 0x09, 0x09, 0x00, 0x04, 0x0c, + 0x0b, 0x51, 0x0a, 0x4f, 0x08, 0xb8, 0x01, 0x0a, 0xb6, 0x02, 0x02, 0x04, + 0x05, 0x4f, 0x04, 0x51, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x3f, + 0x3f, 0x01, 0x10, 0xd6, 0xd4, 0x32, 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, + 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, + 0x02, 0xfa, 0xfe, 0x75, 0xf0, 0xf0, 0x01, 0x8b, 0xef, 0x01, 0xac, 0xfe, + 0x54, 0x03, 0xf8, 0xfe, 0x83, 0x01, 0x7d, 0xfc, 0x08, 0x00, 0xff, 0xff, + 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x04, 0x0e, 0x02, 0x06, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x7f, 0x00, 0x00, 0x03, 0xe9, 0x03, 0xf8, + 0x00, 0x07, 0x00, 0x26, 0xbc, 0x00, 0x06, 0x01, 0xe2, 0x00, 0x00, 0x00, + 0x02, 0x01, 0xe3, 0xb4, 0x04, 0x08, 0x07, 0x51, 0x02, 0xb8, 0x01, 0x31, + 0xb3, 0x05, 0x4f, 0x04, 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x01, 0x10, + 0xd6, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, + 0x21, 0x11, 0x02, 0xfa, 0xfe, 0x75, 0xf0, 0x03, 0x6a, 0x03, 0x27, 0xfc, + 0xd9, 0x03, 0xf8, 0xfc, 0x08, 0x00, 0xff, 0xff, 0x00, 0x8b, 0xfe, 0x73, + 0x04, 0x1d, 0x04, 0x0e, 0x02, 0x06, 0x00, 0x92, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x85, 0xff, 0xee, 0x03, 0xc1, 0x04, 0x08, 0x02, 0x06, 0x00, 0x85, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x55, 0x00, 0x00, 0x04, 0x11, 0x03, 0xf8, + 0x00, 0x07, 0x00, 0x1e, 0xb9, 0x00, 0x00, 0x02, 0x0f, 0xb5, 0x02, 0x02, + 0x09, 0x08, 0x00, 0x04, 0xb8, 0x01, 0x08, 0xb1, 0x06, 0x4f, 0x00, 0x3f, + 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x11, + 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x02, 0xaf, 0xf8, 0xfe, 0x9e, 0x03, + 0xbc, 0x03, 0x2b, 0xfc, 0xd5, 0x03, 0x2b, 0xcd, 0xcd, 0x00, 0xff, 0xff, + 0x00, 0x17, 0xfe, 0x5c, 0x04, 0x52, 0x03, 0xf8, 0x02, 0x06, 0x00, 0x9b, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x19, 0xfe, 0x73, 0x04, 0x4d, 0x05, 0x85, + 0x00, 0x15, 0x00, 0x1e, 0x00, 0x27, 0x00, 0x58, 0xb9, 0x00, 0x24, 0x02, + 0x08, 0xb2, 0x10, 0x0c, 0x1b, 0xb8, 0x02, 0x08, 0xb3, 0x05, 0x16, 0x0b, + 0x01, 0xb8, 0x01, 0xdd, 0xb7, 0x27, 0x15, 0x0c, 0x0c, 0x28, 0x29, 0x1f, + 0x1e, 0xb8, 0x01, 0x32, 0xb4, 0x02, 0x15, 0x02, 0x16, 0x27, 0xb8, 0x01, + 0x32, 0x40, 0x0b, 0x0d, 0x0a, 0x0d, 0x02, 0x0d, 0x02, 0x0d, 0x0b, 0x55, + 0x00, 0x53, 0x00, 0x3f, 0x3f, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x10, + 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, + 0x33, 0x33, 0xfd, 0x32, 0x32, 0xd4, 0xed, 0x10, 0xd4, 0xed, 0x31, 0x30, + 0x01, 0x33, 0x11, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x11, 0x23, + 0x11, 0x26, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x13, 0x3e, 0x03, 0x35, + 0x34, 0x26, 0x27, 0x23, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x17, 0x01, 0xbe, + 0xea, 0xdc, 0xc9, 0x32, 0x69, 0x9e, 0x6c, 0xea, 0xe3, 0xc2, 0x33, 0x68, + 0x9f, 0x6b, 0xea, 0x35, 0x46, 0x27, 0x12, 0x53, 0x61, 0xea, 0x32, 0x48, + 0x29, 0x11, 0x52, 0x62, 0x05, 0x85, 0xfe, 0x83, 0x11, 0xfb, 0xfa, 0x69, + 0xb8, 0x8d, 0x5a, 0x0a, 0xfe, 0x83, 0x01, 0x7d, 0x14, 0x01, 0x00, 0xf2, + 0x6b, 0xb9, 0x8c, 0x57, 0x0b, 0xfc, 0xbb, 0x0a, 0x3b, 0x55, 0x68, 0x37, + 0x8a, 0x9d, 0x12, 0x0a, 0x3c, 0x55, 0x68, 0x36, 0x91, 0x96, 0x12, 0x00, + 0xff, 0xff, 0x00, 0x21, 0x00, 0x00, 0x04, 0x48, 0x03, 0xf8, 0x02, 0x06, + 0x00, 0x9a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x75, 0xff, 0x00, 0x04, 0x48, + 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x33, 0xbf, 0x00, 0x07, 0x01, 0xe3, 0x00, + 0x09, 0x00, 0x02, 0x01, 0xe1, 0x00, 0x0b, 0x00, 0x05, 0x01, 0xe3, 0xb7, + 0x03, 0x0c, 0x09, 0x4f, 0x04, 0x4f, 0x0a, 0x07, 0xb8, 0x01, 0x08, 0xb3, + 0x02, 0x51, 0x01, 0x5c, 0x00, 0x3f, 0x3f, 0xed, 0x32, 0x3f, 0x3f, 0x01, + 0x10, 0xd6, 0xed, 0xdd, 0xed, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x23, 0x11, + 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x04, 0x3b, 0xe1, + 0xfd, 0x1b, 0xf0, 0x01, 0x7a, 0xf0, 0x79, 0xff, 0x00, 0x01, 0x00, 0x03, + 0xf8, 0xfc, 0xd5, 0x03, 0x2b, 0xfc, 0xd5, 0x00, 0x00, 0x01, 0x00, 0x50, + 0x00, 0x00, 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x17, 0x00, 0x2c, 0xb9, 0x00, + 0x16, 0x01, 0xe2, 0xb2, 0x14, 0x00, 0x0b, 0xb8, 0x01, 0xe2, 0xb2, 0x09, + 0x18, 0x11, 0xb8, 0x01, 0x01, 0xb7, 0x04, 0x04, 0x15, 0x4f, 0x0a, 0x4f, + 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x39, 0x2f, 0xed, 0x01, 0x10, 0xd6, + 0xed, 0xd4, 0x32, 0xed, 0x31, 0x30, 0x21, 0x11, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x11, 0x33, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x11, 0x33, 0x11, 0x02, 0xfa, 0x35, 0x73, 0x39, 0x7c, 0xae, 0x6d, + 0x32, 0xef, 0x16, 0x35, 0x56, 0x41, 0x37, 0x6c, 0x36, 0xef, 0x01, 0x93, + 0x15, 0x14, 0x32, 0x63, 0x92, 0x5f, 0x01, 0x08, 0xea, 0x39, 0x54, 0x37, + 0x1b, 0x16, 0x13, 0x01, 0xa0, 0xfc, 0x08, 0x00, 0x00, 0x01, 0x00, 0x39, + 0x00, 0x00, 0x04, 0x2d, 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x39, 0xb9, 0x00, + 0x01, 0x01, 0xae, 0xb2, 0x0b, 0x03, 0x08, 0xbb, 0x01, 0xae, 0x00, 0x0a, + 0x00, 0x05, 0x01, 0xa9, 0xb5, 0x03, 0x03, 0x0c, 0x0d, 0x06, 0x02, 0xb8, + 0x01, 0x04, 0xb7, 0x0b, 0x51, 0x09, 0x4f, 0x04, 0x4f, 0x00, 0x4f, 0x00, + 0x3f, 0x3f, 0x3f, 0x3f, 0xed, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xfd, + 0xd4, 0xed, 0x10, 0xdd, 0xed, 0x31, 0x30, 0x13, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x21, 0x39, 0xdb, 0xb5, 0xd5, 0xb4, + 0xdb, 0xfc, 0x0c, 0x03, 0xf8, 0xfc, 0xd1, 0x03, 0x2f, 0xfc, 0xd1, 0x03, + 0x2f, 0xfc, 0x08, 0x00, 0x00, 0x01, 0x00, 0x39, 0xff, 0x00, 0x04, 0x66, + 0x03, 0xf8, 0x00, 0x0f, 0x00, 0x48, 0x41, 0x0b, 0x00, 0x03, 0x01, 0xd5, + 0x00, 0x00, 0x00, 0x0c, 0x01, 0xae, 0x00, 0x0e, 0x00, 0x0b, 0x01, 0xa9, + 0x00, 0x09, 0x00, 0x06, 0x01, 0xae, 0x40, 0x0e, 0x04, 0x09, 0x09, 0x10, + 0x11, 0x0e, 0x4f, 0x09, 0x4f, 0x05, 0x4f, 0x0f, 0x08, 0x0c, 0xb8, 0x01, + 0x04, 0xb3, 0x03, 0x51, 0x02, 0x5c, 0x00, 0x3f, 0x3f, 0xed, 0x32, 0x32, + 0x3f, 0x3f, 0x3f, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xd4, 0xed, 0x10, 0xfd, + 0xd4, 0xed, 0xd6, 0xed, 0x31, 0x30, 0x25, 0x03, 0x23, 0x11, 0x21, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x04, 0x66, + 0x0e, 0xd3, 0xfc, 0xb4, 0xdb, 0xad, 0xd5, 0xac, 0xdb, 0xc9, 0xfe, 0x37, + 0x01, 0x00, 0x03, 0xf8, 0xfc, 0xd1, 0x03, 0x2f, 0xfc, 0xd1, 0x03, 0x2f, + 0xfc, 0xd1, 0x00, 0x02, 0x00, 0x0a, 0xff, 0xee, 0x04, 0x3b, 0x03, 0xf8, + 0x00, 0x14, 0x00, 0x23, 0x00, 0x3a, 0xb1, 0x21, 0x14, 0xb8, 0x01, 0xe2, + 0xb3, 0x10, 0x10, 0x12, 0x08, 0xb8, 0x02, 0x0e, 0x40, 0x0a, 0x18, 0x12, + 0x03, 0xf8, 0x18, 0x10, 0x1d, 0x1d, 0x0d, 0x11, 0xb8, 0x01, 0x02, 0xb5, + 0x13, 0x4f, 0x15, 0xf8, 0x0d, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0x39, 0x39, 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x32, 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x35, 0x21, 0x13, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, + 0x16, 0x01, 0xdd, 0x20, 0x5b, 0x2f, 0x7a, 0xa8, 0x66, 0x2c, 0x36, 0x6f, + 0xb2, 0x75, 0x63, 0xc6, 0x58, 0xe4, 0x01, 0xd3, 0xa4, 0x69, 0x5a, 0x11, + 0x2f, 0x50, 0x3f, 0x2d, 0x49, 0x22, 0x1f, 0x55, 0x02, 0x89, 0x03, 0x03, + 0x32, 0x58, 0x76, 0x43, 0x4d, 0x80, 0x5d, 0x34, 0x0d, 0x0b, 0x03, 0x2b, + 0xc7, 0xfc, 0xb2, 0x53, 0x47, 0x1f, 0x34, 0x26, 0x16, 0x03, 0x05, 0xfe, + 0xed, 0x06, 0x08, 0x00, 0x00, 0x03, 0x00, 0x3f, 0xff, 0xf0, 0x04, 0x27, + 0x03, 0xf8, 0x00, 0x12, 0x00, 0x20, 0x00, 0x24, 0x00, 0x44, 0xbc, 0x00, + 0x23, 0x01, 0xd9, 0x00, 0x21, 0x00, 0x16, 0x02, 0x0e, 0xb5, 0x05, 0x05, + 0x26, 0x25, 0x0f, 0x1f, 0xb8, 0x01, 0xd9, 0x40, 0x13, 0x0e, 0x25, 0x24, + 0x51, 0x22, 0x4f, 0x00, 0xcb, 0x16, 0x0d, 0x1b, 0x1b, 0x0a, 0x0e, 0x4f, + 0x13, 0xcb, 0x0a, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x39, + 0x39, 0xed, 0x3f, 0x3f, 0x01, 0x10, 0xd6, 0xed, 0x32, 0x11, 0x12, 0x39, + 0x2f, 0xed, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x36, 0x36, 0x13, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, + 0x05, 0x11, 0x33, 0x11, 0x01, 0x72, 0x6f, 0x9d, 0x5c, 0x29, 0x31, 0x66, + 0xa1, 0x6c, 0x48, 0x99, 0x3f, 0xe5, 0x15, 0x26, 0x11, 0x52, 0x4a, 0x0e, + 0x23, 0x3d, 0x30, 0x14, 0x26, 0x10, 0x26, 0x01, 0xf8, 0xe5, 0x02, 0x7b, + 0x30, 0x53, 0x73, 0x43, 0x4e, 0x7d, 0x58, 0x2f, 0x0d, 0x09, 0x03, 0xf2, + 0xfe, 0x7f, 0x02, 0x02, 0xfe, 0x21, 0x4a, 0x57, 0x1b, 0x37, 0x2a, 0x16, + 0x02, 0x02, 0xfe, 0xd7, 0x06, 0x9c, 0x03, 0xf8, 0xfc, 0x08, 0x00, 0x02, + 0x00, 0x87, 0xff, 0xee, 0x04, 0x37, 0x03, 0xf8, 0x00, 0x12, 0x00, 0x21, + 0x00, 0x30, 0xb9, 0x00, 0x05, 0x02, 0x18, 0xb2, 0x16, 0x1f, 0x0f, 0xb8, + 0x01, 0xe1, 0x40, 0x0f, 0x0d, 0x22, 0x00, 0xf8, 0x16, 0x0d, 0x1b, 0x1b, + 0x0a, 0x0e, 0x4f, 0x13, 0xf8, 0x0a, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x12, + 0x39, 0x2f, 0x39, 0x39, 0xed, 0x01, 0x10, 0xd6, 0xed, 0x32, 0xd4, 0xed, + 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x11, 0x33, 0x11, 0x36, 0x36, 0x13, 0x32, 0x36, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, 0x02, 0x4c, 0x88, + 0xb9, 0x72, 0x38, 0x40, 0x7d, 0xb9, 0x9a, 0x52, 0xf4, 0x5a, 0xee, 0x32, + 0x66, 0x40, 0x78, 0x70, 0x18, 0x38, 0x63, 0x5c, 0x31, 0x5a, 0x26, 0x28, + 0x66, 0x02, 0x8f, 0x33, 0x5a, 0x75, 0x41, 0x4d, 0x80, 0x5d, 0x34, 0x0d, + 0x0b, 0x03, 0xf2, 0xfe, 0x91, 0x03, 0x03, 0xfe, 0x1b, 0x58, 0x3e, 0x20, + 0x34, 0x27, 0x18, 0x04, 0x04, 0xfe, 0xed, 0x06, 0x08, 0x00, 0x00, 0x01, + 0x00, 0x8d, 0xff, 0xe9, 0x03, 0xf2, 0x04, 0x0e, 0x00, 0x24, 0x00, 0x5c, + 0xb5, 0x06, 0x23, 0x06, 0x23, 0x19, 0x0f, 0xb8, 0x02, 0x26, 0x40, 0x0e, + 0x22, 0x00, 0x19, 0x25, 0x24, 0xcc, 0x1f, 0x23, 0x01, 0x23, 0x23, 0x0a, + 0x14, 0x19, 0xb8, 0x01, 0x3f, 0xb4, 0x80, 0x1a, 0x01, 0x1a, 0x1d, 0xb8, + 0x01, 0x31, 0xb2, 0x14, 0x52, 0x07, 0xb8, 0x01, 0x36, 0x40, 0x09, 0x8f, + 0x06, 0x9f, 0x06, 0xaf, 0x06, 0x03, 0x06, 0x03, 0xb8, 0x01, 0x31, 0xb1, + 0x0a, 0x50, 0x00, 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x3f, 0xfd, 0xd6, 0x5d, + 0xed, 0x11, 0x12, 0x39, 0x2f, 0x71, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0x32, + 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x26, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x37, 0x21, 0x35, 0x02, 0xe5, 0x11, 0x89, 0x91, 0x55, 0x8e, + 0x3f, 0x48, 0xa2, 0x5d, 0x88, 0xcb, 0x83, 0x3d, 0x3e, 0x8a, 0xd1, 0x8c, + 0x36, 0x58, 0x4b, 0x44, 0x23, 0x4e, 0x9e, 0x45, 0x4f, 0x6e, 0x46, 0x22, + 0x04, 0xfd, 0xea, 0x02, 0x56, 0x79, 0x6e, 0x23, 0x1c, 0xd7, 0x1c, 0x1d, + 0x45, 0x8a, 0xc0, 0x79, 0x80, 0xc9, 0x8d, 0x47, 0x06, 0x0a, 0x11, 0x0c, + 0xe2, 0x20, 0x1e, 0x1e, 0x3c, 0x59, 0x3b, 0xae, 0x00, 0x02, 0x00, 0x3f, + 0xff, 0xe9, 0x04, 0x4c, 0x04, 0x0e, 0x00, 0x18, 0x00, 0x24, 0x00, 0x41, + 0xb9, 0x00, 0x1f, 0x01, 0x91, 0xb3, 0x12, 0x00, 0x14, 0x17, 0xbb, 0x01, + 0xab, 0x00, 0x15, 0x00, 0x19, 0x01, 0xa9, 0x40, 0x14, 0x08, 0x15, 0x25, + 0x13, 0xf4, 0x00, 0x00, 0x15, 0x16, 0x4f, 0x15, 0x51, 0x22, 0xf9, 0x0d, + 0x52, 0x1c, 0xf6, 0x03, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x3f, + 0x12, 0x39, 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x10, 0xfd, 0x32, + 0xd6, 0x32, 0xed, 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x23, 0x11, 0x23, + 0x11, 0x33, 0x11, 0x05, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x01, 0xa3, 0x0d, 0xa3, 0xa4, 0x68, 0x84, 0x4c, 0x1d, + 0x2b, 0x59, 0x85, 0x5a, 0x5c, 0x7b, 0x4b, 0x22, 0x04, 0x8a, 0xd8, 0xd8, + 0x02, 0x60, 0x3a, 0x49, 0x47, 0x3c, 0x38, 0x49, 0x4f, 0x36, 0x02, 0x66, + 0xd4, 0xd4, 0x42, 0x83, 0xc2, 0x7f, 0x95, 0xcf, 0x81, 0x3a, 0x36, 0x70, + 0xaa, 0x75, 0xfe, 0x52, 0x03, 0xf8, 0xfe, 0x6e, 0x6c, 0xbe, 0x9c, 0x9f, + 0xb3, 0xb6, 0xa6, 0xb0, 0x00, 0x02, 0x00, 0x4e, 0x00, 0x00, 0x03, 0xe7, + 0x04, 0x08, 0x00, 0x1b, 0x00, 0x28, 0x00, 0x52, 0xb9, 0x00, 0x1c, 0x02, + 0x18, 0x40, 0x0a, 0x18, 0x01, 0x1a, 0x1b, 0x01, 0x03, 0x08, 0x08, 0x1b, + 0x10, 0xb8, 0x01, 0xe2, 0x40, 0x19, 0x12, 0x23, 0x1b, 0x29, 0x17, 0x1b, + 0x51, 0x03, 0x13, 0xcf, 0x10, 0x1c, 0x0d, 0x01, 0x18, 0x11, 0x22, 0x22, + 0x0d, 0x11, 0x51, 0x26, 0xf3, 0x0d, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x12, + 0x39, 0x2f, 0x12, 0x39, 0x39, 0x12, 0x39, 0x39, 0xed, 0x39, 0x3f, 0x39, + 0x01, 0x10, 0xd6, 0xd4, 0x32, 0xed, 0x11, 0x39, 0x2f, 0x39, 0x39, 0x11, + 0x33, 0x11, 0x33, 0xed, 0x31, 0x30, 0x13, 0x36, 0x36, 0x37, 0x2e, 0x03, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, 0x23, 0x11, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x07, 0x21, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x33, + 0x11, 0x26, 0x26, 0x23, 0x22, 0x06, 0xc9, 0x1f, 0x58, 0x2f, 0x32, 0x53, + 0x3c, 0x21, 0x41, 0x80, 0xbf, 0x7e, 0x58, 0xae, 0x56, 0xef, 0x60, 0x2c, + 0x45, 0x39, 0x2b, 0x0b, 0x58, 0xfe, 0xee, 0x01, 0x41, 0x21, 0x40, 0x5e, + 0x3d, 0x6d, 0x1d, 0x3d, 0x23, 0x8e, 0x5e, 0x01, 0x21, 0x47, 0x41, 0x09, + 0x08, 0x2b, 0x44, 0x58, 0x35, 0x5b, 0x81, 0x51, 0x25, 0x08, 0x08, 0xfc, + 0x08, 0x01, 0x75, 0x0e, 0x1e, 0x36, 0x21, 0xf2, 0x02, 0xba, 0x2b, 0x38, + 0x22, 0x0e, 0x01, 0x27, 0x03, 0x01, 0x4c, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x08, 0x05, 0x85, 0x02, 0x26, 0x02, 0x17, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x01, 0x00, 0xcb, 0x00, 0x00, + 0x03, 0xe1, 0x04, 0xf4, 0x00, 0x07, 0x00, 0x25, 0xbc, 0x00, 0x04, 0x01, + 0xac, 0x00, 0x06, 0x00, 0x00, 0x02, 0x0d, 0xb3, 0x02, 0x08, 0x05, 0x00, + 0xb8, 0x01, 0x31, 0xb3, 0x03, 0x4f, 0x02, 0x51, 0x00, 0x3f, 0x3f, 0xed, + 0xc6, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x11, 0x23, + 0x11, 0x21, 0x37, 0x33, 0x11, 0x01, 0xc1, 0xf6, 0x02, 0x3d, 0x0a, 0xcf, + 0x03, 0x27, 0xfc, 0xd9, 0x03, 0xf8, 0xfc, 0xfe, 0x33, 0x00, 0x00, 0x02, + 0x00, 0x00, 0xfe, 0x5c, 0x03, 0xee, 0x05, 0x85, 0x00, 0x30, 0x00, 0x31, + 0x00, 0x52, 0xb2, 0x15, 0x0b, 0x12, 0xb8, 0x02, 0x0a, 0x40, 0x09, 0x0c, + 0x28, 0x0c, 0x28, 0x0c, 0x21, 0x0e, 0x32, 0x21, 0xb8, 0x02, 0x0b, 0x40, + 0x0b, 0x30, 0x31, 0x30, 0x1b, 0x0c, 0x10, 0x13, 0xf3, 0x0d, 0x16, 0x05, + 0xb8, 0x01, 0x08, 0x40, 0x0b, 0x1b, 0x31, 0x50, 0x29, 0xff, 0x28, 0x56, + 0x11, 0x53, 0x0c, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x3f, 0xdc, 0xed, + 0xde, 0x32, 0xed, 0x32, 0x11, 0x12, 0x39, 0x01, 0x2f, 0xd4, 0xed, 0x10, + 0xc4, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xfd, 0x32, 0xc4, 0x31, 0x30, + 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, + 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x15, 0x07, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x15, 0x14, 0x02, 0x0e, 0x03, 0x23, + 0x35, 0x32, 0x3e, 0x04, 0x35, 0x01, 0x02, 0xfa, 0x14, 0x26, 0x36, 0x22, + 0x1b, 0x30, 0x34, 0x3b, 0x25, 0xf3, 0x96, 0x96, 0xf3, 0x01, 0x0a, 0xfe, + 0xf6, 0x0c, 0x36, 0x89, 0x62, 0x51, 0x7e, 0x55, 0x2c, 0x1a, 0x34, 0x4e, + 0x66, 0x7f, 0x4c, 0x27, 0x3e, 0x30, 0x23, 0x16, 0x0b, 0xfd, 0x06, 0x01, + 0x6f, 0x7e, 0xaa, 0x5e, 0x1f, 0x15, 0x2d, 0x47, 0x33, 0xfd, 0xa8, 0x04, + 0x5e, 0xb6, 0x71, 0x71, 0xb6, 0x62, 0xb9, 0x4c, 0x52, 0x3e, 0x8f, 0xf3, + 0xa8, 0x06, 0xad, 0xfe, 0xfc, 0xb1, 0x6b, 0x38, 0x12, 0xc3, 0x09, 0x25, + 0x4c, 0x84, 0xc6, 0x84, 0x02, 0xa7, 0x00, 0x01, 0x00, 0x8b, 0xff, 0xe9, + 0x03, 0xf4, 0x04, 0x0e, 0x00, 0x22, 0x00, 0x6d, 0xb6, 0x21, 0x17, 0x21, + 0x17, 0x06, 0x20, 0x00, 0xb8, 0x02, 0x26, 0xb2, 0x0f, 0x23, 0x17, 0xb8, + 0x01, 0x40, 0x40, 0x09, 0x8f, 0x18, 0x9f, 0x18, 0xaf, 0x18, 0x03, 0x18, + 0x1b, 0xb8, 0x01, 0x31, 0x40, 0x19, 0x14, 0x21, 0xcc, 0x9f, 0x00, 0xaf, + 0x00, 0x02, 0x1f, 0x00, 0x2f, 0x00, 0xbf, 0x00, 0xcf, 0x00, 0xff, 0x00, + 0x05, 0x00, 0x00, 0x0a, 0x14, 0x50, 0x07, 0xb8, 0x01, 0x36, 0x40, 0x09, + 0x60, 0x06, 0x70, 0x06, 0x80, 0x06, 0x03, 0x06, 0x03, 0xb8, 0x01, 0x31, + 0xb1, 0x0a, 0x52, 0x00, 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x3f, 0x12, 0x39, + 0x2f, 0x71, 0x72, 0xed, 0x10, 0xfd, 0xd6, 0x5d, 0xed, 0x01, 0x10, 0xd6, + 0xed, 0x32, 0xc4, 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x16, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x21, 0x15, 0x01, 0x98, 0x0a, 0x8a, 0x97, 0x5b, 0x97, + 0x3f, 0x49, 0xaa, 0x63, 0x89, 0xc2, 0x89, 0x3f, 0x4b, 0x8e, 0xcc, 0x80, + 0x6b, 0x93, 0x3b, 0x45, 0xa0, 0x46, 0x48, 0x6e, 0x49, 0x26, 0x03, 0x02, + 0x14, 0x01, 0xa2, 0x72, 0x76, 0x2a, 0x1c, 0xd7, 0x1c, 0x24, 0x3e, 0x85, + 0xc0, 0x86, 0x88, 0xca, 0x87, 0x43, 0x16, 0x11, 0xe9, 0x20, 0x1f, 0x1f, + 0x3f, 0x5b, 0x34, 0xae, 0xff, 0xff, 0x00, 0x9c, 0xff, 0xe9, 0x03, 0xd1, + 0x04, 0x0e, 0x02, 0x06, 0x00, 0x95, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x00, 0x05, 0x96, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x91, 0x00, 0x00, 0x03, 0xf2, + 0x05, 0xae, 0x02, 0x06, 0x00, 0x8b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xf2, 0x05, 0x96, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x77, 0xfe, 0x5c, + 0x03, 0x87, 0x05, 0xae, 0x02, 0x06, 0x00, 0x8c, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8, 0x05, 0x85, 0x02, 0x26, 0x02, 0x1c, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x3d, 0x05, 0x85, 0x02, 0x26, 0x02, 0x1e, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xee, + 0x04, 0x60, 0x03, 0xf8, 0x00, 0x22, 0x00, 0x33, 0x00, 0x61, 0xb1, 0x31, + 0x22, 0xb8, 0x01, 0xaa, 0x40, 0x11, 0x10, 0x12, 0x13, 0x14, 0x1e, 0x13, + 0x20, 0x20, 0x1f, 0x1e, 0x03, 0x21, 0x10, 0x21, 0x10, 0x19, 0x28, 0xb8, + 0x01, 0xd5, 0x40, 0x1d, 0x08, 0x19, 0x03, 0xcb, 0x2d, 0x2d, 0x0d, 0x14, + 0x1e, 0x1f, 0x13, 0x20, 0x05, 0x18, 0x12, 0xcb, 0x21, 0x4f, 0x18, 0x1a, + 0xcd, 0x19, 0x51, 0x10, 0x51, 0x23, 0xcb, 0x0d, 0x52, 0x00, 0x3f, 0xed, + 0x3f, 0x3f, 0xed, 0xc5, 0x3f, 0xed, 0x12, 0x17, 0x39, 0x12, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0xd4, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x17, 0x39, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x11, 0x23, 0x06, 0x02, 0x0e, 0x03, 0x27, 0x37, 0x16, 0x3e, + 0x03, 0x12, 0x37, 0x21, 0x13, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x22, 0x07, 0x11, 0x16, 0x16, 0x02, 0xc9, 0x09, 0x1e, 0x14, + 0x5e, 0x85, 0x53, 0x26, 0x2c, 0x5e, 0x93, 0x66, 0x3b, 0x76, 0x3a, 0x73, + 0x09, 0x1b, 0x2b, 0x3a, 0x4f, 0x67, 0x40, 0x08, 0x1a, 0x2b, 0x23, 0x1c, + 0x17, 0x12, 0x07, 0x02, 0x0d, 0x29, 0x29, 0x37, 0x20, 0x0d, 0x0c, 0x1f, + 0x38, 0x2c, 0x0d, 0x14, 0x06, 0x09, 0x12, 0x02, 0x7b, 0x02, 0x02, 0x33, + 0x57, 0x73, 0x40, 0x4f, 0x7e, 0x58, 0x2f, 0x0d, 0x0b, 0x03, 0x46, 0xc8, + 0xfe, 0xdc, 0xc6, 0x77, 0x34, 0x01, 0x14, 0xaf, 0x01, 0x0f, 0x3a, 0x6f, + 0xbc, 0x01, 0x13, 0xc1, 0xfc, 0xa2, 0x17, 0x2a, 0x3c, 0x26, 0x1f, 0x37, + 0x29, 0x17, 0x04, 0xfe, 0xcf, 0x02, 0x02, 0x00, 0x00, 0x02, 0x00, 0x3f, + 0xff, 0xee, 0x04, 0x60, 0x03, 0xf8, 0x00, 0x1a, 0x00, 0x29, 0x00, 0x4a, + 0xb1, 0x27, 0x08, 0xb8, 0x01, 0xa9, 0xb4, 0x07, 0x19, 0x19, 0x02, 0x1e, + 0xb8, 0x01, 0xd4, 0xb2, 0x11, 0x01, 0x04, 0xb8, 0x01, 0xa9, 0x40, 0x16, + 0x02, 0x2a, 0x19, 0x51, 0x1b, 0xcb, 0x16, 0x52, 0x07, 0x4f, 0x06, 0xc9, + 0x1a, 0x0c, 0xcb, 0x23, 0x23, 0x02, 0x03, 0x4f, 0x02, 0x51, 0x00, 0x3f, + 0x3f, 0x12, 0x39, 0x2f, 0xed, 0xd4, 0xed, 0x3f, 0x3f, 0xed, 0x3f, 0x01, + 0x10, 0xd6, 0xed, 0x32, 0xd4, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x31, 0x30, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x11, 0x01, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x11, 0x16, 0x16, 0x01, 0x14, 0xd5, 0xd5, 0xc5, 0xd5, 0x0c, + 0x22, 0x14, 0x66, 0x8c, 0x57, 0x27, 0x30, 0x61, 0x96, 0x66, 0x3c, 0x82, + 0x3c, 0x01, 0x08, 0x4f, 0x51, 0x0e, 0x24, 0x40, 0x32, 0x0e, 0x19, 0x08, + 0x0c, 0x18, 0x01, 0xc7, 0xfe, 0x39, 0x03, 0xf8, 0xfe, 0x77, 0x01, 0x89, + 0xfe, 0x83, 0x02, 0x02, 0x32, 0x56, 0x74, 0x41, 0x4f, 0x7e, 0x58, 0x2f, + 0x0d, 0x0b, 0x01, 0xc1, 0xfe, 0xd3, 0x4f, 0x54, 0x21, 0x38, 0x27, 0x16, + 0x02, 0x02, 0xfe, 0xcf, 0x02, 0x02, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xd3, 0x05, 0x85, 0x02, 0x02, 0x00, 0xc1, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, 0x05, 0x85, 0x02, 0x26, 0x00, 0x9b, + 0x00, 0x00, 0x00, 0x06, 0x02, 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7e, + 0xff, 0x00, 0x03, 0xe8, 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x3b, 0xbf, 0x00, + 0x08, 0x01, 0xe3, 0x00, 0x0a, 0x00, 0x0b, 0x01, 0xe3, 0x00, 0x02, 0x00, + 0x05, 0x01, 0xe3, 0x40, 0x0c, 0x03, 0x02, 0x02, 0x0c, 0x0d, 0x0b, 0x51, + 0x09, 0x4f, 0x04, 0x4f, 0x06, 0xb8, 0x01, 0x08, 0xb3, 0x03, 0x51, 0x01, + 0x5c, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x11, 0x12, 0x01, 0x39, + 0x2f, 0xdd, 0xed, 0x10, 0xfd, 0xdd, 0xed, 0x31, 0x30, 0x01, 0x23, 0x03, + 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x21, 0x02, 0xa2, 0xde, + 0x09, 0xfe, 0xc3, 0xf0, 0x01, 0x8a, 0xf0, 0xfe, 0xc3, 0xff, 0x00, 0x01, + 0x00, 0x03, 0xf8, 0xfc, 0xd5, 0x03, 0x2b, 0xfc, 0x08, 0x00, 0x00, 0x02, + 0x00, 0x10, 0xff, 0xee, 0x04, 0x3d, 0x05, 0x3d, 0x00, 0x18, 0x00, 0x27, + 0x00, 0x4c, 0xb3, 0x16, 0x16, 0x10, 0x08, 0xb8, 0x02, 0x0e, 0xb4, 0x1c, + 0x10, 0x25, 0x18, 0x14, 0xb8, 0x01, 0xe2, 0x40, 0x1b, 0x12, 0x0e, 0x10, + 0x28, 0x03, 0xf9, 0x21, 0x21, 0x0e, 0x0f, 0x18, 0xf9, 0x14, 0x12, 0x6f, + 0x15, 0x7f, 0x15, 0x02, 0x15, 0x4f, 0x0e, 0x51, 0x19, 0xf8, 0x0b, 0x52, + 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x5d, 0x33, 0xcd, 0xed, 0x32, 0x12, 0x39, + 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xd6, 0x32, 0xed, 0x32, 0x32, 0x10, 0xd4, + 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x35, 0x33, + 0x11, 0x37, 0x11, 0x21, 0x15, 0x21, 0x13, 0x32, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x15, 0x16, 0x16, 0x01, 0xb6, 0x20, 0x5d, + 0x31, 0x7e, 0xb3, 0x73, 0x35, 0xf9, 0xf2, 0x63, 0xd0, 0x58, 0xb7, 0xb7, + 0xef, 0x01, 0x8c, 0xfe, 0x74, 0xaa, 0x7a, 0x6c, 0x19, 0x3a, 0x5e, 0x45, + 0x2d, 0x50, 0x1d, 0x1f, 0x5b, 0x02, 0x73, 0x03, 0x03, 0x2f, 0x52, 0x73, + 0x43, 0xa3, 0xb1, 0x0d, 0x0b, 0x03, 0x35, 0xbd, 0x01, 0x04, 0x41, 0xfe, + 0xbb, 0xbd, 0xfd, 0x6f, 0x4d, 0x42, 0x1f, 0x30, 0x22, 0x12, 0x03, 0x05, + 0xfc, 0x06, 0x08, 0x00, 0x00, 0x03, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1f, + 0x04, 0x0e, 0x00, 0x06, 0x00, 0x11, 0x00, 0x25, 0x00, 0x47, 0xb1, 0x0c, + 0x04, 0xbb, 0x02, 0x17, 0x00, 0x1c, 0x00, 0x12, 0x02, 0x15, 0x40, 0x16, + 0x0d, 0x03, 0x1c, 0x26, 0x1f, 0x0d, 0x2f, 0x0d, 0xff, 0x0d, 0x03, 0x0d, + 0xcc, 0x10, 0x04, 0x20, 0x04, 0x02, 0x04, 0x04, 0x17, 0x07, 0xb8, 0x01, + 0x05, 0xb2, 0x21, 0x50, 0x00, 0xb8, 0x01, 0x06, 0xb1, 0x17, 0x52, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x71, 0xed, 0x71, 0x01, 0x10, + 0xd6, 0xdd, 0xc4, 0xed, 0x10, 0xfd, 0xc5, 0x31, 0x30, 0x25, 0x32, 0x36, + 0x37, 0x21, 0x16, 0x16, 0x13, 0x22, 0x0e, 0x02, 0x07, 0x21, 0x2e, 0x03, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x02, 0x33, 0x64, 0x76, 0x14, 0xfe, 0x27, 0x0a, + 0x7c, 0x65, 0x36, 0x50, 0x3b, 0x25, 0x09, 0x01, 0xdd, 0x05, 0x22, 0x3b, + 0x54, 0x01, 0xb4, 0x44, 0x81, 0xba, 0x77, 0x71, 0xb2, 0x7c, 0x42, 0x45, + 0x81, 0xba, 0x75, 0x72, 0xb3, 0x7c, 0x41, 0xb4, 0x7a, 0x7c, 0x73, 0x83, + 0x02, 0x90, 0x22, 0x3e, 0x54, 0x38, 0x34, 0x57, 0x3e, 0x23, 0xfe, 0xc0, + 0x78, 0xc7, 0x8e, 0x4e, 0x42, 0x83, 0xc5, 0x83, 0x79, 0xc6, 0x8c, 0x4d, + 0x43, 0x84, 0xc3, 0x00, 0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x04, 0x4e, + 0x04, 0x08, 0x00, 0x18, 0x00, 0x4e, 0x40, 0x18, 0x09, 0x0f, 0x11, 0x07, + 0x07, 0x0f, 0x18, 0x0a, 0x0d, 0x0c, 0x0b, 0x20, 0x0d, 0x0e, 0x0e, 0x19, + 0x1a, 0x0f, 0x07, 0x11, 0x03, 0x0a, 0x15, 0x00, 0xb8, 0x01, 0x3d, 0x40, + 0x0b, 0x18, 0x4f, 0x0d, 0x0e, 0x0a, 0x0c, 0x0b, 0x4f, 0x09, 0x0a, 0x51, + 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x39, 0x3f, 0xed, 0xc5, 0x11, + 0x17, 0x39, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x39, 0x1a, 0x18, 0xcd, + 0x32, 0x11, 0x33, 0xcd, 0x39, 0x39, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, + 0x01, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x01, 0x21, 0x01, 0x21, + 0x13, 0x17, 0x37, 0x13, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x04, 0x4e, + 0x08, 0x18, 0x0b, 0x0c, 0x14, 0x14, 0x14, 0x0c, 0xfe, 0xf4, 0xfe, 0xe7, + 0xfe, 0x6d, 0x01, 0x10, 0xd3, 0x3f, 0x36, 0x78, 0x13, 0x2d, 0x3d, 0x56, + 0x3e, 0x0f, 0x34, 0x13, 0x03, 0x23, 0x02, 0x02, 0x07, 0x15, 0x25, 0x1d, + 0xfd, 0x37, 0x03, 0xf8, 0xfd, 0xc0, 0xba, 0xb2, 0x01, 0x73, 0x36, 0x56, + 0x3a, 0x1f, 0x03, 0x03, 0x00, 0x02, 0x00, 0x43, 0xff, 0xe9, 0x04, 0x0d, + 0x05, 0x85, 0x00, 0x23, 0x00, 0x34, 0x00, 0x4a, 0xb9, 0x00, 0x0e, 0x02, + 0x1c, 0x40, 0x09, 0x33, 0x11, 0x24, 0x00, 0x04, 0x03, 0x03, 0x21, 0x17, + 0xbb, 0x02, 0x15, 0x00, 0x31, 0x00, 0x29, 0x02, 0x15, 0xb2, 0x21, 0x35, + 0x2c, 0xb8, 0x01, 0x32, 0x40, 0x0a, 0x24, 0x0b, 0x31, 0x00, 0x0e, 0x03, + 0x09, 0x1c, 0x52, 0x0b, 0xb8, 0x01, 0x32, 0xb1, 0x09, 0x53, 0x00, 0x3f, + 0xed, 0x3f, 0x12, 0x17, 0x39, 0x12, 0x39, 0xed, 0x01, 0x10, 0xd6, 0xed, + 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x17, 0x39, 0xed, 0x31, 0x30, 0x01, 0x26, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x21, 0x15, 0x21, 0x22, 0x06, 0x15, + 0x14, 0x16, 0x17, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x36, 0x05, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, 0x01, 0x3f, 0x3b, 0x3a, 0x31, + 0x65, 0x9a, 0x68, 0x01, 0x3a, 0xfe, 0xc6, 0x51, 0x3f, 0x33, 0x25, 0xd9, + 0x51, 0x68, 0x3b, 0x16, 0x43, 0x7f, 0xb9, 0x75, 0x71, 0xb0, 0x79, 0x40, + 0x81, 0x01, 0x45, 0x27, 0x49, 0x37, 0x21, 0x78, 0x70, 0x38, 0x56, 0x3a, + 0x1e, 0x52, 0x5b, 0x03, 0x91, 0x27, 0x67, 0x4b, 0x3d, 0x68, 0x4c, 0x2a, + 0xd3, 0x1a, 0x26, 0x1a, 0x26, 0x13, 0x71, 0x2a, 0x6d, 0x78, 0x7b, 0x38, + 0x74, 0xbe, 0x87, 0x4a, 0x41, 0x7d, 0xb7, 0x76, 0x99, 0xdf, 0x2c, 0x15, + 0x3a, 0x4c, 0x62, 0x3c, 0x90, 0x9b, 0x31, 0x51, 0x68, 0x37, 0x55, 0x8d, + 0x31, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x89, 0x05, 0x85, + 0x00, 0x13, 0x00, 0x14, 0x00, 0x28, 0xbc, 0x00, 0x00, 0x01, 0xd4, 0x00, + 0x13, 0x00, 0x08, 0x01, 0xd4, 0x40, 0x0d, 0x09, 0x00, 0x09, 0x40, 0x11, + 0x14, 0x48, 0x09, 0x0e, 0xac, 0x03, 0x14, 0x4f, 0x00, 0x3f, 0xd6, 0xfd, + 0xce, 0x2b, 0x32, 0x01, 0x2f, 0xed, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x14, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x01, 0x03, 0x89, 0xbb, 0x9f, 0x5c, 0x80, 0x51, 0x25, + 0xdf, 0x0d, 0x1c, 0x2c, 0x21, 0x20, 0x2e, 0x1c, 0x0e, 0xfd, 0x56, 0x05, + 0x85, 0x89, 0x98, 0x2c, 0x4e, 0x69, 0x3e, 0x21, 0x37, 0x26, 0x15, 0x18, + 0x28, 0x37, 0x1c, 0xfe, 0x73, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, + 0x03, 0x89, 0x06, 0x77, 0x00, 0x13, 0x00, 0x14, 0x00, 0x30, 0xbc, 0x00, + 0x00, 0x01, 0xc1, 0x00, 0x13, 0x00, 0x08, 0x01, 0xc1, 0x40, 0x13, 0x09, + 0x00, 0x09, 0x40, 0x0d, 0x14, 0x48, 0x09, 0x0e, 0xa5, 0x00, 0x03, 0x10, + 0x03, 0x02, 0x08, 0x03, 0x14, 0x41, 0x00, 0x3f, 0xde, 0x5e, 0x5d, 0xfd, + 0xce, 0x2b, 0x32, 0x01, 0x2f, 0xed, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x14, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x01, 0x03, 0x89, 0xbb, 0x9f, 0x5c, 0x80, 0x51, 0x25, + 0xdf, 0x0d, 0x1c, 0x2c, 0x21, 0x20, 0x2e, 0x1c, 0x0e, 0xfd, 0x56, 0x06, + 0x77, 0x89, 0x98, 0x2c, 0x4e, 0x69, 0x3e, 0x21, 0x37, 0x26, 0x15, 0x18, + 0x28, 0x37, 0x1c, 0xfe, 0xa4, 0x00, 0x00, 0x01, 0x00, 0x55, 0x02, 0x9c, + 0x04, 0x11, 0x05, 0x1b, 0x00, 0x06, 0x00, 0x33, 0xb9, 0x00, 0x00, 0x01, + 0xc4, 0xb4, 0x40, 0x06, 0x01, 0x20, 0x02, 0xb8, 0x01, 0x9c, 0x40, 0x0c, + 0x40, 0x03, 0x20, 0x01, 0x01, 0x07, 0x08, 0x01, 0x00, 0x02, 0x04, 0x41, + 0x00, 0x3f, 0xcd, 0x32, 0x39, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0x1a, + 0x18, 0xdd, 0x1a, 0xed, 0x1a, 0x10, 0xdd, 0x1a, 0xed, 0x31, 0x30, 0x09, + 0x02, 0x23, 0x01, 0x33, 0x01, 0x03, 0x2e, 0xfe, 0xfa, 0xfe, 0xfe, 0xd1, + 0x01, 0x7b, 0xba, 0x01, 0x87, 0x02, 0x9c, 0x01, 0xce, 0xfe, 0x32, 0x02, + 0x7f, 0xfd, 0x81, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x01, 0x41, 0x04, 0x37, + 0x03, 0x0c, 0x00, 0x1f, 0x00, 0x3c, 0xbc, 0x00, 0x0f, 0x01, 0x90, 0x00, + 0x10, 0x00, 0x1f, 0x01, 0x90, 0x40, 0x0d, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x20, 0x21, 0x1f, 0x0f, 0x1f, 0x0f, 0x15, 0x1c, 0xbc, 0x01, 0x32, 0x00, + 0x05, 0x00, 0x0c, 0x01, 0x32, 0x00, 0x15, 0x00, 0x2f, 0xed, 0xdd, 0xed, + 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x12, 0x01, 0x39, 0x39, 0x2f, 0x2f, + 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x04, 0x23, 0x22, 0x06, 0x15, 0x23, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x04, 0x33, 0x32, 0x36, 0x35, 0x04, 0x37, 0x20, 0x48, 0x75, 0x54, + 0x38, 0x5b, 0x4b, 0x3f, 0x3a, 0x38, 0x1f, 0x2c, 0x30, 0xcd, 0x20, 0x48, + 0x75, 0x54, 0x38, 0x5b, 0x4b, 0x3f, 0x3a, 0x38, 0x1f, 0x2d, 0x2f, 0x02, + 0xc5, 0x4e, 0x8d, 0x6b, 0x3e, 0x25, 0x37, 0x41, 0x36, 0x25, 0x4e, 0x62, + 0x4e, 0x8d, 0x6a, 0x3e, 0x25, 0x37, 0x40, 0x37, 0x25, 0x4f, 0x62, 0x00, + 0x00, 0x02, 0x01, 0xc3, 0xfe, 0x66, 0x02, 0xa4, 0x06, 0x66, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x28, 0xb1, 0x02, 0x06, 0xb8, 0x01, 0xd5, 0x40, 0x0e, + 0x00, 0x04, 0x04, 0x09, 0x08, 0x00, 0x05, 0x00, 0x05, 0x02, 0x07, 0x57, + 0x02, 0x5d, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x31, 0x30, 0x01, 0x11, 0x33, 0x11, + 0x03, 0x11, 0x33, 0x11, 0x01, 0xc3, 0xe1, 0xe1, 0xe1, 0x03, 0x27, 0x03, + 0x3f, 0xfc, 0xc1, 0xfb, 0x3f, 0x03, 0x58, 0xfc, 0xa8, 0x00, 0x00, 0x01, + 0x00, 0x77, 0xff, 0x29, 0x04, 0x1f, 0x05, 0x85, 0x00, 0x03, 0x00, 0x20, + 0x40, 0x0e, 0x00, 0x03, 0x02, 0x01, 0x03, 0x01, 0x03, 0x01, 0x04, 0x05, + 0x03, 0x53, 0x01, 0x59, 0x00, 0x3f, 0x3f, 0x11, 0x12, 0x01, 0x39, 0x39, + 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x01, 0x01, 0x23, 0x01, + 0x01, 0x64, 0x02, 0xbb, 0xee, 0xfd, 0x46, 0x05, 0x85, 0xf9, 0xa4, 0x06, + 0x5c, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfe, 0x66, 0x04, 0x66, 0xff, 0x27, + 0x00, 0x03, 0x00, 0x0f, 0xb5, 0x02, 0x00, 0x02, 0xfd, 0x00, 0x57, 0x00, + 0x3f, 0xed, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x11, 0x35, 0x21, 0x15, 0x04, + 0x66, 0xfe, 0x66, 0xc1, 0xc1, 0x00, 0x00, 0x01, 0x01, 0xaa, 0x03, 0x93, + 0x02, 0xbc, 0x05, 0x85, 0x00, 0x03, 0x00, 0x18, 0xb9, 0x00, 0x03, 0x02, + 0x27, 0xb6, 0x02, 0x02, 0x04, 0x05, 0x00, 0x02, 0x53, 0x00, 0x3f, 0xcd, + 0x11, 0x12, 0x01, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x23, 0x03, 0x21, + 0x02, 0x9c, 0xd1, 0x21, 0x01, 0x12, 0x03, 0x93, 0x01, 0xf2, 0x00, 0x02, + 0x00, 0xe3, 0x03, 0x93, 0x03, 0x83, 0x05, 0x85, 0x00, 0x03, 0x00, 0x07, + 0x00, 0x25, 0xbc, 0x00, 0x07, 0x02, 0x1b, 0x00, 0x06, 0x00, 0x02, 0x02, + 0x1b, 0x40, 0x09, 0x03, 0x03, 0x09, 0x08, 0x05, 0x00, 0x06, 0x02, 0x53, + 0x00, 0x3f, 0x33, 0xcd, 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xed, 0xde, + 0xed, 0x31, 0x30, 0x01, 0x23, 0x03, 0x21, 0x01, 0x23, 0x03, 0x21, 0x01, + 0xc9, 0xc5, 0x21, 0x01, 0x06, 0x01, 0x79, 0xc4, 0x21, 0x01, 0x06, 0x03, + 0x93, 0x01, 0xf2, 0xfe, 0x0e, 0x01, 0xf2, 0x00, 0x00, 0x02, 0x00, 0x09, + 0xfe, 0x5c, 0x04, 0x5c, 0x05, 0x9c, 0x00, 0x4e, 0x00, 0x5f, 0x00, 0x60, + 0xbc, 0x00, 0x57, 0x01, 0x8f, 0x00, 0x43, 0x00, 0x15, 0x01, 0x81, 0xb5, + 0x28, 0x4f, 0x5f, 0x04, 0x4e, 0x34, 0xb8, 0x01, 0x80, 0x40, 0x21, 0x09, + 0x28, 0x60, 0x04, 0x4f, 0x5c, 0x52, 0xf3, 0x4a, 0x06, 0x5c, 0xf4, 0x3e, + 0x39, 0x3e, 0x4e, 0x0e, 0x5f, 0x3b, 0x3e, 0x4a, 0x3e, 0x4a, 0x3e, 0x1a, + 0x0e, 0xce, 0x2f, 0x54, 0x1a, 0xce, 0x23, 0x56, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x12, 0x39, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x10, 0xed, 0x11, 0x39, 0x39, 0x01, 0x10, 0xd6, + 0xd4, 0xed, 0xde, 0xc2, 0x32, 0x33, 0x10, 0xfd, 0xd6, 0xed, 0x31, 0x30, + 0x01, 0x06, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x04, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, + 0x02, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x26, 0x02, 0x27, 0x26, + 0x12, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x16, 0x12, 0x15, 0x0e, 0x03, 0x23, + 0x22, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x04, + 0x33, 0x32, 0x16, 0x17, 0x37, 0x07, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0x27, 0x03, 0x03, + 0x0e, 0x0e, 0x26, 0x37, 0x1f, 0x44, 0x6c, 0x4c, 0x3b, 0x6e, 0x61, 0x4f, + 0x39, 0x20, 0x2e, 0x57, 0x7b, 0x4e, 0x26, 0x4b, 0x50, 0x56, 0x32, 0x4b, + 0xb0, 0x5d, 0x84, 0xc1, 0x7e, 0x3e, 0x01, 0x01, 0x2a, 0x4f, 0x71, 0x8e, + 0xa8, 0x5e, 0x76, 0xb0, 0x75, 0x3a, 0x01, 0x26, 0x4e, 0x76, 0x50, 0x76, + 0x20, 0x1d, 0x5b, 0x38, 0x2d, 0x47, 0x33, 0x1b, 0x0a, 0x1a, 0x2c, 0x45, + 0x61, 0x41, 0x22, 0x41, 0x14, 0x95, 0xe1, 0x05, 0x16, 0x0c, 0x20, 0x2b, + 0x19, 0x0b, 0x05, 0x0a, 0x0d, 0x07, 0x0d, 0x2a, 0x17, 0x01, 0x9a, 0x1c, + 0x40, 0x17, 0x28, 0x18, 0xe6, 0xe5, 0x8b, 0xd5, 0x90, 0x4a, 0x42, 0x77, + 0xa6, 0xc9, 0xe6, 0x7c, 0x94, 0xe0, 0x96, 0x4c, 0x0a, 0x16, 0x26, 0x1d, + 0xbf, 0x28, 0x2c, 0x61, 0xc2, 0x01, 0x21, 0xc0, 0x97, 0x01, 0x16, 0xf1, + 0xc5, 0x8c, 0x4d, 0x60, 0xba, 0xfe, 0xf0, 0xaf, 0xae, 0xf9, 0xa1, 0x4c, + 0x73, 0x38, 0x3b, 0x25, 0x50, 0x7d, 0x58, 0x40, 0x86, 0x7f, 0x71, 0x54, + 0x31, 0x0f, 0x09, 0x20, 0xca, 0x05, 0x07, 0x49, 0x6e, 0x82, 0x3a, 0x36, + 0x40, 0x23, 0x0b, 0x30, 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x39, 0x05, 0x98, 0x00, 0x11, 0x00, 0x52, 0x00, 0x57, 0xb9, 0x00, + 0x00, 0x01, 0xac, 0xb6, 0x47, 0x53, 0x07, 0x06, 0x13, 0x52, 0x33, 0xb8, + 0x01, 0x8b, 0x40, 0x15, 0x1e, 0x29, 0x07, 0x03, 0x0a, 0xf7, 0x3f, 0x13, + 0x06, 0x03, 0x28, 0x44, 0x4e, 0x52, 0x28, 0x28, 0x52, 0x4e, 0x03, 0x2e, + 0x03, 0xb8, 0x01, 0x01, 0x40, 0x0a, 0x44, 0x52, 0x17, 0xfb, 0x3a, 0x52, + 0x23, 0xcd, 0x2e, 0x54, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x12, + 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x12, 0x17, 0x39, 0xed, 0x11, 0x39, + 0x01, 0x2f, 0xd4, 0xed, 0xd6, 0xc6, 0x32, 0x33, 0x10, 0xd6, 0xed, 0x31, + 0x30, 0x13, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x13, 0x26, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x0e, 0x03, 0x05, 0x06, 0x06, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x04, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x27, + 0x3e, 0x03, 0x33, 0x32, 0x16, 0x16, 0x12, 0x15, 0x14, 0x0e, 0x04, 0x23, + 0x22, 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, + 0x04, 0x33, 0x32, 0x16, 0x17, 0x37, 0xfc, 0x21, 0x1c, 0x2a, 0x45, 0x2b, + 0x35, 0x0c, 0x27, 0x17, 0x17, 0x2d, 0x14, 0x1b, 0x28, 0x1a, 0x0d, 0x01, + 0xae, 0x07, 0x01, 0x0c, 0x1a, 0x13, 0x1b, 0x2b, 0x23, 0x19, 0x10, 0x08, + 0x26, 0x51, 0x7f, 0x58, 0x47, 0x7b, 0x66, 0x51, 0x1d, 0x91, 0x2d, 0x74, + 0x8d, 0xa7, 0x5e, 0x87, 0xc4, 0x7f, 0x3c, 0x0f, 0x23, 0x38, 0x52, 0x6e, + 0x48, 0x2f, 0x49, 0x32, 0x1a, 0x01, 0x10, 0x2d, 0x3b, 0x47, 0x2a, 0x7f, + 0x77, 0x15, 0x2c, 0x44, 0x5e, 0x7b, 0x4c, 0x2d, 0x49, 0x1f, 0x92, 0x01, + 0x58, 0x5b, 0x4f, 0x5e, 0x69, 0x01, 0xb4, 0x09, 0x0b, 0x10, 0x14, 0x1c, + 0x61, 0x79, 0x88, 0x16, 0x3f, 0x55, 0x33, 0x16, 0x31, 0x52, 0x6e, 0x7a, + 0x7f, 0x3b, 0x77, 0xc6, 0x8f, 0x50, 0x2d, 0x49, 0x5a, 0x2d, 0x68, 0x44, + 0x77, 0x57, 0x32, 0x66, 0xb9, 0xfe, 0xfb, 0x9f, 0x5d, 0xb7, 0xa6, 0x8e, + 0x69, 0x3b, 0x1c, 0x2e, 0x3b, 0x1f, 0x20, 0x3c, 0x2d, 0x1b, 0xab, 0xab, + 0x59, 0xac, 0x9b, 0x83, 0x60, 0x36, 0x14, 0x0f, 0x23, 0x00, 0x00, 0x03, + 0x00, 0x10, 0xff, 0xe9, 0x04, 0x56, 0x05, 0x31, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x45, 0x00, 0x4b, 0xb9, 0x00, 0x3f, 0x01, 0x96, 0x40, 0x09, 0x30, + 0x38, 0x45, 0x30, 0x45, 0x30, 0x45, 0x19, 0x23, 0xb8, 0x01, 0x62, 0xb2, + 0x05, 0x47, 0x19, 0xb8, 0x01, 0x62, 0x40, 0x12, 0x0f, 0x46, 0x45, 0x42, + 0xc5, 0x2b, 0x1e, 0xab, 0x0a, 0x44, 0x38, 0x3a, 0xc4, 0x35, 0x14, 0xab, + 0x00, 0x42, 0x00, 0x3f, 0xfd, 0xde, 0xfd, 0xc6, 0x3f, 0xfd, 0xde, 0xfd, + 0xc6, 0x01, 0x10, 0xd6, 0xed, 0x10, 0xd6, 0xed, 0x11, 0x39, 0x39, 0x2f, + 0x2f, 0x10, 0xc4, 0x10, 0xed, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x17, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x13, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x02, 0x33, 0x7e, 0xcb, 0x8e, 0x4c, + 0x4c, 0x8e, 0xcb, 0x7e, 0x84, 0xcb, 0x8c, 0x48, 0x4c, 0x8e, 0xcb, 0x7d, + 0x5d, 0x8c, 0x5f, 0x30, 0x30, 0x5f, 0x8c, 0x5d, 0x5e, 0x8d, 0x5f, 0x30, + 0x30, 0x5f, 0x8d, 0x67, 0x22, 0x48, 0x21, 0x4b, 0x71, 0x4c, 0x26, 0x25, + 0x4e, 0x7e, 0x57, 0x40, 0x31, 0x2e, 0x33, 0x28, 0x32, 0x22, 0x0e, 0x3d, + 0x43, 0x18, 0x39, 0x1a, 0x05, 0x31, 0x6a, 0xb8, 0xf6, 0x8c, 0x8c, 0xf6, + 0xb7, 0x6b, 0x64, 0xb3, 0xf8, 0x93, 0x8c, 0xf7, 0xb8, 0x6b, 0x9c, 0x53, + 0x8d, 0xbd, 0x6b, 0x6a, 0xbd, 0x8e, 0x53, 0x52, 0x8e, 0xbc, 0x6a, 0x6a, + 0xbe, 0x8e, 0x54, 0xfc, 0xaf, 0x0a, 0x09, 0x2f, 0x57, 0x7e, 0x4d, 0x48, + 0x83, 0x62, 0x3b, 0x0c, 0xaf, 0x13, 0x1a, 0x2f, 0x46, 0x2c, 0x55, 0x56, + 0x0d, 0x09, 0x00, 0x04, 0x00, 0x10, 0xff, 0xe9, 0x04, 0x56, 0x05, 0x31, + 0x00, 0x0c, 0x00, 0x15, 0x00, 0x29, 0x00, 0x3d, 0x00, 0x5e, 0xb1, 0x06, + 0x11, 0xbb, 0x01, 0x78, 0x00, 0x08, 0x00, 0x0d, 0x01, 0x82, 0xb6, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x2f, 0x39, 0xb8, 0x01, 0x62, 0xb2, 0x1b, 0x3f, + 0x2f, 0xb8, 0x01, 0x62, 0x40, 0x1a, 0x25, 0x3e, 0x11, 0xa7, 0x0a, 0x06, + 0xa8, 0x13, 0x0d, 0x13, 0x0a, 0x13, 0x08, 0x08, 0x13, 0x0a, 0x03, 0x16, + 0x34, 0xab, 0x20, 0x44, 0x2a, 0xab, 0x16, 0x42, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x12, 0x39, 0x10, 0xed, 0x10, + 0xed, 0x01, 0x10, 0xd6, 0xed, 0x10, 0xd6, 0xed, 0x11, 0x39, 0x39, 0x2f, + 0x2f, 0x10, 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x23, 0x15, 0x23, 0x11, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, + 0x23, 0x15, 0x33, 0x32, 0x36, 0x03, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x17, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x03, 0x54, 0x27, 0x4c, 0x76, 0x41, 0x20, 0xbb, 0xde, 0x8e, 0x99, + 0xc7, 0x31, 0x37, 0x1b, 0x20, 0x31, 0x32, 0x5a, 0x7e, 0xcb, 0x8e, 0x4c, + 0x4c, 0x8e, 0xcb, 0x7e, 0x84, 0xcb, 0x8c, 0x48, 0x4c, 0x8e, 0xcb, 0x7d, + 0x5d, 0x8c, 0x5f, 0x30, 0x30, 0x5f, 0x8c, 0x5d, 0x5e, 0x8d, 0x5f, 0x30, + 0x30, 0x5f, 0x8d, 0x03, 0x03, 0x37, 0x5b, 0x45, 0x26, 0xda, 0x02, 0xb7, + 0x72, 0x76, 0x2d, 0x30, 0xc6, 0x36, 0x02, 0x69, 0x6a, 0xb8, 0xf6, 0x8c, + 0x8c, 0xf6, 0xb7, 0x6b, 0x64, 0xb3, 0xf8, 0x93, 0x8c, 0xf7, 0xb8, 0x6b, + 0x9c, 0x53, 0x8d, 0xbd, 0x6b, 0x6a, 0xbd, 0x8e, 0x53, 0x52, 0x8e, 0xbc, + 0x6a, 0x6a, 0xbe, 0x8e, 0x54, 0x00, 0x00, 0x04, 0x00, 0x44, 0x01, 0xbc, + 0x04, 0x23, 0x05, 0x9c, 0x00, 0x16, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x47, + 0x00, 0x6e, 0xb9, 0x00, 0x43, 0x01, 0x53, 0xb2, 0x25, 0x06, 0x1b, 0xb8, + 0x01, 0x51, 0xb2, 0x08, 0x02, 0x01, 0xb8, 0x01, 0x55, 0xb2, 0x14, 0x00, + 0x17, 0xbb, 0x01, 0x52, 0x00, 0x0f, 0x00, 0x39, 0x01, 0x53, 0x40, 0x21, + 0x2f, 0x25, 0x08, 0x0f, 0x2f, 0x2f, 0x0f, 0x08, 0x25, 0x04, 0x48, 0x49, + 0x14, 0x1c, 0x8c, 0x06, 0x06, 0x0a, 0x01, 0x07, 0x2a, 0x90, 0x3e, 0x3e, + 0x34, 0x48, 0x1b, 0x8d, 0x0a, 0x20, 0x90, 0x34, 0x54, 0x00, 0x3f, 0xfd, + 0xde, 0xed, 0x11, 0x12, 0x39, 0x2f, 0xfd, 0x7d, 0xce, 0x32, 0x11, 0x39, + 0x18, 0x2f, 0xed, 0x39, 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, + 0x2f, 0x10, 0xed, 0x10, 0xed, 0xd6, 0x32, 0xed, 0x32, 0x10, 0xed, 0x32, + 0x10, 0xed, 0x31, 0x30, 0x01, 0x23, 0x27, 0x26, 0x26, 0x23, 0x23, 0x15, + 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, + 0x17, 0x27, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x32, 0x36, 0x03, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x27, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x03, 0x21, 0x94, 0x49, 0x07, 0x23, + 0x14, 0x0c, 0x7f, 0xae, 0x2c, 0x4e, 0x3b, 0x22, 0x14, 0x23, 0x2c, 0x18, + 0x21, 0x25, 0x50, 0x2f, 0x33, 0x1f, 0x1f, 0x2b, 0x37, 0x48, 0x4a, 0x82, + 0x60, 0x38, 0x38, 0x60, 0x82, 0x4a, 0x4b, 0x82, 0x60, 0x38, 0x38, 0x60, + 0x82, 0x4b, 0x67, 0xb5, 0x86, 0x4e, 0x4e, 0x86, 0xb5, 0x67, 0x67, 0xb4, + 0x86, 0x4e, 0x4e, 0x86, 0xb4, 0x02, 0xaa, 0xb0, 0x10, 0x17, 0xd7, 0x02, + 0x23, 0x0c, 0x22, 0x3d, 0x31, 0x22, 0x30, 0x20, 0x10, 0x01, 0x03, 0x49, + 0xc3, 0x23, 0x1c, 0x85, 0x23, 0x01, 0x17, 0x38, 0x63, 0x85, 0x4d, 0x4d, + 0x85, 0x63, 0x38, 0x38, 0x63, 0x85, 0x4d, 0x4d, 0x85, 0x63, 0x38, 0x83, + 0x4e, 0x87, 0xb4, 0x67, 0x67, 0xb4, 0x87, 0x4e, 0x4e, 0x87, 0xb4, 0x67, + 0x67, 0xb4, 0x87, 0x4e, 0x00, 0x02, 0x00, 0x0e, 0x03, 0x0a, 0x04, 0x5c, + 0x05, 0x1b, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x4a, 0xb1, 0x18, 0x16, 0xb8, + 0x01, 0x5b, 0xb3, 0x14, 0x1a, 0x0a, 0x00, 0xb8, 0x01, 0x68, 0xb2, 0x12, + 0x0e, 0x09, 0xb8, 0x01, 0x59, 0x40, 0x14, 0x0a, 0x13, 0x16, 0xb0, 0x00, + 0x05, 0x05, 0x0e, 0x07, 0x02, 0x03, 0x0b, 0x0a, 0x0a, 0x15, 0x10, 0x0b, + 0x0b, 0x18, 0x41, 0x00, 0x3f, 0x33, 0x11, 0x33, 0xc4, 0x32, 0x11, 0x12, + 0x17, 0x39, 0x33, 0x11, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x19, 0xd4, + 0x18, 0xd4, 0xed, 0x10, 0xd6, 0xd6, 0xfd, 0xcd, 0x31, 0x30, 0x01, 0x27, + 0x27, 0x07, 0x07, 0x23, 0x27, 0x27, 0x07, 0x03, 0x23, 0x13, 0x33, 0x17, + 0x17, 0x37, 0x37, 0x33, 0x13, 0x01, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, + 0x15, 0x03, 0xb8, 0x1e, 0x0b, 0x10, 0x3b, 0x94, 0x3d, 0x0d, 0x06, 0x1e, + 0x94, 0x4c, 0xbc, 0x3e, 0x10, 0x0c, 0x3e, 0xbe, 0x50, 0xfc, 0xcd, 0xa2, + 0x79, 0x01, 0x92, 0x03, 0x0a, 0xf0, 0x56, 0x50, 0xf6, 0xfc, 0x4a, 0x44, + 0xfe, 0xfe, 0x02, 0x11, 0xee, 0x4e, 0x4a, 0xf2, 0xfd, 0xef, 0x01, 0x89, + 0xfe, 0x77, 0x01, 0x89, 0x88, 0x88, 0x00, 0x02, 0x00, 0x19, 0xff, 0xee, + 0x04, 0x4c, 0x03, 0xa6, 0x00, 0x06, 0x00, 0x18, 0x00, 0x33, 0xb3, 0x0c, + 0x0c, 0x11, 0x17, 0xbb, 0x01, 0xb7, 0x00, 0x06, 0x00, 0x07, 0x01, 0xba, + 0x40, 0x0d, 0x11, 0x06, 0x18, 0x0b, 0x18, 0x0b, 0x18, 0x0e, 0x02, 0x14, + 0x09, 0x0e, 0x52, 0x00, 0x3f, 0xcd, 0x2f, 0xcd, 0x12, 0x39, 0x39, 0x2f, + 0x2f, 0x10, 0xcd, 0x01, 0x2f, 0xed, 0xdd, 0xed, 0x11, 0x39, 0x2f, 0x31, + 0x30, 0x01, 0x26, 0x23, 0x22, 0x07, 0x15, 0x21, 0x01, 0x16, 0x33, 0x32, + 0x37, 0x33, 0x06, 0x21, 0x22, 0x00, 0x35, 0x34, 0x00, 0x33, 0x32, 0x00, + 0x15, 0x21, 0x03, 0x73, 0x6f, 0xd1, 0xd1, 0x68, 0x02, 0x79, 0xfd, 0x87, + 0x79, 0xc8, 0xc9, 0x75, 0x89, 0xa0, 0xfe, 0xcf, 0xdd, 0xfe, 0xc5, 0x01, + 0x3b, 0xe7, 0xea, 0x01, 0x27, 0xfc, 0xae, 0x02, 0xd9, 0x94, 0x94, 0xeb, + 0xfe, 0xc4, 0x8b, 0x8d, 0xc6, 0x01, 0x06, 0xd7, 0xd7, 0x01, 0x04, 0xfe, + 0xf2, 0xe6, 0x00, 0x02, 0x00, 0x29, 0x00, 0x19, 0x04, 0x3d, 0x05, 0x10, + 0x00, 0x20, 0x00, 0x2f, 0x00, 0x69, 0xb9, 0x00, 0x21, 0x01, 0xc2, 0xb2, + 0x1c, 0x1f, 0x17, 0xbb, 0x01, 0x86, 0x00, 0x18, 0x00, 0x1f, 0x01, 0x89, + 0xb2, 0x20, 0x08, 0x0f, 0xb8, 0x01, 0x8a, 0xb2, 0x0e, 0x08, 0x28, 0xbb, + 0x01, 0xc1, 0x00, 0x0b, 0x00, 0x07, 0x01, 0x87, 0x40, 0x1c, 0x08, 0x30, + 0x18, 0x17, 0x17, 0x0e, 0x0f, 0x06, 0x00, 0x09, 0x1e, 0x0d, 0x19, 0x10, + 0x16, 0x08, 0x03, 0x23, 0xda, 0x13, 0x1f, 0x20, 0x20, 0x08, 0x07, 0x2b, + 0xda, 0x03, 0x00, 0x2f, 0xed, 0xd6, 0xcd, 0x33, 0x10, 0xcd, 0x2f, 0xed, + 0x12, 0x17, 0x39, 0xd6, 0xcd, 0x33, 0x10, 0xcd, 0x01, 0x10, 0xd6, 0xed, + 0xde, 0xed, 0x10, 0xd4, 0xed, 0x10, 0xd4, 0xfd, 0xd4, 0xed, 0x10, 0xde, + 0xed, 0x31, 0x30, 0x01, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x07, 0x27, + 0x37, 0x26, 0x35, 0x34, 0x37, 0x03, 0x37, 0x17, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x17, 0x37, 0x17, 0x07, 0x16, 0x16, 0x15, 0x14, 0x07, 0x13, 0x07, + 0x03, 0x34, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x02, 0xcf, 0x23, 0x53, 0x2e, 0x2b, 0x4e, 0x23, 0x9b, 0xcb, 0xbe, + 0x43, 0x45, 0xc0, 0xcf, 0xa0, 0x25, 0x50, 0x2e, 0x2c, 0x4d, 0x23, 0x9c, + 0xca, 0xbc, 0x20, 0x22, 0x48, 0xc2, 0xce, 0x8c, 0xae, 0x30, 0x43, 0x2b, + 0x14, 0x5f, 0x53, 0x2d, 0x42, 0x2b, 0x14, 0x01, 0x02, 0x0e, 0x0f, 0x0c, + 0x0b, 0xe3, 0x70, 0xf6, 0x65, 0xad, 0x9f, 0x6e, 0x01, 0x00, 0x72, 0xe7, + 0x0e, 0x0f, 0x0d, 0x0c, 0xe3, 0x70, 0xf8, 0x33, 0x84, 0x55, 0xa0, 0x71, + 0xff, 0x00, 0x72, 0x02, 0x7f, 0xeb, 0x25, 0x41, 0x56, 0x31, 0x77, 0x77, + 0x24, 0x40, 0x58, 0x00, 0x00, 0x01, 0x00, 0x2b, 0xff, 0xe9, 0x04, 0x02, + 0x05, 0x31, 0x00, 0x37, 0x00, 0x77, 0x40, 0x0b, 0x2d, 0x36, 0x2d, 0x36, + 0x15, 0x26, 0x08, 0x39, 0x2c, 0x00, 0x32, 0xb8, 0x02, 0x02, 0x40, 0x1e, + 0x15, 0x11, 0x19, 0x15, 0x38, 0x0f, 0x00, 0xa6, 0x12, 0xff, 0x35, 0x01, + 0x35, 0x1b, 0x2c, 0xa6, 0x18, 0x40, 0x2f, 0x01, 0x60, 0x2f, 0x70, 0x2f, + 0x02, 0x2f, 0x2f, 0x20, 0x0c, 0x25, 0xb8, 0x01, 0x21, 0xb4, 0x50, 0x26, + 0x01, 0x26, 0x29, 0xb8, 0x01, 0x12, 0xb2, 0x20, 0x42, 0x09, 0xbb, 0x01, + 0x17, 0x00, 0x08, 0x00, 0x03, 0x01, 0x12, 0xb1, 0x0c, 0x44, 0x00, 0x3f, + 0xfd, 0xd6, 0xed, 0x3f, 0xfd, 0xd6, 0x5d, 0xed, 0x11, 0x12, 0x39, 0x2f, + 0x5d, 0x71, 0x33, 0xed, 0x32, 0xd6, 0x5d, 0x32, 0xed, 0x32, 0x01, 0x10, + 0xd4, 0xde, 0xc4, 0x10, 0xed, 0x32, 0x32, 0x10, 0xd6, 0xc4, 0x11, 0x39, + 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x24, 0x27, 0x23, 0x35, 0x33, 0x26, + 0x34, 0x35, 0x34, 0x36, 0x37, 0x23, 0x35, 0x33, 0x3e, 0x03, 0x33, 0x32, + 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x21, 0x15, + 0x21, 0x06, 0x14, 0x15, 0x14, 0x14, 0x17, 0x21, 0x15, 0x01, 0xc7, 0x22, + 0x8e, 0x72, 0x1f, 0x49, 0x4a, 0x48, 0x1f, 0x50, 0x9a, 0x53, 0xd7, 0xfe, + 0xf3, 0x2d, 0x89, 0x77, 0x02, 0x02, 0x02, 0x79, 0x93, 0x1a, 0x63, 0x89, + 0xac, 0x65, 0x2b, 0x4c, 0x48, 0x47, 0x27, 0x4e, 0x91, 0x3c, 0x6f, 0x8f, + 0x22, 0x01, 0x6a, 0xfe, 0x75, 0x02, 0x02, 0x01, 0x8b, 0x01, 0x9c, 0x6b, + 0x6f, 0x0b, 0x14, 0x1b, 0x0f, 0xde, 0x23, 0x21, 0xdc, 0xd7, 0x9a, 0x13, + 0x1f, 0x11, 0x17, 0x30, 0x19, 0x9a, 0x69, 0xa6, 0x72, 0x3d, 0x04, 0x0b, + 0x12, 0x0e, 0xf0, 0x26, 0x20, 0x7b, 0x6a, 0x9a, 0x14, 0x25, 0x13, 0x14, + 0x2a, 0x19, 0x9a, 0x00, 0x00, 0x03, 0x00, 0x5a, 0xff, 0x08, 0x04, 0x08, + 0x05, 0xe5, 0x00, 0x08, 0x00, 0x31, 0x00, 0x38, 0x00, 0x98, 0x40, 0x1f, + 0x27, 0x32, 0x38, 0x1d, 0x1c, 0x16, 0x15, 0x28, 0x15, 0x2a, 0x31, 0x09, + 0x08, 0x00, 0x13, 0x14, 0x29, 0x14, 0x14, 0x15, 0x28, 0x29, 0x15, 0x29, + 0x2e, 0x2e, 0x29, 0x15, 0x03, 0x22, 0x0e, 0xbb, 0x02, 0x05, 0x00, 0x05, + 0x00, 0x35, 0x02, 0x02, 0xb5, 0x19, 0x22, 0x39, 0x29, 0x4e, 0x2d, 0xba, + 0x01, 0x10, 0x00, 0x2e, 0xff, 0xc0, 0x40, 0x16, 0x0f, 0x14, 0x48, 0x2e, + 0x31, 0x31, 0x32, 0xe2, 0x35, 0x38, 0x09, 0x1d, 0x08, 0x05, 0x06, 0x13, + 0x2a, 0x27, 0x41, 0x15, 0x4c, 0x18, 0xb8, 0x01, 0x1f, 0xb3, 0x19, 0x1c, + 0x1c, 0x00, 0xb8, 0x01, 0x0c, 0xb2, 0x16, 0x13, 0x43, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x10, 0xd6, 0xed, 0x3f, 0x3f, 0x33, 0x12, 0x17, 0x39, 0xed, + 0x32, 0x10, 0xd6, 0x2b, 0xed, 0x3f, 0x01, 0x10, 0xd6, 0xc6, 0xed, 0xd4, + 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x10, + 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, + 0xc4, 0xc4, 0xc4, 0xc4, 0x31, 0x30, 0x25, 0x3e, 0x03, 0x35, 0x34, 0x26, + 0x27, 0x37, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x23, 0x37, + 0x26, 0x27, 0x35, 0x16, 0x16, 0x17, 0x13, 0x2e, 0x03, 0x35, 0x34, 0x3e, + 0x02, 0x37, 0x37, 0x33, 0x07, 0x16, 0x16, 0x17, 0x15, 0x26, 0x26, 0x27, + 0x27, 0x06, 0x06, 0x15, 0x14, 0x16, 0x17, 0x02, 0x39, 0x36, 0x4c, 0x2f, + 0x16, 0x49, 0x51, 0x27, 0x43, 0x87, 0x6d, 0x44, 0x4b, 0x84, 0xb4, 0x6a, + 0x25, 0xb0, 0x24, 0x8c, 0x84, 0x47, 0x9d, 0x4b, 0x35, 0x41, 0x7f, 0x64, + 0x3e, 0x36, 0x71, 0xaf, 0x79, 0x1f, 0xb0, 0x1f, 0x35, 0x67, 0x2f, 0x36, + 0x79, 0x3b, 0xb0, 0x5f, 0x4d, 0x44, 0x41, 0xd3, 0x06, 0x1c, 0x29, 0x32, + 0x1d, 0x39, 0x46, 0x1a, 0xfe, 0x18, 0x39, 0x54, 0x77, 0x55, 0x61, 0x91, + 0x63, 0x36, 0x06, 0xfa, 0xfc, 0x09, 0x24, 0xea, 0x17, 0x27, 0x08, 0x01, + 0x6a, 0x16, 0x39, 0x53, 0x77, 0x54, 0x46, 0x7e, 0x63, 0x40, 0x06, 0xcc, + 0xd5, 0x05, 0x10, 0x0b, 0xd7, 0x11, 0x1a, 0x06, 0x02, 0x0a, 0x49, 0x38, + 0x2d, 0x3e, 0x19, 0x00, 0x00, 0x03, 0x00, 0x5e, 0xff, 0x06, 0x04, 0x10, + 0x05, 0xd7, 0x00, 0x29, 0x00, 0x32, 0x00, 0x39, 0x00, 0x96, 0xbc, 0x00, + 0x0f, 0x01, 0xef, 0x00, 0x2d, 0x00, 0x36, 0x01, 0xec, 0x40, 0x1b, 0x1b, + 0x24, 0x3a, 0x29, 0x33, 0x39, 0x1f, 0x1e, 0x17, 0x16, 0x00, 0x16, 0x02, + 0x09, 0x0a, 0x32, 0x2a, 0x14, 0x15, 0x01, 0x15, 0x00, 0x01, 0x15, 0x16, + 0x01, 0x05, 0xba, 0x01, 0x28, 0x00, 0x06, 0xff, 0xc0, 0x40, 0x0a, 0x0f, + 0x15, 0x48, 0x06, 0x09, 0x09, 0x33, 0xeb, 0x29, 0x1a, 0xb8, 0x01, 0x2d, + 0x40, 0x1c, 0x6f, 0x1b, 0x01, 0x1b, 0x1e, 0x1e, 0x2a, 0xed, 0x14, 0x17, + 0x2d, 0x32, 0x1f, 0x0a, 0x39, 0x36, 0x02, 0x08, 0x14, 0x29, 0x14, 0x29, + 0x14, 0x01, 0x16, 0x4c, 0x01, 0x4d, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x10, 0xed, 0x32, 0x10, 0xd6, 0x5d, 0xed, + 0x10, 0xed, 0x32, 0x10, 0xd6, 0x2b, 0xed, 0x01, 0x2f, 0x2f, 0x33, 0x11, + 0x33, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x10, 0x87, + 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0x10, 0xd6, 0xc6, 0xed, + 0xd4, 0xed, 0x31, 0x30, 0x01, 0x33, 0x07, 0x16, 0x16, 0x17, 0x15, 0x26, + 0x26, 0x27, 0x03, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x23, + 0x37, 0x26, 0x26, 0x27, 0x35, 0x16, 0x16, 0x17, 0x13, 0x2e, 0x03, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x13, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, + 0x03, 0x06, 0x06, 0x15, 0x14, 0x16, 0x17, 0x02, 0x50, 0xac, 0x23, 0x3b, + 0x6f, 0x2d, 0x30, 0x82, 0x42, 0x2f, 0x45, 0x8a, 0x6f, 0x45, 0x49, 0x84, + 0xb7, 0x6d, 0x25, 0xac, 0x25, 0x49, 0x8a, 0x42, 0x42, 0xa0, 0x51, 0x34, + 0x41, 0x7e, 0x64, 0x3e, 0x36, 0x70, 0xac, 0x77, 0x10, 0x6d, 0x5e, 0x18, + 0x2a, 0x3b, 0x23, 0x58, 0x5e, 0x4c, 0x49, 0x3a, 0x05, 0xd7, 0xeb, 0x05, + 0x11, 0x09, 0xd5, 0x0f, 0x1a, 0x06, 0xfe, 0xc5, 0x17, 0x39, 0x53, 0x73, + 0x51, 0x5d, 0x8d, 0x60, 0x35, 0x04, 0xfc, 0xfe, 0x05, 0x13, 0x11, 0xe5, + 0x15, 0x24, 0x08, 0x01, 0x5e, 0x16, 0x37, 0x50, 0x71, 0x50, 0x43, 0x79, + 0x5f, 0x3e, 0x08, 0xfb, 0xdf, 0x0a, 0x50, 0x39, 0x1c, 0x2c, 0x24, 0x1e, + 0x0e, 0x02, 0x2f, 0x0b, 0x47, 0x33, 0x2a, 0x3a, 0x19, 0x00, 0x00, 0x02, + 0x00, 0x71, 0xff, 0x06, 0x03, 0x9a, 0x05, 0xd7, 0x00, 0x1b, 0x00, 0x22, + 0x00, 0x8f, 0x40, 0x19, 0x1b, 0x14, 0x13, 0x0d, 0x0c, 0x00, 0x0c, 0x0a, + 0x1c, 0x22, 0x02, 0x01, 0x0b, 0x00, 0x01, 0x0b, 0x0c, 0x01, 0x0c, 0x01, + 0x0c, 0x05, 0x11, 0x17, 0x1f, 0xb8, 0x01, 0xff, 0xb2, 0x05, 0x23, 0x10, + 0xb8, 0x01, 0x1e, 0x40, 0x11, 0x60, 0x11, 0x70, 0x11, 0x90, 0x11, 0xa0, + 0x11, 0x04, 0x11, 0x1c, 0x13, 0x13, 0x1c, 0xe3, 0x0a, 0x18, 0xb8, 0x01, + 0x0e, 0x40, 0x1a, 0x6f, 0x17, 0x7f, 0x17, 0x8f, 0x17, 0x03, 0x17, 0x14, + 0x22, 0x22, 0x14, 0xe4, 0x1b, 0x0d, 0x02, 0x1b, 0x0a, 0x1b, 0x0a, 0x1b, + 0x01, 0x0c, 0x4d, 0x01, 0x4c, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, + 0x2f, 0x12, 0x39, 0x39, 0x10, 0xed, 0x32, 0x2f, 0x10, 0xd6, 0x5d, 0xed, + 0x10, 0xed, 0x32, 0x2f, 0x10, 0xd4, 0x5d, 0xed, 0x01, 0x10, 0xd6, 0xed, + 0xd4, 0xc6, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x7d, + 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x31, + 0x30, 0x05, 0x23, 0x13, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x13, + 0x33, 0x03, 0x16, 0x16, 0x17, 0x15, 0x26, 0x27, 0x03, 0x36, 0x36, 0x37, + 0x15, 0x06, 0x06, 0x07, 0x03, 0x06, 0x06, 0x15, 0x14, 0x16, 0x17, 0x02, + 0x62, 0xae, 0x3a, 0xb6, 0xc7, 0x48, 0x86, 0xbd, 0x75, 0x2b, 0xae, 0x2b, + 0x22, 0x3b, 0x1a, 0x44, 0x4e, 0x50, 0x3b, 0x78, 0x33, 0x3c, 0x80, 0x44, + 0x44, 0x6f, 0x76, 0x4f, 0x4a, 0xfa, 0x01, 0xa4, 0x1f, 0xf0, 0xd4, 0x76, + 0xbe, 0x86, 0x48, 0x02, 0x01, 0x46, 0xfe, 0xb2, 0x05, 0x0c, 0x09, 0xe8, + 0x24, 0x0f, 0xfd, 0xb9, 0x03, 0x22, 0x16, 0xd5, 0x1a, 0x19, 0x02, 0x03, + 0x1f, 0x0e, 0x9c, 0x7d, 0x6a, 0x90, 0x19, 0x00, 0x00, 0x01, 0x00, 0x4c, + 0x00, 0x00, 0x04, 0x06, 0x05, 0x31, 0x00, 0x1f, 0x00, 0x4e, 0xb1, 0x02, + 0x1e, 0xb8, 0x01, 0xcf, 0x40, 0x1f, 0x0c, 0x08, 0x00, 0x04, 0x04, 0x00, + 0x08, 0x03, 0x0a, 0x16, 0x15, 0x21, 0x0a, 0x07, 0x20, 0x15, 0x16, 0x1b, + 0xdb, 0x12, 0x1f, 0x0c, 0xd2, 0x02, 0x09, 0x09, 0x06, 0x12, 0x42, 0x03, + 0x08, 0xb8, 0x01, 0x0c, 0xb1, 0x06, 0x43, 0x00, 0x3f, 0xed, 0x32, 0x3f, + 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x10, 0xfd, 0xc6, 0x32, 0x01, 0x10, + 0xd6, 0xc4, 0x10, 0xc6, 0x32, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x33, + 0xed, 0x32, 0x31, 0x30, 0x01, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x35, + 0x33, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x07, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x15, 0x15, 0x03, 0x6f, 0xfe, + 0x6a, 0x02, 0x1b, 0xfc, 0x58, 0x9d, 0x9d, 0x9d, 0x3b, 0x70, 0xa0, 0x66, + 0x72, 0xbe, 0x3c, 0x83, 0x17, 0x36, 0x39, 0x3a, 0x19, 0x64, 0x6d, 0x02, + 0xe1, 0xb6, 0xfe, 0xa6, 0xd1, 0xd1, 0x01, 0x5a, 0xb6, 0x9e, 0x69, 0xa2, + 0x6e, 0x39, 0x4c, 0x45, 0x96, 0x18, 0x25, 0x19, 0x0d, 0x73, 0x73, 0xa6, + 0x00, 0x01, 0x00, 0x08, 0xff, 0x14, 0x04, 0x0e, 0x05, 0x98, 0x00, 0x25, + 0x00, 0x50, 0x40, 0x0f, 0x01, 0x0c, 0x21, 0x13, 0x13, 0x0c, 0x0f, 0x23, + 0x0f, 0x23, 0x0f, 0x1a, 0x06, 0x1b, 0x1e, 0xb8, 0x01, 0x01, 0x40, 0x11, + 0x17, 0x22, 0x11, 0xfb, 0x25, 0x13, 0x21, 0x17, 0x0c, 0x01, 0x0e, 0x0e, + 0x03, 0x17, 0x54, 0x07, 0x0a, 0xb8, 0x01, 0x01, 0xb1, 0x03, 0x5c, 0x00, + 0x3f, 0xfd, 0xc6, 0x3f, 0x12, 0x39, 0x2f, 0x39, 0x39, 0x12, 0x39, 0x39, + 0x33, 0xed, 0x32, 0x10, 0xfd, 0xc6, 0x01, 0x2f, 0xc4, 0x39, 0x39, 0x2f, + 0x2f, 0x12, 0x39, 0x39, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x25, 0x06, + 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, + 0x13, 0x21, 0x35, 0x21, 0x37, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x07, 0x21, 0x15, 0x21, 0x02, 0x4c, + 0x19, 0xd2, 0xb7, 0x25, 0x58, 0x25, 0x22, 0x50, 0x20, 0x56, 0x5a, 0x0c, + 0x37, 0xfe, 0xf4, 0x01, 0x23, 0x1a, 0x0c, 0x41, 0x69, 0x91, 0x5b, 0x26, + 0x5e, 0x2a, 0x25, 0x53, 0x25, 0x57, 0x59, 0x0d, 0x1c, 0x01, 0x43, 0xfe, + 0xa8, 0x9c, 0xce, 0xba, 0x0b, 0x08, 0xc2, 0x08, 0x08, 0x5f, 0x64, 0x01, + 0xcc, 0xbf, 0xe9, 0x67, 0x94, 0x60, 0x2d, 0x09, 0x08, 0xc6, 0x08, 0x0a, + 0x5e, 0x65, 0xe9, 0xbf, 0x00, 0x01, 0x00, 0x27, 0x00, 0x00, 0x04, 0x44, + 0x05, 0x1b, 0x00, 0x1a, 0x00, 0x64, 0x40, 0x10, 0x16, 0x13, 0x15, 0x14, + 0x0b, 0x13, 0x0f, 0x0f, 0x0b, 0x18, 0x19, 0x1a, 0x09, 0x05, 0x05, 0x00, + 0xb8, 0x01, 0xd1, 0x40, 0x25, 0x0b, 0x0b, 0x1c, 0x1b, 0x1a, 0x41, 0x13, + 0x00, 0x17, 0x18, 0x16, 0x05, 0x14, 0x41, 0x01, 0xcf, 0x12, 0x01, 0x12, + 0xa6, 0x04, 0x0f, 0x05, 0xcf, 0x0e, 0x01, 0x0e, 0xa6, 0x08, 0x0b, 0x40, + 0x11, 0x16, 0x48, 0x0b, 0x0a, 0x43, 0x00, 0x3f, 0xdd, 0x2b, 0x32, 0xfd, + 0x5d, 0x32, 0xd6, 0x32, 0xed, 0x5d, 0x32, 0x3f, 0x17, 0x39, 0x3f, 0x11, + 0x12, 0x01, 0x39, 0x2f, 0xfd, 0x32, 0x11, 0x33, 0xcd, 0x32, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x10, 0xc4, 0x32, 0x11, 0x33, 0x31, 0x30, 0x01, 0x15, + 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x23, 0x35, 0x21, 0x35, + 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x01, 0x21, 0x13, 0x17, 0x37, 0x13, + 0x21, 0x02, 0xac, 0x01, 0x23, 0xfe, 0xdd, 0x01, 0x23, 0xfe, 0xdd, 0xf2, + 0xfe, 0xdc, 0x01, 0x24, 0xfe, 0xdc, 0x01, 0x24, 0xfe, 0x6d, 0x01, 0x12, + 0xa6, 0x5c, 0x58, 0xa6, 0x01, 0x0b, 0x02, 0x60, 0x1c, 0x9a, 0x89, 0x9a, + 0x87, 0x87, 0x9a, 0x89, 0x9a, 0x1c, 0x02, 0xbb, 0xfe, 0xd1, 0xb5, 0xac, + 0x01, 0x38, 0x00, 0x03, 0x00, 0xd9, 0x01, 0x52, 0x03, 0x8d, 0x05, 0x31, + 0x00, 0x03, 0x00, 0x28, 0x00, 0x34, 0x00, 0xc5, 0xb6, 0x1e, 0x1e, 0x0d, + 0x05, 0x29, 0x03, 0x27, 0xb8, 0x01, 0x79, 0xb4, 0x14, 0x29, 0x2f, 0x02, + 0x0d, 0xb8, 0x01, 0x97, 0x40, 0x36, 0x2f, 0x2f, 0x35, 0x36, 0x1f, 0xab, + 0x94, 0x1e, 0x01, 0x1e, 0x1e, 0x19, 0x0b, 0x13, 0x01, 0x0b, 0x13, 0xfb, + 0x13, 0x02, 0xfb, 0x13, 0x01, 0x13, 0x98, 0x29, 0x9b, 0x32, 0xab, 0x32, + 0xbb, 0x32, 0x03, 0xcb, 0x32, 0xdb, 0x32, 0x02, 0x32, 0xa9, 0x08, 0x04, + 0x01, 0xc4, 0x03, 0x2f, 0x34, 0x04, 0x94, 0x29, 0xa4, 0x29, 0x02, 0x29, + 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x0c, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0x40, + 0x22, 0x09, 0x0c, 0x48, 0x44, 0x03, 0x01, 0x30, 0x03, 0x01, 0x02, 0x00, + 0x03, 0x10, 0x03, 0x20, 0x03, 0x03, 0x08, 0x29, 0x04, 0x03, 0x03, 0x04, + 0x29, 0x03, 0x35, 0x80, 0x19, 0x90, 0x19, 0xa0, 0x19, 0x03, 0x19, 0xb8, + 0xff, 0xc0, 0x40, 0x0a, 0x11, 0x15, 0x48, 0x19, 0xaa, 0x4f, 0x22, 0x01, + 0x22, 0x41, 0x00, 0x3f, 0x5d, 0xed, 0x2b, 0x71, 0x12, 0x17, 0x39, 0x2f, + 0x2f, 0x2f, 0x5e, 0x5d, 0x5f, 0x5d, 0x5d, 0x2b, 0x2b, 0x5d, 0x12, 0x39, + 0x39, 0x10, 0xed, 0x10, 0xd4, 0xed, 0x5d, 0x71, 0x10, 0xed, 0x5d, 0x71, + 0x72, 0x11, 0x39, 0x2f, 0x71, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xfd, + 0xc6, 0x10, 0xd6, 0x32, 0xfd, 0xc6, 0x12, 0x39, 0x12, 0x39, 0x2f, 0x31, + 0x30, 0x01, 0x21, 0x35, 0x21, 0x27, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x11, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x37, + 0x03, 0x8d, 0xfd, 0x4c, 0x02, 0xb4, 0xdd, 0x0e, 0x28, 0x6e, 0x54, 0x2c, + 0x50, 0x3d, 0x24, 0x2d, 0x5a, 0x88, 0x5c, 0x47, 0x0d, 0x20, 0x38, 0x2a, + 0x16, 0x3a, 0x3f, 0x41, 0x1e, 0x39, 0x83, 0x4b, 0x5c, 0x79, 0x47, 0x1d, + 0xc3, 0x54, 0x29, 0x37, 0x21, 0x0e, 0x35, 0x2b, 0x3f, 0x44, 0x01, 0x52, + 0xa8, 0x7d, 0x4a, 0x29, 0x30, 0x17, 0x32, 0x4f, 0x39, 0x30, 0x50, 0x3a, + 0x21, 0x2b, 0x16, 0x24, 0x1a, 0x0d, 0x07, 0x0e, 0x14, 0x0d, 0x9c, 0x14, + 0x17, 0x25, 0x3f, 0x56, 0x31, 0xfe, 0x31, 0x01, 0x23, 0x10, 0x1b, 0x21, + 0x11, 0x29, 0x1e, 0x41, 0x00, 0x03, 0x00, 0xc9, 0x01, 0x52, 0x03, 0x9d, + 0x05, 0x31, 0x00, 0x03, 0x00, 0x17, 0x00, 0x25, 0x00, 0x5e, 0xb1, 0x03, + 0x04, 0xb8, 0x01, 0x93, 0xb3, 0x18, 0x20, 0x02, 0x0e, 0xb8, 0x01, 0x93, + 0x40, 0x0b, 0x20, 0x20, 0x26, 0x27, 0x23, 0xc5, 0x09, 0x01, 0xc4, 0x03, + 0x09, 0xb8, 0xff, 0xc0, 0x40, 0x1e, 0x09, 0x0c, 0x48, 0x44, 0x03, 0x01, + 0x30, 0x03, 0x01, 0x02, 0x00, 0x03, 0x10, 0x03, 0x20, 0x03, 0x03, 0x08, + 0x09, 0x03, 0x09, 0x03, 0x26, 0x1b, 0xc5, 0x4f, 0x13, 0x01, 0x13, 0x41, + 0x00, 0x3f, 0x5d, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5e, 0x5d, 0x5f, + 0x5d, 0x5d, 0x2b, 0x10, 0xed, 0x10, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, + 0xfd, 0xc4, 0x10, 0xd6, 0xfd, 0xc4, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, + 0x13, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x03, 0x8d, 0xfd, 0x4c, 0x02, 0xb4, 0x10, + 0x31, 0x60, 0x8a, 0x57, 0x53, 0x83, 0x5c, 0x30, 0x33, 0x5f, 0x88, 0x56, + 0x55, 0x84, 0x5c, 0x2f, 0xca, 0x51, 0x4f, 0x26, 0x3c, 0x29, 0x15, 0x55, + 0x4b, 0x4c, 0x54, 0x01, 0x52, 0xa8, 0x01, 0xd9, 0x4d, 0x86, 0x63, 0x39, + 0x2b, 0x59, 0x86, 0x5b, 0x4e, 0x84, 0x60, 0x36, 0x2d, 0x58, 0x83, 0x5b, + 0x5a, 0x5e, 0x1b, 0x31, 0x45, 0x29, 0x5b, 0x62, 0x64, 0x00, 0x00, 0x04, + 0x00, 0x1f, 0x00, 0x00, 0x04, 0x63, 0x05, 0x31, 0x00, 0x09, 0x00, 0x0d, + 0x00, 0x1d, 0x00, 0x29, 0x00, 0x56, 0xb9, 0x00, 0x1e, 0x01, 0x56, 0xb5, + 0x0d, 0x5f, 0x0e, 0x01, 0x0e, 0x24, 0xb8, 0x01, 0x56, 0xb2, 0x0c, 0x16, + 0x07, 0xbb, 0x01, 0x65, 0x00, 0x09, 0x00, 0x02, 0x01, 0x65, 0x40, 0x19, + 0x05, 0x2a, 0x27, 0x92, 0x13, 0x0b, 0x95, 0x0d, 0x0d, 0x01, 0x21, 0x92, + 0x1b, 0x42, 0x02, 0x07, 0x04, 0x09, 0x41, 0x06, 0x41, 0x04, 0x43, 0x01, + 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0xde, 0xed, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0xed, 0xde, + 0xc4, 0xed, 0xd4, 0x71, 0xc4, 0xed, 0x31, 0x30, 0x21, 0x23, 0x03, 0x11, + 0x23, 0x11, 0x33, 0x13, 0x11, 0x33, 0x01, 0x21, 0x35, 0x21, 0x13, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x07, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x02, 0x73, 0xb7, 0xf3, 0xaa, 0xb6, 0xf4, 0xaa, 0x01, 0xdf, 0xfe, 0x79, + 0x01, 0x87, 0x11, 0x1d, 0x37, 0x55, 0x37, 0x68, 0x6f, 0x1d, 0x39, 0x53, + 0x36, 0x6a, 0x6e, 0x9d, 0x21, 0x1f, 0x1d, 0x20, 0x20, 0x1d, 0x1f, 0x21, + 0x03, 0x10, 0xfc, 0xf0, 0x05, 0x1b, 0xfc, 0xef, 0x03, 0x11, 0xfc, 0xfc, + 0x89, 0x01, 0x77, 0x42, 0x6d, 0x4e, 0x2a, 0x85, 0x99, 0x44, 0x6c, 0x4b, + 0x28, 0x87, 0x97, 0x4b, 0x4d, 0x55, 0x45, 0x4a, 0x51, 0x53, 0x00, 0x02, + 0x00, 0x29, 0x00, 0x00, 0x04, 0x3b, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x1f, + 0x00, 0x93, 0xb6, 0x03, 0x1f, 0x1c, 0x12, 0x04, 0x02, 0x13, 0xbb, 0x01, + 0x84, 0x00, 0x14, 0x00, 0x02, 0x01, 0x84, 0x40, 0x19, 0x00, 0x19, 0x18, + 0x15, 0x04, 0x01, 0x14, 0x16, 0x0c, 0x1a, 0x0c, 0x1a, 0xdf, 0x16, 0xff, + 0x16, 0x02, 0x16, 0x08, 0x04, 0x1e, 0x1d, 0x03, 0x05, 0x10, 0xb8, 0x01, + 0x84, 0xb5, 0x07, 0x0a, 0x0b, 0x03, 0x0f, 0x05, 0xb8, 0x01, 0x84, 0x40, + 0x20, 0x06, 0x08, 0x20, 0x14, 0x41, 0x18, 0x0b, 0x1c, 0xd3, 0x11, 0x15, + 0x0e, 0x11, 0x19, 0x0a, 0x1e, 0xd3, 0x03, 0x07, 0x00, 0x03, 0x11, 0x03, + 0x11, 0x03, 0x01, 0x0f, 0x41, 0x06, 0x43, 0x01, 0x43, 0x00, 0x3f, 0x3f, + 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x33, 0x10, 0xed, 0x32, + 0x32, 0x11, 0x33, 0x33, 0x10, 0xed, 0x32, 0x32, 0x3f, 0x01, 0x10, 0xd6, + 0xd6, 0xed, 0xd4, 0x17, 0x39, 0xed, 0x11, 0x17, 0x39, 0x10, 0xc4, 0x5d, + 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xd6, 0xd4, 0x17, 0x39, 0xed, 0x10, 0xed, + 0x11, 0x17, 0x39, 0x31, 0x30, 0x01, 0x03, 0x23, 0x13, 0x23, 0x03, 0x23, + 0x13, 0x23, 0x35, 0x33, 0x13, 0x23, 0x35, 0x33, 0x13, 0x33, 0x03, 0x33, + 0x13, 0x33, 0x03, 0x33, 0x15, 0x23, 0x03, 0x33, 0x15, 0x01, 0x23, 0x03, + 0x33, 0x03, 0x47, 0x22, 0xc4, 0x23, 0xe8, 0x22, 0xc4, 0x23, 0xb0, 0xc2, + 0x1d, 0xaa, 0xbc, 0x20, 0xc4, 0x20, 0xe7, 0x20, 0xc4, 0x20, 0xb2, 0xc4, + 0x1d, 0xac, 0xfe, 0xad, 0xe7, 0x1d, 0xe7, 0x01, 0x54, 0xfe, 0xac, 0x01, + 0x54, 0xfe, 0xac, 0x01, 0x54, 0xb7, 0x01, 0x1f, 0xb7, 0x01, 0x3a, 0xfe, + 0xc6, 0x01, 0x3a, 0xfe, 0xc6, 0xb7, 0xfe, 0xe1, 0xb7, 0x01, 0xd6, 0xfe, + 0xe1, 0x00, 0x00, 0x03, 0x00, 0x35, 0xff, 0xe9, 0x04, 0x31, 0x05, 0x31, + 0x00, 0x13, 0x00, 0x1f, 0x00, 0x2b, 0x00, 0x89, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb1, 0x18, 0x00, 0xb8, 0x01, 0xe6, 0xb2, 0x20, 0x24, 0x14, + 0xb8, 0x01, 0xe6, 0xb2, 0x0a, 0x2c, 0x23, 0xbb, 0x01, 0x2b, 0x00, 0x18, + 0x00, 0x17, 0x01, 0x29, 0x40, 0x12, 0x24, 0x14, 0x20, 0x24, 0x18, 0x24, + 0x18, 0x24, 0x05, 0x1b, 0xeb, 0x0f, 0x63, 0x27, 0xeb, 0x40, 0x05, 0x65, + 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x2f, + 0x2f, 0x12, 0x39, 0x39, 0x10, 0xed, 0x10, 0xed, 0x01, 0x10, 0xd6, 0xed, + 0x32, 0xd4, 0xed, 0x33, 0x31, 0x30, 0x1b, 0xbc, 0x00, 0x23, 0x01, 0x2b, + 0x00, 0x18, 0x00, 0x17, 0x01, 0x29, 0x40, 0x12, 0x24, 0x14, 0x20, 0x24, + 0x18, 0x24, 0x18, 0x24, 0x05, 0x1b, 0xeb, 0x0f, 0x63, 0x27, 0xeb, 0x40, + 0x05, 0x65, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, + 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x14, 0x17, 0x01, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x05, 0x34, 0x26, 0x35, 0x01, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x04, 0x31, 0x46, 0x87, 0xc2, 0x7d, 0x6c, 0xb6, 0x84, + 0x4a, 0x47, 0x86, 0xc4, 0x7c, 0x6c, 0xb6, 0x83, 0x4a, 0xfc, 0xfa, 0x02, + 0x01, 0xea, 0x23, 0x73, 0x4e, 0x38, 0x60, 0x47, 0x29, 0x02, 0x10, 0x02, + 0xfe, 0x19, 0x20, 0x74, 0x4d, 0x38, 0x61, 0x47, 0x28, 0x02, 0x93, 0xa1, + 0xfe, 0xaf, 0x5c, 0x4c, 0xa3, 0xfe, 0xb1, 0xa1, 0xfe, 0xaf, 0x5c, 0x4c, + 0xa2, 0xfe, 0xb6, 0x14, 0x23, 0x12, 0x01, 0x62, 0x63, 0x5f, 0x39, 0x76, + 0xb2, 0x7e, 0x11, 0x23, 0x10, 0xfe, 0xa0, 0x61, 0x5e, 0x3a, 0x75, 0xb3, + 0x00, 0x03, 0x00, 0x35, 0xff, 0xe9, 0x04, 0x31, 0x05, 0x31, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x3b, 0x00, 0x3c, 0xb5, 0x0f, 0x05, 0x0f, 0x05, 0x28, + 0x32, 0xbb, 0x01, 0xeb, 0x00, 0x1e, 0x00, 0x14, 0x01, 0xeb, 0xb3, 0x28, + 0x1e, 0x3c, 0x0a, 0xb8, 0x01, 0x45, 0x40, 0x0b, 0x00, 0x00, 0x19, 0x2d, + 0xef, 0x23, 0x63, 0x37, 0xef, 0x19, 0x65, 0x00, 0x3f, 0xed, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x10, 0xed, 0x11, + 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x05, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x02, 0x33, 0x1f, 0x38, 0x2a, 0x19, + 0x19, 0x2a, 0x38, 0x1f, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, 0x37, 0x02, + 0x1e, 0x46, 0x87, 0xc3, 0x7c, 0x6c, 0xb6, 0x84, 0x4a, 0x47, 0x86, 0xc3, + 0x7d, 0x6c, 0xb6, 0x83, 0x4a, 0xff, 0x00, 0x22, 0x42, 0x5e, 0x3c, 0x38, + 0x5d, 0x44, 0x25, 0x22, 0x42, 0x5e, 0x3c, 0x38, 0x5e, 0x43, 0x25, 0x03, + 0x29, 0x19, 0x2b, 0x39, 0x1f, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, 0x37, + 0x20, 0x1f, 0x39, 0x2b, 0x19, 0x96, 0xa1, 0xfe, 0xaf, 0x5c, 0x4c, 0xa3, + 0xfe, 0xb1, 0xa1, 0xfe, 0xaf, 0x5c, 0x4c, 0xa2, 0xfe, 0xba, 0x7b, 0xb3, + 0x73, 0x38, 0x37, 0x74, 0xb1, 0x79, 0x7b, 0xb2, 0x74, 0x38, 0x38, 0x73, + 0xb1, 0x00, 0x00, 0x02, 0x00, 0x35, 0xff, 0xe9, 0x04, 0x31, 0x05, 0x31, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x22, 0xbc, 0x00, 0x00, 0x01, 0xeb, 0x00, + 0x14, 0x00, 0x1e, 0x01, 0xeb, 0x40, 0x09, 0x0a, 0x19, 0xef, 0x0f, 0x63, + 0x23, 0xef, 0x05, 0x65, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, + 0xd4, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x04, 0x31, 0x46, 0x87, 0xc3, 0x7c, 0x6c, 0xb6, 0x84, 0x4a, 0x47, 0x86, + 0xc3, 0x7d, 0x6c, 0xb6, 0x83, 0x4a, 0xff, 0x00, 0x22, 0x42, 0x5e, 0x3c, + 0x38, 0x5d, 0x44, 0x25, 0x22, 0x42, 0x5e, 0x3c, 0x38, 0x5e, 0x43, 0x25, + 0x02, 0x93, 0xa1, 0xfe, 0xaf, 0x5c, 0x4c, 0xa3, 0xfe, 0xb1, 0xa1, 0xfe, + 0xaf, 0x5c, 0x4c, 0xa2, 0xfe, 0xba, 0x7b, 0xb3, 0x73, 0x38, 0x37, 0x74, + 0xb1, 0x79, 0x7b, 0xb2, 0x74, 0x38, 0x38, 0x73, 0xb1, 0x00, 0x00, 0x01, + 0x00, 0x73, 0x00, 0x00, 0x03, 0xfe, 0x05, 0x23, 0x00, 0x0a, 0x00, 0x72, + 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb1, 0x09, 0x08, 0xb8, 0x01, 0xe8, + 0x40, 0x13, 0x02, 0x05, 0x00, 0x06, 0x02, 0x02, 0x0b, 0x0c, 0x05, 0xeb, + 0x03, 0x07, 0x04, 0x04, 0x00, 0x07, 0x62, 0x08, 0x02, 0xb8, 0x01, 0x2b, + 0xb2, 0x40, 0x00, 0x64, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x3f, + 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, 0x33, + 0xdd, 0xc6, 0x10, 0xfd, 0xcd, 0x31, 0x30, 0x1b, 0x40, 0x0f, 0x02, 0x02, + 0x0b, 0x0c, 0x05, 0xeb, 0x03, 0x07, 0x04, 0x04, 0x00, 0x07, 0x62, 0x08, + 0x02, 0xb8, 0x01, 0x2b, 0xb2, 0x40, 0x00, 0x64, 0x00, 0x18, 0x3f, 0x1a, + 0x4d, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0x31, 0x30, 0x59, 0x33, 0x35, 0x21, 0x11, 0x05, 0x27, + 0x25, 0x33, 0x11, 0x21, 0x15, 0x98, 0x01, 0x4d, 0xfe, 0xde, 0x50, 0x01, + 0x9f, 0xcd, 0x01, 0x1f, 0xd9, 0x03, 0x48, 0xa0, 0xc7, 0xdb, 0xfb, 0xb6, + 0xd9, 0x00, 0x00, 0x01, 0x00, 0x7b, 0x00, 0x00, 0x03, 0xf8, 0x05, 0x31, + 0x00, 0x20, 0x00, 0x6f, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb9, 0x00, + 0x07, 0x01, 0xef, 0xb3, 0x18, 0x18, 0x1f, 0x1e, 0xb8, 0x02, 0x2f, 0xb4, + 0x10, 0x00, 0x21, 0x01, 0x1e, 0xb8, 0x01, 0x2c, 0x40, 0x09, 0x1d, 0x02, + 0x07, 0x03, 0x13, 0x20, 0x64, 0x0f, 0x0c, 0xb8, 0x01, 0x2b, 0xb2, 0x40, + 0x13, 0x63, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xc6, 0x3f, 0x12, 0x17, + 0x39, 0xed, 0x32, 0x01, 0x10, 0xd6, 0xc6, 0xed, 0xcd, 0x39, 0x2f, 0xed, + 0x31, 0x30, 0x1b, 0xb1, 0x01, 0x1e, 0xb8, 0x01, 0x2c, 0x40, 0x09, 0x1d, + 0x02, 0x07, 0x03, 0x13, 0x20, 0x64, 0x0f, 0x0c, 0xb8, 0x01, 0x2b, 0xb2, + 0x40, 0x13, 0x63, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xc6, 0x3f, 0x12, + 0x17, 0x39, 0xed, 0x32, 0x31, 0x30, 0x59, 0x33, 0x35, 0x01, 0x3e, 0x03, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x21, 0x15, 0x81, + 0x01, 0x35, 0x57, 0x69, 0x39, 0x12, 0x18, 0x2e, 0x46, 0x2d, 0x4d, 0x84, + 0x3b, 0x81, 0x55, 0xd5, 0x7c, 0x60, 0x9c, 0x6f, 0x3d, 0x2a, 0x50, 0x75, + 0x4b, 0xbe, 0x02, 0x27, 0xb4, 0x01, 0x35, 0x57, 0x7e, 0x63, 0x54, 0x2d, + 0x25, 0x43, 0x31, 0x1d, 0x43, 0x38, 0xa6, 0x4f, 0x5f, 0x31, 0x60, 0x90, + 0x5e, 0x4e, 0x87, 0x80, 0x80, 0x47, 0xb5, 0xe1, 0x00, 0x01, 0x00, 0x8b, + 0xff, 0xec, 0x03, 0xfc, 0x05, 0x31, 0x00, 0x38, 0x00, 0xba, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xb9, 0x00, 0x20, 0x01, 0xe9, 0x40, 0x0d, 0x31, + 0x34, 0x1a, 0x31, 0x26, 0x1a, 0x31, 0x31, 0x1a, 0x26, 0x03, 0x0b, 0x00, + 0xb8, 0x01, 0xec, 0x40, 0x1c, 0x13, 0x0b, 0x39, 0x27, 0xef, 0x26, 0x23, + 0xef, 0x2c, 0x34, 0x1a, 0xe5, 0x13, 0x00, 0x19, 0x20, 0x19, 0x30, 0x19, + 0x03, 0x18, 0x03, 0x19, 0x19, 0x05, 0x2c, 0x63, 0x0a, 0xb8, 0x01, 0x27, + 0x40, 0x0b, 0x0b, 0x40, 0x13, 0x25, 0x48, 0x0b, 0x0e, 0xef, 0x40, 0x05, + 0x65, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0x2b, 0xed, 0x3f, 0x12, + 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0x39, 0xed, 0x39, 0x10, 0xfd, 0xd6, 0xed, + 0x01, 0x10, 0xd6, 0xd6, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, + 0x12, 0x39, 0x10, 0xed, 0x31, 0x30, 0x1b, 0x40, 0x19, 0x27, 0xef, 0x26, + 0x23, 0xef, 0x2c, 0x34, 0x1a, 0xe5, 0x13, 0x00, 0x19, 0x20, 0x19, 0x30, + 0x19, 0x03, 0x18, 0x03, 0x19, 0x19, 0x05, 0x2c, 0x63, 0x0a, 0xb8, 0x01, + 0x27, 0x40, 0x0b, 0x0b, 0x40, 0x13, 0x25, 0x48, 0x0b, 0x0e, 0xef, 0x40, + 0x05, 0x65, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0x2b, 0xed, 0x3f, + 0x12, 0x39, 0x2f, 0x5f, 0x5e, 0x5d, 0x39, 0xed, 0x39, 0x10, 0xfd, 0xd6, + 0xed, 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, + 0x07, 0x1e, 0x03, 0x03, 0xfc, 0x48, 0x95, 0xe2, 0x99, 0x22, 0x4b, 0x4a, + 0x46, 0x1c, 0x3f, 0x9d, 0x55, 0x53, 0x78, 0x4e, 0x25, 0x26, 0x4e, 0x79, + 0x53, 0x91, 0x85, 0x4e, 0x67, 0x3d, 0x1a, 0x68, 0x6d, 0x4e, 0x98, 0x51, + 0x2d, 0x52, 0x52, 0x54, 0x2d, 0x6c, 0xa3, 0x6f, 0x38, 0x6d, 0x62, 0x3f, + 0x66, 0x49, 0x27, 0x01, 0x8f, 0x61, 0x9b, 0x6d, 0x3a, 0x03, 0x05, 0x07, + 0x05, 0xd4, 0x0c, 0x0f, 0x1c, 0x35, 0x4e, 0x31, 0x2b, 0x46, 0x31, 0x1b, + 0xba, 0x1f, 0x34, 0x47, 0x27, 0x50, 0x53, 0x1e, 0x19, 0xcd, 0x0f, 0x14, + 0x0e, 0x06, 0x2e, 0x55, 0x7a, 0x4b, 0x77, 0x93, 0x27, 0x0a, 0x31, 0x4d, + 0x64, 0x00, 0x00, 0x02, 0x00, 0x27, 0x00, 0x00, 0x04, 0x3b, 0x05, 0x1b, + 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x6e, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, + 0xb1, 0x00, 0x07, 0xb8, 0x01, 0xb2, 0x40, 0x0c, 0x0c, 0x05, 0x06, 0x03, + 0x0b, 0x0b, 0x09, 0x05, 0x04, 0x08, 0x05, 0x0d, 0xb8, 0x01, 0x29, 0x40, + 0x0b, 0x40, 0x00, 0x0b, 0x06, 0x03, 0x03, 0x01, 0x06, 0x62, 0x01, 0x64, + 0x00, 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x33, 0x1a, 0x4d, + 0xed, 0x32, 0x32, 0x01, 0x2f, 0x33, 0xcd, 0x39, 0x2f, 0x33, 0x33, 0x11, + 0x33, 0xed, 0x32, 0x31, 0x30, 0x1b, 0xb2, 0x08, 0x05, 0x0d, 0xb8, 0x01, + 0x29, 0x40, 0x0b, 0x40, 0x00, 0x0b, 0x06, 0x03, 0x03, 0x01, 0x06, 0x62, + 0x01, 0x64, 0x00, 0x18, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x33, + 0x1a, 0x4d, 0xed, 0x32, 0x32, 0x31, 0x30, 0x59, 0x01, 0x11, 0x23, 0x11, + 0x21, 0x35, 0x01, 0x21, 0x11, 0x33, 0x15, 0x01, 0x01, 0x21, 0x03, 0x75, + 0xee, 0xfd, 0xa0, 0x01, 0xfe, 0x01, 0x50, 0xc6, 0xfe, 0x4f, 0xfe, 0x8c, + 0x01, 0x74, 0x01, 0x0a, 0xfe, 0xf6, 0x01, 0x0a, 0xd1, 0x03, 0x40, 0xfc, + 0xc6, 0xd7, 0x03, 0x25, 0xfd, 0xb2, 0x00, 0x01, 0x00, 0x9c, 0xff, 0xec, + 0x03, 0xee, 0x05, 0x1b, 0x00, 0x1f, 0x00, 0x76, 0xb1, 0x01, 0x02, 0x43, + 0x55, 0x58, 0xb9, 0x00, 0x19, 0x01, 0xb1, 0xb5, 0x15, 0x18, 0x15, 0x18, + 0x0b, 0x00, 0xb8, 0x01, 0xee, 0x40, 0x09, 0x11, 0x0b, 0x20, 0x15, 0xeb, + 0x1a, 0x1a, 0x05, 0x19, 0xb8, 0x01, 0x2e, 0xb2, 0x16, 0x62, 0x0a, 0xb8, + 0x01, 0x28, 0xb5, 0x0b, 0x0e, 0xf0, 0x40, 0x05, 0x65, 0x00, 0x18, 0x3f, + 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x10, 0xd6, 0xd6, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0xed, 0x31, 0x30, + 0x1b, 0xb5, 0x15, 0xeb, 0x1a, 0x1a, 0x05, 0x19, 0xb8, 0x01, 0x2e, 0xb2, + 0x16, 0x62, 0x0a, 0xb8, 0x01, 0x28, 0xb5, 0x0b, 0x0e, 0xf0, 0x40, 0x05, + 0x65, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x31, 0x30, 0x59, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x03, + 0xee, 0x58, 0x9c, 0xd4, 0x7c, 0x1f, 0x46, 0x48, 0x44, 0x1d, 0x39, 0x94, + 0x4d, 0x96, 0x9d, 0x92, 0xa3, 0xff, 0x00, 0x02, 0xf2, 0xfd, 0xf2, 0x5e, + 0x64, 0xb6, 0x8b, 0x53, 0x01, 0xa2, 0x69, 0xa3, 0x70, 0x3a, 0x04, 0x06, + 0x09, 0x05, 0xd5, 0x0e, 0x11, 0x73, 0x66, 0x6a, 0x67, 0x02, 0xb7, 0xe6, + 0xfe, 0xf6, 0x24, 0x59, 0x98, 0x00, 0x00, 0x02, 0x00, 0x62, 0xff, 0xe9, + 0x04, 0x19, 0x05, 0x1b, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x79, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xb1, 0x18, 0x2b, 0xb8, 0x01, 0xed, 0xb4, 0x08, + 0x10, 0x10, 0x08, 0x00, 0xb8, 0x01, 0xea, 0xb3, 0x20, 0x08, 0x34, 0x2a, + 0xb8, 0x01, 0x25, 0x40, 0x11, 0x18, 0x25, 0xed, 0x16, 0x10, 0x1b, 0x1b, + 0x05, 0x11, 0xf1, 0x10, 0x62, 0x2f, 0xef, 0x40, 0x05, 0x65, 0x00, 0x18, + 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, + 0xdd, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x10, 0xed, + 0x32, 0x31, 0x30, 0x1b, 0xb9, 0x00, 0x2a, 0x01, 0x25, 0x40, 0x11, 0x18, + 0x25, 0xed, 0x16, 0x10, 0x1b, 0x1b, 0x05, 0x11, 0xf1, 0x10, 0x62, 0x2f, + 0xef, 0x40, 0x05, 0x65, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, 0xdd, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x02, 0x11, 0x34, 0x3e, 0x04, 0x33, 0x33, + 0x15, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x19, 0x48, 0x7f, 0xb0, 0x69, 0xe5, + 0xf2, 0x1a, 0x3d, 0x67, 0x9a, 0xd2, 0x8b, 0x95, 0xae, 0x6c, 0x92, 0x5c, + 0x2e, 0x07, 0x02, 0x34, 0x85, 0x49, 0x6a, 0xa0, 0x6b, 0x35, 0xfe, 0x18, + 0x33, 0x4f, 0x37, 0x20, 0x3f, 0x3b, 0x35, 0x15, 0x1c, 0x39, 0x55, 0x38, + 0x30, 0x4e, 0x37, 0x1e, 0x01, 0x9e, 0x63, 0xa1, 0x73, 0x3e, 0x01, 0x20, + 0x01, 0x28, 0x6c, 0xc3, 0xa5, 0x86, 0x5d, 0x33, 0xcf, 0x2c, 0x52, 0x76, + 0x4a, 0x18, 0x19, 0x20, 0x37, 0x68, 0x94, 0x69, 0x2e, 0x4d, 0x37, 0x1f, + 0x0b, 0x12, 0x16, 0x0c, 0x65, 0x8b, 0x58, 0x27, 0x20, 0x3b, 0x51, 0x00, + 0x00, 0x01, 0x00, 0x6a, 0x00, 0x00, 0x03, 0xf6, 0x05, 0x1b, 0x00, 0x06, + 0x00, 0x41, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb7, 0x02, 0x01, 0x00, + 0x06, 0x03, 0x00, 0x06, 0x02, 0xb8, 0x01, 0x2f, 0xb4, 0x40, 0x04, 0x62, + 0x00, 0x64, 0x00, 0x18, 0x3f, 0x3f, 0x1a, 0x4d, 0xed, 0x32, 0x01, 0x2f, + 0x2f, 0xcd, 0x11, 0x33, 0x32, 0x31, 0x30, 0x1b, 0xb1, 0x06, 0x02, 0xb8, + 0x01, 0x2f, 0xb4, 0x40, 0x04, 0x62, 0x00, 0x64, 0x00, 0x18, 0x3f, 0x3f, + 0x1a, 0x4d, 0xed, 0x32, 0x31, 0x30, 0x59, 0x21, 0x21, 0x01, 0x21, 0x35, + 0x21, 0x15, 0x01, 0xe9, 0xfe, 0xec, 0x02, 0x08, 0xfd, 0x8d, 0x03, 0x8c, + 0x04, 0x2f, 0xec, 0xd5, 0x00, 0x03, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, + 0x05, 0x31, 0x00, 0x27, 0x00, 0x37, 0x00, 0x49, 0x00, 0x80, 0xb1, 0x01, + 0x02, 0x43, 0x55, 0x58, 0xbc, 0x00, 0x2d, 0x01, 0xb3, 0x00, 0x23, 0x00, + 0x33, 0x01, 0xb5, 0x40, 0x0a, 0x19, 0x00, 0x14, 0x19, 0x23, 0x19, 0x23, + 0x19, 0x0f, 0x05, 0xbb, 0x01, 0xe6, 0x00, 0x45, 0x00, 0x3d, 0x01, 0xe6, + 0x40, 0x13, 0x0f, 0x4a, 0x45, 0x3d, 0x3d, 0x38, 0x28, 0x2d, 0x04, 0x0a, + 0x30, 0xe6, 0x1e, 0x63, 0x40, 0xe7, 0x40, 0x0a, 0x65, 0x00, 0x18, 0x3f, + 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x17, 0x39, 0x11, 0x33, 0x01, 0x10, + 0xd6, 0xed, 0xd4, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, + 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x1b, 0x40, 0x11, 0x45, 0x3d, 0x3d, + 0x38, 0x28, 0x2d, 0x04, 0x0a, 0x30, 0xe6, 0x1e, 0x63, 0x40, 0xe7, 0x40, + 0x0a, 0x65, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x17, + 0x39, 0x11, 0x33, 0x31, 0x30, 0x59, 0x01, 0x1e, 0x03, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x27, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x07, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x03, 0x0c, 0x31, 0x59, 0x43, 0x27, 0x48, 0x7f, 0xab, + 0x63, 0x6e, 0xa9, 0x73, 0x3b, 0x27, 0x44, 0x59, 0x32, 0x2d, 0x4f, 0x3c, + 0x23, 0x37, 0x6d, 0xa5, 0x6f, 0x66, 0xa0, 0x6d, 0x39, 0x22, 0x3a, 0x50, + 0xed, 0x24, 0x3f, 0x2e, 0x1c, 0x66, 0x60, 0x5e, 0x66, 0x22, 0x3c, 0x51, + 0x05, 0x27, 0x45, 0x33, 0x1e, 0x76, 0x61, 0x2c, 0x4e, 0x3b, 0x22, 0x26, + 0x42, 0x58, 0x02, 0xb4, 0x1b, 0x41, 0x55, 0x6b, 0x44, 0x59, 0x88, 0x5c, + 0x2e, 0x2f, 0x56, 0x7a, 0x4b, 0x43, 0x69, 0x56, 0x44, 0x1d, 0x1a, 0x3e, + 0x4e, 0x60, 0x3d, 0x47, 0x7d, 0x5e, 0x36, 0x2b, 0x50, 0x6f, 0x43, 0x3e, + 0x64, 0x51, 0x41, 0x42, 0x14, 0x2d, 0x36, 0x40, 0x27, 0x41, 0x44, 0x46, + 0x46, 0x26, 0x3c, 0x33, 0x2c, 0xf3, 0x15, 0x30, 0x3a, 0x45, 0x2b, 0x4c, + 0x50, 0x12, 0x26, 0x3b, 0x29, 0x2a, 0x43, 0x38, 0x32, 0x00, 0x00, 0x02, + 0x00, 0x48, 0x00, 0x00, 0x03, 0xfe, 0x05, 0x31, 0x00, 0x21, 0x00, 0x33, + 0x00, 0x75, 0xb1, 0x01, 0x02, 0x43, 0x55, 0x58, 0xb7, 0x22, 0x1d, 0x18, + 0x2f, 0x08, 0x08, 0x18, 0x00, 0xb8, 0x01, 0xed, 0xb2, 0x10, 0x2f, 0x27, + 0xb8, 0x01, 0xea, 0x40, 0x0e, 0x18, 0x34, 0x2a, 0xec, 0x10, 0x0e, 0x13, + 0x13, 0x08, 0x22, 0xef, 0x1d, 0x63, 0x09, 0xb8, 0x01, 0x25, 0xb2, 0x40, + 0x08, 0x64, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x39, 0xcd, 0xed, 0x01, 0x10, 0xd6, 0xed, 0xd4, 0x32, 0xed, 0x11, + 0x39, 0x2f, 0x11, 0x12, 0x39, 0x39, 0x31, 0x30, 0x1b, 0x40, 0x0c, 0x2a, + 0xec, 0x10, 0x0e, 0x13, 0x13, 0x08, 0x22, 0xef, 0x1d, 0x63, 0x09, 0xb8, + 0x01, 0x25, 0xb2, 0x40, 0x08, 0x64, 0x00, 0x18, 0x3f, 0x1a, 0x4d, 0xed, + 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x39, 0xcd, 0xed, 0x31, 0x30, 0x59, 0x01, + 0x14, 0x0e, 0x04, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x37, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x25, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x37, 0x34, 0x2e, 0x02, 0x03, 0xfe, 0x34, 0x5f, 0x84, 0xa1, 0xb7, + 0x62, 0x97, 0xb2, 0x75, 0x9d, 0x61, 0x2f, 0x08, 0x02, 0x35, 0x88, 0x45, + 0x5f, 0x9c, 0x71, 0x3e, 0x47, 0x7f, 0xaf, 0x68, 0x66, 0xad, 0x7f, 0x47, + 0xfe, 0x1b, 0x30, 0x4e, 0x37, 0x1e, 0x70, 0x63, 0x1b, 0x3d, 0x3d, 0x37, + 0x15, 0x17, 0x35, 0x56, 0x02, 0xdb, 0x9a, 0xe5, 0xa2, 0x68, 0x3c, 0x16, + 0xd1, 0x29, 0x4f, 0x76, 0x4d, 0x19, 0x19, 0x20, 0x2c, 0x60, 0x99, 0x6c, + 0x62, 0xa1, 0x72, 0x3f, 0x3a, 0x8b, 0xe6, 0xde, 0x20, 0x3a, 0x51, 0x32, + 0x6a, 0x67, 0x0a, 0x12, 0x17, 0x0d, 0x59, 0x88, 0x5d, 0x30, 0x00, 0x03, + 0x00, 0x35, 0xff, 0xe9, 0x04, 0x31, 0x04, 0x91, 0x00, 0x13, 0x00, 0x1f, + 0x00, 0x2b, 0x00, 0x47, 0xb6, 0x23, 0x18, 0x24, 0x17, 0x04, 0x14, 0x00, + 0xbb, 0x01, 0xe6, 0x00, 0x20, 0x00, 0x14, 0x01, 0xe6, 0x40, 0x18, 0x0a, + 0x2c, 0x23, 0xef, 0x18, 0x17, 0xed, 0x24, 0x14, 0x20, 0x24, 0x18, 0x24, + 0x18, 0x24, 0x05, 0x1b, 0xea, 0x0f, 0x67, 0x27, 0xeb, 0x05, 0x65, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, + 0x10, 0xed, 0x10, 0xed, 0x01, 0x10, 0xd6, 0xfd, 0xd4, 0xed, 0x12, 0x17, + 0x39, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x14, 0x17, 0x01, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x05, 0x34, 0x26, 0x35, 0x01, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x31, 0x4c, 0x8a, 0xc1, 0x75, 0x6c, + 0xb6, 0x84, 0x4a, 0x4c, 0x8b, 0xc1, 0x75, 0x6c, 0xb6, 0x83, 0x4a, 0xfc, + 0xfa, 0x02, 0x01, 0xd9, 0x22, 0x6c, 0x45, 0x38, 0x60, 0x47, 0x29, 0x02, + 0x10, 0x02, 0xfe, 0x2b, 0x23, 0x6a, 0x42, 0x38, 0x61, 0x47, 0x28, 0x02, + 0x44, 0x88, 0xdf, 0x9e, 0x56, 0x44, 0x8f, 0xdf, 0x9c, 0x88, 0xde, 0x9e, + 0x56, 0x43, 0x8f, 0xdf, 0x9c, 0x16, 0x2a, 0x12, 0x01, 0x54, 0x44, 0x41, + 0x30, 0x61, 0x93, 0x70, 0x11, 0x21, 0x10, 0xfe, 0xae, 0x3c, 0x3b, 0x30, + 0x61, 0x93, 0x00, 0x03, 0x00, 0x35, 0xff, 0xe9, 0x04, 0x31, 0x04, 0x91, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x3b, 0x00, 0x52, 0xb5, 0x0f, 0x05, 0x0f, + 0x05, 0x32, 0x14, 0xbb, 0x01, 0xeb, 0x00, 0x28, 0x00, 0x32, 0x01, 0xeb, + 0xb2, 0x1e, 0x3c, 0x00, 0xb8, 0x01, 0x45, 0x40, 0x20, 0xdf, 0x0a, 0xef, + 0x0a, 0xff, 0x0a, 0x03, 0x0f, 0x0a, 0x5f, 0x0a, 0x6f, 0x0a, 0x03, 0x1f, + 0x0a, 0x2f, 0x0a, 0x7f, 0x0a, 0x03, 0x0a, 0x0a, 0x19, 0x2d, 0xee, 0x23, + 0x67, 0x37, 0xee, 0x19, 0x65, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x5d, 0x71, 0x72, 0xed, 0x01, 0x10, 0xd6, 0xfd, 0xd4, 0xed, 0x12, + 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x05, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x02, 0x33, 0x1f, 0x38, 0x2a, 0x19, + 0x19, 0x2a, 0x38, 0x1f, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, 0x37, 0x02, + 0x1e, 0x4c, 0x8a, 0xc1, 0x75, 0x6c, 0xb6, 0x84, 0x4a, 0x4c, 0x8b, 0xc1, + 0x75, 0x6c, 0xb6, 0x83, 0x4a, 0xff, 0x00, 0x22, 0x42, 0x5e, 0x3c, 0x38, + 0x5d, 0x44, 0x25, 0x22, 0x42, 0x5e, 0x3c, 0x38, 0x5e, 0x43, 0x25, 0x02, + 0xe1, 0x19, 0x2a, 0x39, 0x1f, 0x20, 0x38, 0x2a, 0x18, 0x18, 0x2a, 0x38, + 0x20, 0x1f, 0x39, 0x2a, 0x19, 0x9d, 0x88, 0xdf, 0x9e, 0x56, 0x44, 0x8f, + 0xdf, 0x9c, 0x88, 0xde, 0x9e, 0x56, 0x43, 0x8f, 0xdf, 0xa9, 0x68, 0x96, + 0x62, 0x2e, 0x2e, 0x5f, 0x91, 0x63, 0x68, 0x96, 0x63, 0x2e, 0x2e, 0x60, + 0x91, 0x00, 0x00, 0x02, 0x00, 0x35, 0xff, 0xe9, 0x04, 0x31, 0x04, 0x91, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x24, 0xbc, 0x00, 0x00, 0x01, 0xeb, 0x00, + 0x14, 0x00, 0x1e, 0x01, 0xeb, 0x40, 0x0a, 0x0a, 0x28, 0x19, 0xee, 0x0f, + 0x67, 0x23, 0xee, 0x05, 0x65, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x10, + 0xd6, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x04, 0x31, 0x4c, 0x8a, 0xc1, 0x75, 0x6c, 0xb6, 0x84, 0x4a, + 0x4c, 0x8b, 0xc1, 0x75, 0x6c, 0xb6, 0x83, 0x4a, 0xff, 0x00, 0x22, 0x42, + 0x5e, 0x3c, 0x38, 0x5d, 0x44, 0x25, 0x22, 0x42, 0x5e, 0x3c, 0x38, 0x5e, + 0x43, 0x25, 0x02, 0x44, 0x88, 0xdf, 0x9e, 0x56, 0x44, 0x8f, 0xdf, 0x9c, + 0x88, 0xde, 0x9e, 0x56, 0x43, 0x8f, 0xdf, 0xa9, 0x68, 0x96, 0x62, 0x2e, + 0x2e, 0x5f, 0x91, 0x63, 0x68, 0x96, 0x63, 0x2e, 0x2e, 0x60, 0x91, 0x00, + 0x00, 0x01, 0x00, 0x7b, 0x00, 0x00, 0x04, 0x06, 0x04, 0x83, 0x00, 0x0a, + 0x00, 0x39, 0xb1, 0x09, 0x07, 0xb8, 0x01, 0xe7, 0x40, 0x13, 0x02, 0x05, + 0x01, 0x06, 0x02, 0x02, 0x0b, 0x0c, 0x05, 0xe9, 0x03, 0x07, 0x04, 0x04, + 0x00, 0x07, 0x66, 0x08, 0x02, 0xb8, 0x01, 0x2b, 0xb1, 0x00, 0x64, 0x00, + 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0x33, 0xdd, 0xc6, 0x10, 0xfd, 0xc6, 0x31, 0x30, 0x33, + 0x35, 0x21, 0x11, 0x05, 0x27, 0x25, 0x33, 0x11, 0x21, 0x15, 0xa0, 0x01, + 0x50, 0xfe, 0xdb, 0x50, 0x01, 0xa0, 0xcc, 0x01, 0x1f, 0xd9, 0x02, 0xaa, + 0xa0, 0xc5, 0xdb, 0xfc, 0x56, 0xd9, 0x00, 0x01, 0x00, 0x81, 0x00, 0x00, + 0x03, 0xf8, 0x04, 0x91, 0x00, 0x1f, 0x00, 0x3d, 0xb9, 0x00, 0x07, 0x01, + 0xef, 0xb6, 0x18, 0x10, 0x18, 0x10, 0x18, 0x1e, 0x1d, 0xb8, 0x02, 0x46, + 0xb3, 0x00, 0x20, 0x01, 0x1d, 0xb8, 0x01, 0x2c, 0xb7, 0x1a, 0x03, 0x07, + 0x03, 0x13, 0x1f, 0x64, 0x0c, 0xb8, 0x01, 0x2b, 0xb1, 0x13, 0x67, 0x00, + 0x3f, 0xed, 0x3f, 0x12, 0x17, 0x39, 0xed, 0x32, 0x01, 0x10, 0xd6, 0xed, + 0xcd, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x31, 0x30, 0x33, 0x35, 0x25, + 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x0f, 0x02, 0x21, 0x15, + 0x81, 0x01, 0x33, 0x47, 0x60, 0x3a, 0x19, 0x16, 0x2d, 0x45, 0x2e, 0x4c, + 0x74, 0x36, 0x7f, 0x51, 0xc7, 0x75, 0x5e, 0x9b, 0x6f, 0x3e, 0x91, 0x96, + 0x7f, 0x1e, 0x02, 0x06, 0xb4, 0xf6, 0x38, 0x5c, 0x53, 0x51, 0x2c, 0x22, + 0x3e, 0x2f, 0x1b, 0x36, 0x30, 0x9a, 0x50, 0x55, 0x2f, 0x5b, 0x87, 0x57, + 0x77, 0xea, 0x70, 0x5e, 0x19, 0xe1, 0x00, 0x01, 0x00, 0x8c, 0xff, 0x1d, + 0x03, 0xfc, 0x04, 0x91, 0x00, 0x38, 0x00, 0x56, 0xb9, 0x00, 0x20, 0x01, + 0xe9, 0x40, 0x0a, 0x2f, 0x26, 0x19, 0x2f, 0x2f, 0x19, 0x26, 0x03, 0x08, + 0x00, 0xb8, 0x01, 0xec, 0x40, 0x1f, 0x13, 0x08, 0x39, 0x27, 0xef, 0x26, + 0x23, 0xee, 0x2a, 0x34, 0x1a, 0xe5, 0x13, 0x00, 0x19, 0x01, 0x60, 0x19, + 0x01, 0x19, 0x19, 0x05, 0x2a, 0x67, 0x08, 0xf1, 0x09, 0x0e, 0xee, 0x05, + 0x69, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x5d, 0x71, + 0x39, 0xed, 0x39, 0x10, 0xfd, 0xd6, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0xed, + 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xed, 0x31, 0x30, 0x25, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x03, 0xfc, 0x48, + 0x9b, 0xf7, 0xac, 0x39, 0x7e, 0x33, 0x1c, 0x44, 0x46, 0x44, 0x1d, 0x5e, + 0x8a, 0x56, 0x29, 0x24, 0x4d, 0x7a, 0x55, 0xb0, 0xa4, 0x4e, 0x67, 0x3d, + 0x1a, 0x68, 0x6d, 0x4e, 0x93, 0x41, 0x4a, 0x99, 0x60, 0x69, 0xa2, 0x6d, + 0x38, 0x1d, 0x36, 0x4f, 0x33, 0x40, 0x69, 0x4a, 0x28, 0xd5, 0x60, 0xa3, + 0x74, 0x41, 0x07, 0x05, 0xcf, 0x03, 0x05, 0x05, 0x02, 0x22, 0x3d, 0x54, + 0x31, 0x2d, 0x4c, 0x38, 0x20, 0xba, 0x20, 0x37, 0x49, 0x29, 0x4d, 0x57, + 0x1f, 0x17, 0xcd, 0x1c, 0x19, 0x2f, 0x56, 0x78, 0x4a, 0x3d, 0x60, 0x4b, + 0x3a, 0x16, 0x11, 0x35, 0x4d, 0x67, 0x00, 0x02, 0x00, 0x27, 0xff, 0x29, + 0x04, 0x3b, 0x04, 0x7b, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x3f, 0xb1, 0x00, + 0x07, 0xb8, 0x01, 0xb3, 0x40, 0x0d, 0x0c, 0x05, 0x06, 0x02, 0x0b, 0x0b, + 0x09, 0x05, 0x04, 0x0e, 0x08, 0x05, 0x0c, 0xb8, 0x01, 0x2a, 0x40, 0x0a, + 0x00, 0x0b, 0x06, 0x03, 0x03, 0x01, 0x06, 0x66, 0x01, 0x68, 0x00, 0x3f, + 0x3f, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x33, 0xed, 0x32, 0x32, 0x01, 0x10, + 0xd6, 0x32, 0xcd, 0x39, 0x2f, 0x33, 0x33, 0x11, 0x33, 0xed, 0x32, 0x31, + 0x30, 0x25, 0x11, 0x23, 0x11, 0x21, 0x35, 0x01, 0x21, 0x11, 0x33, 0x15, + 0x01, 0x01, 0x21, 0x03, 0x75, 0xee, 0xfd, 0xa0, 0x01, 0xfe, 0x01, 0x50, + 0xc6, 0xfe, 0x4e, 0xfe, 0x8c, 0x01, 0x74, 0x6a, 0xfe, 0xbf, 0x01, 0x41, + 0xd1, 0x03, 0x40, 0xfc, 0xc7, 0xd8, 0x03, 0x25, 0xfd, 0xb3, 0x00, 0x01, + 0x00, 0xac, 0xff, 0x19, 0x03, 0xe5, 0x04, 0x7b, 0x00, 0x21, 0x00, 0x44, + 0xb9, 0x00, 0x1b, 0x01, 0xb0, 0xb6, 0x17, 0x19, 0x17, 0x19, 0x17, 0x0a, + 0x13, 0xb8, 0x01, 0xed, 0x40, 0x09, 0x00, 0x0a, 0x22, 0x17, 0xeb, 0x1c, + 0x1c, 0x05, 0x1b, 0xb8, 0x01, 0x2d, 0xb2, 0x18, 0x66, 0x0a, 0xb8, 0x01, + 0x25, 0xb4, 0x0b, 0x10, 0xf0, 0x05, 0x69, 0x00, 0x3f, 0xfd, 0xd6, 0xed, + 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x12, + 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x31, 0x30, 0x25, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, + 0x34, 0x26, 0x23, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x32, 0x1e, + 0x02, 0x03, 0xe5, 0x58, 0xa1, 0xe3, 0x8c, 0x15, 0x36, 0x38, 0x37, 0x17, + 0x19, 0x3d, 0x3d, 0x39, 0x15, 0xa9, 0xab, 0x90, 0x9d, 0xf1, 0x02, 0xdb, + 0xfe, 0x08, 0x50, 0x6a, 0xb6, 0x84, 0x4b, 0xf0, 0x67, 0xad, 0x7d, 0x46, + 0x02, 0x04, 0x06, 0x04, 0xd1, 0x04, 0x07, 0x05, 0x03, 0x87, 0x73, 0x6f, + 0x64, 0x02, 0xc7, 0xe5, 0xfe, 0xe5, 0x2a, 0x5f, 0x96, 0x00, 0x00, 0x02, + 0x00, 0x62, 0xff, 0xe9, 0x04, 0x08, 0x05, 0x6a, 0x00, 0x21, 0x00, 0x33, + 0x00, 0x41, 0xb1, 0x1a, 0x2b, 0xb8, 0x01, 0xed, 0xb4, 0x0a, 0x12, 0x12, + 0x0a, 0x22, 0xb8, 0x01, 0xe4, 0x40, 0x16, 0x00, 0x0a, 0x34, 0x2a, 0xe8, + 0x1a, 0x8f, 0x27, 0xed, 0x18, 0x11, 0x1d, 0x1d, 0x05, 0x14, 0xf0, 0x11, + 0x63, 0x2f, 0xef, 0x05, 0x65, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x12, 0x39, 0xed, 0xfd, 0xed, 0x01, 0x10, 0xd6, 0xd4, 0xed, 0x12, + 0x39, 0x2f, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x04, 0x33, 0x33, 0x15, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, + 0x02, 0x04, 0x08, 0x44, 0x7b, 0xaa, 0x66, 0x6c, 0xae, 0x7b, 0x42, 0x23, + 0x4b, 0x76, 0xa7, 0xdb, 0x8a, 0x89, 0x93, 0x7a, 0xac, 0x71, 0x39, 0x07, + 0x02, 0x33, 0x84, 0x49, 0x64, 0x98, 0x68, 0x35, 0xf1, 0x1d, 0x38, 0x52, + 0x35, 0x38, 0x73, 0x2a, 0x1b, 0x38, 0x55, 0x3a, 0x2f, 0x4c, 0x36, 0x1e, + 0x01, 0x9e, 0x61, 0xa1, 0x73, 0x40, 0x4c, 0x94, 0xda, 0x8e, 0x69, 0xcc, + 0xb7, 0x9c, 0x71, 0x40, 0xce, 0x4a, 0x73, 0x8e, 0x45, 0x12, 0x1f, 0x29, + 0x42, 0x72, 0x99, 0x62, 0x2f, 0x53, 0x3e, 0x24, 0x26, 0x1a, 0x6e, 0x94, + 0x59, 0x26, 0x21, 0x3b, 0x51, 0x00, 0x00, 0x01, 0x00, 0x6a, 0xff, 0x29, + 0x03, 0xf6, 0x04, 0x7b, 0x00, 0x06, 0x00, 0x24, 0x40, 0x0a, 0x02, 0x06, + 0x01, 0x00, 0x06, 0x05, 0x03, 0x00, 0x06, 0x02, 0xb8, 0x01, 0x2f, 0xb3, + 0x04, 0x66, 0x00, 0x68, 0x00, 0x3f, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x2f, + 0xcd, 0x32, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x05, 0x21, 0x01, 0x21, + 0x35, 0x21, 0x15, 0x01, 0xe3, 0xfe, 0xf2, 0x02, 0x08, 0xfd, 0x8d, 0x03, + 0x8c, 0xd7, 0x04, 0x66, 0xec, 0xcf, 0x00, 0x03, 0x00, 0x66, 0xff, 0xe9, + 0x04, 0x00, 0x05, 0x85, 0x00, 0x27, 0x00, 0x3b, 0x00, 0x4f, 0x00, 0x6a, + 0xbc, 0x00, 0x37, 0x01, 0xb5, 0x00, 0x19, 0x00, 0x2d, 0x01, 0xb4, 0x40, + 0x0a, 0x23, 0x14, 0x00, 0x23, 0x19, 0x23, 0x19, 0x23, 0x0f, 0x4c, 0xbb, + 0x01, 0xe6, 0x00, 0x05, 0x00, 0x40, 0x01, 0xe6, 0x40, 0x1d, 0x0f, 0x50, + 0x4c, 0x40, 0x38, 0x2c, 0x04, 0x1e, 0x0a, 0x00, 0x00, 0x28, 0x1f, 0x3c, + 0x0b, 0x14, 0x14, 0x1f, 0x0b, 0x1f, 0x32, 0xe6, 0x1e, 0x6b, 0x0b, 0x46, + 0xe7, 0x0a, 0x65, 0x00, 0x3f, 0xed, 0x33, 0x3f, 0xed, 0x33, 0x11, 0x12, + 0x39, 0x19, 0x2f, 0x12, 0x39, 0x12, 0x39, 0x33, 0x2f, 0x11, 0x12, 0x17, + 0x39, 0x01, 0x18, 0x10, 0xd6, 0xed, 0xd4, 0xed, 0x12, 0x39, 0x39, 0x2f, + 0x2f, 0x12, 0x39, 0x39, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x01, 0x1e, + 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x27, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x0e, 0x03, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x02, 0xf8, + 0x34, 0x60, 0x49, 0x2b, 0x4a, 0x80, 0xac, 0x61, 0x6b, 0xa8, 0x73, 0x3d, + 0x28, 0x44, 0x5a, 0x32, 0x2d, 0x51, 0x3c, 0x23, 0x40, 0x74, 0xa1, 0x61, + 0x63, 0x9f, 0x70, 0x3c, 0x21, 0x3e, 0x58, 0xf5, 0x2d, 0x47, 0x31, 0x1a, + 0x1a, 0x33, 0x4b, 0x31, 0x2d, 0x48, 0x31, 0x1a, 0x20, 0x36, 0x4a, 0x0c, + 0x28, 0x46, 0x33, 0x1e, 0x1f, 0x38, 0x50, 0x30, 0x2c, 0x4e, 0x3b, 0x22, + 0x26, 0x41, 0x57, 0x02, 0xdf, 0x1b, 0x44, 0x59, 0x70, 0x48, 0x5c, 0x91, + 0x64, 0x35, 0x37, 0x60, 0x83, 0x4b, 0x3e, 0x6a, 0x5a, 0x4a, 0x1e, 0x1a, + 0x43, 0x54, 0x68, 0x41, 0x4f, 0x88, 0x63, 0x39, 0x33, 0x59, 0x77, 0x45, + 0x3c, 0x64, 0x55, 0x49, 0x40, 0x1c, 0x35, 0x38, 0x3d, 0x24, 0x20, 0x3a, + 0x2c, 0x1a, 0x1a, 0x2d, 0x3d, 0x22, 0x27, 0x41, 0x37, 0x2f, 0xff, 0x19, + 0x34, 0x3a, 0x41, 0x26, 0x29, 0x45, 0x33, 0x1d, 0x1a, 0x2f, 0x41, 0x26, + 0x2d, 0x47, 0x3c, 0x33, 0x00, 0x02, 0x00, 0x56, 0xff, 0x29, 0x03, 0xfc, + 0x04, 0x91, 0x00, 0x20, 0x00, 0x30, 0x00, 0x42, 0xb1, 0x0f, 0x2d, 0xb8, + 0x01, 0xed, 0xb4, 0x00, 0x07, 0x07, 0x00, 0x24, 0xb8, 0x01, 0xe5, 0xb2, + 0x17, 0x31, 0x2c, 0xb8, 0x01, 0x25, 0x40, 0x0c, 0x0f, 0x27, 0xf1, 0x0d, + 0x12, 0x12, 0x06, 0x21, 0xee, 0x1c, 0x67, 0x09, 0xb8, 0x01, 0x26, 0xb1, + 0x06, 0x68, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x39, 0xed, + 0xdd, 0xed, 0x01, 0x10, 0xd6, 0xed, 0xc4, 0x39, 0x2f, 0x10, 0xed, 0x32, + 0x31, 0x30, 0x01, 0x14, 0x02, 0x07, 0x06, 0x06, 0x23, 0x23, 0x35, 0x33, + 0x32, 0x3e, 0x02, 0x37, 0x37, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x25, 0x22, 0x06, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x34, 0x2e, 0x02, 0x03, 0xfc, 0x72, + 0x67, 0x5b, 0xfb, 0xae, 0xa0, 0xb0, 0x6a, 0x99, 0x68, 0x3c, 0x0d, 0x06, + 0x3a, 0x78, 0x3b, 0x63, 0x9d, 0x6c, 0x3a, 0x47, 0x7d, 0xa8, 0x61, 0x61, + 0xad, 0x80, 0x4b, 0xfe, 0x21, 0x66, 0x6d, 0x6c, 0x61, 0x1b, 0x3d, 0x3d, + 0x37, 0x15, 0x15, 0x33, 0x54, 0x02, 0x3b, 0xc4, 0xfe, 0xc9, 0x67, 0x5b, + 0x55, 0xd3, 0x30, 0x55, 0x75, 0x45, 0x21, 0x1f, 0x1e, 0x39, 0x6a, 0x99, + 0x5f, 0x6f, 0xaf, 0x79, 0x40, 0x3f, 0x8e, 0xe4, 0xe5, 0x81, 0x6f, 0x6d, + 0x7a, 0x09, 0x11, 0x17, 0x0e, 0x6a, 0x9a, 0x64, 0x30, 0x00, 0xff, 0xff, + 0x00, 0xb8, 0x02, 0x67, 0x03, 0xae, 0x05, 0x98, 0x02, 0x07, 0x02, 0x8c, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x00, 0xe7, 0x02, 0x77, 0x03, 0x77, + 0x05, 0x8e, 0x02, 0x07, 0x02, 0x8d, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xe5, 0x02, 0x77, 0x03, 0x77, 0x05, 0x98, 0x02, 0x07, 0x02, 0x8e, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x00, 0xec, 0x02, 0x67, 0x03, 0x73, + 0x05, 0x9a, 0x02, 0x07, 0x02, 0x8f, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xc7, 0x02, 0x77, 0x03, 0xa0, 0x05, 0x87, 0x02, 0x07, 0x02, 0x90, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x01, 0x17, 0x02, 0x69, 0x03, 0x75, + 0x05, 0x87, 0x02, 0x07, 0x02, 0x91, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xe1, 0x02, 0x67, 0x03, 0x85, 0x05, 0x87, 0x02, 0x07, 0x02, 0x92, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x00, 0xf8, 0x02, 0x77, 0x03, 0x68, + 0x05, 0x87, 0x02, 0x07, 0x02, 0x93, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xe7, 0x02, 0x67, 0x03, 0x7f, 0x05, 0x98, 0x02, 0x07, 0x02, 0x94, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x00, 0xe1, 0x02, 0x77, 0x03, 0x85, + 0x05, 0x98, 0x02, 0x07, 0x02, 0x95, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xa6, 0x02, 0x92, 0x03, 0xc1, 0x05, 0x6d, 0x02, 0x07, 0x02, 0x96, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x00, 0xa6, 0x03, 0xa2, 0x03, 0xc1, + 0x04, 0x5e, 0x02, 0x07, 0x02, 0x97, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xa6, 0x02, 0xf0, 0x03, 0xc1, 0x05, 0x11, 0x02, 0x07, 0x02, 0x98, + 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, 0x01, 0x2f, 0x01, 0x63, 0x03, 0x79, + 0x06, 0x9a, 0x02, 0x07, 0x02, 0x99, 0x00, 0x00, 0x03, 0x4e, 0xff, 0xff, + 0x00, 0xee, 0x01, 0x63, 0x03, 0x37, 0x06, 0x9a, 0x02, 0x07, 0x02, 0x9a, + 0x00, 0x00, 0x03, 0x4e, 0x00, 0x02, 0x00, 0xb8, 0xff, 0x19, 0x03, 0xae, + 0x02, 0x4a, 0x00, 0x13, 0x00, 0x27, 0x00, 0x22, 0xbc, 0x00, 0x00, 0x01, + 0xbc, 0x00, 0x14, 0x00, 0x1e, 0x01, 0xbc, 0x40, 0x09, 0x0a, 0x19, 0xb6, + 0x0f, 0x61, 0x23, 0xb6, 0x05, 0x5f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, + 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x03, 0xae, 0x3a, 0x67, 0x90, 0x56, 0x4b, 0x86, 0x64, 0x3a, + 0x3a, 0x67, 0x8f, 0x55, 0x4c, 0x86, 0x65, 0x3a, 0xe7, 0x16, 0x27, 0x36, + 0x21, 0x1e, 0x36, 0x29, 0x17, 0x15, 0x27, 0x37, 0x21, 0x1d, 0x36, 0x29, + 0x18, 0xb8, 0x68, 0x9b, 0x68, 0x34, 0x2c, 0x60, 0x99, 0x6c, 0x68, 0x9c, + 0x68, 0x34, 0x2c, 0x61, 0x99, 0x72, 0x4b, 0x5c, 0x33, 0x12, 0x16, 0x36, + 0x5c, 0x46, 0x4a, 0x5b, 0x34, 0x12, 0x16, 0x37, 0x5b, 0x00, 0x00, 0x01, + 0x00, 0xe7, 0xff, 0x29, 0x03, 0x77, 0x02, 0x40, 0x00, 0x0a, 0x00, 0x30, + 0xb1, 0x0a, 0x09, 0xb8, 0x01, 0xbe, 0x40, 0x13, 0x03, 0x06, 0x01, 0x07, + 0x03, 0x06, 0xa3, 0x04, 0x08, 0x05, 0x05, 0x01, 0x08, 0x60, 0x09, 0x03, + 0xb9, 0x01, 0x5e, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x2f, 0x12, + 0x39, 0xed, 0x01, 0x2f, 0x33, 0xdd, 0xc6, 0x10, 0xfd, 0xcd, 0x31, 0x30, + 0x05, 0x21, 0x35, 0x33, 0x11, 0x07, 0x27, 0x25, 0x33, 0x11, 0x33, 0x03, + 0x77, 0xfd, 0x89, 0xd7, 0xac, 0x44, 0x01, 0x1b, 0xc1, 0xb4, 0xd7, 0xb6, + 0x01, 0x8c, 0x52, 0xa3, 0x84, 0xfd, 0x9f, 0x00, 0x00, 0x01, 0x00, 0xe5, + 0xff, 0x29, 0x03, 0x77, 0x02, 0x4a, 0x00, 0x1e, 0x00, 0x33, 0xb9, 0x00, + 0x07, 0x01, 0xf2, 0xb3, 0x17, 0x17, 0x1e, 0x1d, 0xb8, 0x02, 0x30, 0x40, + 0x10, 0x0f, 0x01, 0x0f, 0x9d, 0x0e, 0x0b, 0xbe, 0x07, 0x00, 0x12, 0x61, + 0x02, 0x1d, 0xbf, 0x00, 0x5e, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, + 0xfd, 0xd6, 0xed, 0x01, 0x2f, 0xc6, 0xed, 0xcd, 0x39, 0x2f, 0xed, 0x31, + 0x30, 0x05, 0x21, 0x35, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x07, 0x21, 0x03, 0x77, 0xfd, 0x79, 0xbe, 0x37, 0x45, 0x27, + 0x0d, 0x31, 0x31, 0x2b, 0x5e, 0x2b, 0x63, 0x3f, 0xa0, 0x5d, 0x45, 0x74, + 0x55, 0x2f, 0x1f, 0x39, 0x53, 0x34, 0x52, 0x01, 0x4a, 0xd7, 0xa0, 0xaa, + 0x31, 0x41, 0x30, 0x26, 0x15, 0x1c, 0x21, 0x20, 0x1f, 0x91, 0x30, 0x3b, + 0x1c, 0x39, 0x57, 0x3c, 0x31, 0x52, 0x4a, 0x47, 0x27, 0x3d, 0x00, 0x01, + 0x00, 0xec, 0xff, 0x19, 0x03, 0x73, 0x02, 0x4c, 0x00, 0x33, 0x00, 0x5c, + 0xb9, 0x00, 0x1d, 0x01, 0xf0, 0x40, 0x0d, 0x2e, 0x31, 0x16, 0x2e, 0x24, + 0x16, 0x2e, 0x2e, 0x16, 0x24, 0x03, 0x09, 0x00, 0xb8, 0x01, 0xf1, 0x40, + 0x21, 0x10, 0x09, 0x24, 0xb4, 0x4f, 0x23, 0x5f, 0x23, 0x02, 0x23, 0x20, + 0xb4, 0x29, 0x31, 0x17, 0xa0, 0xbf, 0x16, 0xcf, 0x16, 0x02, 0x16, 0x16, + 0x03, 0x29, 0x61, 0x08, 0xb7, 0x09, 0x0b, 0xb4, 0x03, 0x5f, 0x00, 0x3f, + 0xfd, 0xd6, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x39, 0x10, 0xfd, + 0xd6, 0x71, 0xed, 0x01, 0x2f, 0xd6, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, + 0x2f, 0x11, 0x12, 0x39, 0x10, 0xed, 0x31, 0x30, 0x25, 0x14, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x06, 0x07, 0x16, 0x16, 0x03, 0x73, 0xde, 0xdd, 0x16, 0x36, 0x37, + 0x34, 0x15, 0x55, 0x86, 0x33, 0x44, 0x27, 0x10, 0x10, 0x2c, 0x4f, 0x3e, + 0x58, 0x44, 0x37, 0x46, 0x27, 0x0e, 0x2f, 0x3e, 0x3e, 0x65, 0x38, 0x25, + 0x3c, 0x3b, 0x3e, 0x26, 0x4a, 0x75, 0x51, 0x2b, 0x43, 0x42, 0x65, 0x56, + 0x1a, 0x7d, 0x84, 0x02, 0x04, 0x05, 0x03, 0xad, 0x12, 0x0c, 0x15, 0x1f, + 0x14, 0x12, 0x20, 0x17, 0x0d, 0x97, 0x0e, 0x19, 0x22, 0x13, 0x22, 0x22, + 0x15, 0x0e, 0xa9, 0x0a, 0x0e, 0x08, 0x03, 0x1d, 0x36, 0x4a, 0x2d, 0x4d, + 0x57, 0x14, 0x0e, 0x5c, 0x00, 0x02, 0x00, 0xc7, 0xff, 0x29, 0x03, 0xa0, + 0x02, 0x39, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x3c, 0x40, 0x0a, 0x0c, 0x07, + 0x0b, 0x06, 0x05, 0x0b, 0x04, 0x09, 0x00, 0x01, 0xb8, 0x01, 0xb7, 0x40, + 0x10, 0x04, 0x05, 0x09, 0x06, 0x0c, 0xb3, 0x01, 0x0b, 0x07, 0x04, 0x04, + 0x02, 0x07, 0x60, 0x02, 0x5e, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x12, + 0x39, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xdd, 0xfd, 0xcd, 0xc4, 0x10, + 0xc4, 0x10, 0xc4, 0x11, 0x33, 0x32, 0x31, 0x30, 0x05, 0x23, 0x15, 0x23, + 0x35, 0x21, 0x35, 0x01, 0x21, 0x11, 0x33, 0x01, 0x03, 0x33, 0x03, 0xa0, + 0x75, 0xd9, 0xfe, 0x75, 0x01, 0x39, 0x01, 0x2b, 0x75, 0xfe, 0xb8, 0xc2, + 0xc2, 0x46, 0x91, 0x91, 0xa0, 0x01, 0xdf, 0xfe, 0x29, 0x01, 0x21, 0xfe, + 0xdf, 0x00, 0x00, 0x01, 0x01, 0x17, 0xff, 0x1b, 0x03, 0x75, 0x02, 0x39, + 0x00, 0x21, 0x00, 0x38, 0xb3, 0x1a, 0x1a, 0x17, 0x00, 0xbb, 0x01, 0xb9, + 0x00, 0x11, 0x00, 0x1c, 0x01, 0x9a, 0x40, 0x12, 0x17, 0x0b, 0x16, 0xa2, + 0x1c, 0x1c, 0x05, 0x1b, 0xba, 0x18, 0x60, 0x0a, 0xb5, 0x0b, 0x0e, 0xb2, + 0x05, 0x5f, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0xd6, 0xed, 0xd6, 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, + 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, + 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x21, 0x15, + 0x21, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x75, 0x3d, 0x6e, 0x97, 0x5a, + 0x15, 0x31, 0x34, 0x33, 0x15, 0x28, 0x69, 0x39, 0x5e, 0x57, 0x12, 0x2c, + 0x49, 0x36, 0xb2, 0x02, 0x1f, 0xfe, 0xb4, 0x23, 0x47, 0x7e, 0x5d, 0x36, + 0x25, 0x44, 0x64, 0x42, 0x20, 0x03, 0x05, 0x06, 0x04, 0xaa, 0x09, 0x0d, + 0x2b, 0x2f, 0x1b, 0x21, 0x12, 0x06, 0x01, 0xca, 0xb8, 0x77, 0x10, 0x31, + 0x5a, 0x00, 0x00, 0x02, 0x00, 0xe1, 0xff, 0x19, 0x03, 0x85, 0x02, 0x39, + 0x00, 0x1b, 0x00, 0x29, 0x00, 0x3f, 0xb1, 0x16, 0x25, 0xb8, 0x01, 0xbd, + 0xb4, 0x08, 0x0f, 0x0f, 0x08, 0x00, 0xb8, 0x01, 0xb8, 0x40, 0x14, 0x1c, + 0x08, 0x24, 0x27, 0x16, 0x1f, 0xa4, 0x14, 0x0e, 0x19, 0x19, 0x05, 0x0f, + 0xb3, 0x0e, 0x60, 0x27, 0xb2, 0x05, 0x5f, 0x00, 0x3f, 0xed, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0x12, 0x39, 0xed, 0xcd, 0x11, 0x39, 0x01, 0x2f, 0xd4, + 0xed, 0x11, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x31, 0x30, 0x25, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, 0x15, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x15, 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x34, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x14, 0x16, 0x33, 0x32, 0x36, 0x03, + 0x85, 0x34, 0x5c, 0x7b, 0x47, 0xa3, 0xaf, 0x29, 0x6c, 0xbc, 0x93, 0x72, + 0x95, 0x3c, 0x4e, 0x2e, 0x15, 0x04, 0x1c, 0x43, 0x20, 0x9e, 0x97, 0xdb, + 0x35, 0x3c, 0x10, 0x21, 0x1e, 0x19, 0x08, 0x38, 0x3c, 0x36, 0x37, 0x21, + 0x41, 0x62, 0x43, 0x22, 0xaf, 0xb3, 0x68, 0xa6, 0x73, 0x3d, 0xa8, 0x12, + 0x23, 0x32, 0x20, 0x06, 0x08, 0x0d, 0x7c, 0x82, 0x28, 0x32, 0x06, 0x07, + 0x09, 0x03, 0x51, 0x4c, 0x35, 0x00, 0x00, 0x01, 0x00, 0xf8, 0xff, 0x29, + 0x03, 0x68, 0x02, 0x39, 0x00, 0x06, 0x00, 0x1f, 0x40, 0x0e, 0x03, 0x02, + 0x01, 0x01, 0x00, 0x05, 0x00, 0x03, 0xc0, 0x05, 0x60, 0x02, 0x01, 0x5e, + 0x00, 0x3f, 0x33, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x39, 0x2f, 0x33, + 0x32, 0x31, 0x30, 0x01, 0x01, 0x21, 0x01, 0x21, 0x35, 0x21, 0x03, 0x68, + 0xfe, 0xc1, 0xfe, 0xf6, 0x01, 0x39, 0xfe, 0xa0, 0x02, 0x70, 0x01, 0x91, + 0xfd, 0x98, 0x02, 0x4e, 0xc2, 0x00, 0x00, 0x03, 0x00, 0xe7, 0xff, 0x19, + 0x03, 0x7f, 0x02, 0x4a, 0x00, 0x25, 0x00, 0x34, 0x00, 0x46, 0x00, 0x4c, + 0xbc, 0x00, 0x2b, 0x01, 0x99, 0x00, 0x12, 0x00, 0x26, 0x01, 0x99, 0x40, + 0x0a, 0x1c, 0x0d, 0x21, 0x1c, 0x12, 0x1c, 0x12, 0x1c, 0x08, 0x00, 0xbb, + 0x01, 0xb6, 0x00, 0x35, 0x00, 0x3f, 0x01, 0xb6, 0x40, 0x0f, 0x08, 0x3f, + 0x3a, 0x30, 0x26, 0x04, 0x05, 0x29, 0x9e, 0x17, 0x61, 0x42, 0x9f, 0x05, + 0x5f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x17, 0x39, 0x01, 0x2f, 0xed, + 0xd4, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x10, 0xed, + 0x10, 0xed, 0x31, 0x30, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x03, 0x34, 0x26, + 0x23, 0x22, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x13, 0x34, 0x2e, + 0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x03, + 0x7f, 0x35, 0x5b, 0x7a, 0x46, 0xa1, 0xa7, 0x20, 0x2e, 0x34, 0x14, 0x12, + 0x2d, 0x28, 0x1c, 0x27, 0x4f, 0x77, 0x50, 0x48, 0x74, 0x51, 0x2b, 0x18, + 0x27, 0x30, 0x17, 0x1c, 0x36, 0x2a, 0x1a, 0xe2, 0x34, 0x33, 0x6a, 0x1a, + 0x27, 0x2d, 0x13, 0x0a, 0x1b, 0x19, 0x12, 0x0c, 0x24, 0x30, 0x30, 0x0d, + 0x07, 0x1e, 0x1f, 0x17, 0x3e, 0x39, 0x17, 0x2b, 0x20, 0x13, 0x04, 0x39, + 0x55, 0x39, 0x1c, 0x69, 0x61, 0x2c, 0x41, 0x31, 0x23, 0x0e, 0x0c, 0x1f, + 0x2d, 0x3d, 0x2a, 0x30, 0x4f, 0x3a, 0x20, 0x1a, 0x2f, 0x41, 0x26, 0x29, + 0x3f, 0x30, 0x26, 0x0f, 0x0f, 0x24, 0x32, 0x41, 0x01, 0x5e, 0x17, 0x1c, + 0x3d, 0x15, 0x20, 0x19, 0x14, 0x09, 0x09, 0x15, 0x1b, 0x24, 0xfe, 0x8b, + 0x1c, 0x25, 0x19, 0x11, 0x08, 0x06, 0x12, 0x1b, 0x27, 0x1b, 0x23, 0x25, + 0x08, 0x12, 0x1c, 0x00, 0x00, 0x02, 0x00, 0xe1, 0xff, 0x29, 0x03, 0x85, + 0x02, 0x4a, 0x00, 0x21, 0x00, 0x33, 0x00, 0x3d, 0xb3, 0x08, 0x08, 0x18, + 0x00, 0xb8, 0x01, 0xbc, 0xb2, 0x10, 0x30, 0x25, 0xb8, 0x01, 0xb8, 0x40, + 0x13, 0x18, 0x2f, 0x10, 0x22, 0xb2, 0x1d, 0x10, 0x2a, 0xa4, 0x0e, 0x13, + 0x13, 0x07, 0x1d, 0x61, 0x0a, 0xb3, 0x07, 0x5e, 0x00, 0x3f, 0xed, 0x3f, + 0x12, 0x39, 0x2f, 0x39, 0xed, 0xcd, 0x10, 0xed, 0x11, 0x39, 0x01, 0x2f, + 0xed, 0xd4, 0x32, 0xed, 0x11, 0x39, 0x2f, 0x31, 0x30, 0x25, 0x14, 0x0e, + 0x04, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x35, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x25, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x34, 0x2e, 0x02, 0x03, 0x85, 0x28, 0x46, 0x5e, 0x6d, 0x76, 0x3a, 0x85, + 0x9f, 0x46, 0x55, 0x30, 0x14, 0x05, 0x1c, 0x4a, 0x1d, 0x42, 0x71, 0x53, + 0x30, 0x35, 0x5d, 0x7e, 0x48, 0x47, 0x79, 0x59, 0x33, 0xfe, 0xa8, 0x39, + 0x38, 0x15, 0x21, 0x2b, 0x16, 0x0b, 0x1e, 0x1e, 0x1b, 0x09, 0x09, 0x19, + 0x2c, 0xe3, 0x67, 0x91, 0x62, 0x3a, 0x1e, 0x08, 0xa8, 0x12, 0x22, 0x33, + 0x20, 0x06, 0x08, 0x0c, 0x18, 0x3a, 0x60, 0x48, 0x3f, 0x62, 0x42, 0x23, + 0x25, 0x55, 0x89, 0x5d, 0x34, 0x28, 0x1c, 0x23, 0x14, 0x07, 0x04, 0x06, + 0x09, 0x05, 0x1e, 0x39, 0x2c, 0x1b, 0x00, 0x01, 0x00, 0xa6, 0xff, 0x44, + 0x03, 0xc1, 0x02, 0x1f, 0x00, 0x0b, 0x00, 0x23, 0xb2, 0x0b, 0x00, 0x09, + 0xb8, 0x01, 0x9b, 0x40, 0x0a, 0x06, 0x05, 0x03, 0x09, 0x08, 0x06, 0xbd, + 0x01, 0x00, 0x03, 0x00, 0x2f, 0x33, 0xcd, 0xfd, 0xcd, 0x33, 0x01, 0x2f, + 0xcd, 0xc4, 0xfd, 0xc4, 0xcd, 0x31, 0x30, 0x25, 0x11, 0x23, 0x11, 0x21, + 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x15, 0x02, 0x9e, 0xd5, 0xfe, 0xdd, + 0x01, 0x23, 0xd5, 0x01, 0x23, 0x54, 0xfe, 0xf0, 0x01, 0x10, 0xbc, 0x01, + 0x0f, 0xfe, 0xf1, 0xbc, 0x00, 0x01, 0x00, 0xa6, 0x00, 0x54, 0x03, 0xc1, + 0x01, 0x10, 0x00, 0x03, 0x00, 0x0e, 0xb4, 0x02, 0x00, 0x02, 0xbd, 0x00, + 0x00, 0x2f, 0xed, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x37, 0x35, 0x21, 0x15, + 0xa6, 0x03, 0x1b, 0x54, 0xbc, 0xbc, 0x00, 0x02, 0x00, 0xa6, 0xff, 0xa2, + 0x03, 0xc1, 0x01, 0xc3, 0x00, 0x03, 0x00, 0x07, 0x00, 0x18, 0x40, 0x0a, + 0x07, 0x03, 0x01, 0x05, 0x04, 0xbb, 0x06, 0x03, 0xbc, 0x01, 0x00, 0x2f, + 0xed, 0xd6, 0xed, 0x01, 0x2f, 0xc4, 0xd4, 0xc4, 0x31, 0x30, 0x01, 0x21, + 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x03, 0xc1, 0xfc, 0xe5, 0x03, 0x1b, + 0xfc, 0xe5, 0x03, 0x1b, 0x01, 0x08, 0xbb, 0xfd, 0xdf, 0xba, 0x00, 0x01, + 0x01, 0x2f, 0xfe, 0x15, 0x03, 0x79, 0x03, 0x4c, 0x00, 0x13, 0x00, 0x24, + 0xb2, 0x13, 0x0b, 0x10, 0xb8, 0x01, 0xbb, 0x40, 0x09, 0x40, 0x05, 0x0b, + 0x0a, 0x6e, 0x13, 0x20, 0x00, 0x6f, 0x00, 0x3f, 0x1a, 0x19, 0xcd, 0x18, + 0x3f, 0x19, 0xcd, 0x01, 0x18, 0x2f, 0x1a, 0xfd, 0xd6, 0xc6, 0x31, 0x30, + 0x01, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x17, 0x0e, 0x03, 0x15, + 0x14, 0x16, 0x17, 0x03, 0x19, 0x74, 0xb6, 0x7e, 0x42, 0x3a, 0x79, 0xbb, + 0x82, 0x58, 0x5c, 0x86, 0x58, 0x2b, 0xb8, 0xaf, 0xfe, 0x15, 0x2e, 0x8e, + 0xaf, 0xc6, 0x66, 0x5c, 0xbf, 0xb2, 0x9b, 0x38, 0xaa, 0x27, 0x68, 0x7f, + 0x91, 0x4f, 0xad, 0xf7, 0x4d, 0x00, 0x00, 0x01, 0x00, 0xee, 0xfe, 0x15, + 0x03, 0x37, 0x03, 0x4c, 0x00, 0x13, 0x00, 0x24, 0xb2, 0x0b, 0x13, 0x10, + 0xb8, 0x01, 0xbb, 0x40, 0x09, 0x40, 0x05, 0x0b, 0x0a, 0x6f, 0x13, 0x20, + 0x00, 0x6e, 0x00, 0x3f, 0x1a, 0x19, 0xcd, 0x18, 0x3f, 0x19, 0xcd, 0x01, + 0x18, 0x2f, 0x1a, 0xfd, 0xd6, 0xc6, 0x31, 0x30, 0x01, 0x1e, 0x03, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x27, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, 0x01, + 0x4e, 0x73, 0xb6, 0x7e, 0x42, 0x39, 0x79, 0xbb, 0x82, 0x58, 0x5b, 0x86, + 0x58, 0x2b, 0xb8, 0xae, 0x03, 0x4c, 0x2e, 0x8e, 0xaf, 0xc7, 0x66, 0x5c, + 0xbf, 0xb1, 0x9b, 0x38, 0xaa, 0x26, 0x69, 0x7e, 0x91, 0x4f, 0xad, 0xf7, + 0x4e, 0x00, 0xff, 0xff, 0x00, 0xb8, 0xff, 0xf0, 0x03, 0xae, 0x03, 0x21, + 0x02, 0x07, 0x02, 0x8c, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xff, 0x00, 0xe7, + 0x00, 0x00, 0x03, 0x77, 0x03, 0x17, 0x02, 0x07, 0x02, 0x8d, 0x00, 0x00, + 0x00, 0xd7, 0xff, 0xff, 0x00, 0xe5, 0x00, 0x00, 0x03, 0x77, 0x03, 0x21, + 0x02, 0x07, 0x02, 0x8e, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xff, 0x00, 0xec, + 0xff, 0xf0, 0x03, 0x73, 0x03, 0x23, 0x02, 0x07, 0x02, 0x8f, 0x00, 0x00, + 0x00, 0xd7, 0xff, 0xff, 0x00, 0xc7, 0x00, 0x00, 0x03, 0xa0, 0x03, 0x10, + 0x02, 0x07, 0x02, 0x90, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xff, 0x01, 0x17, + 0xff, 0xf2, 0x03, 0x75, 0x03, 0x10, 0x02, 0x07, 0x02, 0x91, 0x00, 0x00, + 0x00, 0xd7, 0xff, 0xff, 0x00, 0xe1, 0xff, 0xf0, 0x03, 0x85, 0x03, 0x10, + 0x02, 0x07, 0x02, 0x92, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xff, 0x00, 0xf8, + 0x00, 0x00, 0x03, 0x68, 0x03, 0x10, 0x02, 0x07, 0x02, 0x93, 0x00, 0x00, + 0x00, 0xd7, 0xff, 0xff, 0x00, 0xe7, 0xff, 0xf0, 0x03, 0x7f, 0x03, 0x21, + 0x02, 0x07, 0x02, 0x94, 0x00, 0x00, 0x00, 0xd7, 0xff, 0xff, 0x00, 0xe1, + 0x00, 0x00, 0x03, 0x85, 0x03, 0x21, 0x02, 0x07, 0x02, 0x95, 0x00, 0x00, + 0x00, 0xd7, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x85, + 0x00, 0x03, 0x00, 0x13, 0xb7, 0x03, 0x00, 0x02, 0x01, 0x02, 0x53, 0x01, + 0x51, 0x00, 0x3f, 0x3f, 0x01, 0x2f, 0xcd, 0x33, 0x32, 0x31, 0x30, 0x33, + 0x23, 0x01, 0x33, 0xc7, 0xc7, 0x03, 0xa0, 0xc6, 0x05, 0x85, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x8b, 0x00, 0x06, 0x00, 0x0a, + 0x00, 0x15, 0x00, 0x18, 0x00, 0x63, 0xb1, 0x14, 0x0c, 0xb8, 0x01, 0x64, + 0x40, 0x11, 0x12, 0x16, 0x17, 0x11, 0x0f, 0x16, 0x16, 0x15, 0x11, 0x0a, + 0x09, 0x07, 0x08, 0x09, 0x08, 0x04, 0x00, 0xb8, 0x01, 0x7a, 0x40, 0x1a, + 0x05, 0x03, 0x14, 0x11, 0x18, 0x94, 0x0c, 0x16, 0x0f, 0x0f, 0x12, 0x0d, + 0x51, 0x09, 0x53, 0x08, 0x51, 0x03, 0x91, 0x01, 0x05, 0x02, 0x02, 0x00, + 0x05, 0x53, 0x00, 0x3f, 0xcd, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x3f, 0x3f, + 0x3f, 0xc4, 0x39, 0x2f, 0x39, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xdd, + 0xed, 0x32, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x2f, 0xcd, 0x39, 0x2f, + 0x33, 0x11, 0x33, 0x11, 0x33, 0xed, 0x32, 0x31, 0x30, 0x13, 0x11, 0x07, + 0x27, 0x37, 0x33, 0x11, 0x03, 0x23, 0x01, 0x33, 0x03, 0x23, 0x15, 0x23, + 0x35, 0x21, 0x35, 0x13, 0x33, 0x11, 0x33, 0x27, 0x07, 0x33, 0xdf, 0x83, + 0x31, 0xcf, 0xa4, 0xd7, 0xc7, 0x03, 0xa0, 0xc6, 0x2d, 0x54, 0xa8, 0xfe, + 0xd3, 0xdc, 0xf9, 0x54, 0xfc, 0x83, 0x83, 0x03, 0x48, 0x01, 0x97, 0x41, + 0x85, 0x68, 0xfd, 0xbd, 0xfc, 0xb8, 0x05, 0x85, 0xfa, 0xe1, 0x66, 0x66, + 0x83, 0x01, 0x54, 0xfe, 0xb1, 0xce, 0xce, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x66, 0x05, 0x8b, 0x00, 0x06, 0x00, 0x21, 0x00, 0x25, + 0x00, 0x55, 0xb4, 0x25, 0x22, 0x24, 0x23, 0x0f, 0xb8, 0x01, 0x7b, 0xb7, + 0x1c, 0x1c, 0x16, 0x21, 0x16, 0x08, 0x04, 0x00, 0xb8, 0x01, 0x7a, 0x40, + 0x1a, 0x05, 0x03, 0x24, 0x53, 0x23, 0x51, 0x09, 0x20, 0x9d, 0x07, 0x15, + 0x12, 0x96, 0x0f, 0x19, 0x07, 0x51, 0x03, 0x91, 0x01, 0x05, 0x02, 0x02, + 0x00, 0x05, 0x53, 0x00, 0x3f, 0xcd, 0x39, 0x2f, 0x12, 0x39, 0xed, 0x3f, + 0xd4, 0x39, 0xfd, 0xc6, 0x10, 0xed, 0x32, 0x3f, 0x3f, 0x01, 0x2f, 0xdd, + 0xed, 0x32, 0x2f, 0xc6, 0xcd, 0x11, 0x39, 0x2f, 0xed, 0x2f, 0xcd, 0x33, + 0x32, 0x31, 0x30, 0x13, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x01, 0x21, + 0x35, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x07, 0x33, 0x05, + 0x23, 0x01, 0x33, 0xdf, 0x83, 0x31, 0xcf, 0xa4, 0x02, 0xa4, 0xfe, 0x26, + 0x84, 0x2b, 0x35, 0x1c, 0x09, 0x1f, 0x23, 0x26, 0x41, 0x1c, 0x4a, 0x2c, + 0x78, 0x44, 0x6d, 0x7a, 0x4b, 0x53, 0x37, 0xe6, 0xfc, 0x85, 0xc7, 0x03, + 0xa0, 0xc6, 0x03, 0x48, 0x01, 0x97, 0x41, 0x85, 0x68, 0xfd, 0xbd, 0xfc, + 0xb8, 0x85, 0x69, 0x22, 0x30, 0x23, 0x1d, 0x0f, 0x17, 0x1d, 0x20, 0x16, + 0x75, 0x22, 0x2c, 0x60, 0x50, 0x4a, 0x6e, 0x34, 0x23, 0x91, 0x05, 0x85, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x98, 0x00, 0x32, + 0x00, 0x36, 0x00, 0x41, 0x00, 0x44, 0x00, 0x86, 0xb1, 0x40, 0x38, 0xb8, + 0x01, 0x64, 0x40, 0x0d, 0x44, 0x44, 0x3e, 0x42, 0x43, 0x42, 0x41, 0x3d, + 0x36, 0x33, 0x35, 0x34, 0x1e, 0xb8, 0x01, 0x7c, 0x40, 0x0d, 0x2d, 0x30, + 0x17, 0x2d, 0x24, 0x17, 0x2d, 0x2d, 0x17, 0x24, 0x03, 0x09, 0x00, 0xb8, + 0x01, 0x83, 0x40, 0x22, 0x11, 0x09, 0x43, 0x40, 0x3d, 0x44, 0x94, 0x42, + 0x3b, 0x3b, 0x3e, 0x39, 0x51, 0x35, 0x53, 0x34, 0x51, 0x24, 0x21, 0x93, + 0x2a, 0x30, 0x18, 0x93, 0x17, 0x17, 0x2a, 0x03, 0x09, 0x0c, 0x93, 0x03, + 0x2a, 0x54, 0x00, 0x3f, 0xd4, 0xfd, 0xc6, 0x11, 0x12, 0x39, 0x2f, 0xed, + 0x39, 0x10, 0xfd, 0xc6, 0x3f, 0x3f, 0x3f, 0xc4, 0x39, 0x2f, 0x39, 0xed, + 0x32, 0x32, 0x32, 0x01, 0x2f, 0xd6, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x2f, + 0x2f, 0x11, 0x12, 0x39, 0x10, 0xed, 0x2f, 0xcd, 0x33, 0x32, 0x2f, 0xcd, + 0x39, 0x33, 0x11, 0x33, 0x33, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, 0x14, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, + 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x01, 0x23, 0x01, 0x33, 0x03, + 0x23, 0x15, 0x23, 0x35, 0x21, 0x35, 0x13, 0x33, 0x11, 0x33, 0x27, 0x07, + 0x33, 0x02, 0x10, 0x9f, 0xa6, 0x10, 0x2b, 0x2c, 0x2a, 0x0f, 0x20, 0x57, + 0x2f, 0x23, 0x2f, 0x1c, 0x0b, 0x0d, 0x20, 0x36, 0x29, 0x45, 0x37, 0x27, + 0x31, 0x1a, 0x09, 0x1e, 0x2c, 0x2b, 0x50, 0x29, 0x1b, 0x2d, 0x2c, 0x2e, + 0x1d, 0x74, 0x7c, 0x35, 0x30, 0x45, 0x44, 0xfe, 0xb7, 0xc7, 0x03, 0xa0, + 0xc6, 0x2d, 0x54, 0xa8, 0xfe, 0xd3, 0xdc, 0xf9, 0x54, 0xfc, 0x83, 0x83, + 0x03, 0xf6, 0x5b, 0x66, 0x01, 0x03, 0x04, 0x02, 0x8c, 0x06, 0x09, 0x08, + 0x0f, 0x13, 0x0c, 0x0e, 0x14, 0x0d, 0x06, 0x87, 0x09, 0x10, 0x13, 0x0b, + 0x14, 0x18, 0x10, 0x0b, 0x87, 0x07, 0x0b, 0x06, 0x03, 0x4f, 0x4b, 0x33, + 0x43, 0x0b, 0x08, 0x4b, 0xfb, 0xd6, 0x05, 0x85, 0xfa, 0xe1, 0x66, 0x66, + 0x83, 0x01, 0x54, 0xfe, 0xb1, 0xce, 0xce, 0x00, 0x00, 0x05, 0x00, 0x00, + 0xff, 0xee, 0x04, 0x66, 0x05, 0x98, 0x00, 0x03, 0x00, 0x13, 0x00, 0x1d, + 0x00, 0x2d, 0x00, 0x37, 0x00, 0x4b, 0x41, 0x0b, 0x00, 0x1e, 0x01, 0x67, + 0x00, 0x2e, 0x00, 0x33, 0x01, 0x67, 0x00, 0x26, 0x00, 0x04, 0x01, 0x67, + 0x00, 0x14, 0x00, 0x19, 0x01, 0x67, 0x40, 0x17, 0x0c, 0x03, 0x00, 0x02, + 0x01, 0x31, 0xa1, 0x2b, 0x36, 0xa1, 0x23, 0x52, 0x1c, 0xa1, 0x09, 0x17, + 0xa1, 0x11, 0x54, 0x02, 0x53, 0x01, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0xed, + 0xd4, 0xed, 0x3f, 0xed, 0xd4, 0xed, 0x01, 0x2f, 0xcd, 0x33, 0x32, 0x2f, + 0xed, 0xd4, 0xed, 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x33, 0x23, 0x01, + 0x33, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x16, 0x33, + 0x32, 0xc7, 0xc7, 0x03, 0xa0, 0xc6, 0xfd, 0xdc, 0x26, 0x47, 0x67, 0x41, + 0x7f, 0x8d, 0x25, 0x47, 0x67, 0x41, 0x7f, 0x8e, 0xb2, 0x30, 0x2f, 0x5e, + 0x30, 0x2e, 0x5f, 0x02, 0xb6, 0x26, 0x47, 0x67, 0x41, 0x7f, 0x8d, 0x25, + 0x47, 0x67, 0x41, 0x7f, 0x8e, 0xb2, 0x30, 0x2f, 0x5e, 0x30, 0x2e, 0x5f, + 0x05, 0x85, 0xfe, 0xe5, 0x43, 0x71, 0x53, 0x2e, 0x98, 0x95, 0x43, 0x71, + 0x53, 0x2f, 0x98, 0x9a, 0x4f, 0x4b, 0x9a, 0x4e, 0x4b, 0xfd, 0x56, 0x43, + 0x71, 0x53, 0x2e, 0x97, 0x96, 0x44, 0x71, 0x52, 0x2f, 0x98, 0x9a, 0x4f, + 0x4b, 0x9a, 0x4f, 0x4a, 0x00, 0x07, 0x00, 0x00, 0xff, 0xee, 0x04, 0x66, + 0x05, 0x98, 0x00, 0x03, 0x00, 0x13, 0x00, 0x1f, 0x00, 0x2f, 0x00, 0x3b, + 0x00, 0x4b, 0x00, 0x57, 0x00, 0x40, 0x40, 0x21, 0x02, 0x00, 0x55, 0x39, + 0x95, 0x25, 0x4f, 0x33, 0x95, 0x49, 0x2d, 0x25, 0x03, 0xb6, 0x02, 0x01, + 0xb6, 0x00, 0x02, 0x00, 0x02, 0x00, 0x11, 0x41, 0x25, 0x52, 0x1d, 0x95, + 0x09, 0x17, 0x95, 0x11, 0x54, 0x00, 0x3f, 0xed, 0xd4, 0xed, 0x3f, 0x33, + 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x10, 0xd4, 0x32, + 0xed, 0x32, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x11, 0x35, + 0x01, 0x15, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x13, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x04, 0x66, 0xfd, 0xa2, + 0x23, 0x42, 0x5f, 0x3a, 0x78, 0x82, 0x23, 0x42, 0x5f, 0x3a, 0x77, 0x83, + 0xa6, 0x2e, 0x28, 0x28, 0x2e, 0x2e, 0x28, 0x28, 0x2e, 0xd7, 0x22, 0x42, + 0x5e, 0x3c, 0x7a, 0x80, 0x22, 0x41, 0x5e, 0x3d, 0x79, 0x81, 0xa6, 0x2c, + 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x2a, 0x2c, 0x02, 0xc5, 0x22, 0x42, 0x5e, + 0x3c, 0x7a, 0x80, 0x22, 0x42, 0x5e, 0x3c, 0x79, 0x81, 0xa6, 0x2c, 0x2a, + 0x2a, 0x2c, 0x2c, 0x2a, 0x2a, 0x2c, 0x02, 0x06, 0xac, 0x01, 0x7f, 0xac, + 0xf8, 0x41, 0x6c, 0x4c, 0x2a, 0x87, 0x94, 0x41, 0x6b, 0x4d, 0x2a, 0x87, + 0x98, 0x51, 0x45, 0x4f, 0x47, 0x52, 0x44, 0x4f, 0xfc, 0xde, 0x41, 0x6b, + 0x4c, 0x2a, 0x87, 0x93, 0x41, 0x6c, 0x4d, 0x2a, 0x87, 0x99, 0x52, 0x45, + 0x50, 0x47, 0x51, 0x44, 0x4e, 0x4b, 0x41, 0x6b, 0x4c, 0x2a, 0x87, 0x93, + 0x41, 0x6c, 0x4d, 0x2a, 0x87, 0x99, 0x52, 0x45, 0x50, 0x47, 0x51, 0x44, + 0x4e, 0x00, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x37, 0x04, 0x19, 0x04, 0x08, + 0x00, 0x0b, 0x00, 0x2c, 0xb2, 0x0a, 0x00, 0x09, 0xb8, 0x01, 0xd5, 0x40, + 0x09, 0x06, 0x04, 0x03, 0x03, 0x0c, 0x0d, 0x09, 0x08, 0x06, 0xb8, 0x01, + 0x04, 0xb2, 0x01, 0x00, 0x03, 0x00, 0x2f, 0x33, 0xcd, 0xfd, 0xcd, 0x33, + 0x11, 0x12, 0x01, 0x39, 0x2f, 0xcd, 0xc4, 0xfd, 0xc4, 0xcd, 0x31, 0x30, + 0x01, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x15, + 0x02, 0xa4, 0xe1, 0xfe, 0x8b, 0x01, 0x75, 0xe1, 0x01, 0x75, 0x01, 0xbc, + 0xfe, 0x7b, 0x01, 0x85, 0xc9, 0x01, 0x83, 0xfe, 0x7d, 0xc9, 0x00, 0x01, + 0x00, 0x85, 0x01, 0xb6, 0x03, 0xe1, 0x02, 0x8b, 0x00, 0x03, 0x00, 0x11, + 0xb2, 0x02, 0x00, 0x02, 0xb9, 0x01, 0x34, 0x00, 0x00, 0x00, 0x2f, 0xed, + 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x13, 0x35, 0x21, 0x15, 0x85, 0x03, 0x5c, + 0x01, 0xb6, 0xd5, 0xd5, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x03, 0xfe, + 0x04, 0xcd, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x39, 0xb6, 0x0c, 0x04, 0x02, + 0x0e, 0x0a, 0x09, 0x00, 0xb8, 0x01, 0xaf, 0x40, 0x10, 0x06, 0x02, 0x02, + 0x10, 0x11, 0x08, 0x06, 0x09, 0xf8, 0x03, 0x00, 0x02, 0x0e, 0xfd, 0x0c, + 0x51, 0x00, 0x3f, 0xfd, 0x7d, 0xde, 0xd5, 0x32, 0x18, 0xfd, 0x32, 0x7d, + 0xc5, 0x11, 0x12, 0x01, 0x39, 0x18, 0x2f, 0xc4, 0xfd, 0xc4, 0xdd, 0xc4, + 0x10, 0xd6, 0xc6, 0x31, 0x30, 0x01, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, + 0x11, 0x33, 0x11, 0x21, 0x15, 0x01, 0x35, 0x21, 0x15, 0x02, 0xa2, 0xdd, + 0xfe, 0xa3, 0x01, 0x5d, 0xdd, 0x01, 0x5c, 0xfc, 0x87, 0x03, 0x5c, 0x02, + 0xac, 0xfe, 0xa0, 0x01, 0x60, 0xbc, 0x01, 0x65, 0xfe, 0x9b, 0xbc, 0xfd, + 0x54, 0xc1, 0xc1, 0x00, 0x00, 0x01, 0x00, 0x75, 0x00, 0x64, 0x03, 0xf1, + 0x03, 0xe0, 0x00, 0x0b, 0x00, 0x3c, 0x40, 0x1a, 0x77, 0x06, 0x01, 0x78, + 0x00, 0x01, 0x01, 0x0b, 0x09, 0x03, 0x07, 0x05, 0x03, 0x03, 0x0c, 0x0d, + 0x09, 0x03, 0x04, 0x0a, 0x08, 0x02, 0x04, 0x20, 0x00, 0x06, 0x00, 0x19, + 0x2f, 0xc5, 0x1a, 0x18, 0xcd, 0x32, 0xcd, 0x32, 0x11, 0x39, 0x39, 0x11, + 0x12, 0x01, 0x39, 0x19, 0x2f, 0x18, 0xdd, 0xc4, 0x19, 0x10, 0xd5, 0x18, + 0xdd, 0xc4, 0x31, 0x30, 0x71, 0x71, 0x01, 0x01, 0x07, 0x01, 0x01, 0x27, + 0x01, 0x01, 0x37, 0x01, 0x01, 0x17, 0x02, 0xc9, 0x01, 0x28, 0x9b, 0xfe, + 0xd8, 0xfe, 0xd8, 0x91, 0x01, 0x28, 0xfe, 0xd8, 0x9b, 0x01, 0x28, 0x01, + 0x28, 0x91, 0x02, 0x27, 0xfe, 0xd8, 0x9b, 0x01, 0x28, 0xfe, 0xd8, 0x91, + 0x01, 0x28, 0x01, 0x28, 0x9b, 0xfe, 0xd8, 0x01, 0x28, 0x91, 0x00, 0x03, + 0x00, 0x4e, 0x00, 0x06, 0x04, 0x19, 0x04, 0x3b, 0x00, 0x03, 0x00, 0x17, + 0x00, 0x2b, 0x00, 0x35, 0xb2, 0x27, 0x02, 0x09, 0xb8, 0x02, 0x37, 0xb6, + 0x1d, 0x00, 0x13, 0x13, 0x2c, 0x2d, 0x0e, 0xb8, 0x01, 0x46, 0xb2, 0x04, + 0x00, 0x22, 0xbc, 0x01, 0x46, 0x00, 0x18, 0x00, 0x02, 0x01, 0x04, 0x00, + 0x00, 0x00, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xd6, 0xed, 0x11, 0x12, 0x01, + 0x39, 0x2f, 0xc6, 0xc4, 0xfd, 0xc4, 0xc4, 0x31, 0x30, 0x13, 0x35, 0x21, + 0x15, 0x05, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x4e, 0x03, 0xcb, + 0xfe, 0x16, 0x21, 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x21, 0x21, 0x38, + 0x29, 0x17, 0x17, 0x29, 0x38, 0x21, 0x21, 0x38, 0x29, 0x17, 0x17, 0x29, + 0x38, 0x21, 0x21, 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x01, 0xbc, 0xc9, + 0xc9, 0x8b, 0x17, 0x28, 0x35, 0x1f, 0x20, 0x38, 0x29, 0x17, 0x17, 0x29, + 0x38, 0x20, 0x1f, 0x35, 0x28, 0x17, 0x01, 0xdf, 0x17, 0x28, 0x36, 0x1f, + 0x20, 0x37, 0x29, 0x17, 0x17, 0x29, 0x37, 0x20, 0x1f, 0x36, 0x28, 0x17, + 0x00, 0x02, 0x00, 0x85, 0x00, 0xfc, 0x03, 0xe1, 0x03, 0x48, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x18, 0x40, 0x0a, 0x06, 0x02, 0x00, 0x04, 0x07, 0xfe, + 0x05, 0x02, 0xfe, 0x00, 0x00, 0x2f, 0xed, 0xd6, 0xed, 0x01, 0x2f, 0xc4, + 0xd4, 0xc4, 0x31, 0x30, 0x13, 0x35, 0x21, 0x15, 0x01, 0x35, 0x21, 0x15, + 0x85, 0x03, 0x5c, 0xfc, 0xa4, 0x03, 0x5c, 0x02, 0x86, 0xc2, 0xc2, 0xfe, + 0x76, 0xc2, 0xc2, 0x00, 0x00, 0x01, 0x00, 0x85, 0x00, 0x00, 0x03, 0xe1, + 0x04, 0x44, 0x00, 0x13, 0x00, 0x5e, 0x40, 0x2e, 0x13, 0x10, 0x0f, 0x0c, + 0x0b, 0x00, 0x0b, 0x02, 0x05, 0x06, 0x09, 0x0a, 0x01, 0x0a, 0x0a, 0x00, + 0x01, 0x0b, 0x0d, 0x01, 0x03, 0x11, 0x0d, 0x08, 0x04, 0x02, 0x13, 0xfe, + 0x10, 0x05, 0x10, 0x09, 0x0c, 0xfe, 0x0f, 0x06, 0x0f, 0x10, 0x0f, 0x10, + 0x0f, 0x01, 0x00, 0x0a, 0x0b, 0x51, 0x00, 0x3f, 0x33, 0xc4, 0x32, 0x39, + 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0xc4, 0x2f, 0xc4, 0xd4, 0xc6, 0x10, 0xc6, 0x11, 0x33, + 0x32, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, + 0xc4, 0xc4, 0x31, 0x30, 0x01, 0x33, 0x07, 0x33, 0x15, 0x21, 0x07, 0x21, + 0x15, 0x21, 0x07, 0x23, 0x37, 0x23, 0x35, 0x21, 0x37, 0x21, 0x35, 0x21, + 0x02, 0x9e, 0xd5, 0x63, 0xd1, 0xfe, 0xe3, 0x4e, 0x01, 0x6b, 0xfe, 0x49, + 0x63, 0xd5, 0x63, 0xd0, 0x01, 0x1c, 0x4e, 0xfe, 0x96, 0x01, 0xb6, 0x04, + 0x44, 0xfc, 0xc2, 0xc8, 0xc2, 0xfc, 0xfc, 0xc2, 0xc8, 0xc2, 0x00, 0x02, + 0x00, 0x62, 0x00, 0xba, 0x04, 0x04, 0x03, 0x88, 0x00, 0x1b, 0x00, 0x37, + 0x00, 0x38, 0x40, 0x1b, 0x1c, 0x00, 0x2a, 0x0e, 0x37, 0x29, 0x37, 0x29, + 0x21, 0x26, 0xff, 0x2f, 0x34, 0xff, 0x21, 0x1b, 0x0d, 0x1b, 0x0d, 0x13, + 0x18, 0xff, 0x05, 0x0a, 0xff, 0x13, 0x21, 0x00, 0x2f, 0xd6, 0xfd, 0xdc, + 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xfd, 0xdc, 0xed, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x01, 0x2f, 0xc4, 0xdd, 0xc4, 0x31, 0x30, 0x01, 0x0e, + 0x03, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x03, + 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x13, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x03, 0x33, 0x32, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x04, 0x04, 0x18, 0x3d, 0x46, 0x4c, + 0x27, 0x3f, 0x67, 0x5d, 0x5a, 0x31, 0x30, 0x56, 0x24, 0x5c, 0x18, 0x3d, + 0x46, 0x4d, 0x27, 0x3f, 0x67, 0x5d, 0x59, 0x31, 0x30, 0x57, 0x23, 0x5c, + 0x18, 0x3d, 0x46, 0x4c, 0x27, 0x3f, 0x67, 0x5d, 0x5a, 0x31, 0x30, 0x56, + 0x24, 0x5c, 0x18, 0x3d, 0x46, 0x4d, 0x27, 0x3f, 0x67, 0x5d, 0x59, 0x31, + 0x30, 0x57, 0x23, 0x01, 0x3b, 0x19, 0x2f, 0x24, 0x15, 0x24, 0x2b, 0x24, + 0x31, 0x23, 0x96, 0x19, 0x2f, 0x24, 0x15, 0x24, 0x2b, 0x24, 0x31, 0x23, + 0x01, 0x02, 0x1a, 0x2e, 0x24, 0x15, 0x24, 0x2b, 0x24, 0x31, 0x23, 0x96, + 0x19, 0x2f, 0x24, 0x15, 0x24, 0x2b, 0x24, 0x31, 0x23, 0x00, 0x00, 0x01, + 0x00, 0x66, 0xff, 0xe9, 0x03, 0xa4, 0x04, 0x58, 0x00, 0x05, 0x00, 0x16, + 0xb2, 0x05, 0x03, 0x04, 0xb8, 0x02, 0x43, 0xb3, 0x01, 0x02, 0x00, 0x52, + 0x00, 0x3f, 0xc4, 0x01, 0x2f, 0xed, 0xdd, 0xc4, 0x31, 0x30, 0x05, 0x01, + 0x01, 0x17, 0x01, 0x01, 0x03, 0x08, 0xfd, 0x5e, 0x02, 0xa2, 0x9c, 0xfe, + 0x10, 0x01, 0xf0, 0x17, 0x02, 0x38, 0x02, 0x37, 0x9e, 0xfe, 0x69, 0xfe, + 0x64, 0x00, 0x00, 0x01, 0x00, 0xc3, 0xff, 0xe9, 0x04, 0x00, 0x04, 0x58, + 0x00, 0x05, 0x00, 0x16, 0xb9, 0x00, 0x04, 0x02, 0x43, 0xb5, 0x01, 0x03, + 0x05, 0x00, 0x02, 0x52, 0x00, 0x3f, 0xc4, 0x01, 0x2f, 0xc4, 0xdd, 0xed, + 0x31, 0x30, 0x09, 0x02, 0x27, 0x01, 0x01, 0x01, 0x5e, 0x02, 0xa2, 0xfd, + 0x5e, 0x9b, 0x01, 0xef, 0xfe, 0x11, 0x04, 0x58, 0xfd, 0xc9, 0xfd, 0xc8, + 0x9e, 0x01, 0x98, 0x01, 0x9b, 0x00, 0x00, 0x02, 0x00, 0x85, 0x00, 0x00, + 0x03, 0xe1, 0x04, 0xf0, 0x00, 0x03, 0x00, 0x09, 0x00, 0x2e, 0xb9, 0x00, + 0x08, 0x02, 0x3f, 0x40, 0x11, 0x05, 0x00, 0x07, 0x09, 0x02, 0x00, 0x08, + 0x05, 0x04, 0x05, 0x05, 0x04, 0x06, 0x02, 0xfd, 0x00, 0x51, 0x00, 0x3f, + 0xed, 0xc4, 0x39, 0x39, 0x19, 0x2f, 0x18, 0x2f, 0x11, 0x33, 0x01, 0x2f, + 0xdd, 0xd6, 0xc4, 0x10, 0xd4, 0xed, 0x31, 0x30, 0x33, 0x35, 0x21, 0x15, + 0x03, 0x01, 0x01, 0x17, 0x01, 0x01, 0x85, 0x03, 0x5c, 0xb0, 0xfd, 0x73, + 0x02, 0x8d, 0x87, 0xfe, 0x2f, 0x01, 0xd1, 0xc1, 0xc1, 0x01, 0x25, 0x01, + 0xe5, 0x01, 0xe6, 0xa6, 0xfe, 0xc2, 0xfe, 0xbf, 0x00, 0x02, 0x00, 0x85, + 0x00, 0x00, 0x03, 0xe1, 0x04, 0xf0, 0x00, 0x03, 0x00, 0x09, 0x00, 0x2e, + 0xb3, 0x09, 0x07, 0x00, 0x08, 0xb8, 0x02, 0x40, 0x40, 0x0e, 0x05, 0x02, + 0x00, 0x08, 0x05, 0x06, 0x05, 0x05, 0x06, 0x04, 0x02, 0xfd, 0x00, 0x51, + 0x00, 0x3f, 0xed, 0xc4, 0x39, 0x39, 0x19, 0x2f, 0x18, 0x2f, 0x11, 0x33, + 0x01, 0x2f, 0xdd, 0xd6, 0xed, 0x10, 0xd4, 0xc4, 0x31, 0x30, 0x33, 0x35, + 0x21, 0x15, 0x09, 0x02, 0x27, 0x01, 0x01, 0x85, 0x03, 0x5c, 0xfd, 0x54, + 0x02, 0x8e, 0xfd, 0x72, 0x87, 0x01, 0xd1, 0xfe, 0x2f, 0xc1, 0xc1, 0x04, + 0xf0, 0xfe, 0x1a, 0xfe, 0x1b, 0xa6, 0x01, 0x3d, 0x01, 0x42, 0x00, 0x01, + 0x00, 0x66, 0x00, 0xa8, 0x03, 0xdd, 0x02, 0x83, 0x00, 0x05, 0x00, 0x19, + 0xb9, 0x00, 0x01, 0x01, 0xa9, 0xb2, 0x04, 0x02, 0x03, 0xb8, 0x01, 0x01, + 0xb1, 0x00, 0x02, 0x00, 0x2f, 0xc6, 0xed, 0x01, 0x2f, 0xdd, 0xed, 0x31, + 0x30, 0x25, 0x11, 0x21, 0x35, 0x21, 0x11, 0x03, 0x08, 0xfd, 0x5e, 0x03, + 0x77, 0xa8, 0x01, 0x16, 0xc5, 0xfe, 0x25, 0x00, 0x00, 0x02, 0x00, 0xbe, + 0x02, 0xdb, 0x03, 0xa8, 0x05, 0x9c, 0x00, 0x13, 0x00, 0x21, 0x00, 0x20, + 0xbc, 0x00, 0x00, 0x01, 0x98, 0x00, 0x14, 0x00, 0x0a, 0x01, 0x98, 0xb7, + 0x1c, 0x1f, 0xb8, 0x05, 0x17, 0xb8, 0x0f, 0x54, 0x00, 0x3f, 0xed, 0xd4, + 0xed, 0x01, 0x2f, 0xed, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x03, 0xa8, 0x33, 0x62, 0x8c, 0x58, 0x57, 0x8a, 0x5e, 0x32, 0x34, + 0x61, 0x8c, 0x58, 0x58, 0x89, 0x5e, 0x32, 0xd1, 0x50, 0x54, 0x29, 0x3e, + 0x29, 0x14, 0x51, 0x53, 0x53, 0x51, 0x04, 0x42, 0x50, 0x84, 0x5f, 0x34, + 0x31, 0x5a, 0x80, 0x4f, 0x50, 0x84, 0x5f, 0x34, 0x31, 0x5a, 0x80, 0x56, + 0x52, 0x61, 0x1a, 0x30, 0x42, 0x27, 0x51, 0x61, 0x64, 0x00, 0x00, 0x02, + 0x00, 0x27, 0xff, 0xe9, 0x04, 0x10, 0x05, 0x9c, 0x00, 0x27, 0x00, 0x33, + 0x00, 0x49, 0xb1, 0x0a, 0x2f, 0xb8, 0x01, 0xe1, 0xb2, 0x22, 0x1f, 0x05, + 0xb8, 0x02, 0x0a, 0x40, 0x09, 0x28, 0x1f, 0x28, 0x1f, 0x28, 0x14, 0x20, + 0x13, 0x10, 0xb8, 0x01, 0x01, 0x40, 0x0b, 0x19, 0x0b, 0x2f, 0x28, 0x03, + 0x20, 0x20, 0x00, 0x19, 0x52, 0x2b, 0xb8, 0x01, 0x01, 0xb1, 0x00, 0x54, + 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x17, 0x39, 0x10, 0xfd, 0xc6, + 0x01, 0x2f, 0xc4, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xc4, 0xfd, + 0xc4, 0x31, 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x17, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x35, 0x07, 0x35, 0x37, 0x11, 0x34, 0x3e, 0x02, + 0x13, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x15, 0x3e, 0x03, 0x02, 0x6d, + 0x4d, 0x7d, 0x58, 0x2f, 0x40, 0x75, 0xa8, 0x67, 0x1e, 0x38, 0x52, 0x33, + 0x36, 0x69, 0x2c, 0x70, 0x1b, 0x46, 0x57, 0x68, 0x3c, 0x72, 0xa1, 0x66, + 0x2f, 0xe5, 0xe5, 0x28, 0x55, 0x86, 0xbc, 0x30, 0x35, 0x34, 0x38, 0x2b, + 0x4c, 0x39, 0x21, 0x05, 0x9c, 0x2b, 0x51, 0x77, 0x4b, 0x57, 0x99, 0x85, + 0x76, 0x34, 0xa7, 0x35, 0x56, 0x3d, 0x22, 0x31, 0x2d, 0x9b, 0x1a, 0x31, + 0x26, 0x17, 0x40, 0x70, 0x98, 0x58, 0x48, 0x73, 0xdb, 0x73, 0x01, 0x6f, + 0x4a, 0x8b, 0x6b, 0x41, 0xfe, 0xae, 0x45, 0x48, 0x63, 0x59, 0xf8, 0x15, + 0x43, 0x4f, 0x56, 0x00, 0x00, 0x03, 0x00, 0x08, 0x00, 0xc9, 0x04, 0x5e, + 0x03, 0x7d, 0x00, 0x23, 0x00, 0x2f, 0x00, 0x3d, 0x00, 0x38, 0xb6, 0x2c, + 0x28, 0x3c, 0x34, 0x04, 0x12, 0x24, 0xbb, 0x01, 0x81, 0x00, 0x00, 0x00, + 0x38, 0x01, 0x81, 0xb2, 0x12, 0x2d, 0x3b, 0xb8, 0x01, 0x30, 0xb2, 0x0d, + 0x35, 0x27, 0xb8, 0x01, 0x30, 0xb3, 0x17, 0x1f, 0x05, 0x0d, 0x00, 0x2f, + 0x33, 0xdd, 0x32, 0xed, 0x32, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0xd4, + 0xed, 0x12, 0x17, 0x39, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x07, 0x16, 0x16, 0x33, 0x32, 0x36, 0x25, 0x2e, + 0x03, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x04, 0x5e, + 0x26, 0x47, 0x65, 0x3e, 0x50, 0x8b, 0x46, 0x23, 0x45, 0x48, 0x4b, 0x28, + 0x3b, 0x5f, 0x44, 0x24, 0x27, 0x47, 0x65, 0x3e, 0x4a, 0x88, 0x4e, 0x23, + 0x45, 0x48, 0x4a, 0x29, 0x3b, 0x60, 0x43, 0x24, 0xc3, 0x2d, 0x2a, 0x2a, + 0x4d, 0x31, 0x2d, 0x54, 0x29, 0x28, 0x2d, 0xfe, 0x30, 0x1c, 0x2d, 0x29, + 0x25, 0x13, 0x28, 0x2e, 0x2e, 0x2a, 0x26, 0x52, 0x02, 0x2f, 0x4b, 0x82, + 0x61, 0x38, 0x69, 0x5b, 0x2b, 0x48, 0x34, 0x1d, 0x32, 0x59, 0x7c, 0x4b, + 0x49, 0x81, 0x60, 0x38, 0x5e, 0x63, 0x29, 0x46, 0x34, 0x1e, 0x30, 0x58, + 0x7b, 0x56, 0x41, 0x48, 0x4b, 0x3c, 0x3e, 0x4f, 0x4c, 0x3d, 0x24, 0x34, + 0x23, 0x10, 0x4a, 0x3f, 0x42, 0x49, 0x4b, 0x00, 0x00, 0x02, 0x00, 0x4c, + 0xff, 0xe9, 0x03, 0xf4, 0x05, 0x98, 0x00, 0x11, 0x00, 0x36, 0x00, 0x43, + 0xb3, 0x15, 0x15, 0x2a, 0x20, 0xb8, 0x02, 0x11, 0xb2, 0x00, 0x32, 0x08, + 0xbb, 0x02, 0x11, 0x00, 0x2a, 0x00, 0x03, 0x01, 0x06, 0xb6, 0x00, 0x32, + 0x25, 0x2f, 0x2f, 0x1b, 0x0d, 0xb8, 0x01, 0x08, 0xb3, 0x25, 0x52, 0x15, + 0x12, 0xb8, 0x01, 0x06, 0xb1, 0x1b, 0x54, 0x00, 0x3f, 0xfd, 0xc6, 0x3f, + 0xed, 0x12, 0x39, 0x2f, 0x12, 0x39, 0x39, 0xed, 0x01, 0x2f, 0xed, 0xd4, + 0x32, 0xed, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x22, + 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x16, 0x12, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x17, 0x2e, 0x03, 0x02, 0xfa, 0x2f, 0x6a, 0x4a, 0x30, 0x4e, 0x36, + 0x1d, 0x1a, 0x33, 0x4c, 0x33, 0x38, 0x56, 0x3a, 0x1e, 0xfe, 0x89, 0x2b, + 0x5e, 0x2b, 0x13, 0x30, 0x31, 0x31, 0x15, 0x8a, 0xe4, 0xa4, 0x5b, 0x44, + 0x80, 0xb8, 0x74, 0x6f, 0xa5, 0x6d, 0x37, 0x3f, 0x72, 0xa1, 0x62, 0x4d, + 0x7f, 0x2e, 0x0e, 0x3f, 0x61, 0x80, 0x02, 0x46, 0x1f, 0x24, 0x25, 0x3f, + 0x55, 0x30, 0x33, 0x56, 0x3e, 0x23, 0x2e, 0x61, 0x98, 0x02, 0xf0, 0x09, + 0x0a, 0xc5, 0x05, 0x09, 0x07, 0x04, 0x5f, 0xc7, 0xfe, 0xce, 0xd3, 0x99, + 0xf0, 0xa5, 0x56, 0x40, 0x73, 0xa0, 0x60, 0x5e, 0xa2, 0x75, 0x43, 0x22, + 0x22, 0x6b, 0xa6, 0x71, 0x3b, 0x00, 0x00, 0x01, 0x00, 0x7b, 0xfe, 0x5c, + 0x03, 0xe9, 0x05, 0x98, 0x00, 0x27, 0x00, 0x2d, 0xb9, 0x00, 0x27, 0x01, + 0xd4, 0xb4, 0x1c, 0x09, 0x14, 0x1d, 0x22, 0xb8, 0x01, 0x02, 0xb6, 0x27, + 0x13, 0x05, 0x19, 0x54, 0x09, 0x0e, 0xb8, 0x01, 0x02, 0xb1, 0x05, 0x56, + 0x00, 0x3f, 0xfd, 0xc6, 0x3f, 0x12, 0x39, 0x39, 0xfd, 0xc6, 0x01, 0x2f, + 0xc6, 0xc4, 0xed, 0x31, 0x30, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x02, 0xa2, 0x2d, 0x5d, 0x90, 0x63, 0x26, 0x5c, 0x28, 0x13, 0x2b, + 0x2b, 0x28, 0x0f, 0x26, 0x3e, 0x2c, 0x18, 0x2c, 0x5d, 0x90, 0x63, 0x27, + 0x5b, 0x28, 0x13, 0x2b, 0x2a, 0x28, 0x0f, 0x27, 0x3e, 0x2b, 0x18, 0x2d, + 0x84, 0xb2, 0x6d, 0x2e, 0x10, 0x0d, 0xc6, 0x06, 0x0a, 0x08, 0x04, 0x13, + 0x36, 0x60, 0x4d, 0x03, 0xae, 0x84, 0xb2, 0x6d, 0x2e, 0x11, 0x0c, 0xc7, + 0x06, 0x0b, 0x08, 0x04, 0x13, 0x36, 0x60, 0x4d, 0x00, 0x01, 0x00, 0x17, + 0x00, 0x00, 0x04, 0x5e, 0x05, 0x85, 0x00, 0x08, 0x00, 0x3e, 0x40, 0x1e, + 0x00, 0x06, 0x08, 0x07, 0x20, 0x06, 0x01, 0x02, 0x03, 0x04, 0x03, 0x05, + 0x05, 0x09, 0x0a, 0x05, 0x04, 0x06, 0x02, 0x04, 0x03, 0x03, 0x01, 0x08, + 0x53, 0x07, 0x53, 0x00, 0x01, 0x51, 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x12, + 0x39, 0x2f, 0x17, 0x39, 0x11, 0x12, 0x01, 0x39, 0x19, 0x2f, 0xc1, 0xc1, + 0x11, 0x33, 0x32, 0xc1, 0x1a, 0x18, 0xcd, 0x32, 0x11, 0x33, 0x31, 0x30, + 0x21, 0x21, 0x01, 0x37, 0x13, 0x17, 0x37, 0x01, 0x21, 0x02, 0xb0, 0xfe, + 0xd3, 0xfe, 0x94, 0xe5, 0xe9, 0x2f, 0x2b, 0x01, 0x19, 0x01, 0x06, 0x03, + 0x2d, 0x64, 0xfd, 0xea, 0x7d, 0xa6, 0x03, 0xe1, 0xff, 0xff, 0x00, 0x39, + 0x00, 0x00, 0x04, 0x2d, 0x05, 0x1b, 0x02, 0x06, 0x01, 0x93, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x23, 0x00, 0x00, 0x04, 0x43, 0x05, 0x31, 0x02, 0x06, + 0x01, 0xa7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x87, 0xfe, 0x73, 0x04, 0x3b, + 0x03, 0xf8, 0x02, 0x02, 0x01, 0xbe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, + 0xff, 0x29, 0x04, 0x52, 0x05, 0x85, 0x00, 0x0b, 0x00, 0x2d, 0xb9, 0x00, + 0x00, 0x02, 0x0a, 0xb3, 0x0a, 0x08, 0x07, 0x03, 0xb8, 0x02, 0x0a, 0xb4, + 0x05, 0x07, 0x0a, 0x05, 0x02, 0xb8, 0x01, 0x32, 0xb4, 0x07, 0x53, 0x00, + 0x04, 0x59, 0x00, 0x3f, 0x33, 0x3f, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xdd, + 0xed, 0x10, 0xdd, 0xdd, 0xed, 0x31, 0x30, 0x05, 0x11, 0x21, 0x11, 0x23, + 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x11, 0x02, 0xda, 0xfe, 0xb5, 0xf3, + 0x88, 0x04, 0x3e, 0x85, 0xd7, 0x05, 0x89, 0xfa, 0x77, 0x05, 0x89, 0xd3, + 0xd3, 0xfa, 0x77, 0x00, 0x00, 0x01, 0x00, 0x6a, 0xff, 0x29, 0x03, 0xf8, + 0x05, 0x85, 0x00, 0x0b, 0x00, 0x3d, 0x40, 0x13, 0x09, 0x01, 0x02, 0x02, + 0x08, 0x07, 0x03, 0x08, 0x08, 0x05, 0x03, 0x01, 0x00, 0x08, 0x00, 0x05, + 0x53, 0x03, 0x07, 0xb8, 0x01, 0x02, 0xb3, 0x04, 0x53, 0x01, 0x09, 0xb8, + 0x01, 0x06, 0xb1, 0x00, 0x59, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, + 0x3f, 0x12, 0x39, 0x01, 0x2f, 0x32, 0x32, 0xc4, 0x39, 0x2f, 0x11, 0x33, + 0x11, 0x33, 0x33, 0x11, 0x33, 0x31, 0x30, 0x17, 0x35, 0x01, 0x01, 0x35, + 0x21, 0x15, 0x21, 0x01, 0x01, 0x21, 0x15, 0x6a, 0x01, 0xde, 0xfe, 0x39, + 0x03, 0x5a, 0xfd, 0xcf, 0x01, 0xb2, 0xfe, 0x29, 0x02, 0x73, 0xd7, 0xb4, + 0x02, 0x89, 0x02, 0x67, 0xb8, 0xc7, 0xfd, 0xb3, 0xfd, 0x83, 0xcb, 0x00, + 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x04, 0x31, 0x05, 0x1b, 0x00, 0x05, + 0x00, 0x09, 0x00, 0x1f, 0xbc, 0x00, 0x05, 0x02, 0x21, 0x00, 0x09, 0x00, + 0x07, 0x02, 0x22, 0xb6, 0x02, 0x06, 0x08, 0x03, 0x41, 0x00, 0x43, 0x00, + 0x3f, 0x3f, 0x39, 0x39, 0x01, 0x2f, 0xed, 0xd4, 0xed, 0x31, 0x30, 0x21, + 0x21, 0x01, 0x01, 0x21, 0x01, 0x01, 0x03, 0x13, 0x13, 0x02, 0xb0, 0xff, + 0x00, 0xfe, 0x85, 0x01, 0x81, 0x01, 0x00, 0x01, 0x7b, 0xfd, 0xfc, 0xe5, + 0xf1, 0xe6, 0x02, 0x89, 0x02, 0x92, 0xfd, 0x76, 0x01, 0x9a, 0xfe, 0x73, + 0xfe, 0x52, 0x01, 0x8d, 0x00, 0x04, 0x00, 0x28, 0xff, 0x9c, 0x04, 0x3e, + 0x05, 0x8c, 0x00, 0x03, 0x00, 0x07, 0x00, 0x33, 0x00, 0x37, 0x01, 0x14, + 0xb3, 0x37, 0x34, 0x35, 0x36, 0xb8, 0xff, 0xff, 0x40, 0x33, 0x00, 0x00, + 0x5c, 0x37, 0x01, 0x35, 0x35, 0x06, 0x01, 0x37, 0x36, 0x34, 0x35, 0x36, + 0x33, 0x2f, 0x2b, 0x27, 0x24, 0x31, 0x2d, 0x29, 0x25, 0x24, 0x0a, 0x22, + 0x24, 0x0b, 0x1f, 0x1d, 0x10, 0x14, 0x18, 0x1c, 0x1d, 0x0e, 0x12, 0x16, + 0x1a, 0x1d, 0x06, 0x05, 0x01, 0x40, 0x02, 0x01, 0x00, 0x23, 0x21, 0x0a, + 0x08, 0xb8, 0xff, 0xff, 0x40, 0x26, 0x5a, 0x0c, 0x08, 0x1f, 0x23, 0x24, + 0x27, 0x28, 0x2b, 0x1d, 0x1a, 0x19, 0x16, 0x33, 0x30, 0x2f, 0x2c, 0x0e, + 0x11, 0x12, 0x15, 0x23, 0x2b, 0x16, 0x2c, 0x15, 0x15, 0x2c, 0x16, 0x2b, + 0x23, 0x05, 0x02, 0x08, 0x07, 0x03, 0x06, 0x02, 0x00, 0x2f, 0xc4, 0xdd, + 0xc4, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x10, 0xdd, + 0xd6, 0xcd, 0x10, 0xdd, 0xd6, 0xcd, 0x10, 0xdd, 0xd6, 0xcd, 0x10, 0xdd, + 0xd6, 0xcd, 0x10, 0xc4, 0x10, 0xc4, 0x2b, 0x01, 0x18, 0x2f, 0x1a, 0xcd, + 0x2f, 0xcd, 0x2f, 0xd4, 0xd4, 0xd4, 0xc4, 0x10, 0xdd, 0xd4, 0xd4, 0xc4, + 0x10, 0xdd, 0xc5, 0x2f, 0xdd, 0xc4, 0x10, 0xdd, 0xd4, 0xd4, 0xc4, 0x10, + 0xd4, 0xd4, 0xd4, 0xc4, 0x00, 0x2f, 0x10, 0xc1, 0xc1, 0xc1, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0x11, 0x39, 0x2b, 0x31, 0x30, 0xb9, 0x20, 0x00, 0x00, + 0x40, 0x88, 0x54, 0x58, 0xb0, 0x03, 0xb0, 0x00, 0x20, 0x8a, 0x23, 0x61, + 0xb0, 0x01, 0x60, 0x23, 0x20, 0x20, 0x01, 0xb0, 0x00, 0x48, 0x00, 0xb0, + 0x00, 0x48, 0xb0, 0x01, 0x60, 0x23, 0xb0, 0x01, 0x61, 0x20, 0xb8, 0xff, + 0xe9, 0x23, 0x78, 0x59, 0xb9, 0x20, 0x00, 0x00, 0x40, 0x88, 0x54, 0x58, + 0xb0, 0x07, 0xb0, 0x04, 0x20, 0x8a, 0x23, 0x61, 0xb0, 0x01, 0x60, 0x23, + 0x20, 0x20, 0x01, 0xb0, 0x00, 0x48, 0x00, 0xb0, 0x00, 0x48, 0xb0, 0x01, + 0x60, 0x23, 0xb0, 0x01, 0x61, 0x20, 0xb8, 0xff, 0xe9, 0x23, 0x78, 0x59, + 0x13, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x01, 0x33, 0x11, 0x21, + 0x11, 0x33, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, + 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x23, 0x11, 0x21, 0x11, 0x23, + 0x35, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, + 0x35, 0x23, 0x35, 0x33, 0x13, 0x13, 0x07, 0x03, 0xfa, 0x82, 0x03, 0x76, + 0x82, 0xfd, 0x8e, 0x82, 0x01, 0x72, 0x7e, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, + 0xd2, 0xd2, 0xd2, 0x82, 0xfe, 0x92, 0x82, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, + 0xd2, 0xd2, 0xd2, 0xe6, 0xf6, 0x50, 0xf6, 0x01, 0x2c, 0xfe, 0xd4, 0x01, + 0x2c, 0xfe, 0xd4, 0x01, 0x2c, 0x04, 0x60, 0xfe, 0x60, 0x01, 0xa0, 0x96, + 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x96, 0x01, 0xe4, 0xfe, 0x1c, + 0x96, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0xfc, 0x72, 0xfe, 0x7a, + 0x46, 0x01, 0x85, 0x00, 0x00, 0x01, 0x01, 0x9c, 0x04, 0x76, 0x03, 0x0f, + 0x06, 0x64, 0x00, 0x16, 0x00, 0x45, 0xb9, 0x00, 0x03, 0x01, 0x55, 0xb3, + 0x06, 0x06, 0x11, 0x0a, 0xbb, 0x01, 0xb7, 0x00, 0x00, 0x00, 0x06, 0xff, + 0xe8, 0x40, 0x1b, 0x0b, 0x0e, 0x48, 0x06, 0x90, 0x03, 0x40, 0x09, 0x0e, + 0x48, 0x03, 0x03, 0x05, 0x10, 0xa2, 0x11, 0x70, 0x05, 0xa0, 0x05, 0xc0, + 0x05, 0x03, 0x2f, 0x05, 0x01, 0x05, 0x00, 0x2f, 0x5d, 0x5d, 0xd4, 0xe1, + 0x12, 0x39, 0x2f, 0x2b, 0xe1, 0x2b, 0x01, 0x2f, 0xe1, 0xcd, 0x39, 0x2f, + 0xed, 0x31, 0x30, 0x01, 0x14, 0x06, 0x07, 0x07, 0x23, 0x27, 0x33, 0x32, + 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x1e, 0x02, + 0x03, 0x0f, 0x5f, 0x5e, 0x11, 0x72, 0x13, 0x32, 0x28, 0x20, 0x15, 0x26, + 0x35, 0x20, 0x0a, 0x11, 0x5d, 0x85, 0x57, 0x29, 0x05, 0x7a, 0x55, 0x5b, + 0x05, 0x4f, 0xc6, 0x26, 0x18, 0x10, 0x1d, 0x15, 0x0d, 0x9b, 0x2b, 0x44, + 0x53, 0x00, 0x00, 0x01, 0x01, 0x9c, 0x05, 0x9b, 0x03, 0x0f, 0x07, 0x89, + 0x00, 0x16, 0x00, 0x58, 0xb9, 0x00, 0x03, 0x01, 0x55, 0xb3, 0x06, 0x06, + 0x11, 0x0a, 0xbb, 0x01, 0xb7, 0x00, 0x00, 0x00, 0x06, 0xff, 0xe0, 0x40, + 0x2b, 0x0b, 0x0f, 0x48, 0x06, 0x90, 0x7f, 0x03, 0x8f, 0x03, 0x9f, 0x03, + 0x03, 0x03, 0x40, 0x09, 0x0f, 0x48, 0x03, 0x03, 0x05, 0x10, 0xa2, 0x90, + 0x11, 0x01, 0x11, 0x72, 0x00, 0x05, 0xa0, 0x05, 0x02, 0x90, 0x05, 0xc0, + 0x05, 0xf0, 0x05, 0x03, 0x3f, 0x05, 0x01, 0x05, 0x00, 0x2f, 0x5d, 0x5d, + 0x71, 0x3f, 0x5d, 0xe1, 0x12, 0x39, 0x2f, 0x2b, 0x71, 0xe1, 0x2b, 0x01, + 0x2f, 0xe1, 0xcd, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x06, 0x07, + 0x07, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, + 0x35, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x0f, 0x5f, 0x5e, 0x11, 0x72, 0x13, + 0x32, 0x28, 0x20, 0x15, 0x26, 0x35, 0x20, 0x0a, 0x11, 0x5d, 0x85, 0x57, + 0x29, 0x06, 0x9f, 0x55, 0x5b, 0x05, 0x4f, 0xc6, 0x26, 0x18, 0x10, 0x1d, + 0x15, 0x0d, 0x9b, 0x2b, 0x44, 0x53, 0x00, 0x02, 0x00, 0xf5, 0x04, 0x7f, + 0x04, 0xb0, 0x05, 0xf7, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x5e, 0xb7, 0x0a, + 0x08, 0x08, 0x00, 0x01, 0x05, 0x02, 0x03, 0xb8, 0x01, 0x83, 0xb6, 0x40, + 0x04, 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0x83, 0x40, 0x1e, 0x40, + 0x00, 0x20, 0x02, 0x02, 0x18, 0x09, 0x16, 0x48, 0x09, 0x40, 0x08, 0x08, + 0x02, 0x05, 0x80, 0x01, 0x70, 0x04, 0x80, 0x04, 0xa0, 0x04, 0xc0, 0x04, + 0x04, 0x2f, 0x04, 0x01, 0x04, 0x00, 0x2f, 0x5d, 0x5d, 0x33, 0x1a, 0xcd, + 0x39, 0x39, 0x2f, 0x1a, 0xcd, 0x2b, 0x01, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, + 0x18, 0xed, 0x12, 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, + 0x39, 0x11, 0x12, 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x23, 0x27, 0x07, + 0x23, 0x37, 0x33, 0x05, 0x23, 0x37, 0x21, 0x03, 0x75, 0xc7, 0x7b, 0x7b, + 0xc3, 0xda, 0xcd, 0x01, 0x1b, 0xb8, 0x90, 0x01, 0x21, 0x04, 0x7f, 0x5e, + 0x5e, 0xe1, 0x4a, 0xe1, 0x00, 0x02, 0x00, 0xf5, 0x05, 0xa6, 0x04, 0xb0, + 0x07, 0x1e, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x6c, 0xb7, 0x0a, 0x08, 0x08, + 0x00, 0x01, 0x05, 0x02, 0x03, 0xb8, 0x01, 0x83, 0xb6, 0x40, 0x04, 0x02, + 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0x83, 0x40, 0x29, 0x40, 0x00, 0x20, + 0x02, 0x02, 0x18, 0x09, 0x16, 0x48, 0x4f, 0x09, 0x01, 0x09, 0x40, 0x12, + 0x16, 0x48, 0x09, 0x40, 0x08, 0x08, 0x02, 0x05, 0x40, 0x12, 0x16, 0x48, + 0x05, 0x80, 0x01, 0x90, 0x04, 0xc0, 0x04, 0xd0, 0x04, 0x03, 0x3f, 0x04, + 0x01, 0x04, 0x00, 0x2f, 0x5d, 0x5d, 0x33, 0x1a, 0xcd, 0x2b, 0x39, 0x39, + 0x2f, 0x1a, 0xcd, 0x2b, 0x5d, 0x2b, 0x01, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, + 0x18, 0xed, 0x12, 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, + 0x39, 0x11, 0x12, 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x23, 0x27, 0x07, + 0x23, 0x37, 0x33, 0x05, 0x23, 0x37, 0x21, 0x03, 0x75, 0xc7, 0x7b, 0x7b, + 0xc3, 0xda, 0xcd, 0x01, 0x1b, 0xb8, 0x90, 0x01, 0x21, 0x05, 0xa6, 0x5e, + 0x5e, 0xe1, 0x4a, 0xe1, 0x00, 0x02, 0xff, 0xb4, 0x04, 0x7f, 0x03, 0x6f, + 0x05, 0xf7, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x5c, 0xb6, 0x07, 0x09, 0x09, + 0x05, 0x00, 0x04, 0x05, 0xb8, 0x01, 0x83, 0xb6, 0x40, 0x06, 0x04, 0x20, + 0x01, 0x04, 0x03, 0xb8, 0x01, 0x83, 0x40, 0x1e, 0x40, 0x02, 0x20, 0x04, + 0x04, 0x18, 0x09, 0x16, 0x48, 0x08, 0x40, 0x09, 0x09, 0x04, 0x00, 0x80, + 0x02, 0x70, 0x06, 0x80, 0x06, 0xa0, 0x06, 0xc0, 0x06, 0x04, 0x2f, 0x06, + 0x01, 0x06, 0x00, 0x2f, 0x5d, 0x5d, 0x33, 0x1a, 0xcd, 0x39, 0x39, 0x2f, + 0x1a, 0xcd, 0x2b, 0x01, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, 0x18, 0xed, 0x12, + 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, 0x12, 0x39, + 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x33, 0x17, 0x23, 0x27, 0x07, 0x23, 0x01, + 0x21, 0x17, 0x23, 0x01, 0xc8, 0xcd, 0xda, 0xc3, 0x7b, 0x7b, 0xc7, 0xfe, + 0xc5, 0x01, 0x21, 0x90, 0xb8, 0x05, 0x60, 0xe1, 0x5e, 0x5e, 0x01, 0x78, + 0xe1, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x05, 0xa6, 0x03, 0x6f, 0x07, 0x1e, + 0x00, 0x06, 0x00, 0x0a, 0x00, 0x6a, 0xb6, 0x07, 0x09, 0x09, 0x05, 0x00, + 0x04, 0x05, 0xb8, 0x01, 0x83, 0xb6, 0x40, 0x06, 0x04, 0x20, 0x01, 0x04, + 0x03, 0xb8, 0x01, 0x83, 0x40, 0x29, 0x40, 0x02, 0x20, 0x04, 0x04, 0x18, + 0x09, 0x16, 0x48, 0x4f, 0x08, 0x01, 0x08, 0x40, 0x12, 0x16, 0x48, 0x08, + 0x40, 0x09, 0x09, 0x04, 0x00, 0x40, 0x12, 0x16, 0x48, 0x00, 0x80, 0x02, + 0x90, 0x06, 0xc0, 0x06, 0xd0, 0x06, 0x03, 0x3f, 0x06, 0x01, 0x06, 0x00, + 0x2f, 0x5d, 0x5d, 0x33, 0x1a, 0xcd, 0x2b, 0x39, 0x39, 0x2f, 0x1a, 0xcd, + 0x2b, 0x5d, 0x2b, 0x01, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, 0x18, 0xed, 0x12, + 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, 0x12, 0x39, + 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x33, 0x17, 0x23, 0x27, 0x07, 0x23, 0x01, + 0x21, 0x17, 0x23, 0x01, 0xc8, 0xcd, 0xda, 0xc3, 0x7b, 0x7b, 0xc7, 0xfe, + 0xc5, 0x01, 0x21, 0x90, 0xb8, 0x06, 0x87, 0xe1, 0x5e, 0x5e, 0x01, 0x78, + 0xe1, 0x00, 0x00, 0x02, 0x00, 0xf5, 0x04, 0x7f, 0x03, 0xf4, 0x06, 0x7e, + 0x00, 0x06, 0x00, 0x1b, 0x00, 0xa3, 0xb9, 0x00, 0x0a, 0x01, 0x51, 0xb3, + 0x0d, 0x0d, 0x16, 0x11, 0xb8, 0x01, 0x5a, 0x40, 0x0a, 0x40, 0x07, 0x80, + 0x16, 0x16, 0x00, 0x01, 0x05, 0x02, 0x03, 0xb8, 0x01, 0x83, 0xb6, 0x40, + 0x04, 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0x83, 0x40, 0x14, 0x40, + 0x00, 0x20, 0x02, 0x02, 0x18, 0x09, 0x16, 0x48, 0x05, 0x0d, 0x01, 0x35, + 0x0d, 0x45, 0x0d, 0x55, 0x0d, 0x03, 0x0d, 0xb8, 0xff, 0xe8, 0x40, 0x2a, + 0x1c, 0x1f, 0x48, 0x0a, 0x20, 0x0f, 0x16, 0x48, 0x0d, 0x8c, 0x0f, 0x0a, + 0x1f, 0x0a, 0x2f, 0x0a, 0x03, 0x0a, 0x0a, 0x0c, 0x15, 0x8d, 0x16, 0x0c, + 0x0c, 0x02, 0x05, 0x80, 0x01, 0x70, 0x04, 0x80, 0x04, 0xa0, 0x04, 0xc0, + 0x04, 0x04, 0x2f, 0x04, 0x01, 0x04, 0x00, 0x2f, 0x5d, 0x5d, 0x33, 0x1a, + 0xcd, 0x39, 0x39, 0x2f, 0xdc, 0xe1, 0x12, 0x39, 0x2f, 0x5d, 0xe1, 0x2b, + 0x2b, 0x5d, 0x71, 0x2b, 0x01, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, 0x18, 0xed, + 0x12, 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, 0x11, + 0x12, 0x39, 0x2f, 0x1a, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x10, 0xed, 0x31, + 0x30, 0x01, 0x23, 0x27, 0x07, 0x23, 0x37, 0x33, 0x25, 0x14, 0x06, 0x07, + 0x07, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, + 0x33, 0x32, 0x1e, 0x02, 0x03, 0x75, 0xc7, 0x7b, 0x7b, 0xc3, 0xda, 0xcd, + 0x01, 0x58, 0x47, 0x43, 0x0d, 0x53, 0x0e, 0x25, 0x1d, 0x17, 0x3b, 0x2e, + 0x07, 0x0c, 0x44, 0x62, 0x3f, 0x1e, 0x04, 0x7f, 0x5e, 0x5e, 0xe1, 0x74, + 0x3f, 0x42, 0x03, 0x3a, 0x90, 0x1c, 0x12, 0x17, 0x22, 0x71, 0x1f, 0x32, + 0x3c, 0x00, 0x00, 0x02, 0x00, 0xf5, 0x05, 0xa6, 0x03, 0xf4, 0x07, 0x9e, + 0x00, 0x06, 0x00, 0x1b, 0x00, 0xd4, 0xb9, 0x00, 0x0a, 0x01, 0x51, 0xb3, + 0x0d, 0x0d, 0x16, 0x11, 0xb8, 0x01, 0x5a, 0x40, 0x0a, 0x40, 0x07, 0x80, + 0x16, 0x16, 0x00, 0x01, 0x05, 0x02, 0x03, 0xb8, 0x01, 0x83, 0xb6, 0x40, + 0x04, 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0x83, 0x40, 0x15, 0x40, + 0x00, 0x20, 0x02, 0x02, 0x18, 0x09, 0x16, 0x48, 0x05, 0x0d, 0x01, 0x35, + 0x0d, 0x45, 0x0d, 0x55, 0x0d, 0x03, 0x03, 0x0d, 0xb8, 0xff, 0xe8, 0x40, + 0x43, 0x1c, 0x1f, 0x48, 0x0a, 0x20, 0x0f, 0x16, 0x48, 0x0d, 0x8c, 0x64, + 0x0a, 0x01, 0x1b, 0x0a, 0x2b, 0x0a, 0x02, 0x0a, 0x0a, 0x0c, 0x15, 0x8d, + 0x16, 0x72, 0x0c, 0x0c, 0x02, 0x05, 0x40, 0x12, 0x16, 0x48, 0x05, 0x80, + 0x01, 0x70, 0x04, 0xa0, 0x04, 0x02, 0x02, 0x00, 0x04, 0x20, 0x04, 0x30, + 0x04, 0x80, 0x04, 0x90, 0x04, 0x05, 0x10, 0x04, 0x20, 0x04, 0x90, 0x04, + 0xc0, 0x04, 0xd0, 0x04, 0xf0, 0x04, 0x06, 0x04, 0xb8, 0xff, 0xc0, 0xb3, + 0x31, 0x34, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x27, 0x48, 0x04, + 0x00, 0x2f, 0x2b, 0x2b, 0x5d, 0x71, 0x5f, 0x71, 0x33, 0x1a, 0xcd, 0x2b, + 0x39, 0x39, 0x2f, 0x3f, 0xe1, 0x12, 0x39, 0x2f, 0x5d, 0x5d, 0xe1, 0x2b, + 0x2b, 0x5f, 0x5d, 0x71, 0x2b, 0x01, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, 0x18, + 0xed, 0x12, 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, + 0x11, 0x12, 0x39, 0x2f, 0x1a, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x10, 0xed, + 0x31, 0x30, 0x01, 0x23, 0x27, 0x07, 0x23, 0x37, 0x33, 0x25, 0x14, 0x06, + 0x07, 0x07, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, + 0x35, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x75, 0xc7, 0x7b, 0x7b, 0xc3, 0xda, + 0xcd, 0x01, 0x58, 0x47, 0x43, 0x0d, 0x53, 0x0e, 0x25, 0x1d, 0x17, 0x3b, + 0x2e, 0x07, 0x0c, 0x44, 0x62, 0x3f, 0x1e, 0x05, 0xa6, 0x5e, 0x5e, 0xe1, + 0x6d, 0x3f, 0x42, 0x03, 0x36, 0x8c, 0x1c, 0x12, 0x17, 0x22, 0x71, 0x1f, + 0x32, 0x3c, 0x00, 0x02, 0x00, 0xce, 0x04, 0x7f, 0x03, 0xc0, 0x06, 0x79, + 0x00, 0x06, 0x00, 0x1e, 0x00, 0x70, 0xb2, 0x05, 0x02, 0x03, 0xb8, 0x01, + 0x83, 0xb6, 0x40, 0x04, 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0x83, + 0x40, 0x30, 0x40, 0x00, 0x20, 0x02, 0x07, 0x13, 0x02, 0x18, 0x09, 0x16, + 0x48, 0x07, 0x1e, 0x16, 0x13, 0x12, 0x1b, 0xa5, 0x0a, 0x16, 0xa5, 0x00, + 0x0f, 0x10, 0x0f, 0x20, 0x0f, 0x03, 0x0f, 0x40, 0x0a, 0x02, 0x05, 0x80, + 0x01, 0x70, 0x04, 0x80, 0x04, 0xa0, 0x04, 0xc0, 0x04, 0x04, 0x2f, 0x04, + 0x01, 0x04, 0x00, 0x2f, 0x5d, 0x5d, 0x33, 0x1a, 0xdd, 0x39, 0xd6, 0x1a, + 0xdc, 0x5d, 0xed, 0x10, 0xed, 0xd4, 0xcd, 0x10, 0xd4, 0xcd, 0x2b, 0x01, + 0x2f, 0xcd, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, 0x1a, + 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, 0x31, 0x30, 0x01, 0x23, + 0x27, 0x07, 0x23, 0x37, 0x33, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x03, 0x75, 0xc7, 0x7b, 0x7b, 0xc3, 0xda, 0xcd, 0x01, + 0x24, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, + 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, + 0x04, 0x7f, 0x5e, 0x5e, 0xe1, 0xb2, 0x42, 0x3e, 0x1c, 0x21, 0x1c, 0x25, + 0x24, 0x58, 0x41, 0x3e, 0x1c, 0x20, 0x1d, 0x27, 0x22, 0x00, 0x00, 0x02, + 0x00, 0xcd, 0x05, 0xa6, 0x03, 0xbf, 0x07, 0x9d, 0x00, 0x06, 0x00, 0x1e, + 0x00, 0xa8, 0xb2, 0x05, 0x02, 0x03, 0xb8, 0x01, 0x83, 0xb6, 0x40, 0x04, + 0x02, 0x20, 0x06, 0x02, 0x01, 0xb8, 0x01, 0x83, 0x40, 0x48, 0x40, 0x00, + 0x20, 0x02, 0x07, 0x13, 0x02, 0x18, 0x09, 0x16, 0x48, 0x07, 0x1e, 0x16, + 0x13, 0x12, 0x0a, 0xa5, 0x1b, 0x0f, 0xa5, 0x0f, 0x1b, 0x01, 0x40, 0xaf, + 0x1b, 0x01, 0x1b, 0x40, 0x09, 0x0f, 0x48, 0x1b, 0x40, 0x16, 0x72, 0x02, + 0xe0, 0x05, 0x01, 0x05, 0x80, 0x01, 0x00, 0x04, 0x10, 0x04, 0x02, 0x00, + 0x04, 0x20, 0x04, 0x30, 0x04, 0x70, 0x04, 0x04, 0x10, 0x04, 0x20, 0x04, + 0x90, 0x04, 0xc0, 0x04, 0xd0, 0x04, 0xf0, 0x04, 0x06, 0x04, 0xb8, 0xff, + 0xc0, 0xb3, 0x3a, 0x40, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x31, 0x38, + 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x23, 0x27, 0x48, 0x04, 0x00, 0x2f, + 0x2b, 0x2b, 0x2b, 0x5d, 0x71, 0x72, 0x33, 0x1a, 0xcd, 0x5d, 0x39, 0x3f, + 0x1a, 0xcc, 0x2b, 0x71, 0x5e, 0x5d, 0xed, 0x10, 0xfd, 0xd4, 0xcd, 0x10, + 0xd4, 0xcd, 0x2b, 0x01, 0x2f, 0xcd, 0x19, 0x2f, 0x1a, 0xdd, 0x1a, 0x18, + 0xed, 0x12, 0x39, 0x1a, 0x19, 0x10, 0xdd, 0x1a, 0x18, 0xed, 0x12, 0x39, + 0x31, 0x30, 0x01, 0x23, 0x27, 0x07, 0x23, 0x37, 0x33, 0x25, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0x75, 0xc7, 0x7b, 0x7b, + 0xc3, 0xda, 0xcd, 0x01, 0x23, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, + 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, + 0x20, 0x25, 0x38, 0x1b, 0x05, 0xa6, 0x5e, 0x5e, 0xe1, 0xaf, 0x42, 0x3e, + 0x1c, 0x21, 0x1c, 0x25, 0x24, 0x58, 0x41, 0x3e, 0x1c, 0x20, 0x1d, 0x27, + 0x22, 0x00, 0x00, 0x02, 0x01, 0x0d, 0x04, 0x71, 0x03, 0x86, 0x06, 0x78, + 0x00, 0x13, 0x00, 0x17, 0x00, 0x33, 0xb4, 0x17, 0x15, 0x15, 0x0b, 0x00, + 0xbb, 0x01, 0x74, 0x00, 0x13, 0x00, 0x0a, 0x01, 0x74, 0x40, 0x0e, 0x5f, + 0x0b, 0x01, 0x0b, 0x16, 0x15, 0x00, 0x0b, 0x10, 0xc9, 0x2f, 0x05, 0x01, + 0x05, 0x00, 0x2f, 0x5d, 0xfd, 0xde, 0x32, 0xd6, 0xcd, 0x01, 0x2f, 0x5d, + 0xed, 0xd6, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x35, 0x27, 0x23, 0x37, 0x21, 0x03, 0x59, 0x24, 0x49, 0x70, 0x4c, + 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, 0x3c, 0x3b, 0x1d, + 0xb8, 0x90, 0x01, 0x21, 0x05, 0x6f, 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, + 0x5c, 0x30, 0x11, 0x21, 0x1b, 0x11, 0x36, 0x28, 0x28, 0xe1, 0x00, 0x02, + 0x01, 0x0d, 0x05, 0x91, 0x03, 0x86, 0x07, 0x98, 0x00, 0x03, 0x00, 0x17, + 0x00, 0x57, 0xb4, 0x03, 0x01, 0x01, 0x0e, 0x17, 0xbb, 0x01, 0x74, 0x00, + 0x04, 0x00, 0x0f, 0x01, 0x74, 0x40, 0x24, 0x5f, 0x0e, 0x01, 0x0e, 0x02, + 0x72, 0x0f, 0x01, 0x01, 0x01, 0x04, 0x00, 0x0e, 0x10, 0x0e, 0x02, 0x0e, + 0x80, 0x14, 0x01, 0x14, 0xc9, 0x6f, 0x09, 0x01, 0x00, 0x09, 0x01, 0x20, + 0x09, 0x90, 0x09, 0xc0, 0x09, 0x03, 0x09, 0xb8, 0xff, 0xc0, 0xb3, 0x1e, + 0x25, 0x48, 0x09, 0x00, 0x2f, 0x2b, 0x5d, 0x72, 0x5d, 0xfd, 0x5d, 0xdc, + 0x5d, 0x32, 0xc6, 0x71, 0x3f, 0x01, 0x2f, 0x5d, 0xed, 0xd4, 0xed, 0x12, + 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x23, 0x37, 0x21, 0x03, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x35, 0x02, 0x8d, 0xb8, 0x90, 0x01, 0x21, 0x2d, 0x24, 0x49, 0x70, + 0x4c, 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, 0x3c, 0x3b, + 0x06, 0xb7, 0xe1, 0xfe, 0xf7, 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, 0x5c, + 0x30, 0x11, 0x21, 0x1b, 0x11, 0x36, 0x28, 0x00, 0x00, 0x02, 0x00, 0xe2, + 0x04, 0x71, 0x03, 0x59, 0x06, 0x78, 0x00, 0x13, 0x00, 0x17, 0x00, 0x33, + 0xb4, 0x14, 0x16, 0x16, 0x0b, 0x00, 0xbb, 0x01, 0x74, 0x00, 0x13, 0x00, + 0x0a, 0x01, 0x74, 0x40, 0x0e, 0x5f, 0x0b, 0x01, 0x0b, 0x15, 0x16, 0x00, + 0x0b, 0x10, 0xc9, 0x2f, 0x05, 0x01, 0x05, 0x00, 0x2f, 0x5d, 0xfd, 0xde, + 0x32, 0xd6, 0xcd, 0x01, 0x2f, 0x5d, 0xed, 0xd6, 0xed, 0x12, 0x39, 0x2f, + 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x01, 0x21, 0x17, 0x23, + 0x03, 0x59, 0x24, 0x49, 0x70, 0x4c, 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, + 0x1c, 0x2d, 0x20, 0x3c, 0x3b, 0xfe, 0x38, 0x01, 0x21, 0x90, 0xb8, 0x05, + 0x6f, 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, 0x5c, 0x30, 0x11, 0x21, 0x1b, + 0x11, 0x36, 0x28, 0x01, 0x09, 0xe1, 0x00, 0x02, 0x00, 0xe2, 0x05, 0x91, + 0x03, 0x59, 0x07, 0x98, 0x00, 0x03, 0x00, 0x17, 0x00, 0x57, 0xb4, 0x00, + 0x02, 0x02, 0x0e, 0x17, 0xbb, 0x01, 0x74, 0x00, 0x04, 0x00, 0x0f, 0x01, + 0x74, 0x40, 0x24, 0x5f, 0x0e, 0x01, 0x0e, 0x01, 0x72, 0x0f, 0x02, 0x01, + 0x02, 0x04, 0x00, 0x0e, 0x10, 0x0e, 0x02, 0x0e, 0x80, 0x14, 0x01, 0x14, + 0xc9, 0x6f, 0x09, 0x01, 0x00, 0x09, 0x01, 0x20, 0x09, 0x90, 0x09, 0xc0, + 0x09, 0x03, 0x09, 0xb8, 0xff, 0xc0, 0xb3, 0x1e, 0x25, 0x48, 0x09, 0x00, + 0x2f, 0x2b, 0x5d, 0x72, 0x5d, 0xfd, 0x5d, 0xdc, 0x5d, 0x32, 0xc6, 0x71, + 0x3f, 0x01, 0x2f, 0x5d, 0xed, 0xd4, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x31, + 0x30, 0x13, 0x21, 0x17, 0x23, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0xe2, 0x01, + 0x21, 0x90, 0xb8, 0x01, 0x7e, 0x24, 0x49, 0x70, 0x4c, 0x4c, 0x6e, 0x47, + 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, 0x3c, 0x3b, 0x07, 0x98, 0xe1, 0x28, + 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, 0x5c, 0x30, 0x11, 0x21, 0x1b, 0x11, + 0x36, 0x28, 0x00, 0x02, 0x01, 0x0d, 0x04, 0x71, 0x03, 0x59, 0x06, 0xed, + 0x00, 0x13, 0x00, 0x28, 0x00, 0x86, 0xb4, 0x17, 0x1a, 0x1a, 0x23, 0x1e, + 0xb8, 0x01, 0x5a, 0xb6, 0x40, 0x14, 0x80, 0x23, 0x23, 0x0b, 0x00, 0xbb, + 0x01, 0x74, 0x00, 0x13, 0x00, 0x0a, 0x01, 0x74, 0x40, 0x0b, 0x40, 0x5f, + 0x0b, 0x01, 0x0b, 0x66, 0x1a, 0x76, 0x1a, 0x02, 0x1a, 0xb8, 0xff, 0xf0, + 0xb3, 0x1c, 0x1f, 0x48, 0x1a, 0xb8, 0xff, 0xf0, 0x40, 0x29, 0x10, 0x13, + 0x48, 0x1a, 0x8c, 0x17, 0x20, 0x0e, 0x13, 0x48, 0x17, 0x40, 0x09, 0x0d, + 0x48, 0x17, 0x17, 0x19, 0x22, 0x8e, 0x5f, 0x23, 0x01, 0x23, 0x80, 0x19, + 0x00, 0x00, 0x0b, 0x10, 0x0b, 0x20, 0x0b, 0x03, 0x0b, 0x10, 0xc9, 0x2f, + 0x05, 0x01, 0x05, 0x00, 0x2f, 0x5d, 0xfd, 0xde, 0x5d, 0x32, 0xd6, 0x1a, + 0xdc, 0x5d, 0xe1, 0x12, 0x39, 0x2f, 0x2b, 0x2b, 0xe1, 0x2b, 0x2b, 0x72, + 0x01, 0x2f, 0x5d, 0x1a, 0xed, 0xd6, 0xed, 0x12, 0x39, 0x2f, 0x1a, 0xdd, + 0x1a, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x35, 0x37, 0x14, 0x06, 0x07, 0x07, 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, + 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x59, 0x24, + 0x49, 0x70, 0x4c, 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, + 0x3c, 0x3b, 0x37, 0x47, 0x43, 0x0d, 0x53, 0x0e, 0x25, 0x1d, 0x17, 0x3b, + 0x2e, 0x07, 0x0c, 0x44, 0x62, 0x3f, 0x1e, 0x05, 0x6f, 0x32, 0x5c, 0x46, + 0x2a, 0x2b, 0x47, 0x5c, 0x30, 0x11, 0x21, 0x1b, 0x11, 0x36, 0x28, 0xd4, + 0x3f, 0x42, 0x03, 0x3a, 0x90, 0x1c, 0x12, 0x17, 0x22, 0x71, 0x1f, 0x32, + 0x3c, 0x00, 0x00, 0x02, 0x01, 0x0d, 0x05, 0x91, 0x03, 0x59, 0x07, 0xb5, + 0x00, 0x13, 0x00, 0x28, 0x01, 0x10, 0x40, 0x0c, 0xaa, 0x17, 0xba, 0x17, + 0xca, 0x17, 0x03, 0x17, 0x1a, 0x1a, 0x23, 0x1e, 0xb8, 0x01, 0x5a, 0xb6, + 0x40, 0x14, 0x80, 0x23, 0x23, 0x0b, 0x00, 0xbb, 0x01, 0x74, 0x00, 0x13, + 0x00, 0x0a, 0x01, 0x74, 0x40, 0x0a, 0x0f, 0x0b, 0x01, 0x0e, 0x0b, 0x23, + 0x1a, 0x01, 0x03, 0x1a, 0xb8, 0xff, 0xd8, 0xb3, 0x2f, 0x39, 0x48, 0x1a, + 0xb8, 0xff, 0xd8, 0xb3, 0x23, 0x29, 0x48, 0x1a, 0xb8, 0xff, 0xe8, 0x40, + 0x29, 0x1b, 0x22, 0x48, 0x1a, 0x8c, 0x17, 0x40, 0x0a, 0x17, 0x48, 0x17, + 0x17, 0x19, 0x29, 0x22, 0x01, 0x09, 0x22, 0x01, 0x2f, 0x22, 0x20, 0x23, + 0x29, 0x48, 0x22, 0x18, 0x1c, 0x22, 0x48, 0x22, 0x8e, 0x23, 0x72, 0x04, + 0x19, 0x14, 0x19, 0x02, 0x3f, 0x19, 0xb8, 0xff, 0xc0, 0xb5, 0x2f, 0x3c, + 0x48, 0x19, 0x00, 0x0b, 0xb8, 0xff, 0xc0, 0x40, 0x0d, 0x09, 0x0c, 0x48, + 0x0b, 0x34, 0x10, 0x44, 0x10, 0x02, 0x84, 0x10, 0x01, 0x10, 0xb8, 0xff, + 0xc0, 0xb5, 0x29, 0x2d, 0x48, 0x10, 0xc9, 0x05, 0xb8, 0xff, 0x80, 0x40, + 0x25, 0x34, 0x41, 0x48, 0xa4, 0x05, 0x01, 0x50, 0x05, 0x60, 0x05, 0x80, + 0x05, 0x90, 0x05, 0x04, 0x14, 0x05, 0x24, 0x05, 0x34, 0x05, 0x03, 0x00, + 0x05, 0x01, 0x02, 0x20, 0x05, 0x01, 0x90, 0x05, 0xc0, 0x05, 0xf0, 0x05, + 0x03, 0x05, 0xb8, 0xff, 0xc0, 0x40, 0x10, 0x1e, 0x28, 0x48, 0x6f, 0x05, + 0x01, 0x10, 0x05, 0x20, 0x05, 0x40, 0x05, 0x50, 0x05, 0x04, 0x05, 0x00, + 0x2f, 0x5d, 0x5d, 0x2b, 0x5d, 0x71, 0x5f, 0x72, 0x72, 0x72, 0x72, 0x2b, + 0xfd, 0x2b, 0x5d, 0x71, 0xde, 0x2b, 0x32, 0xc6, 0x2b, 0x5e, 0x5d, 0x3f, + 0xe1, 0x2b, 0x2b, 0x5e, 0x5d, 0x71, 0x12, 0x39, 0x2f, 0x2b, 0xe1, 0x2b, + 0x2b, 0x2b, 0x5f, 0x71, 0x01, 0x2f, 0x5e, 0x5d, 0xed, 0xd4, 0xed, 0x12, + 0x39, 0x2f, 0x1a, 0xdd, 0x1a, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x00, 0x5d, + 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x37, 0x14, 0x06, 0x07, 0x07, + 0x23, 0x27, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, + 0x32, 0x1e, 0x02, 0x03, 0x59, 0x24, 0x49, 0x70, 0x4c, 0x4c, 0x6e, 0x47, + 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, 0x3c, 0x3b, 0x39, 0x47, 0x43, 0x0d, + 0x54, 0x0f, 0x25, 0x1d, 0x17, 0x3b, 0x2e, 0x07, 0x0c, 0x45, 0x62, 0x40, + 0x1e, 0x06, 0x8f, 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, 0x5c, 0x30, 0x11, + 0x21, 0x1b, 0x11, 0x36, 0x28, 0x8e, 0x38, 0x3b, 0x03, 0x22, 0x6b, 0x18, + 0x0f, 0x14, 0x1c, 0x6e, 0x1c, 0x2c, 0x36, 0x00, 0x00, 0x02, 0x00, 0xba, + 0x04, 0x71, 0x03, 0xac, 0x06, 0x85, 0x00, 0x13, 0x00, 0x2b, 0x00, 0x49, + 0xb2, 0x14, 0x20, 0x00, 0xbb, 0x01, 0x74, 0x00, 0x13, 0x00, 0x0a, 0x01, + 0x74, 0x40, 0x1f, 0x5f, 0x0b, 0x01, 0x0b, 0x14, 0x2b, 0x23, 0x20, 0x1f, + 0x28, 0xa5, 0x17, 0x23, 0xa5, 0x00, 0x1c, 0x10, 0x1c, 0x20, 0x1c, 0x03, + 0x1c, 0x17, 0x00, 0x0b, 0x10, 0xc9, 0x2f, 0x05, 0x01, 0x05, 0x00, 0x2f, + 0x5d, 0xfd, 0xde, 0x32, 0xd6, 0xdc, 0x5d, 0xed, 0x10, 0xed, 0xd4, 0xcd, + 0x10, 0xd4, 0xcd, 0x01, 0x2f, 0x5d, 0xed, 0xd6, 0xed, 0x2f, 0xcd, 0x31, + 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x03, 0x59, 0x24, 0x49, 0x70, 0x4c, 0x4c, 0x6e, + 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2d, 0x20, 0x3c, 0x3b, 0x01, 0x02, 0x2a, + 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, + 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0x05, 0x6f, + 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, 0x5c, 0x30, 0x11, 0x21, 0x1b, 0x11, + 0x36, 0x28, 0xaf, 0x42, 0x3e, 0x1c, 0x21, 0x1c, 0x25, 0x24, 0x58, 0x41, + 0x3e, 0x1c, 0x20, 0x1d, 0x27, 0x22, 0x00, 0x02, 0x00, 0xba, 0x05, 0x91, + 0x03, 0xac, 0x07, 0xa0, 0x00, 0x13, 0x00, 0x2b, 0x00, 0xed, 0xb2, 0x14, + 0x20, 0x00, 0xbb, 0x01, 0x74, 0x00, 0x13, 0x00, 0x0a, 0x01, 0x74, 0x40, + 0x46, 0x0b, 0x0b, 0x01, 0x0e, 0x0b, 0x14, 0x2b, 0x23, 0x20, 0x1f, 0x3b, + 0x17, 0x4b, 0x17, 0x02, 0x5b, 0x17, 0x6b, 0x17, 0x02, 0x17, 0xa5, 0xab, + 0x28, 0xfb, 0x28, 0x02, 0x28, 0x40, 0x23, 0x28, 0x48, 0x28, 0x40, 0x09, + 0x0c, 0x48, 0x28, 0x3b, 0x1c, 0x4b, 0x1c, 0x02, 0x5b, 0x1c, 0x6b, 0x1c, + 0x02, 0x1c, 0xa5, 0x23, 0x72, 0x00, 0x0b, 0x84, 0x10, 0x94, 0x10, 0x02, + 0x04, 0x10, 0xb4, 0x10, 0xc4, 0x10, 0x03, 0x11, 0x10, 0xc9, 0x05, 0xb8, + 0xff, 0x80, 0x40, 0x54, 0x3f, 0x43, 0x48, 0x44, 0x05, 0x54, 0x05, 0x02, + 0x30, 0x05, 0x01, 0x24, 0x05, 0x01, 0x00, 0x05, 0x10, 0x05, 0x02, 0x39, + 0xe4, 0x05, 0xf4, 0x05, 0x02, 0xb0, 0x05, 0xc0, 0x05, 0xd0, 0x05, 0x03, + 0xa4, 0x05, 0x01, 0x90, 0x05, 0x01, 0x84, 0x05, 0x01, 0x50, 0x05, 0x60, + 0x05, 0x02, 0x44, 0x05, 0x01, 0x20, 0x05, 0x30, 0x05, 0x02, 0x14, 0x05, + 0x01, 0x00, 0x05, 0x01, 0x02, 0x20, 0x05, 0x50, 0x05, 0x60, 0x05, 0x03, + 0x10, 0x05, 0x20, 0x05, 0x40, 0x05, 0x50, 0x05, 0x90, 0x05, 0xc0, 0x05, + 0xf0, 0x05, 0x07, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x21, 0x28, 0x48, 0x05, + 0x00, 0x2f, 0x2b, 0x5d, 0x71, 0x5f, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, + 0x72, 0x72, 0x72, 0x72, 0x5e, 0x5d, 0x5d, 0x5d, 0x5d, 0x2b, 0xfd, 0x5e, + 0x5d, 0x71, 0xce, 0x32, 0x3f, 0xed, 0x5d, 0x71, 0xdc, 0x2b, 0x2b, 0x72, + 0xfd, 0x5d, 0x71, 0xd4, 0xcd, 0x10, 0xd4, 0xcd, 0x01, 0x2f, 0x5e, 0x5d, + 0xed, 0xd6, 0xed, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, + 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0x59, + 0x24, 0x49, 0x70, 0x4c, 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2d, + 0x20, 0x3c, 0x3b, 0x01, 0x02, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, + 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, + 0x20, 0x25, 0x38, 0x1b, 0x06, 0x8f, 0x32, 0x5c, 0x46, 0x2a, 0x2b, 0x47, + 0x5c, 0x30, 0x11, 0x21, 0x1b, 0x11, 0x36, 0x28, 0xaa, 0x42, 0x3e, 0x1c, + 0x21, 0x1c, 0x25, 0x24, 0x58, 0x41, 0x3e, 0x1c, 0x20, 0x1d, 0x27, 0x22, + 0x00, 0x01, 0x01, 0x98, 0xfe, 0x4d, 0x02, 0xd1, 0xff, 0x80, 0x00, 0x13, + 0x00, 0x1a, 0xb9, 0x00, 0x00, 0x02, 0x39, 0xb4, 0x0a, 0x30, 0x0f, 0x01, + 0x0f, 0xb8, 0x01, 0x47, 0xb1, 0x05, 0x56, 0x00, 0x3f, 0xed, 0x5d, 0x01, + 0x2f, 0xe1, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x02, 0xd1, 0x18, 0x2a, + 0x3a, 0x22, 0x20, 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x20, 0x20, 0x3a, + 0x2b, 0x19, 0xfe, 0xe6, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, 0x37, 0x20, + 0x20, 0x38, 0x2a, 0x18, 0x18, 0x2a, 0x38, 0x00, 0xff, 0xff, 0x00, 0x04, + 0xfe, 0x4d, 0x04, 0x62, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, + 0x04, 0x62, 0x07, 0x89, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xc6, 0x13, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, 0x04, 0xb0, + 0x07, 0x1e, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc8, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xb4, 0x00, 0x00, 0x04, 0x62, 0x07, 0x1e, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0xca, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, 0x07, 0x9e, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0xcc, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, 0x07, 0x9d, 0x02, 0x26, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xce, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x4d, 0x04, 0x62, 0x06, 0x87, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x26, 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, 0x07, 0x98, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd0, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x04, 0x00, 0x00, 0x04, 0x62, 0x07, 0x98, 0x02, 0x26, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd2, 0x00, 0x00, 0xff, 0xff, 0x00, 0x04, + 0x00, 0x00, 0x04, 0x62, 0x07, 0xb5, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd4, 0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, + 0x04, 0x62, 0x07, 0xa0, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd6, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x04, 0x62, + 0x06, 0x8f, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0x02, 0xd7, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, + 0xfe, 0x4d, 0x03, 0xcb, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, + 0x03, 0xcb, 0x07, 0x89, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xc6, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, + 0x06, 0xa0, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, + 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, 0x00, 0x00, 0x04, 0xb0, 0x07, 0x1e, + 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc8, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xb4, 0x00, 0x00, 0x03, 0xcb, 0x07, 0x1e, 0x02, 0x26, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x02, 0xca, 0x00, 0x00, 0xff, 0xff, + 0x00, 0xb8, 0x00, 0x00, 0x03, 0xf4, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xcc, 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, + 0x00, 0x00, 0x03, 0xcb, 0x07, 0x9d, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xce, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, + 0x03, 0xcb, 0x06, 0x87, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x26, + 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x96, 0x00, 0x00, 0x03, 0xd0, 0x07, 0x89, 0x02, 0x26, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xc6, 0x13, 0x00, 0xff, 0xff, 0x00, 0x96, + 0xfe, 0x4d, 0x03, 0xd0, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, 0xfe, 0x4d, + 0x04, 0x41, 0x05, 0x31, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, 0xff, 0xe9, 0x04, 0x41, + 0x07, 0x89, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc6, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, 0xff, 0xe9, 0x04, 0xb0, 0x07, 0x1e, + 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc8, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xb4, 0xff, 0xe9, 0x04, 0x41, 0x07, 0x1e, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x02, 0xca, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x25, 0xff, 0xe9, 0x04, 0x41, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xcc, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, + 0xff, 0xe9, 0x04, 0x41, 0x07, 0x9d, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xce, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, + 0x04, 0x41, 0x06, 0x87, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x26, + 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x25, 0xff, 0xe9, 0x04, 0xb0, 0x05, 0xa5, 0x00, 0x23, 0x00, 0x33, + 0x00, 0x43, 0xb6, 0x0e, 0x0f, 0x22, 0x03, 0x00, 0x08, 0x17, 0xbe, 0x01, + 0x8a, 0x00, 0x1d, 0x00, 0x00, 0x02, 0x02, 0x00, 0x24, 0x00, 0x2c, 0x02, + 0x02, 0xb7, 0x08, 0x0f, 0x22, 0x23, 0x03, 0x05, 0x1a, 0x27, 0xb8, 0x01, + 0x17, 0xb2, 0x0d, 0x42, 0x2f, 0xb8, 0x01, 0x17, 0xb1, 0x05, 0x44, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0xc4, 0x12, 0x17, 0x39, 0x01, 0x2f, 0xed, 0xd4, + 0xfd, 0xd4, 0xed, 0x11, 0x12, 0x17, 0x39, 0x31, 0x30, 0x01, 0x14, 0x02, + 0x06, 0x06, 0x23, 0x20, 0x00, 0x11, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, + 0x17, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x05, 0x34, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x41, 0x53, + 0x91, 0xc3, 0x6f, 0xfe, 0xfe, 0xfe, 0xfc, 0x53, 0x91, 0xc3, 0x6f, 0xfb, + 0x84, 0x1c, 0x1b, 0x06, 0x07, 0x06, 0x34, 0x31, 0x3c, 0x31, 0x1b, 0x30, + 0x43, 0x27, 0x46, 0xfe, 0xfc, 0x7c, 0x8e, 0x47, 0x64, 0x41, 0x1e, 0x7d, + 0x8d, 0x47, 0x65, 0x40, 0x1e, 0x02, 0x93, 0xb2, 0xfe, 0xfe, 0xa6, 0x50, + 0x01, 0x57, 0x01, 0x47, 0xb2, 0x01, 0x02, 0xa6, 0x50, 0xa5, 0x07, 0x22, + 0x27, 0x0d, 0x1e, 0x1d, 0x1c, 0x0b, 0x27, 0x33, 0x42, 0x3e, 0x3c, 0x59, + 0x3f, 0x28, 0x0b, 0x9e, 0xf9, 0xe8, 0xe4, 0x3b, 0x72, 0xa7, 0x6c, 0xe8, + 0xe4, 0x3b, 0x72, 0xa7, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0xb0, + 0x06, 0x87, 0x02, 0x26, 0x02, 0xf5, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0xb0, 0x06, 0x87, + 0x02, 0x26, 0x02, 0xf5, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x25, 0xff, 0xe9, 0x04, 0xb0, 0x07, 0x89, 0x02, 0x26, + 0x02, 0xf5, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc6, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0xb0, 0x06, 0xa0, 0x02, 0x26, 0x02, 0xf5, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, + 0xfe, 0x4d, 0x04, 0xb0, 0x05, 0xa5, 0x02, 0x26, 0x02, 0xf5, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x57, 0xfe, 0x4d, + 0x04, 0x0f, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x57, 0xff, 0xe9, 0x04, 0x0f, + 0x07, 0x89, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc6, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x43, 0xff, 0xe9, 0x04, 0xb0, 0x05, 0xa5, + 0x00, 0x2d, 0x00, 0x35, 0xb9, 0x00, 0x22, 0x01, 0x8a, 0xb2, 0x28, 0x19, + 0x00, 0xbb, 0x01, 0xf5, 0x00, 0x17, 0x00, 0x0d, 0x01, 0xf5, 0x40, 0x0e, + 0x0a, 0x2d, 0x8e, 0x1a, 0x25, 0x0b, 0x19, 0x41, 0x0b, 0x41, 0x12, 0xe0, + 0x05, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x10, 0xd4, 0xd4, 0xed, 0x01, + 0x2f, 0xed, 0xd4, 0xfd, 0x32, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x15, 0x36, 0x36, 0x35, 0x34, + 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x03, 0x85, 0x39, 0x6c, 0x9e, 0x65, 0x72, 0x9d, 0x61, 0x2a, 0xf6, + 0x10, 0x27, 0x42, 0x33, 0x2e, 0x41, 0x29, 0x12, 0xf6, 0x37, 0x35, 0x06, + 0x07, 0x06, 0x34, 0x31, 0x3c, 0x31, 0x30, 0x52, 0x6d, 0x3c, 0x01, 0xe1, + 0x7d, 0xbd, 0x7e, 0x40, 0x40, 0x78, 0xac, 0x6b, 0x03, 0x63, 0xfc, 0xac, + 0x42, 0x66, 0x47, 0x24, 0x1f, 0x45, 0x6c, 0x4d, 0x03, 0x4a, 0x95, 0x02, + 0x26, 0x2e, 0x0d, 0x1e, 0x1d, 0x1c, 0x0b, 0x27, 0x33, 0x42, 0x3e, 0x4e, + 0x69, 0x41, 0x1e, 0x01, 0xff, 0xff, 0xff, 0x9d, 0xff, 0xe9, 0x04, 0xb0, + 0x06, 0x87, 0x02, 0x26, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, + 0x9d, 0x00, 0xff, 0xff, 0xff, 0xcf, 0xff, 0xe9, 0x04, 0xb0, 0x06, 0x87, + 0x02, 0x26, 0x02, 0xfd, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, 0xcf, 0x00, + 0xff, 0xff, 0x00, 0x43, 0xff, 0xe9, 0x04, 0xb0, 0x07, 0x89, 0x02, 0x26, + 0x02, 0xfd, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc6, 0xbb, 0x00, 0xff, 0xff, + 0xff, 0xbb, 0xff, 0xe9, 0x04, 0xb0, 0x06, 0xa0, 0x02, 0x26, 0x02, 0xfd, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, 0xbb, 0x00, 0xff, 0xff, 0x00, 0x43, + 0xfe, 0x4d, 0x04, 0xb0, 0x05, 0xa5, 0x02, 0x26, 0x02, 0xfd, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0xc5, 0x00, 0xff, 0xff, 0x00, 0x0a, 0xfe, 0x4d, + 0x04, 0x5a, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, + 0x06, 0xa0, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, 0xfe, 0x4d, 0x03, 0xd9, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, 0x03, 0xd9, 0x06, 0x64, 0x02, 0x26, + 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, 0x20, 0x00, 0xff, 0xff, + 0x00, 0x6d, 0xff, 0xe9, 0x04, 0xb0, 0x05, 0xf7, 0x02, 0x26, 0x00, 0x83, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xc7, 0x00, 0x00, 0xff, 0xff, 0xff, 0xb4, + 0xff, 0xe9, 0x03, 0xd9, 0x05, 0xf7, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xc9, 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, + 0x03, 0xf4, 0x06, 0x7e, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xcb, 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, 0x03, 0xd9, + 0x06, 0x79, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x02, 0xcd, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x03, 0xd9, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x26, 0x02, 0xd7, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, + 0x03, 0xd9, 0x06, 0x78, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xcf, 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, 0x03, 0xd9, + 0x06, 0x78, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd1, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, 0x03, 0xd9, 0x06, 0xed, + 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd3, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x6d, 0xff, 0xe9, 0x03, 0xd9, 0x06, 0x85, 0x02, 0x26, + 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd5, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x4d, 0x03, 0xd9, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, + 0x00, 0x00, 0x00, 0x26, 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x66, 0xfe, 0x4d, 0x04, 0x00, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, 0x06, 0x64, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, 0x14, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0x99, 0x02, 0x26, 0x00, 0x87, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, 0xff, 0xff, 0x00, 0x66, + 0xff, 0xe9, 0x04, 0xb0, 0x05, 0xf7, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xc7, 0x00, 0x00, 0xff, 0xff, 0xff, 0xb4, 0xff, 0xe9, + 0x04, 0x00, 0x05, 0xf7, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xc9, 0x00, 0x00, 0xff, 0xff, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, + 0x06, 0x7e, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x02, 0xcb, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, 0x06, 0x79, + 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x02, 0xcd, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x04, 0x00, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x00, 0x26, 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x91, 0x00, 0x00, 0x03, 0xf2, + 0x06, 0x64, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, + 0x20, 0x00, 0xff, 0xff, 0x00, 0x91, 0xfe, 0x4d, 0x03, 0xf2, 0x05, 0xae, + 0x02, 0x26, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x48, 0xfe, 0x4d, 0x04, 0x1e, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x06, 0x64, 0x02, 0x26, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, 0x00, 0x00, 0xff, 0xff, 0x00, 0x48, + 0xff, 0xe9, 0x04, 0xb0, 0x05, 0xf7, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xc7, 0x00, 0x00, 0xff, 0xff, 0xff, 0xb4, 0xff, 0xe9, + 0x04, 0x1e, 0x05, 0xf7, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xc9, 0x00, 0x00, 0xff, 0xff, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, + 0x06, 0x7e, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x02, 0xcb, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x06, 0x79, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x02, 0xcd, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x04, 0x1e, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x26, 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x34, 0xff, 0xe9, 0x04, 0x91, + 0x04, 0x90, 0x00, 0x0e, 0x00, 0x35, 0x00, 0x41, 0xb6, 0x35, 0x0f, 0x22, + 0x03, 0x24, 0x2e, 0x17, 0xbe, 0x01, 0x8a, 0x00, 0x1d, 0x00, 0x24, 0x02, + 0x15, 0x00, 0x00, 0x00, 0x07, 0x02, 0x15, 0xb5, 0x2e, 0x22, 0x0f, 0x29, + 0x1a, 0x02, 0xb8, 0x01, 0x32, 0xb2, 0x33, 0x50, 0x0a, 0xb8, 0x01, 0x32, + 0xb1, 0x29, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0xc4, 0x12, 0x39, 0x39, + 0x01, 0x2f, 0xed, 0xd4, 0xfd, 0xd4, 0xed, 0x11, 0x12, 0x17, 0x39, 0x31, + 0x30, 0x01, 0x10, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x13, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x35, 0x34, 0x36, + 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x03, 0x0c, 0xeb, 0x40, 0x5a, 0x3a, 0x1b, 0x80, 0x6f, 0x3d, 0x59, 0x3a, + 0x1b, 0x8f, 0x1c, 0x1b, 0x06, 0x07, 0x06, 0x34, 0x31, 0x3c, 0x31, 0x1b, + 0x30, 0x43, 0x27, 0x2e, 0x44, 0x80, 0xbb, 0x76, 0x71, 0xb2, 0x7c, 0x42, + 0x45, 0x81, 0xba, 0x75, 0x74, 0xb6, 0x01, 0xfe, 0x01, 0x3d, 0x32, 0x57, + 0x74, 0x42, 0x9f, 0xa1, 0x31, 0x57, 0x76, 0x01, 0xbd, 0x07, 0x22, 0x27, + 0x0d, 0x1e, 0x1d, 0x1c, 0x0b, 0x27, 0x33, 0x42, 0x3e, 0x3c, 0x59, 0x3f, + 0x28, 0x0b, 0x6e, 0x97, 0x78, 0xc7, 0x8e, 0x4e, 0x42, 0x83, 0xc5, 0x83, + 0x79, 0xc6, 0x8c, 0x4d, 0x46, 0x00, 0xff, 0xff, 0xff, 0xed, 0xff, 0xe9, + 0x04, 0x91, 0x05, 0x85, 0x02, 0x26, 0x03, 0x22, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3e, 0xed, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x91, + 0x05, 0x85, 0x02, 0x26, 0x03, 0x22, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x34, 0xff, 0xe9, 0x04, 0x91, 0x06, 0x64, + 0x02, 0x26, 0x03, 0x22, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x91, 0x05, 0x99, 0x02, 0x26, + 0x03, 0x22, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x34, 0xfe, 0x4d, 0x04, 0x91, 0x04, 0x90, 0x02, 0x26, 0x03, 0x22, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x89, + 0xfe, 0x4d, 0x03, 0xdb, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x89, 0xff, 0xe9, + 0x03, 0xdb, 0x06, 0x64, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xc5, 0x00, 0x00, 0x00, 0x01, 0x00, 0x6b, 0xff, 0xe9, 0x04, 0xb0, + 0x04, 0x8e, 0x00, 0x2a, 0x00, 0x3e, 0xb9, 0x00, 0x11, 0x01, 0x8a, 0xb3, + 0x17, 0x1c, 0x1f, 0x08, 0xbb, 0x02, 0x0b, 0x00, 0x07, 0x00, 0x01, 0x02, + 0x0b, 0xb7, 0x2a, 0x1c, 0x8e, 0x09, 0x14, 0x00, 0x4f, 0x03, 0xb8, 0x01, + 0x31, 0xb7, 0x24, 0x52, 0x1f, 0x08, 0x1d, 0x51, 0x08, 0x4f, 0x00, 0x3f, + 0x3f, 0x12, 0x39, 0x3f, 0xed, 0x3f, 0xd4, 0xd4, 0xed, 0x01, 0x2f, 0xed, + 0xd4, 0xfd, 0x33, 0x32, 0xd4, 0xed, 0x31, 0x30, 0x01, 0x11, 0x14, 0x33, + 0x32, 0x36, 0x37, 0x11, 0x33, 0x15, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x35, + 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x11, 0x23, + 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x01, 0x5f, 0x6a, + 0x33, 0x60, 0x35, 0xf3, 0x1b, 0x23, 0x14, 0x07, 0x09, 0x39, 0x31, 0x3c, + 0x36, 0x30, 0x53, 0x6d, 0x3c, 0xd2, 0x06, 0x1d, 0x3d, 0x46, 0x52, 0x33, + 0x47, 0x6a, 0x47, 0x24, 0x03, 0xf8, 0xfd, 0x6a, 0xa8, 0x51, 0x56, 0x02, + 0x97, 0x75, 0x01, 0x0a, 0x14, 0x20, 0x17, 0x1b, 0x29, 0x17, 0x27, 0x33, + 0x42, 0x3e, 0x4e, 0x69, 0x41, 0x1e, 0x01, 0xfd, 0x09, 0x96, 0x27, 0x40, + 0x2d, 0x19, 0x33, 0x5e, 0x83, 0x51, 0x02, 0xaa, 0xff, 0xff, 0xff, 0x9a, + 0xff, 0xe9, 0x04, 0xb0, 0x05, 0x85, 0x02, 0x26, 0x03, 0x2a, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3e, 0x9a, 0x00, 0xff, 0xff, 0xff, 0xe8, 0xff, 0xe9, + 0x04, 0xb0, 0x05, 0x85, 0x02, 0x26, 0x03, 0x2a, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3c, 0xe8, 0x00, 0xff, 0xff, 0x00, 0x6b, 0xff, 0xe9, 0x04, 0xb0, + 0x06, 0x64, 0x02, 0x26, 0x03, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, + 0xb1, 0x00, 0xff, 0xff, 0xff, 0xc0, 0xff, 0xe9, 0x04, 0xb0, 0x05, 0x99, + 0x02, 0x26, 0x03, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0xc0, 0x00, + 0xff, 0xff, 0x00, 0x6b, 0xfe, 0x4d, 0x04, 0xb0, 0x04, 0x8e, 0x02, 0x26, + 0x03, 0x2a, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0xb1, 0x00, 0xff, 0xff, + 0x00, 0x17, 0xfe, 0x4d, 0x04, 0x52, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x9b, + 0x00, 0x00, 0x00, 0x07, 0x02, 0xd7, 0x01, 0x2e, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x0a, 0x00, 0x00, 0x04, 0x5a, 0x07, 0x6d, 0x02, 0x26, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x07, 0x02, 0xc5, 0x00, 0x13, 0x01, 0x09, 0xff, 0xff, + 0x00, 0x17, 0xfe, 0x5c, 0x04, 0x52, 0x06, 0x64, 0x02, 0x26, 0x00, 0x9b, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xc5, 0x20, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x5c, 0x04, 0x52, 0x05, 0x99, 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4c, 0xfe, 0xd9, + 0x04, 0x58, 0x05, 0x85, 0x00, 0x03, 0x00, 0x22, 0x00, 0x33, 0x00, 0x58, + 0xb5, 0x03, 0x21, 0x02, 0x0f, 0x21, 0x1d, 0xb8, 0x02, 0x0b, 0x40, 0x09, + 0x2c, 0x19, 0x19, 0x0f, 0x1b, 0x18, 0x05, 0x2c, 0x23, 0xb8, 0x02, 0x17, + 0x40, 0x15, 0x0f, 0x01, 0xd0, 0x02, 0x34, 0x05, 0x14, 0x22, 0x51, 0x1c, + 0x53, 0x1b, 0x1e, 0xd0, 0x18, 0x21, 0x2f, 0xfc, 0x14, 0x50, 0x26, 0xb8, + 0x01, 0x31, 0xb1, 0x0a, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0xdc, 0x32, + 0xed, 0x32, 0x3f, 0x3f, 0x12, 0x39, 0x10, 0xd6, 0xed, 0x01, 0x2f, 0xed, + 0xd4, 0x32, 0xc4, 0xc4, 0x12, 0x39, 0x2f, 0x10, 0xfd, 0xc4, 0x10, 0xc4, + 0x10, 0xc6, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x25, 0x27, 0x0e, 0x03, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x35, 0x21, 0x35, 0x21, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x01, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x04, 0x02, 0xfc, 0x62, 0x03, 0x9e, 0xff, 0x00, 0x06, 0x20, + 0x43, 0x4c, 0x59, 0x36, 0x5a, 0x8a, 0x5e, 0x30, 0x4e, 0x8a, 0xbf, 0x71, + 0x26, 0x48, 0x1f, 0xfe, 0xf0, 0x01, 0x10, 0xf4, 0x83, 0x83, 0xfd, 0x77, + 0x57, 0x55, 0x1f, 0x39, 0x38, 0x39, 0x20, 0x1d, 0x51, 0x2b, 0x3b, 0x5d, + 0x41, 0x23, 0xfe, 0xd9, 0xb3, 0x74, 0x96, 0x27, 0x40, 0x2d, 0x19, 0x48, + 0x85, 0xbe, 0x75, 0x8c, 0xcd, 0x87, 0x41, 0x0a, 0x08, 0x70, 0xb3, 0x6a, + 0x6a, 0xb3, 0xfb, 0x98, 0x01, 0xf4, 0xa8, 0x92, 0x1a, 0x31, 0x45, 0x2b, + 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x00, 0x02, 0x00, 0x38, + 0x00, 0x30, 0x04, 0x2f, 0x04, 0x27, 0x00, 0x13, 0x00, 0x27, 0x00, 0x24, + 0x40, 0x15, 0x0f, 0xaa, 0x19, 0x05, 0xaa, 0x23, 0x00, 0xaa, 0x0f, 0x14, + 0x2f, 0x14, 0x4f, 0x14, 0x6f, 0x14, 0x04, 0x14, 0x0a, 0xaa, 0x1e, 0x00, + 0x2f, 0xed, 0xd4, 0x5d, 0xed, 0x01, 0x2f, 0xe1, 0xd4, 0xe1, 0x31, 0x30, + 0x01, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x27, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x33, 0x4b, 0x84, + 0x62, 0x39, 0x39, 0x62, 0x84, 0x4b, 0x4b, 0x85, 0x62, 0x39, 0x39, 0x62, + 0x85, 0x4b, 0x69, 0xb9, 0x8a, 0x50, 0x50, 0x8a, 0xb9, 0x69, 0x69, 0xb9, + 0x89, 0x50, 0x50, 0x89, 0xb9, 0x03, 0x96, 0x39, 0x62, 0x85, 0x4b, 0x4b, + 0x84, 0x62, 0x39, 0x39, 0x62, 0x84, 0x4b, 0x4b, 0x85, 0x62, 0x39, 0x91, + 0x50, 0x8a, 0xb9, 0x69, 0x69, 0xb9, 0x89, 0x50, 0x50, 0x89, 0xb9, 0x69, + 0x69, 0xb9, 0x8a, 0x50, 0x00, 0x02, 0x00, 0x00, 0xfd, 0xf1, 0x04, 0x66, + 0xff, 0x93, 0x00, 0x03, 0x00, 0x07, 0x00, 0x21, 0xb6, 0x03, 0x07, 0x09, + 0x02, 0x06, 0x08, 0x06, 0xbc, 0x02, 0x58, 0x00, 0x04, 0x00, 0x03, 0x02, + 0x58, 0x00, 0x01, 0x00, 0x2f, 0xfd, 0xd6, 0xed, 0x01, 0x10, 0xc4, 0x32, + 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, + 0x21, 0x04, 0x66, 0xfb, 0x9a, 0x04, 0x66, 0xfb, 0x9a, 0x04, 0x66, 0xfd, + 0xf1, 0x9d, 0x68, 0x9d, 0x00, 0x05, 0x00, 0x00, 0xff, 0xee, 0x04, 0x66, + 0x05, 0x8b, 0x00, 0x06, 0x00, 0x0a, 0x00, 0x2e, 0x00, 0x3d, 0x00, 0x4c, + 0x00, 0x80, 0xbc, 0x00, 0x34, 0x01, 0x61, 0x00, 0x1d, 0x00, 0x2f, 0x01, + 0x61, 0x40, 0x12, 0x25, 0x18, 0x1d, 0x43, 0x2a, 0x39, 0x25, 0x1d, 0x25, + 0x43, 0x39, 0x25, 0x39, 0x43, 0x1d, 0x04, 0x0b, 0x48, 0xbe, 0x01, 0x70, + 0x00, 0x13, 0x00, 0x3e, 0x01, 0x70, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x62, + 0x40, 0x09, 0x05, 0x43, 0x18, 0x2a, 0x39, 0x04, 0x10, 0x32, 0x20, 0x41, + 0x0a, 0x02, 0x6e, 0x00, 0x4a, 0x00, 0x10, 0x02, 0x70, 0x00, 0x09, 0x02, + 0x6b, 0x00, 0x07, 0x02, 0x6f, 0x00, 0x06, 0x02, 0x6d, 0xb2, 0x02, 0x01, + 0x05, 0xb8, 0x02, 0x6b, 0x00, 0x3f, 0xdd, 0xcd, 0x3f, 0x3f, 0x3f, 0x3f, + 0xcd, 0x3f, 0xcd, 0x12, 0x17, 0x39, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x2f, + 0xed, 0x12, 0x17, 0x39, 0x3d, 0x2f, 0x2f, 0x18, 0x2f, 0x2f, 0x11, 0x12, + 0x39, 0x11, 0x12, 0x39, 0x10, 0xed, 0x10, 0xed, 0x31, 0x30, 0x13, 0x11, + 0x07, 0x27, 0x37, 0x33, 0x11, 0x03, 0x23, 0x01, 0x33, 0x03, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, + 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, + 0x03, 0x03, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x3e, + 0x03, 0x13, 0x34, 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x33, 0x32, + 0x36, 0xdf, 0x83, 0x31, 0xcf, 0xa4, 0xd7, 0xc7, 0x03, 0xa0, 0xc6, 0x15, + 0x28, 0x45, 0x5d, 0x34, 0x79, 0x7d, 0x17, 0x23, 0x27, 0x10, 0x0e, 0x22, + 0x1e, 0x15, 0x76, 0x79, 0x36, 0x57, 0x3d, 0x21, 0x12, 0x1e, 0x24, 0x12, + 0x15, 0x29, 0x20, 0x14, 0xb6, 0x22, 0x20, 0x44, 0x10, 0x18, 0x1d, 0x0d, + 0x06, 0x12, 0x10, 0x0c, 0x07, 0x17, 0x1f, 0x1f, 0x08, 0x04, 0x13, 0x14, + 0x0f, 0x4d, 0x1d, 0x2d, 0x03, 0x48, 0x01, 0x97, 0x41, 0x85, 0x68, 0xfd, + 0xbd, 0xfc, 0xb8, 0x05, 0x85, 0xfb, 0x13, 0x2b, 0x40, 0x2a, 0x15, 0x4e, + 0x48, 0x21, 0x32, 0x24, 0x1a, 0x0a, 0x09, 0x18, 0x21, 0x2d, 0x1f, 0x4a, + 0x58, 0x13, 0x23, 0x30, 0x1c, 0x1f, 0x30, 0x24, 0x1c, 0x0b, 0x0b, 0x1b, + 0x25, 0x30, 0x01, 0x01, 0x0e, 0x13, 0x28, 0x0e, 0x14, 0x0f, 0x0c, 0x07, + 0x06, 0x0d, 0x11, 0x17, 0xfe, 0xee, 0x12, 0x17, 0x11, 0x0a, 0x04, 0x04, + 0x0a, 0x11, 0x17, 0x12, 0x2f, 0x15, 0x00, 0x05, 0x00, 0x00, 0xff, 0xee, + 0x04, 0x66, 0x05, 0x98, 0x00, 0x32, 0x00, 0x36, 0x00, 0x5a, 0x00, 0x69, + 0x00, 0x78, 0x00, 0xb2, 0xbc, 0x00, 0x60, 0x01, 0x61, 0x00, 0x49, 0x00, + 0x5b, 0x01, 0x61, 0x40, 0x12, 0x51, 0x44, 0x49, 0x6f, 0x56, 0x65, 0x51, + 0x49, 0x51, 0x6f, 0x65, 0x51, 0x65, 0x6f, 0x49, 0x04, 0x37, 0x74, 0xbb, + 0x01, 0x70, 0x00, 0x3f, 0x00, 0x6a, 0x01, 0x70, 0xb5, 0x37, 0x36, 0x35, + 0x34, 0x33, 0x1e, 0xb8, 0x01, 0x7c, 0xb6, 0x2d, 0x24, 0x18, 0x24, 0x18, + 0x09, 0x00, 0xb8, 0x01, 0x83, 0x40, 0x0a, 0x11, 0x09, 0x6f, 0x44, 0x56, + 0x65, 0x04, 0x3c, 0x5e, 0x4c, 0xbf, 0x02, 0x6e, 0x00, 0x76, 0x00, 0x3c, + 0x02, 0x70, 0x00, 0x36, 0x02, 0x6b, 0x00, 0x33, 0x02, 0x6f, 0x40, 0x0b, + 0x17, 0x40, 0x17, 0x1a, 0x48, 0x17, 0x30, 0x19, 0x19, 0x03, 0x21, 0xbe, + 0x02, 0x73, 0x00, 0x2a, 0x02, 0x6c, 0x00, 0x0c, 0x02, 0x73, 0x00, 0x03, + 0x02, 0x6d, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x39, 0xcd, + 0x2b, 0x3f, 0x3f, 0x3f, 0xcd, 0x3f, 0xcd, 0x12, 0x17, 0x39, 0x01, 0x2f, + 0xd6, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x2f, 0xed, 0x2f, 0x33, 0x2f, + 0x33, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x17, 0x39, 0x3d, 0x2f, 0x2f, 0x18, + 0x2f, 0x2f, 0x11, 0x12, 0x39, 0x11, 0x12, 0x39, 0x10, 0xed, 0x10, 0xed, + 0x31, 0x30, 0x01, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, + 0x3e, 0x03, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x01, + 0x23, 0x01, 0x33, 0x03, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, + 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x03, 0x34, 0x26, 0x23, 0x22, + 0x15, 0x14, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x13, 0x34, 0x2e, 0x02, 0x27, + 0x0e, 0x03, 0x15, 0x14, 0x33, 0x32, 0x36, 0x02, 0x10, 0x9f, 0xa6, 0x10, + 0x2b, 0x2c, 0x2a, 0x0f, 0x20, 0x57, 0x2f, 0x23, 0x2f, 0x1c, 0x0b, 0x0d, + 0x20, 0x36, 0x29, 0x45, 0x37, 0x27, 0x31, 0x1a, 0x09, 0x1e, 0x2c, 0x2b, + 0x50, 0x29, 0x1b, 0x2d, 0x2c, 0x2e, 0x1d, 0x74, 0x7c, 0x35, 0x30, 0x45, + 0x44, 0xfe, 0xb7, 0xc7, 0x03, 0xa0, 0xc6, 0x15, 0x28, 0x45, 0x5d, 0x34, + 0x79, 0x7d, 0x17, 0x23, 0x27, 0x10, 0x0e, 0x22, 0x1e, 0x15, 0x76, 0x79, + 0x36, 0x57, 0x3d, 0x21, 0x12, 0x1e, 0x24, 0x12, 0x15, 0x29, 0x20, 0x14, + 0xb6, 0x22, 0x20, 0x44, 0x10, 0x18, 0x1d, 0x0d, 0x06, 0x12, 0x10, 0x0c, + 0x07, 0x17, 0x1f, 0x1f, 0x08, 0x04, 0x13, 0x14, 0x0f, 0x4d, 0x1d, 0x2d, + 0x03, 0xf6, 0x5b, 0x66, 0x01, 0x03, 0x04, 0x02, 0x8c, 0x06, 0x09, 0x08, + 0x0f, 0x13, 0x0c, 0x0e, 0x14, 0x0d, 0x06, 0x87, 0x09, 0x10, 0x13, 0x0b, + 0x14, 0x18, 0x10, 0x0b, 0x87, 0x07, 0x0b, 0x06, 0x03, 0x4f, 0x4b, 0x33, + 0x43, 0x0b, 0x08, 0x4b, 0xfb, 0xd6, 0x05, 0x85, 0xfb, 0x13, 0x2b, 0x40, + 0x2a, 0x15, 0x4e, 0x48, 0x21, 0x32, 0x24, 0x1a, 0x0a, 0x09, 0x18, 0x21, + 0x2d, 0x1f, 0x4a, 0x58, 0x13, 0x23, 0x30, 0x1c, 0x1f, 0x30, 0x24, 0x1c, + 0x0b, 0x0b, 0x1b, 0x25, 0x30, 0x01, 0x01, 0x0e, 0x13, 0x28, 0x0e, 0x14, + 0x0f, 0x0c, 0x07, 0x06, 0x0d, 0x11, 0x17, 0xfe, 0xee, 0x12, 0x17, 0x11, + 0x0a, 0x04, 0x04, 0x0a, 0x11, 0x17, 0x12, 0x2f, 0x15, 0x00, 0x00, 0x05, + 0x00, 0x00, 0xff, 0xee, 0x04, 0x66, 0x05, 0x85, 0x00, 0x03, 0x00, 0x27, + 0x00, 0x36, 0x00, 0x45, 0x00, 0x67, 0x00, 0xa6, 0xb1, 0x5f, 0x61, 0xb8, + 0x01, 0x83, 0xb4, 0x5e, 0x5e, 0x46, 0x51, 0x57, 0xbe, 0x01, 0x64, 0x00, + 0x46, 0x00, 0x2d, 0x01, 0x61, 0x00, 0x16, 0x00, 0x28, 0x01, 0x61, 0x40, + 0x0f, 0x16, 0x11, 0x0c, 0x3c, 0x23, 0x32, 0x1e, 0x3c, 0x32, 0x1e, 0x32, + 0x3c, 0x03, 0x04, 0x41, 0xbb, 0x01, 0x70, 0x00, 0x0c, 0x00, 0x37, 0x01, + 0x70, 0x40, 0x0f, 0x04, 0x03, 0x02, 0x01, 0x00, 0x0f, 0x5c, 0x1f, 0x5c, + 0x02, 0x5c, 0x63, 0x63, 0x4b, 0x61, 0xbe, 0x02, 0x73, 0x00, 0x5f, 0x02, + 0x6b, 0x00, 0x54, 0x02, 0x73, 0x00, 0x4b, 0x02, 0x6d, 0xb7, 0x3c, 0x11, + 0x23, 0x32, 0x04, 0x09, 0x2b, 0x19, 0xbf, 0x02, 0x6e, 0x00, 0x43, 0x00, + 0x09, 0x02, 0x70, 0x00, 0x03, 0x02, 0x6b, 0x00, 0x00, 0x02, 0x6f, 0x00, + 0x3f, 0x3f, 0x3f, 0xcd, 0x3f, 0xcd, 0x12, 0x17, 0x39, 0x3f, 0xed, 0x3f, + 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x71, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, + 0xed, 0x2f, 0xed, 0x12, 0x17, 0x39, 0x3d, 0x2f, 0x2f, 0x18, 0x2f, 0x12, + 0x39, 0x11, 0x12, 0x39, 0x39, 0xed, 0x10, 0xed, 0x2f, 0xed, 0x2f, 0x12, + 0x39, 0x2f, 0xfd, 0xcd, 0x31, 0x30, 0x33, 0x23, 0x01, 0x33, 0x03, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, + 0x35, 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x1e, 0x03, 0x03, 0x34, 0x26, 0x23, 0x22, 0x15, 0x14, 0x1e, 0x02, 0x17, + 0x3e, 0x03, 0x13, 0x34, 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x33, + 0x32, 0x36, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, + 0x21, 0x15, 0x23, 0x15, 0x33, 0x32, 0x1e, 0x02, 0xc7, 0xc7, 0x03, 0xa0, + 0xc6, 0x15, 0x28, 0x45, 0x5d, 0x34, 0x79, 0x7d, 0x17, 0x23, 0x27, 0x10, + 0x0e, 0x22, 0x1e, 0x15, 0x76, 0x79, 0x36, 0x57, 0x3d, 0x21, 0x12, 0x1e, + 0x24, 0x12, 0x15, 0x29, 0x20, 0x14, 0xb6, 0x22, 0x20, 0x44, 0x10, 0x18, + 0x1d, 0x0d, 0x06, 0x12, 0x10, 0x0c, 0x07, 0x17, 0x1f, 0x1f, 0x08, 0x04, + 0x13, 0x14, 0x0f, 0x4d, 0x1d, 0x2d, 0xfe, 0x72, 0x31, 0x56, 0x78, 0x47, + 0x11, 0x27, 0x28, 0x2a, 0x10, 0x1f, 0x51, 0x2b, 0x4a, 0x43, 0x0e, 0x22, + 0x38, 0x2a, 0x89, 0x01, 0xac, 0xfd, 0x1a, 0x37, 0x61, 0x48, 0x2a, 0x05, + 0x85, 0xfb, 0x13, 0x2b, 0x40, 0x2a, 0x15, 0x4e, 0x48, 0x21, 0x32, 0x24, + 0x1a, 0x0a, 0x09, 0x18, 0x21, 0x2d, 0x1f, 0x4a, 0x58, 0x13, 0x23, 0x30, + 0x1c, 0x1f, 0x30, 0x24, 0x1c, 0x0b, 0x0b, 0x1b, 0x25, 0x30, 0x01, 0x01, + 0x0e, 0x13, 0x28, 0x0e, 0x14, 0x0f, 0x0c, 0x07, 0x06, 0x0d, 0x11, 0x17, + 0xfe, 0xee, 0x12, 0x17, 0x11, 0x0a, 0x04, 0x04, 0x0a, 0x11, 0x17, 0x12, + 0x2f, 0x15, 0x03, 0x81, 0x33, 0x4d, 0x31, 0x18, 0x02, 0x04, 0x05, 0x03, + 0x8b, 0x08, 0x0a, 0x1c, 0x1f, 0x11, 0x16, 0x0b, 0x04, 0x01, 0x57, 0x8f, + 0x4a, 0x0c, 0x25, 0x44, 0x00, 0x05, 0x00, 0x00, 0xff, 0xee, 0x04, 0x66, + 0x05, 0x85, 0x00, 0x03, 0x00, 0x27, 0x00, 0x36, 0x00, 0x45, 0x00, 0x4c, + 0x00, 0x84, 0xb4, 0x49, 0x48, 0x4c, 0x4a, 0x2d, 0xbb, 0x01, 0x61, 0x00, + 0x16, 0x00, 0x28, 0x01, 0x61, 0x40, 0x12, 0x1e, 0x11, 0x16, 0x3c, 0x23, + 0x32, 0x1e, 0x16, 0x1e, 0x3c, 0x32, 0x1e, 0x32, 0x3c, 0x16, 0x04, 0x04, + 0x41, 0xbb, 0x01, 0x70, 0x00, 0x0c, 0x00, 0x37, 0x01, 0x70, 0xb6, 0x04, + 0x03, 0x02, 0x01, 0x00, 0x49, 0x4b, 0xba, 0x02, 0x6b, 0x00, 0x47, 0x02, + 0x6d, 0xb7, 0x32, 0x23, 0x11, 0x3c, 0x04, 0x09, 0x2b, 0x19, 0xbf, 0x02, + 0x6e, 0x00, 0x43, 0x00, 0x09, 0x02, 0x70, 0x00, 0x03, 0x02, 0x6b, 0x00, + 0x00, 0x02, 0x6f, 0x00, 0x3f, 0x3f, 0x3f, 0xcd, 0x3f, 0xcd, 0x12, 0x17, + 0x39, 0x3f, 0x3f, 0xcd, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x2f, + 0xed, 0x12, 0x17, 0x39, 0x3d, 0x2f, 0x2f, 0x18, 0x2f, 0x2f, 0x11, 0x12, + 0x39, 0x11, 0x12, 0x39, 0x10, 0xed, 0x10, 0xed, 0x2f, 0xcd, 0x39, 0x39, + 0x31, 0x30, 0x33, 0x23, 0x01, 0x33, 0x03, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x03, 0x34, + 0x26, 0x23, 0x22, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x13, 0x34, + 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x33, 0x32, 0x36, 0x01, 0x03, + 0x23, 0x13, 0x21, 0x35, 0x21, 0xc7, 0xc7, 0x03, 0xa0, 0xc6, 0x15, 0x28, + 0x45, 0x5d, 0x34, 0x79, 0x7d, 0x17, 0x23, 0x27, 0x10, 0x0e, 0x22, 0x1e, + 0x15, 0x76, 0x79, 0x36, 0x57, 0x3d, 0x21, 0x12, 0x1e, 0x24, 0x12, 0x15, + 0x29, 0x20, 0x14, 0xb6, 0x22, 0x20, 0x44, 0x10, 0x18, 0x1d, 0x0d, 0x06, + 0x12, 0x10, 0x0c, 0x07, 0x17, 0x1f, 0x1f, 0x08, 0x04, 0x13, 0x14, 0x0f, + 0x4d, 0x1d, 0x2d, 0xfe, 0x7f, 0xe9, 0xc2, 0xe1, 0xfe, 0xfe, 0x01, 0xcc, + 0x05, 0x85, 0xfb, 0x13, 0x2b, 0x40, 0x2a, 0x15, 0x4e, 0x48, 0x21, 0x32, + 0x24, 0x1a, 0x0a, 0x09, 0x18, 0x21, 0x2d, 0x1f, 0x4a, 0x58, 0x13, 0x23, + 0x30, 0x1c, 0x1f, 0x30, 0x24, 0x1c, 0x0b, 0x0b, 0x1b, 0x25, 0x30, 0x01, + 0x01, 0x0e, 0x13, 0x28, 0x0e, 0x14, 0x0f, 0x0c, 0x07, 0x06, 0x0d, 0x11, + 0x17, 0xfe, 0xee, 0x12, 0x17, 0x11, 0x0a, 0x04, 0x04, 0x0a, 0x11, 0x17, + 0x12, 0x2f, 0x15, 0x04, 0x8d, 0xfe, 0x3e, 0x01, 0xa9, 0x93, 0x00, 0x01, + 0x00, 0xf3, 0x02, 0x77, 0x03, 0x73, 0x05, 0x32, 0x00, 0x17, 0x00, 0x36, + 0xb9, 0x00, 0x0a, 0x01, 0x84, 0xb2, 0x0c, 0x0c, 0x15, 0xb8, 0x01, 0x84, + 0x40, 0x11, 0x17, 0x17, 0x18, 0x19, 0x16, 0x0c, 0x0c, 0x15, 0x10, 0xab, + 0x07, 0x02, 0x07, 0x01, 0x01, 0x07, 0x63, 0x00, 0x3f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x11, 0x12, 0x01, 0x39, 0x2f, + 0xed, 0x32, 0x2f, 0xed, 0x31, 0x30, 0x13, 0x33, 0x17, 0x3e, 0x03, 0x33, + 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x07, 0x11, 0x23, 0xf3, 0xb5, 0x07, 0x1f, 0x39, 0x37, 0x39, 0x20, 0x6d, + 0x6f, 0xc7, 0x2c, 0x30, 0x11, 0x20, 0x24, 0x28, 0x19, 0xc7, 0x05, 0x22, + 0x54, 0x1e, 0x27, 0x17, 0x08, 0x7c, 0x80, 0xfe, 0x41, 0x01, 0x8c, 0x4b, + 0x45, 0x0a, 0x18, 0x2a, 0x20, 0xfe, 0x50, 0x00, 0x00, 0x04, 0x00, 0xb0, + 0xff, 0xe9, 0x03, 0xbd, 0x05, 0x85, 0x00, 0x03, 0x00, 0x17, 0x00, 0x1b, + 0x00, 0x2f, 0x00, 0x43, 0xbc, 0x00, 0x1a, 0x02, 0x2b, 0x00, 0x1b, 0x00, + 0x21, 0x02, 0x38, 0xb2, 0x2b, 0x09, 0x02, 0xbb, 0x02, 0x2b, 0x00, 0x03, + 0x00, 0x09, 0x02, 0x38, 0xb2, 0x13, 0x18, 0x1c, 0xb8, 0x01, 0x49, 0xb5, + 0x26, 0x52, 0x1a, 0x53, 0x00, 0x04, 0xb8, 0x01, 0x49, 0xb3, 0x0e, 0x52, + 0x03, 0x53, 0x00, 0x3f, 0x3f, 0xfd, 0xc6, 0x3f, 0x3f, 0xfd, 0xc6, 0x01, + 0x2f, 0xfd, 0xd4, 0xed, 0x10, 0xd6, 0xfd, 0xd4, 0xed, 0x31, 0x30, 0x01, + 0x23, 0x03, 0x21, 0x03, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x25, 0x23, 0x03, 0x21, 0x03, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x01, 0xb4, 0xd1, 0x25, 0x01, 0x1b, 0x8e, 0x20, 0x39, + 0x2a, 0x19, 0x19, 0x2a, 0x39, 0x20, 0x20, 0x39, 0x2a, 0x18, 0x18, 0x2a, + 0x39, 0x02, 0x5f, 0xd1, 0x25, 0x01, 0x1b, 0x8e, 0x20, 0x39, 0x2a, 0x19, + 0x19, 0x2a, 0x39, 0x20, 0x20, 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x01, + 0x96, 0x03, 0xef, 0xfb, 0x9c, 0x18, 0x2a, 0x39, 0x21, 0x21, 0x39, 0x2a, + 0x18, 0x18, 0x2a, 0x39, 0x21, 0x21, 0x39, 0x2a, 0x18, 0x75, 0x03, 0xef, + 0xfb, 0x9c, 0x18, 0x2a, 0x39, 0x21, 0x21, 0x39, 0x2a, 0x18, 0x18, 0x2a, + 0x39, 0x21, 0x21, 0x39, 0x2a, 0x18, 0x00, 0x01, 0x00, 0x4d, 0x00, 0x00, + 0x03, 0xdd, 0x05, 0x1b, 0x00, 0x15, 0x00, 0x5b, 0x40, 0x0a, 0x10, 0x0c, + 0x0a, 0x06, 0x03, 0x06, 0x03, 0x15, 0x01, 0x05, 0xb8, 0x01, 0xf9, 0x40, + 0x1e, 0x0a, 0x0f, 0x03, 0xa6, 0x01, 0x12, 0x01, 0x0b, 0x07, 0xa6, 0x05, + 0x0e, 0x05, 0x0f, 0x01, 0x01, 0x60, 0x01, 0x70, 0x01, 0x02, 0x10, 0x05, + 0x01, 0x01, 0x05, 0x01, 0x05, 0x09, 0x00, 0xb8, 0x01, 0x0b, 0xb3, 0x13, + 0x41, 0x09, 0x43, 0x00, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, + 0x5d, 0x5d, 0x71, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0xfd, 0x32, 0xc4, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xc6, + 0x32, 0x31, 0x30, 0x01, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, + 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x21, + 0x15, 0x01, 0xd3, 0x01, 0x9c, 0xfe, 0x64, 0x01, 0x9c, 0xfe, 0x64, 0xfa, + 0x8c, 0x8c, 0x8c, 0x8c, 0x03, 0x04, 0x04, 0x4b, 0xf7, 0x98, 0x9c, 0x98, + 0xfe, 0x78, 0x01, 0x88, 0x98, 0x9c, 0x98, 0x01, 0xc7, 0xd0, 0x00, 0x01, + 0x00, 0x4c, 0x00, 0x00, 0x04, 0x06, 0x05, 0x31, 0x00, 0x27, 0x00, 0x3e, + 0xb1, 0x21, 0x1c, 0xb8, 0x01, 0x0c, 0x40, 0x1c, 0x1f, 0x26, 0x16, 0xa6, + 0x14, 0x01, 0x14, 0x22, 0x1a, 0xa6, 0x18, 0x25, 0x18, 0x2f, 0x14, 0x01, + 0x14, 0x18, 0x14, 0x18, 0x07, 0x1f, 0x43, 0x0b, 0x10, 0xdb, 0x07, 0x42, + 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x10, 0xed, 0x32, + 0x31, 0x30, 0x13, 0x33, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x07, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x15, 0x15, 0x21, 0x15, 0x21, 0x15, + 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x35, 0x33, 0x35, 0x23, 0x35, + 0x33, 0x35, 0x23, 0x4d, 0x9c, 0x3b, 0x70, 0xa0, 0x66, 0x72, 0xbe, 0x3c, + 0x83, 0x17, 0x36, 0x39, 0x3a, 0x19, 0x64, 0x6d, 0x01, 0x96, 0xfe, 0x6a, + 0x01, 0x96, 0xfe, 0x6a, 0x02, 0x1b, 0xfc, 0x58, 0x9d, 0x9c, 0x9c, 0x9c, + 0x03, 0x54, 0x2b, 0x69, 0xa2, 0x6e, 0x39, 0x4c, 0x45, 0x96, 0x18, 0x25, + 0x19, 0x0d, 0x73, 0x73, 0x33, 0x98, 0x9c, 0x98, 0xb7, 0xd1, 0xd1, 0xb7, + 0x98, 0x9c, 0x00, 0x03, 0x00, 0x32, 0xff, 0xe5, 0x04, 0x5c, 0x05, 0x1b, + 0x00, 0x0e, 0x00, 0x51, 0x00, 0x5a, 0x00, 0x43, 0x40, 0x25, 0x38, 0xa6, + 0x3e, 0x44, 0x27, 0xa5, 0x20, 0x44, 0x41, 0x34, 0xa5, 0x47, 0x44, 0x47, + 0x58, 0xa6, 0x06, 0x11, 0xa5, 0x4e, 0x46, 0x4e, 0x09, 0x47, 0x06, 0x4e, + 0x4e, 0x06, 0x47, 0x03, 0x07, 0x56, 0xa6, 0x09, 0x41, 0x07, 0x43, 0x00, + 0x3f, 0x3f, 0xed, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x12, 0x39, + 0x10, 0xed, 0x10, 0xed, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0xed, 0x3f, + 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x11, + 0x21, 0x32, 0x1e, 0x02, 0x01, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, + 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x26, 0x27, 0x23, + 0x15, 0x14, 0x16, 0x33, 0x33, 0x32, 0x37, 0x15, 0x06, 0x23, 0x22, 0x35, + 0x35, 0x23, 0x35, 0x33, 0x35, 0x37, 0x15, 0x33, 0x36, 0x37, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x01, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, + 0x36, 0x02, 0xbc, 0x28, 0x54, 0x84, 0x5b, 0x5f, 0xd0, 0x01, 0x22, 0x48, + 0x82, 0x63, 0x3b, 0x01, 0x8c, 0x2c, 0x2c, 0x23, 0x2e, 0x1c, 0x2a, 0x31, + 0x2a, 0x1c, 0x23, 0x3a, 0x4c, 0x29, 0x1d, 0x3b, 0x1b, 0x14, 0x29, 0x14, + 0x10, 0x1e, 0x16, 0x0e, 0x1c, 0x29, 0x30, 0x15, 0x13, 0x0d, 0x84, 0x27, + 0x26, 0x0c, 0x07, 0x08, 0x24, 0x1e, 0xd8, 0x83, 0x83, 0xb2, 0x78, 0x03, + 0x05, 0x0c, 0x32, 0x4c, 0x33, 0x1c, 0x3f, 0x24, 0xfd, 0x9d, 0x4f, 0x48, + 0x4c, 0x44, 0x4e, 0x51, 0x03, 0xeb, 0x3e, 0x77, 0x5d, 0x39, 0xfd, 0x60, + 0x05, 0x1b, 0x20, 0x48, 0x74, 0xfd, 0xcf, 0x19, 0x20, 0x26, 0x17, 0x25, + 0x26, 0x2a, 0x36, 0x46, 0x2f, 0x35, 0x4b, 0x2f, 0x16, 0x0a, 0x08, 0x8f, + 0x07, 0x0b, 0x07, 0x11, 0x1c, 0x15, 0x14, 0x21, 0x23, 0x29, 0x1b, 0x1a, + 0x21, 0xd5, 0x26, 0x1a, 0x01, 0x93, 0x03, 0xca, 0xe0, 0x87, 0x6b, 0x32, + 0x9d, 0x0e, 0x0d, 0x24, 0x37, 0x22, 0x09, 0x0e, 0x01, 0x4a, 0x50, 0x49, + 0xfe, 0xc3, 0x4e, 0x00, 0x00, 0x01, 0x00, 0x89, 0x00, 0xa8, 0x04, 0x00, + 0x02, 0x83, 0x00, 0x05, 0x00, 0x19, 0xb6, 0x03, 0x07, 0x05, 0x01, 0x06, + 0x05, 0x01, 0xb9, 0x01, 0x04, 0x00, 0x03, 0x00, 0x2f, 0xed, 0xc6, 0x01, + 0x10, 0xd6, 0xcd, 0x10, 0xc6, 0x31, 0x30, 0x37, 0x11, 0x21, 0x15, 0x21, + 0x11, 0x89, 0x03, 0x77, 0xfd, 0x5e, 0xa8, 0x01, 0xdb, 0xc5, 0xfe, 0xea, + 0x00, 0x01, 0x00, 0x62, 0x00, 0x00, 0x04, 0x04, 0x04, 0x0e, 0x00, 0x19, + 0x00, 0x24, 0xbc, 0x00, 0x17, 0x01, 0xd5, 0x00, 0x19, 0x00, 0x0d, 0x01, + 0xd5, 0xb5, 0x0b, 0x18, 0x51, 0x0c, 0x51, 0x12, 0xb8, 0x01, 0x04, 0xb1, + 0x05, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x01, 0x2f, 0xed, 0x2f, 0xed, + 0x31, 0x30, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, + 0x23, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x23, + 0x62, 0x41, 0x7b, 0xaf, 0x6e, 0x7b, 0xb0, 0x6d, 0x31, 0xe1, 0x18, 0x3b, + 0x5a, 0x44, 0x40, 0x57, 0x3b, 0x1d, 0xe1, 0x02, 0x16, 0x7d, 0xbd, 0x7e, + 0x40, 0x40, 0x78, 0xac, 0x6b, 0xfd, 0xc1, 0x02, 0x2b, 0x44, 0x68, 0x49, + 0x25, 0x20, 0x46, 0x6f, 0x4f, 0xfd, 0xdf, 0x00, 0x00, 0x03, 0x00, 0x85, + 0x00, 0x53, 0x03, 0xe1, 0x03, 0xed, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0b, + 0x00, 0x23, 0x41, 0x0c, 0x00, 0x02, 0x02, 0x58, 0x00, 0x00, 0x02, 0x72, + 0x00, 0x06, 0x02, 0x58, 0x00, 0x04, 0x02, 0x72, 0x00, 0x0a, 0x02, 0x58, + 0x00, 0x08, 0x02, 0x6f, 0x00, 0x3f, 0xfd, 0xf6, 0xfd, 0xf6, 0xed, 0x31, + 0x30, 0x13, 0x35, 0x21, 0x15, 0x01, 0x35, 0x21, 0x15, 0x01, 0x35, 0x21, + 0x15, 0x85, 0x03, 0x5c, 0xfc, 0xa4, 0x03, 0x5c, 0xfc, 0xa4, 0x03, 0x5c, + 0x03, 0x2b, 0xc2, 0xc2, 0xfe, 0x94, 0xc2, 0xc2, 0xfe, 0x94, 0xc2, 0xc2, + 0x00, 0x01, 0x01, 0xc3, 0xfd, 0xfe, 0x03, 0xe9, 0x07, 0x5c, 0x00, 0x15, + 0x00, 0x18, 0xb1, 0x0a, 0x14, 0xb8, 0x01, 0xc1, 0xb6, 0x00, 0x15, 0x45, + 0x0f, 0xdd, 0x06, 0x72, 0x00, 0x3f, 0xed, 0x3f, 0x01, 0x2f, 0xfd, 0xc6, + 0x31, 0x30, 0x01, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x01, 0xc3, 0x2c, 0x5d, + 0x90, 0x63, 0x27, 0x5b, 0x28, 0x13, 0x2b, 0x2a, 0x28, 0x0f, 0x27, 0x3e, + 0x2b, 0x18, 0xfd, 0xfe, 0x07, 0x8d, 0x84, 0xb2, 0x6d, 0x2e, 0x11, 0x0c, + 0xc7, 0x06, 0x0b, 0x08, 0x04, 0x13, 0x36, 0x60, 0x4d, 0xf8, 0x5f, 0x00, + 0x00, 0x01, 0x00, 0x7b, 0xfd, 0xfe, 0x02, 0xa2, 0x07, 0x5c, 0x00, 0x15, + 0x00, 0x18, 0xb1, 0x0a, 0x01, 0xb8, 0x01, 0xc1, 0xb6, 0x15, 0x0f, 0xdd, + 0x06, 0x45, 0x00, 0x72, 0x00, 0x3f, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0xc6, + 0x31, 0x30, 0x01, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x02, 0xa2, 0x2d, 0x5d, + 0x90, 0x63, 0x26, 0x5c, 0x28, 0x13, 0x2b, 0x2b, 0x28, 0x0f, 0x26, 0x3e, + 0x2c, 0x18, 0x07, 0x5c, 0xf8, 0x73, 0x84, 0xb2, 0x6d, 0x2e, 0x10, 0x0d, + 0xc6, 0x06, 0x0a, 0x08, 0x04, 0x13, 0x36, 0x60, 0x4d, 0x07, 0xa1, 0x00, + 0x00, 0x05, 0x00, 0x2e, 0xff, 0xee, 0x04, 0x38, 0x05, 0x2d, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x3b, 0x00, 0x49, 0x00, 0x5d, 0x00, 0x7b, 0x40, 0x1f, + 0x49, 0x59, 0x43, 0x0f, 0x59, 0x4f, 0x05, 0x0f, 0x05, 0x4f, 0x59, 0x04, + 0x28, 0x32, 0x1e, 0x5f, 0x28, 0x14, 0x5e, 0x3c, 0x49, 0x49, 0x42, 0x43, + 0x40, 0x10, 0x14, 0x48, 0x43, 0x43, 0x46, 0xb8, 0xff, 0xc0, 0x40, 0x20, + 0x12, 0x16, 0x48, 0x46, 0xdf, 0x3f, 0x01, 0x3f, 0x3f, 0x2d, 0x23, 0xdf, + 0x0a, 0x01, 0x0a, 0x00, 0xdf, 0x4a, 0x01, 0x4a, 0x54, 0x00, 0x54, 0x00, + 0x54, 0x19, 0x40, 0x23, 0x01, 0x23, 0x37, 0x19, 0x00, 0x2f, 0xcd, 0x2f, + 0x5d, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x5d, 0x10, 0xcd, 0x5d, + 0x10, 0xcd, 0x32, 0x2f, 0x5d, 0xcd, 0x2b, 0x32, 0x7c, 0x2f, 0x2b, 0x33, + 0x33, 0x11, 0x33, 0x01, 0x18, 0x10, 0xd6, 0xcd, 0x10, 0xd6, 0xcd, 0x11, + 0x17, 0x39, 0x2f, 0x2f, 0x7d, 0x2f, 0x7c, 0x2f, 0x33, 0x11, 0x33, 0x31, + 0x30, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x05, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x01, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x27, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x99, 0x14, 0x24, 0x1b, + 0x10, 0x10, 0x1b, 0x24, 0x14, 0x15, 0x24, 0x1b, 0x0f, 0x0f, 0x1b, 0x24, + 0xfe, 0xaa, 0x44, 0x84, 0xc3, 0x7f, 0x7f, 0xbf, 0x81, 0x41, 0x43, 0x84, + 0xc2, 0x7f, 0x7f, 0xc0, 0x81, 0x42, 0x96, 0x30, 0x5e, 0x88, 0x59, 0x58, + 0x89, 0x5e, 0x30, 0x30, 0x5e, 0x89, 0x58, 0x59, 0x88, 0x5e, 0x30, 0x02, + 0x44, 0x29, 0x6d, 0x3f, 0x3f, 0x6d, 0x29, 0x27, 0x6e, 0x40, 0x40, 0x6e, + 0x27, 0x3b, 0x14, 0x24, 0x1b, 0x10, 0x10, 0x1b, 0x24, 0x14, 0x15, 0x24, + 0x1b, 0x0f, 0x0f, 0x1b, 0x24, 0x03, 0x6b, 0x13, 0x21, 0x2b, 0x18, 0x19, + 0x2c, 0x20, 0x12, 0x12, 0x20, 0x2c, 0x19, 0x18, 0x2b, 0x21, 0x13, 0xd4, + 0x8b, 0xf2, 0xb2, 0x67, 0x66, 0xb3, 0xf1, 0x8b, 0x8b, 0xf8, 0xba, 0x6d, + 0x6c, 0xba, 0xf8, 0x89, 0x6f, 0xc5, 0x94, 0x56, 0x56, 0x95, 0xc5, 0x6f, + 0x6f, 0xc0, 0x8e, 0x51, 0x52, 0x8e, 0xc0, 0xfe, 0x78, 0x3d, 0x46, 0x46, + 0x3d, 0x8e, 0x2e, 0x35, 0x35, 0x2e, 0x73, 0x13, 0x21, 0x2b, 0x18, 0x19, + 0x2c, 0x20, 0x12, 0x12, 0x20, 0x2c, 0x19, 0x18, 0x2b, 0x21, 0x13, 0x00, + 0x00, 0x04, 0x00, 0x4e, 0xff, 0xee, 0x04, 0x18, 0x05, 0x2d, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x35, 0x00, 0x49, 0x00, 0x4e, 0x40, 0x25, 0x2e, 0x2e, + 0x05, 0x28, 0x28, 0x3b, 0x05, 0x3b, 0x0f, 0x45, 0x3b, 0x45, 0x0f, 0x05, + 0x04, 0x14, 0x1e, 0x4b, 0x14, 0x4a, 0x2e, 0x2e, 0x28, 0x28, 0x2b, 0x60, + 0x32, 0x90, 0x32, 0x02, 0x32, 0x23, 0x36, 0x0a, 0x40, 0x00, 0x19, 0x00, + 0x2f, 0xdd, 0x32, 0xc6, 0x32, 0x2f, 0xdd, 0x5d, 0xc6, 0x32, 0x7c, 0x2f, + 0x32, 0x2f, 0x01, 0x18, 0x10, 0xc6, 0x10, 0xc6, 0x11, 0x17, 0x39, 0x2f, + 0x2f, 0x7d, 0x2f, 0x7c, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x7d, 0x2f, + 0x31, 0x30, 0x01, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x05, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x06, + 0x06, 0x23, 0x22, 0x26, 0x27, 0x15, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, + 0x03, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x01, 0x84, 0x17, 0x27, 0x1c, 0x11, 0x11, 0x1c, + 0x27, 0x17, 0x16, 0x26, 0x1d, 0x11, 0x11, 0x1d, 0x26, 0xfe, 0xb4, 0x3f, + 0x7b, 0xb5, 0x76, 0x76, 0xb5, 0x7b, 0x3f, 0x3f, 0x7b, 0xb5, 0x76, 0x76, + 0xb5, 0x7b, 0x3f, 0x02, 0xca, 0x2a, 0x76, 0x45, 0x45, 0x76, 0x2a, 0x2d, + 0x74, 0x44, 0x43, 0x75, 0x2d, 0x36, 0x16, 0x28, 0x1c, 0x11, 0x11, 0x1c, + 0x28, 0x16, 0x16, 0x26, 0x1d, 0x11, 0x11, 0x1d, 0x26, 0x03, 0x7d, 0x15, + 0x23, 0x2f, 0x1a, 0x1b, 0x2f, 0x22, 0x14, 0x14, 0x22, 0x2f, 0x1b, 0x1a, + 0x2f, 0x23, 0x15, 0xe6, 0x8b, 0xf2, 0xb2, 0x67, 0x66, 0xb2, 0xf1, 0x8b, + 0x8c, 0xf8, 0xba, 0x6d, 0x6c, 0xba, 0xf7, 0x20, 0x32, 0x38, 0x38, 0x32, + 0x99, 0x42, 0x4b, 0x4b, 0x42, 0x01, 0x2a, 0x15, 0x23, 0x2e, 0x1a, 0x1b, + 0x30, 0x22, 0x14, 0x14, 0x22, 0x30, 0x1b, 0x1a, 0x2e, 0x23, 0x15, 0x00, + 0x00, 0x02, 0x00, 0x0e, 0xff, 0xee, 0x04, 0x57, 0x05, 0x91, 0x00, 0x1b, + 0x00, 0x2f, 0x00, 0x3e, 0x40, 0x15, 0x02, 0x02, 0x08, 0x26, 0x1c, 0x12, + 0x30, 0x05, 0x19, 0x19, 0x17, 0x1b, 0x1a, 0x1a, 0x03, 0x04, 0x04, 0x02, + 0x00, 0x01, 0x2b, 0xbc, 0x02, 0x58, 0x00, 0x17, 0x00, 0x21, 0x02, 0x58, + 0x00, 0x0d, 0x00, 0x2f, 0xed, 0x2f, 0xed, 0xc4, 0x32, 0x32, 0x32, 0x11, + 0x33, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, 0x10, 0xd6, 0xdd, + 0xd6, 0xcd, 0x32, 0x2f, 0x31, 0x30, 0x01, 0x25, 0x13, 0x07, 0x27, 0x03, + 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x17, 0x13, 0x07, 0x01, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, + 0xf8, 0x01, 0xf6, 0x69, 0x95, 0x2b, 0x9b, 0x51, 0x60, 0x49, 0x7e, 0xa9, + 0x60, 0x60, 0xa9, 0x7d, 0x49, 0x49, 0x7d, 0xa9, 0x60, 0x4d, 0x45, 0x9f, + 0xdc, 0xfe, 0x7c, 0x2f, 0x53, 0x6e, 0x3f, 0x3f, 0x6f, 0x53, 0x2f, 0x2f, + 0x53, 0x6f, 0x3f, 0x3f, 0x6e, 0x53, 0x2f, 0x04, 0xc5, 0xcc, 0xfd, 0xec, + 0x1d, 0xeb, 0xfe, 0xdd, 0x40, 0xbc, 0x6f, 0x60, 0xa9, 0x7e, 0x48, 0x48, + 0x7e, 0xa9, 0x60, 0x60, 0xa8, 0x7e, 0x48, 0x18, 0x01, 0x23, 0x5d, 0xfd, + 0x84, 0x40, 0x6f, 0x53, 0x2f, 0x2f, 0x53, 0x6f, 0x40, 0x3f, 0x6f, 0x54, + 0x30, 0x30, 0x54, 0x6f, 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x04, 0x03, + 0x05, 0x91, 0x00, 0x1e, 0x00, 0x32, 0x00, 0x3f, 0x40, 0x0e, 0x29, 0x17, + 0x34, 0x01, 0x1d, 0x04, 0x07, 0x07, 0x33, 0x34, 0x1f, 0x0d, 0x33, 0x2e, + 0xbb, 0x02, 0x58, 0x00, 0x12, 0x00, 0x24, 0x02, 0x58, 0xb6, 0x1c, 0x08, + 0x1d, 0x07, 0x01, 0x05, 0x03, 0xb8, 0x02, 0x6f, 0x00, 0x3f, 0xd6, 0x32, + 0xdd, 0x32, 0xd6, 0x32, 0xed, 0x2f, 0xed, 0x01, 0x10, 0xd6, 0xcd, 0x11, + 0x12, 0x39, 0x2f, 0x33, 0xcd, 0x32, 0x10, 0xd6, 0xcd, 0x31, 0x30, 0x25, + 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x33, 0x35, 0x2e, 0x03, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x15, + 0x33, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x5e, 0xda, 0xa2, 0xda, 0xda, 0x53, + 0x8b, 0x66, 0x3a, 0x49, 0x7d, 0xa9, 0x60, 0x60, 0xa9, 0x7e, 0x49, 0x3a, + 0x67, 0x8b, 0x53, 0xda, 0xfd, 0xa6, 0x2f, 0x53, 0x6e, 0x3f, 0x3f, 0x6f, + 0x53, 0x2f, 0x2f, 0x53, 0x6f, 0x3f, 0x3f, 0x6e, 0x53, 0x2f, 0xbd, 0xbd, + 0xbd, 0x93, 0xab, 0x0f, 0x51, 0x79, 0x99, 0x56, 0x60, 0xa8, 0x7e, 0x48, + 0x48, 0x7e, 0xa8, 0x60, 0x56, 0x99, 0x79, 0x51, 0x0f, 0xab, 0x02, 0x73, + 0x40, 0x6f, 0x53, 0x2f, 0x2f, 0x53, 0x6f, 0x40, 0x3f, 0x6f, 0x54, 0x30, + 0x30, 0x54, 0x6f, 0x00, 0x00, 0x01, 0x00, 0x1f, 0xff, 0xee, 0x04, 0x47, + 0x05, 0x1b, 0x00, 0x1d, 0x00, 0x20, 0x40, 0x0d, 0x08, 0x16, 0x00, 0x16, + 0x00, 0x08, 0x03, 0x1f, 0x1e, 0x03, 0x00, 0x1b, 0x0f, 0x00, 0x2f, 0x2f, + 0x33, 0x33, 0x11, 0x12, 0x01, 0x17, 0x39, 0x19, 0x2f, 0x18, 0x2f, 0x2f, + 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x04, 0x07, 0x2e, 0x05, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x02, + 0x33, 0x36, 0x96, 0x4e, 0x31, 0x5b, 0x45, 0x29, 0x1e, 0x3c, 0x59, 0x77, + 0x93, 0x57, 0x58, 0x92, 0x77, 0x59, 0x3c, 0x1e, 0x29, 0x45, 0x5b, 0x31, + 0x4e, 0x96, 0x04, 0x55, 0x67, 0x5f, 0x26, 0x49, 0x6b, 0x45, 0x38, 0x6f, + 0x80, 0x99, 0xc2, 0xf2, 0x9a, 0x9a, 0xf2, 0xc2, 0x99, 0x80, 0x70, 0x37, + 0x45, 0x6b, 0x49, 0x26, 0x5f, 0x00, 0x00, 0x01, 0x00, 0x21, 0xff, 0xef, + 0x04, 0x45, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x22, 0x40, 0x0d, 0x06, 0x00, + 0x06, 0x00, 0x0c, 0x0d, 0x06, 0x00, 0x06, 0x00, 0x03, 0x09, 0x03, 0x00, + 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x19, 0x2f, 0x2f, 0x11, 0x12, 0x01, 0x39, + 0x39, 0x18, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x06, 0x00, 0x07, 0x26, 0x00, + 0x27, 0x36, 0x00, 0x37, 0x16, 0x00, 0x04, 0x45, 0x91, 0xfe, 0xf2, 0x73, + 0x73, 0xfe, 0xf2, 0x91, 0x91, 0x01, 0x0e, 0x73, 0x73, 0x01, 0x0e, 0x02, + 0x85, 0x98, 0xfe, 0xb8, 0xb6, 0xb6, 0x01, 0x48, 0x98, 0x98, 0x01, 0x48, + 0xb6, 0xb6, 0xfe, 0xb8, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, 0x04, 0x42, + 0x05, 0x1b, 0x00, 0x32, 0x00, 0x41, 0x40, 0x21, 0x18, 0x19, 0x1a, 0x1b, + 0x2b, 0x2e, 0x08, 0x1a, 0x05, 0x23, 0x2e, 0x1a, 0x05, 0x10, 0x10, 0x05, + 0x1a, 0x2e, 0x23, 0x05, 0x33, 0x34, 0x0b, 0x1b, 0x18, 0x15, 0x1e, 0x04, + 0x19, 0x28, 0x28, 0x19, 0x00, 0x00, 0x2f, 0x2f, 0x39, 0x2f, 0x12, 0x17, + 0x39, 0x33, 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x11, 0x12, 0x39, 0x11, 0x39, 0x32, 0x10, 0xcd, 0x32, 0x31, 0x30, 0x01, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x13, 0x23, 0x13, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x17, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x33, 0x3c, 0x5d, + 0x41, 0x21, 0x42, 0x36, 0x2c, 0x4d, 0x20, 0x35, 0x59, 0x41, 0x24, 0x25, + 0x3f, 0x54, 0x2f, 0x3b, 0x71, 0x3d, 0x2b, 0xd4, 0x2b, 0x3d, 0x71, 0x3b, + 0x2f, 0x54, 0x3f, 0x25, 0x25, 0x40, 0x55, 0x31, 0x29, 0x50, 0x28, 0x36, + 0x42, 0x21, 0x41, 0x5d, 0x05, 0x1b, 0x26, 0x40, 0x57, 0x30, 0x3c, 0x83, + 0x40, 0x11, 0x1b, 0x26, 0x43, 0x5a, 0x34, 0x37, 0x5a, 0x3f, 0x22, 0x3b, + 0x38, 0xfe, 0x1b, 0x01, 0xe5, 0x38, 0x3b, 0x22, 0x3f, 0x5a, 0x37, 0x33, + 0x5a, 0x42, 0x26, 0x1a, 0x10, 0x40, 0x83, 0x3c, 0x30, 0x57, 0x40, 0x26, + 0x00, 0x01, 0x00, 0x29, 0x00, 0x00, 0x04, 0x3d, 0x05, 0x1b, 0x00, 0x1c, + 0x00, 0x2e, 0x40, 0x16, 0x0d, 0x0e, 0x0f, 0x10, 0x0f, 0x18, 0x0f, 0x05, + 0x05, 0x0f, 0x18, 0x03, 0x1d, 0x1e, 0x10, 0x0d, 0x0a, 0x03, 0x13, 0x13, + 0x0e, 0x00, 0x00, 0x2f, 0x2f, 0x39, 0x2f, 0x17, 0x39, 0x11, 0x12, 0x01, + 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x33, 0x10, 0xcd, 0x32, 0x31, 0x30, + 0x01, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x13, + 0x23, 0x13, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x02, 0x33, 0x83, 0xc4, 0x82, 0x41, 0x24, 0x3d, 0x4f, 0x2b, 0x44, 0x74, + 0x38, 0x2b, 0xd4, 0x2b, 0x38, 0x74, 0x44, 0x2b, 0x4f, 0x3d, 0x24, 0x41, + 0x82, 0xc4, 0x05, 0x1b, 0xae, 0xf0, 0xad, 0x81, 0x3f, 0x35, 0x51, 0x37, + 0x1d, 0x4c, 0x3e, 0xfe, 0x40, 0x01, 0xc0, 0x3e, 0x4c, 0x1d, 0x37, 0x51, + 0x35, 0x3f, 0x81, 0xad, 0xf0, 0x00, 0x00, 0x01, 0x00, 0xa8, 0xff, 0xed, + 0x03, 0xcb, 0x05, 0x91, 0x00, 0x2a, 0x00, 0x26, 0x40, 0x10, 0x27, 0x05, + 0x1c, 0x0b, 0x1a, 0x13, 0x13, 0x2b, 0x2c, 0x0a, 0x22, 0x10, 0x1b, 0x2a, + 0x18, 0x10, 0x00, 0x2f, 0xdd, 0xc4, 0x2f, 0x12, 0x39, 0x39, 0x11, 0x12, + 0x01, 0x39, 0x2f, 0xdd, 0xdd, 0x32, 0xd6, 0xcd, 0x31, 0x30, 0x01, 0x3e, + 0x03, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, 0x11, 0x33, 0x15, 0x14, + 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, 0x03, 0x32, 0x0d, + 0x18, 0x13, 0x0b, 0x19, 0x3c, 0x64, 0x4b, 0x29, 0x4e, 0x72, 0x48, 0x47, + 0x51, 0x25, 0x43, 0x5d, 0x39, 0x35, 0x3b, 0x5a, 0x1d, 0x30, 0x3f, 0x21, + 0x21, 0x3f, 0x31, 0x1d, 0x38, 0x2b, 0x01, 0x5b, 0x16, 0x3a, 0x44, 0x4d, + 0x29, 0x37, 0x72, 0x6b, 0x60, 0x26, 0xfd, 0x53, 0x4b, 0x82, 0x60, 0x38, + 0x4d, 0x42, 0x29, 0x53, 0x43, 0x2a, 0x17, 0x04, 0x43, 0x11, 0x27, 0x48, + 0x4a, 0x4d, 0x2b, 0x2c, 0x62, 0x70, 0x82, 0x4b, 0x59, 0xa1, 0x48, 0x00, + 0x00, 0x02, 0x00, 0x14, 0xff, 0xed, 0x04, 0x52, 0x05, 0x91, 0x00, 0x23, + 0x00, 0x27, 0x00, 0x3f, 0xb9, 0x00, 0x00, 0xff, 0xf0, 0x40, 0x1b, 0x17, + 0x18, 0x02, 0x4c, 0x27, 0x0a, 0x12, 0x02, 0x29, 0x26, 0x14, 0x23, 0x1c, + 0x28, 0x0f, 0x07, 0x07, 0x21, 0x19, 0x13, 0x12, 0x27, 0x26, 0x25, 0x24, + 0x00, 0x01, 0x00, 0x2f, 0x33, 0xdd, 0x32, 0xd6, 0x32, 0xc5, 0x32, 0x2f, + 0xcd, 0x33, 0x2f, 0xcd, 0x01, 0x10, 0xd6, 0xdd, 0xcd, 0x32, 0x10, 0xd6, + 0xdd, 0xc4, 0x33, 0x31, 0x30, 0x00, 0x2b, 0x01, 0x25, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, 0x11, + 0x05, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x17, 0x01, 0x05, 0x15, 0x25, 0x01, 0x82, 0x02, 0xd0, 0x29, + 0x4e, 0x72, 0x48, 0x47, 0x51, 0x25, 0x43, 0x5d, 0x39, 0x35, 0x3b, 0xfd, + 0xe6, 0x29, 0x4e, 0x72, 0x48, 0x47, 0x51, 0x25, 0x43, 0x5d, 0x39, 0x35, + 0x3b, 0x02, 0x75, 0xfd, 0xe6, 0x02, 0x1a, 0x05, 0x05, 0x8c, 0xfc, 0x25, + 0x4b, 0x82, 0x60, 0x38, 0x4d, 0x42, 0x29, 0x53, 0x43, 0x2a, 0x17, 0x02, + 0x2a, 0x69, 0xfd, 0xdf, 0x4b, 0x82, 0x60, 0x38, 0x4d, 0x42, 0x29, 0x53, + 0x43, 0x2a, 0x17, 0x03, 0xa5, 0x68, 0x8c, 0x69, 0x00, 0x02, 0x00, 0x3e, + 0x00, 0x00, 0x04, 0x27, 0x03, 0xec, 0x00, 0x2d, 0x00, 0x41, 0x00, 0x5c, + 0x40, 0x30, 0x07, 0x1a, 0x04, 0x1d, 0x1d, 0x28, 0x11, 0x38, 0x10, 0x11, + 0x43, 0x2e, 0x29, 0x28, 0x42, 0x33, 0x1a, 0x1d, 0x1c, 0x13, 0x27, 0x10, + 0x15, 0x23, 0x22, 0x16, 0x18, 0x20, 0x21, 0x17, 0x08, 0x1c, 0x00, 0x0b, + 0x01, 0x0a, 0x2d, 0x0c, 0x2c, 0x0d, 0x08, 0x29, 0x29, 0x1c, 0x05, 0x3d, + 0x07, 0x04, 0x00, 0x2f, 0x33, 0xcd, 0x7c, 0xcd, 0x18, 0x2f, 0x39, 0x2f, + 0x17, 0x39, 0x12, 0x17, 0x39, 0x33, 0xcd, 0x32, 0x7c, 0x10, 0xdd, 0x32, + 0x18, 0xcd, 0x01, 0x10, 0xd6, 0xdd, 0xcd, 0x10, 0xd6, 0xdd, 0xcd, 0x11, + 0x12, 0x39, 0x2f, 0x33, 0xcd, 0x32, 0x31, 0x30, 0x13, 0x17, 0x36, 0x36, + 0x37, 0x35, 0x33, 0x15, 0x16, 0x16, 0x17, 0x37, 0x17, 0x07, 0x16, 0x16, + 0x17, 0x33, 0x15, 0x23, 0x06, 0x07, 0x17, 0x07, 0x27, 0x06, 0x07, 0x15, + 0x23, 0x35, 0x26, 0x26, 0x27, 0x07, 0x27, 0x37, 0x26, 0x26, 0x27, 0x23, + 0x35, 0x33, 0x36, 0x36, 0x37, 0x27, 0x13, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0xfd, 0x55, + 0x22, 0x4e, 0x2b, 0x8b, 0x2b, 0x4e, 0x23, 0x54, 0x64, 0x54, 0x18, 0x21, + 0x08, 0x6e, 0x6f, 0x0f, 0x31, 0x54, 0x64, 0x54, 0x46, 0x56, 0x8b, 0x2b, + 0x4d, 0x23, 0x52, 0x64, 0x52, 0x18, 0x22, 0x08, 0x6e, 0x6e, 0x08, 0x21, + 0x18, 0x54, 0x8e, 0x2a, 0x49, 0x61, 0x37, 0x37, 0x62, 0x49, 0x2a, 0x2a, + 0x49, 0x62, 0x37, 0x37, 0x61, 0x49, 0x2a, 0x03, 0x90, 0x55, 0x17, 0x21, + 0x08, 0x71, 0x71, 0x08, 0x21, 0x18, 0x54, 0x64, 0x54, 0x23, 0x4e, 0x2b, + 0x8b, 0x54, 0x47, 0x53, 0x64, 0x53, 0x31, 0x0f, 0x70, 0x70, 0x08, 0x20, + 0x17, 0x52, 0x64, 0x52, 0x23, 0x4d, 0x2c, 0x8b, 0x2c, 0x4e, 0x23, 0x55, + 0xfe, 0xca, 0x38, 0x62, 0x49, 0x2a, 0x2a, 0x49, 0x62, 0x38, 0x37, 0x62, + 0x49, 0x2b, 0x2b, 0x49, 0x62, 0x00, 0x00, 0x01, 0x00, 0x2b, 0xff, 0xf6, + 0x04, 0x3a, 0x04, 0xa1, 0x00, 0x11, 0x00, 0x36, 0x40, 0x1e, 0x0a, 0x10, + 0x07, 0x01, 0x04, 0x01, 0x10, 0x0d, 0x04, 0x0f, 0x05, 0x02, 0x13, 0x0e, + 0x12, 0x0b, 0x0f, 0x0b, 0x05, 0x07, 0x0a, 0x0d, 0x04, 0x01, 0x10, 0x0e, + 0x02, 0x0a, 0x08, 0x11, 0x00, 0x2f, 0xcd, 0x17, 0x39, 0x01, 0x2f, 0x33, + 0x10, 0xc6, 0x10, 0xc4, 0x32, 0x11, 0x17, 0x39, 0x11, 0x33, 0x11, 0x33, + 0x31, 0x30, 0x01, 0x13, 0x25, 0x17, 0x01, 0x01, 0x07, 0x25, 0x03, 0x23, + 0x03, 0x05, 0x27, 0x01, 0x01, 0x37, 0x05, 0x13, 0x02, 0x36, 0x5d, 0x01, + 0xa3, 0x04, 0xfe, 0xba, 0x01, 0x46, 0x03, 0xfe, 0x5c, 0x5d, 0x07, 0x5e, + 0xfe, 0x5e, 0x04, 0x01, 0x45, 0xfe, 0xbb, 0x03, 0x01, 0xa3, 0x5e, 0x04, + 0xa1, 0xfe, 0x53, 0x85, 0x05, 0xfe, 0xd8, 0xfe, 0xd8, 0x06, 0x86, 0xfe, + 0x52, 0x01, 0xae, 0x86, 0x05, 0x01, 0x28, 0x01, 0x28, 0x06, 0x85, 0x01, + 0xad, 0x00, 0x00, 0x02, 0x00, 0x69, 0x00, 0x00, 0x03, 0xfe, 0x04, 0x19, + 0x00, 0x04, 0x00, 0x09, 0x00, 0x32, 0x40, 0x19, 0x01, 0x08, 0x00, 0x07, + 0x02, 0x0b, 0x09, 0x00, 0x0a, 0x05, 0x04, 0x09, 0x07, 0x02, 0x00, 0x08, + 0x18, 0x0e, 0x02, 0x4d, 0x60, 0x08, 0x01, 0x08, 0x01, 0x00, 0x2f, 0xcd, + 0x71, 0x2b, 0x32, 0x32, 0x32, 0x32, 0x2f, 0xcd, 0x01, 0x10, 0xd6, 0xcd, + 0x10, 0xd6, 0xcd, 0x12, 0x39, 0x39, 0x31, 0x30, 0x13, 0x01, 0x01, 0x11, + 0x21, 0x37, 0x21, 0x11, 0x25, 0x05, 0x69, 0x01, 0xca, 0x01, 0xcb, 0xfc, + 0x6b, 0xaa, 0x02, 0x41, 0xfe, 0xdf, 0xfe, 0xe0, 0x02, 0x91, 0x01, 0x88, + 0xfe, 0x78, 0xfd, 0x6f, 0xaa, 0x01, 0x9c, 0xf7, 0xf7, 0x00, 0x00, 0x01, + 0x01, 0x08, 0x01, 0x8f, 0x03, 0x5e, 0x02, 0xdd, 0x00, 0x03, 0x00, 0x11, + 0xb5, 0x00, 0x05, 0x01, 0x04, 0x00, 0x02, 0x00, 0x2f, 0xcd, 0x01, 0x10, + 0xc6, 0x10, 0xc6, 0x31, 0x30, 0x01, 0x21, 0x11, 0x21, 0x03, 0x5e, 0xfd, + 0xaa, 0x02, 0x56, 0x01, 0x8f, 0x01, 0x4e, 0x00, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xf1, 0x04, 0x66, 0x05, 0xf1, 0x00, 0x03, 0x00, 0x17, 0x00, 0x20, + 0x40, 0x0d, 0x09, 0x13, 0x09, 0x13, 0x00, 0x01, 0x19, 0x00, 0x18, 0x03, + 0x0e, 0x04, 0x00, 0x00, 0x2f, 0xdd, 0xd6, 0xcd, 0x01, 0x10, 0xc4, 0x10, + 0xc4, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x31, 0x30, 0x11, 0x21, 0x11, 0x21, + 0x01, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x04, 0x66, 0xfb, 0x9a, 0x02, 0x33, 0x3f, 0x6f, + 0x53, 0x30, 0x30, 0x53, 0x6f, 0x3f, 0x3f, 0x6f, 0x53, 0x30, 0x30, 0x53, + 0x6f, 0x05, 0xf1, 0xf8, 0x00, 0x05, 0x75, 0x30, 0x53, 0x6f, 0x3f, 0x3f, + 0x6f, 0x53, 0x30, 0x30, 0x53, 0x6f, 0x3f, 0x3f, 0x6f, 0x53, 0x30, 0x00, + 0x00, 0x02, 0x00, 0x12, 0x00, 0x12, 0x04, 0x54, 0x04, 0x54, 0x00, 0x15, + 0x00, 0x29, 0x00, 0x1d, 0xb7, 0x20, 0x0c, 0x2b, 0x16, 0x00, 0x2a, 0x1b, + 0x11, 0xb8, 0x02, 0x6f, 0xb1, 0x25, 0x07, 0x00, 0x2f, 0xcd, 0x3f, 0xcd, + 0x01, 0x10, 0xd6, 0xcd, 0x10, 0xd6, 0xcd, 0x31, 0x30, 0x13, 0x34, 0x3e, + 0x04, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x02, 0x12, 0x27, 0x47, 0x63, 0x79, 0x8b, 0x4b, + 0x72, 0xc7, 0x94, 0x55, 0x55, 0x94, 0xc7, 0x72, 0x70, 0xc6, 0x94, 0x56, + 0x64, 0x45, 0x78, 0xa2, 0x5d, 0x5d, 0xa3, 0x79, 0x45, 0x45, 0x79, 0xa3, + 0x5d, 0x5d, 0xa2, 0x78, 0x45, 0x02, 0x32, 0x4c, 0x8c, 0x79, 0x63, 0x47, + 0x27, 0x55, 0x94, 0xc7, 0x72, 0x71, 0xc6, 0x94, 0x55, 0x55, 0x94, 0xc6, + 0x71, 0x5c, 0xa4, 0x7a, 0x47, 0x47, 0x7a, 0xa4, 0x5c, 0x5e, 0xa4, 0x7a, + 0x47, 0x47, 0x7a, 0xa4, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, + 0x04, 0x66, 0x00, 0x03, 0x00, 0x19, 0x00, 0x2d, 0x00, 0x29, 0x40, 0x0e, + 0x24, 0x0e, 0x02, 0x2f, 0x1a, 0x04, 0x01, 0x2e, 0x1f, 0x13, 0x01, 0x29, + 0x09, 0x00, 0x00, 0x2f, 0x7c, 0xd5, 0xc6, 0x18, 0x2f, 0x7c, 0xd5, 0xc6, + 0x01, 0x10, 0x18, 0xd4, 0x7c, 0xd5, 0xc6, 0x10, 0x18, 0xd4, 0x7c, 0xd5, + 0xc6, 0x31, 0x30, 0x31, 0x11, 0x21, 0x11, 0x01, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x04, 0x17, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x04, 0x66, 0xfb, 0xac, 0x56, 0x94, 0xc6, 0x70, 0x72, + 0xc7, 0x94, 0x55, 0x55, 0x94, 0xc7, 0x72, 0x4b, 0x8b, 0x79, 0x63, 0x47, + 0x27, 0x64, 0x45, 0x78, 0xa2, 0x5d, 0x5d, 0xa3, 0x79, 0x45, 0x45, 0x79, + 0xa3, 0x5d, 0x5d, 0xa2, 0x78, 0x45, 0x04, 0x66, 0xfb, 0x9a, 0x02, 0x32, + 0x71, 0xc6, 0x94, 0x55, 0x55, 0x94, 0xc6, 0x71, 0x72, 0xc7, 0x94, 0x55, + 0x27, 0x47, 0x63, 0x79, 0x8c, 0x4c, 0x5e, 0xa4, 0x7a, 0x47, 0x47, 0x7a, + 0xa4, 0x5e, 0x5c, 0xa4, 0x7a, 0x47, 0x47, 0x7a, 0xa4, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x04, 0x66, 0x00, 0x03, 0x00, 0x11, + 0xb5, 0x02, 0x05, 0x01, 0x04, 0x03, 0x01, 0x00, 0x2f, 0xcd, 0x01, 0x10, + 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x31, 0x11, 0x21, 0x11, 0x04, 0x66, 0x04, + 0x66, 0xfb, 0x9a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, + 0x04, 0x66, 0x00, 0x02, 0x00, 0x14, 0xb6, 0x01, 0x01, 0x03, 0x02, 0x01, + 0x03, 0x00, 0x00, 0x2f, 0x10, 0xcd, 0x01, 0x2f, 0x12, 0x39, 0x3d, 0x2f, + 0x31, 0x30, 0x31, 0x01, 0x01, 0x02, 0x33, 0x02, 0x33, 0x04, 0x66, 0xfb, + 0x9a, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x04, 0x66, + 0x00, 0x02, 0x00, 0x14, 0xb6, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x02, + 0x00, 0x2f, 0xcd, 0x01, 0x2f, 0x2f, 0x12, 0x39, 0x3d, 0x2f, 0x31, 0x30, + 0x09, 0x02, 0x04, 0x66, 0xfd, 0xcd, 0xfd, 0xcd, 0x04, 0x66, 0xfb, 0x9a, + 0x04, 0x66, 0x00, 0x01, 0x01, 0x11, 0x01, 0x13, 0x03, 0x56, 0x03, 0x58, + 0x00, 0x03, 0x00, 0x11, 0xb5, 0x00, 0x05, 0x03, 0x04, 0x01, 0x03, 0x00, + 0x2f, 0xcd, 0x01, 0x10, 0xc6, 0x10, 0xc6, 0x31, 0x30, 0x01, 0x11, 0x21, + 0x11, 0x03, 0x56, 0xfd, 0xbb, 0x03, 0x58, 0xfd, 0xbb, 0x02, 0x45, 0x00, + 0x00, 0x01, 0x00, 0xcb, 0x00, 0xfd, 0x03, 0x9b, 0x03, 0x6d, 0x00, 0x02, + 0x00, 0x14, 0xb6, 0x02, 0x02, 0x00, 0x01, 0x00, 0x02, 0x01, 0x00, 0x2f, + 0xcd, 0x01, 0x2f, 0x2f, 0x12, 0x39, 0x3d, 0x2f, 0x31, 0x30, 0x25, 0x21, + 0x01, 0x03, 0x9b, 0xfd, 0x30, 0x01, 0x68, 0xfd, 0x02, 0x70, 0x00, 0x01, + 0x00, 0xcb, 0x00, 0xfd, 0x03, 0x9b, 0x03, 0x6d, 0x00, 0x02, 0x00, 0x14, + 0xb6, 0x02, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x2f, 0xcd, 0x01, + 0x2f, 0x2f, 0x12, 0x39, 0x3d, 0x2f, 0x31, 0x30, 0x13, 0x21, 0x01, 0xcb, + 0x02, 0xd0, 0xfe, 0x98, 0x03, 0x6d, 0xfd, 0x90, 0x00, 0x01, 0x00, 0xfb, + 0x00, 0xcd, 0x03, 0x6b, 0x03, 0x9d, 0x00, 0x02, 0x00, 0x28, 0x40, 0x14, + 0x00, 0x04, 0x02, 0x03, 0x02, 0x02, 0x12, 0x01, 0x01, 0x05, 0x01, 0x8b, + 0x00, 0x01, 0x19, 0x00, 0x29, 0x00, 0x02, 0x00, 0x00, 0x2f, 0x5d, 0x5d, + 0x2f, 0x5f, 0x5d, 0x39, 0x3d, 0x2f, 0x01, 0x18, 0x10, 0xc6, 0x10, 0xc6, + 0x31, 0x30, 0x01, 0x11, 0x01, 0x03, 0x6b, 0xfd, 0x90, 0x03, 0x9d, 0xfd, + 0x30, 0x01, 0x68, 0x00, 0x00, 0x01, 0x00, 0xfb, 0x00, 0xcd, 0x03, 0x6b, + 0x03, 0x9d, 0x00, 0x02, 0x00, 0x26, 0x40, 0x13, 0x02, 0x04, 0x01, 0x03, + 0x02, 0x02, 0x8b, 0x01, 0x01, 0x19, 0x01, 0x29, 0x01, 0x02, 0x01, 0x16, + 0x00, 0x01, 0x00, 0x00, 0x2f, 0x5d, 0x2f, 0x5d, 0x5d, 0x39, 0x3d, 0x2f, + 0x01, 0x18, 0x10, 0xc6, 0x10, 0xc6, 0x31, 0x30, 0x37, 0x11, 0x01, 0xfb, + 0x02, 0x70, 0xcd, 0x02, 0xd0, 0xfe, 0x98, 0x00, 0x00, 0x01, 0x00, 0x32, + 0x00, 0xcd, 0x04, 0x34, 0x03, 0x9d, 0x00, 0x02, 0x00, 0x3b, 0x40, 0x24, + 0x02, 0x04, 0x01, 0x03, 0x01, 0x01, 0xb9, 0x02, 0xc9, 0x02, 0x02, 0x6d, + 0x02, 0x8d, 0x02, 0x02, 0x5f, 0x02, 0x01, 0x4d, 0x02, 0x01, 0x1f, 0x02, + 0x2f, 0x02, 0x02, 0x02, 0x42, 0x00, 0x62, 0x00, 0x72, 0x00, 0x03, 0x00, + 0x00, 0x2f, 0x5d, 0x7c, 0x2f, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x39, 0x3d, + 0x2f, 0x01, 0x18, 0x10, 0xc6, 0x10, 0xc6, 0x31, 0x30, 0x25, 0x01, 0x01, + 0x04, 0x34, 0xfb, 0xfe, 0x04, 0x02, 0xcd, 0x01, 0x68, 0x01, 0x68, 0x00, + 0x00, 0x01, 0x00, 0x32, 0x00, 0xcd, 0x04, 0x34, 0x03, 0x9d, 0x00, 0x02, + 0x00, 0x3b, 0x40, 0x24, 0x02, 0x04, 0x01, 0x03, 0x02, 0x02, 0xb9, 0x01, + 0xc9, 0x01, 0x02, 0x6d, 0x01, 0x8d, 0x01, 0x02, 0x5f, 0x01, 0x01, 0x4d, + 0x01, 0x01, 0x1f, 0x01, 0x2f, 0x01, 0x02, 0x01, 0x42, 0x00, 0x62, 0x00, + 0x72, 0x00, 0x03, 0x00, 0x00, 0x2f, 0x5d, 0x7c, 0x2f, 0x5d, 0x5d, 0x5d, + 0x5d, 0x5d, 0x39, 0x3d, 0x2f, 0x01, 0x18, 0x10, 0xc6, 0x10, 0xc6, 0x31, + 0x30, 0x37, 0x11, 0x01, 0x32, 0x04, 0x02, 0xcd, 0x02, 0xd0, 0xfe, 0x98, + 0x00, 0x01, 0x00, 0xa8, 0x00, 0x00, 0x03, 0xbe, 0x05, 0x91, 0x00, 0x0a, + 0x00, 0x30, 0x40, 0x16, 0x00, 0x01, 0x06, 0x09, 0x04, 0x03, 0x01, 0x09, + 0x03, 0x03, 0x09, 0x01, 0x03, 0x0b, 0x0c, 0x05, 0x0a, 0x0a, 0x04, 0x00, + 0x07, 0x02, 0x00, 0x2f, 0xcd, 0xcd, 0x32, 0x33, 0x11, 0x33, 0x11, 0x12, + 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x33, 0x10, 0xcd, 0x11, 0x33, + 0x31, 0x30, 0x01, 0x27, 0x01, 0x01, 0x07, 0x03, 0x17, 0x11, 0x23, 0x11, + 0x37, 0x01, 0x17, 0x6f, 0x01, 0x8b, 0x01, 0x8b, 0x6f, 0xd7, 0x07, 0x98, + 0x06, 0x03, 0x68, 0x61, 0x01, 0xc8, 0xfe, 0x38, 0x61, 0x01, 0x0d, 0xb9, + 0xfc, 0x44, 0x03, 0xbc, 0xb9, 0x00, 0x00, 0x01, 0x00, 0xa8, 0xff, 0xee, + 0x03, 0xbe, 0x05, 0x7f, 0x00, 0x0a, 0x00, 0x2e, 0x40, 0x15, 0x04, 0x03, + 0x08, 0x07, 0x00, 0x01, 0x03, 0x07, 0x01, 0x01, 0x07, 0x03, 0x03, 0x0b, + 0x0c, 0x04, 0x00, 0x0a, 0x08, 0x05, 0x02, 0x00, 0x2f, 0x33, 0xcd, 0x33, + 0xcd, 0x32, 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x33, + 0x10, 0xcd, 0x11, 0x33, 0x31, 0x30, 0x01, 0x17, 0x01, 0x01, 0x37, 0x13, + 0x27, 0x11, 0x33, 0x11, 0x07, 0x03, 0x4f, 0x6f, 0xfe, 0x75, 0xfe, 0x75, + 0x6f, 0xd7, 0x07, 0x98, 0x06, 0x02, 0x17, 0x61, 0xfe, 0x38, 0x01, 0xc8, + 0x61, 0xfe, 0xf3, 0xb9, 0x03, 0xbc, 0xfc, 0x44, 0xb9, 0x00, 0x00, 0x01, + 0x00, 0xa8, 0xff, 0xee, 0x03, 0xbe, 0x05, 0x91, 0x00, 0x11, 0x00, 0x36, + 0x40, 0x19, 0x01, 0x0c, 0x0f, 0x07, 0x03, 0x0a, 0x0c, 0x07, 0x0a, 0x0a, + 0x07, 0x0c, 0x03, 0x13, 0x12, 0x0d, 0x09, 0x0e, 0x08, 0x0b, 0x00, 0x04, + 0x11, 0x05, 0x02, 0x00, 0x2f, 0x33, 0x33, 0xcd, 0x32, 0xdd, 0x32, 0x32, + 0xcd, 0x32, 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x33, + 0x10, 0xcd, 0x11, 0x33, 0x31, 0x30, 0x01, 0x17, 0x01, 0x01, 0x37, 0x17, + 0x27, 0x11, 0x37, 0x07, 0x27, 0x01, 0x01, 0x07, 0x27, 0x17, 0x11, 0x07, + 0x03, 0x50, 0x6e, 0xfe, 0x75, 0xfe, 0x75, 0x6e, 0xd8, 0x07, 0x06, 0xd7, + 0x6e, 0x01, 0x8b, 0x01, 0x8b, 0x6e, 0xd8, 0x07, 0x06, 0x02, 0x02, 0x60, + 0xfe, 0x4c, 0x01, 0xb4, 0x60, 0xfb, 0xb9, 0x01, 0xff, 0xb9, 0xfb, 0x60, + 0x01, 0xb4, 0xfe, 0x4c, 0x60, 0xfb, 0xb9, 0xfe, 0x01, 0xb9, 0x00, 0x02, + 0x00, 0xa8, 0x00, 0x00, 0x03, 0xbe, 0x05, 0x91, 0x00, 0x11, 0x00, 0x15, + 0x00, 0x40, 0x40, 0x1f, 0x03, 0x0a, 0x0f, 0x07, 0x01, 0x0c, 0x0a, 0x12, + 0x07, 0x13, 0x0c, 0x0c, 0x13, 0x07, 0x12, 0x0a, 0x05, 0x16, 0x17, 0x0d, + 0x09, 0x0e, 0x08, 0x0b, 0x00, 0x04, 0x11, 0x05, 0x02, 0x13, 0x15, 0x00, + 0x2f, 0xdd, 0xd6, 0x32, 0x32, 0xcd, 0x32, 0xdd, 0x32, 0x32, 0xcd, 0x32, + 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x11, 0x33, + 0x10, 0xcd, 0x11, 0x33, 0x31, 0x30, 0x01, 0x17, 0x01, 0x01, 0x37, 0x17, + 0x27, 0x11, 0x37, 0x07, 0x27, 0x01, 0x01, 0x07, 0x27, 0x17, 0x11, 0x07, + 0x01, 0x21, 0x15, 0x21, 0x03, 0x53, 0x6b, 0xfe, 0x75, 0xfe, 0x75, 0x6b, + 0xdb, 0x07, 0x06, 0xda, 0x6b, 0x01, 0x8b, 0x01, 0x8b, 0x6b, 0xdb, 0x07, + 0x06, 0xfe, 0x58, 0x02, 0xc4, 0xfd, 0x3c, 0x02, 0x98, 0x5d, 0xfe, 0x6a, + 0x01, 0x96, 0x5d, 0xe1, 0xb9, 0x01, 0x56, 0xb9, 0xe1, 0x5d, 0x01, 0x96, + 0xfe, 0x6a, 0x5d, 0xe1, 0xb9, 0xfe, 0xaa, 0xb9, 0xfe, 0xdf, 0x96, 0x00, + 0x00, 0x01, 0x00, 0x14, 0x00, 0xaa, 0x04, 0x52, 0x03, 0xc0, 0x00, 0x0a, + 0x00, 0x22, 0x40, 0x0d, 0x07, 0x0c, 0x03, 0x01, 0x02, 0x0b, 0x02, 0x02, + 0x01, 0x03, 0x06, 0x01, 0x08, 0x00, 0x2f, 0xc6, 0xdd, 0xc4, 0x11, 0x39, + 0x3d, 0x2f, 0x01, 0x18, 0x10, 0xd6, 0xcd, 0xcd, 0x10, 0xc6, 0x31, 0x30, + 0x01, 0x07, 0x01, 0x01, 0x17, 0x05, 0x37, 0x21, 0x15, 0x21, 0x27, 0x02, + 0x3d, 0x61, 0xfe, 0x38, 0x01, 0xc8, 0x61, 0xfe, 0xf3, 0xb9, 0x02, 0x69, + 0xfd, 0x97, 0xb9, 0x01, 0x19, 0x6f, 0x01, 0x8b, 0x01, 0x8b, 0x6f, 0xd7, + 0x07, 0x98, 0x06, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0xaa, 0x04, 0x52, + 0x03, 0xc0, 0x00, 0x0a, 0x00, 0x22, 0x40, 0x0d, 0x03, 0x01, 0x02, 0x0c, + 0x08, 0x0b, 0x02, 0x02, 0x03, 0x01, 0x09, 0x03, 0x07, 0x00, 0x2f, 0xc6, + 0xdd, 0xc4, 0x11, 0x39, 0x3d, 0x2f, 0x01, 0x18, 0x10, 0xc6, 0x10, 0xd6, + 0xcd, 0xcd, 0x31, 0x30, 0x01, 0x37, 0x01, 0x01, 0x27, 0x25, 0x07, 0x21, + 0x35, 0x21, 0x17, 0x02, 0x29, 0x61, 0x01, 0xc8, 0xfe, 0x38, 0x61, 0x01, + 0x0d, 0xb9, 0xfd, 0x97, 0x02, 0x69, 0xb9, 0x03, 0x51, 0x6f, 0xfe, 0x75, + 0xfe, 0x75, 0x6f, 0xd7, 0x07, 0x98, 0x06, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0xaa, 0x04, 0x5c, 0x03, 0xc0, 0x00, 0x11, 0x00, 0x2e, 0x40, 0x13, + 0x03, 0x01, 0x02, 0x13, 0x0c, 0x0a, 0x0b, 0x12, 0x0b, 0x02, 0x0b, 0x02, + 0x0a, 0x0c, 0x01, 0x10, 0x03, 0x0a, 0x07, 0x00, 0x2f, 0xc4, 0x32, 0xdd, + 0xc4, 0x32, 0x11, 0x39, 0x39, 0x3d, 0x2f, 0x2f, 0x01, 0x18, 0x10, 0xd6, + 0xcd, 0xcd, 0x10, 0xd6, 0xcd, 0xcd, 0x31, 0x30, 0x01, 0x37, 0x01, 0x01, + 0x27, 0x37, 0x07, 0x23, 0x27, 0x17, 0x07, 0x01, 0x01, 0x17, 0x07, 0x37, + 0x33, 0x17, 0x02, 0x8e, 0x60, 0x01, 0x6e, 0xfe, 0x92, 0x60, 0xcb, 0xb9, + 0xda, 0xb9, 0xcb, 0x60, 0xfe, 0x92, 0x01, 0x6e, 0x60, 0xcb, 0xb9, 0xda, + 0xb9, 0x03, 0x5e, 0x62, 0xfe, 0x75, 0xfe, 0x75, 0x62, 0xe4, 0x04, 0x03, + 0xe3, 0x62, 0x01, 0x8b, 0x01, 0x8b, 0x62, 0xe4, 0x04, 0x03, 0x00, 0x01, + 0x00, 0x32, 0x00, 0x00, 0x04, 0x34, 0x04, 0x02, 0x00, 0x05, 0x00, 0x1f, + 0xb2, 0x05, 0x07, 0x04, 0xb8, 0x02, 0x58, 0xb3, 0x02, 0x06, 0x03, 0x05, + 0xba, 0x02, 0x58, 0x00, 0x01, 0x02, 0x6f, 0x00, 0x3f, 0xfd, 0xc6, 0x01, + 0x10, 0xd6, 0xed, 0x10, 0xc6, 0x31, 0x30, 0x21, 0x21, 0x11, 0x33, 0x11, + 0x21, 0x04, 0x34, 0xfb, 0xfe, 0x98, 0x03, 0x6a, 0x04, 0x02, 0xfc, 0x96, + 0x00, 0x01, 0x00, 0x32, 0x02, 0x34, 0x04, 0x34, 0x03, 0xee, 0x00, 0x03, + 0x00, 0x11, 0xb5, 0x02, 0x05, 0x01, 0x04, 0x02, 0x00, 0x00, 0x2f, 0xcd, + 0x01, 0x10, 0xc6, 0x10, 0xc6, 0x31, 0x30, 0x13, 0x11, 0x21, 0x11, 0x32, + 0x04, 0x02, 0x02, 0x34, 0x01, 0xba, 0xfe, 0x46, 0x00, 0x01, 0x00, 0x00, + 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x17, 0xb4, 0x02, + 0x05, 0x01, 0x04, 0x01, 0xba, 0x02, 0x66, 0x00, 0x00, 0x02, 0x65, 0x00, + 0x3f, 0x3f, 0x01, 0x10, 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x11, 0x11, 0x21, + 0x11, 0x04, 0x66, 0xfd, 0xfe, 0x09, 0x5e, 0xf6, 0xa2, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x02, 0xad, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x14, + 0xb5, 0x03, 0x05, 0x00, 0x04, 0x03, 0x02, 0xb8, 0x02, 0x66, 0x00, 0x3f, + 0xcd, 0x01, 0x10, 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x11, 0x11, 0x21, 0x11, + 0x04, 0x66, 0x02, 0xad, 0x04, 0xaf, 0xfb, 0x51, 0x00, 0x01, 0x00, 0x00, + 0xfd, 0xfe, 0x02, 0x33, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x17, 0xb4, 0x03, + 0x05, 0x02, 0x04, 0x03, 0xba, 0x02, 0x66, 0x00, 0x00, 0x02, 0x65, 0x00, + 0x3f, 0x3f, 0x01, 0x10, 0xc4, 0x10, 0xc6, 0x31, 0x30, 0x01, 0x21, 0x11, + 0x21, 0x02, 0x33, 0xfd, 0xcd, 0x02, 0x33, 0xfd, 0xfe, 0x09, 0x5e, 0x00, + 0x00, 0x01, 0x02, 0x33, 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x03, + 0x00, 0x17, 0xb4, 0x01, 0x05, 0x00, 0x04, 0x03, 0xba, 0x02, 0x65, 0x00, + 0x00, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0x01, 0x10, 0xc6, 0x10, 0xc4, 0x31, + 0x30, 0x01, 0x21, 0x11, 0x21, 0x02, 0x33, 0x02, 0x33, 0xfd, 0xcd, 0x07, + 0x5c, 0xf6, 0xa2, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfd, 0xfe, 0x04, 0x66, + 0x02, 0xad, 0x00, 0x03, 0x00, 0x14, 0xb5, 0x00, 0x05, 0x03, 0x04, 0x03, + 0x02, 0xb8, 0x02, 0x65, 0x00, 0x3f, 0xcd, 0x01, 0x10, 0xc4, 0x10, 0xc4, + 0x31, 0x30, 0x01, 0x11, 0x21, 0x11, 0x04, 0x66, 0xfb, 0x9a, 0x02, 0xad, + 0xfb, 0x51, 0x04, 0xaf, 0x00, 0x27, 0x00, 0x00, 0xfe, 0x60, 0x04, 0x0a, + 0x07, 0x5c, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x13, + 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x27, 0x00, 0x2b, + 0x00, 0x2f, 0x00, 0x33, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x3f, 0x00, 0x43, + 0x00, 0x47, 0x00, 0x4b, 0x00, 0x4f, 0x00, 0x53, 0x00, 0x57, 0x00, 0x5b, + 0x00, 0x5f, 0x00, 0x63, 0x00, 0x67, 0x00, 0x6b, 0x00, 0x6f, 0x00, 0x73, + 0x00, 0x77, 0x00, 0x7b, 0x00, 0x7f, 0x00, 0x83, 0x00, 0x87, 0x00, 0x8b, + 0x00, 0x8f, 0x00, 0x93, 0x00, 0x97, 0x00, 0x9b, 0x01, 0x45, 0x40, 0x33, + 0x90, 0x94, 0x94, 0x99, 0x84, 0x88, 0x88, 0x8d, 0x78, 0x7c, 0x7c, 0x81, + 0x6c, 0x70, 0x70, 0x75, 0x60, 0x64, 0x64, 0x69, 0x54, 0x58, 0x58, 0x5d, + 0x48, 0x4c, 0x4c, 0x51, 0x3c, 0x40, 0x40, 0x45, 0x30, 0x34, 0x34, 0x39, + 0x24, 0x28, 0x28, 0x2d, 0x18, 0x1c, 0x1c, 0x21, 0x0c, 0x10, 0x10, 0x15, + 0x04, 0x00, 0x09, 0xb8, 0x02, 0x71, 0xb2, 0x07, 0x03, 0x0a, 0xba, 0x02, + 0x72, 0x00, 0x15, 0x02, 0x71, 0xb3, 0x0f, 0x13, 0x13, 0x17, 0xba, 0x02, + 0x72, 0x00, 0x21, 0x02, 0x71, 0xb6, 0x1b, 0x1f, 0x1f, 0x3f, 0x22, 0x01, + 0x22, 0xba, 0x02, 0x72, 0x00, 0x2d, 0x02, 0x71, 0xb3, 0x27, 0x2b, 0x2b, + 0x2f, 0xba, 0x02, 0x72, 0x00, 0x39, 0x02, 0x71, 0xb3, 0x33, 0x37, 0x37, + 0x3a, 0xba, 0x02, 0x72, 0x00, 0x45, 0x02, 0x71, 0xb3, 0x3f, 0x43, 0x43, + 0x47, 0xba, 0x02, 0x72, 0x00, 0x51, 0x02, 0x71, 0xb3, 0x4b, 0x4f, 0x4f, + 0x52, 0xba, 0x02, 0x72, 0x00, 0x5d, 0x02, 0x71, 0xb3, 0x57, 0x5b, 0x5b, + 0x5f, 0xba, 0x02, 0x72, 0x00, 0x69, 0x02, 0x71, 0xb3, 0x63, 0x67, 0x67, + 0x6a, 0xba, 0x02, 0x72, 0x00, 0x75, 0x02, 0x71, 0xb3, 0x6f, 0x73, 0x73, + 0x77, 0xba, 0x02, 0x72, 0x00, 0x81, 0x02, 0x71, 0xb3, 0x7b, 0x7f, 0x7f, + 0x82, 0xba, 0x02, 0x72, 0x00, 0x8d, 0x02, 0x71, 0xb3, 0x87, 0x8b, 0x8b, + 0x8f, 0xba, 0x02, 0x72, 0x00, 0x99, 0x02, 0x71, 0xb3, 0x93, 0x97, 0x97, + 0x9a, 0x00, 0x2f, 0x33, 0x11, 0x33, 0xfd, 0xf6, 0x32, 0x11, 0x33, 0xfd, + 0xf6, 0x32, 0x11, 0x33, 0xfd, 0xf6, 0x32, 0x11, 0x33, 0xfd, 0xf6, 0x32, + 0x11, 0x33, 0xfd, 0xf6, 0x32, 0x11, 0x33, 0xfd, 0xf6, 0x32, 0x11, 0x33, + 0xfd, 0xf6, 0x32, 0x11, 0x33, 0xfd, 0xf6, 0x32, 0x11, 0x33, 0xfd, 0xf6, + 0x32, 0x11, 0x33, 0xfd, 0xf6, 0x5d, 0x32, 0x11, 0x33, 0xfd, 0xf6, 0x32, + 0x11, 0x33, 0xfd, 0xf6, 0x32, 0x32, 0xed, 0x32, 0x32, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x01, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x05, + 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x02, + 0xf0, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x03, + 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x02, + 0x34, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x03, + 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x02, + 0x34, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x03, + 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x02, + 0x34, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x03, + 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x02, + 0x34, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x03, + 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x02, + 0x34, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x03, + 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x02, + 0x34, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0x07, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x4e, 0x00, 0x00, 0xfe, 0x60, + 0x04, 0x66, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x0f, + 0x00, 0x13, 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x23, 0x00, 0x27, + 0x00, 0x2b, 0x00, 0x2f, 0x00, 0x33, 0x00, 0x37, 0x00, 0x3b, 0x00, 0x3f, + 0x00, 0x43, 0x00, 0x47, 0x00, 0x4b, 0x00, 0x4f, 0x00, 0x53, 0x00, 0x57, + 0x00, 0x5b, 0x00, 0x5f, 0x00, 0x63, 0x00, 0x67, 0x00, 0x6b, 0x00, 0x6f, + 0x00, 0x73, 0x00, 0x77, 0x00, 0x7b, 0x00, 0x7f, 0x00, 0x83, 0x00, 0x87, + 0x00, 0x8b, 0x00, 0x8f, 0x00, 0x93, 0x00, 0x97, 0x00, 0x9b, 0x00, 0x9f, + 0x00, 0xa3, 0x00, 0xa7, 0x00, 0xab, 0x00, 0xaf, 0x00, 0xb3, 0x00, 0xb7, + 0x00, 0xbb, 0x00, 0xbf, 0x00, 0xc3, 0x00, 0xc7, 0x00, 0xcb, 0x00, 0xcf, + 0x00, 0xd3, 0x00, 0xd7, 0x00, 0xdb, 0x00, 0xdf, 0x00, 0xe3, 0x00, 0xe7, + 0x00, 0xeb, 0x00, 0xef, 0x00, 0xf3, 0x00, 0xf7, 0x00, 0xfb, 0x00, 0xff, + 0x01, 0x03, 0x01, 0x07, 0x01, 0x0b, 0x01, 0x0f, 0x01, 0x13, 0x01, 0x17, + 0x01, 0x1b, 0x01, 0x1f, 0x01, 0x23, 0x01, 0x27, 0x01, 0x2b, 0x01, 0x2f, + 0x01, 0x33, 0x01, 0x37, 0x02, 0xc0, 0x41, 0x28, 0x01, 0x23, 0x01, 0x2b, + 0x01, 0x2b, 0x01, 0x27, 0x01, 0x27, 0x01, 0x2f, 0x01, 0x2f, 0x01, 0x37, + 0x01, 0x37, 0x01, 0x33, 0x01, 0x20, 0x01, 0x28, 0x01, 0x28, 0x01, 0x24, + 0x01, 0x24, 0x01, 0x2c, 0x01, 0x2c, 0x01, 0x34, 0x01, 0x34, 0x01, 0x31, + 0x01, 0x0b, 0x01, 0x13, 0x01, 0x13, 0x01, 0x0f, 0x01, 0x0f, 0x01, 0x17, + 0x01, 0x17, 0x01, 0x1f, 0x01, 0x1f, 0x01, 0x1a, 0x01, 0x08, 0x01, 0x10, + 0x01, 0x10, 0x01, 0x0c, 0x01, 0x0c, 0x01, 0x14, 0x01, 0x14, 0x01, 0x1c, + 0x01, 0x1c, 0x01, 0x18, 0xb6, 0xf3, 0xfb, 0xfb, 0xf7, 0xf7, 0xff, 0xff, + 0xba, 0x01, 0x07, 0x01, 0x07, 0x01, 0x02, 0xb6, 0xf0, 0xf8, 0xf8, 0xf4, + 0xf4, 0xfc, 0xfc, 0xba, 0x01, 0x04, 0x01, 0x04, 0x01, 0x01, 0x40, 0xc8, + 0xdb, 0xe3, 0xe3, 0xdf, 0xdf, 0xe7, 0xe7, 0xef, 0xef, 0xea, 0xd8, 0xe0, + 0xe0, 0xdc, 0xdc, 0xe4, 0xe4, 0xec, 0xec, 0xe8, 0xc3, 0xcb, 0xcb, 0xc7, + 0xc7, 0xcf, 0xcf, 0xd7, 0xd7, 0xd2, 0xc0, 0xc8, 0xc8, 0xc4, 0xc4, 0xcc, + 0xcc, 0xd4, 0xd4, 0xd1, 0xab, 0xb3, 0xb3, 0xaf, 0xaf, 0xb7, 0xb7, 0xbf, + 0xbf, 0xba, 0xa8, 0xb0, 0xb0, 0xac, 0xac, 0xb4, 0xb4, 0xbc, 0xbc, 0xb8, + 0x93, 0x9b, 0x9b, 0x97, 0x97, 0x9f, 0x9f, 0xa7, 0xa7, 0xa2, 0x90, 0x98, + 0x98, 0x94, 0x94, 0x9c, 0x9c, 0xa4, 0xa4, 0xa1, 0x7b, 0x83, 0x83, 0x7f, + 0x7f, 0x87, 0x87, 0x8f, 0x8f, 0x8a, 0x78, 0x80, 0x80, 0x7c, 0x7c, 0x84, + 0x84, 0x8c, 0x8c, 0x88, 0x63, 0x6b, 0x6b, 0x67, 0x67, 0x6f, 0x6f, 0x77, + 0x77, 0x72, 0x60, 0x68, 0x68, 0x64, 0x64, 0x6c, 0x6c, 0x74, 0x74, 0x71, + 0x4b, 0x53, 0x53, 0x4f, 0x4f, 0x57, 0x57, 0x5f, 0x5f, 0x5b, 0x48, 0x50, + 0x50, 0x4c, 0x4c, 0x54, 0x54, 0x5c, 0x5c, 0x59, 0x33, 0x3b, 0x3b, 0x37, + 0x37, 0x3f, 0x3f, 0x47, 0x47, 0x42, 0x30, 0x38, 0x38, 0x34, 0x34, 0x3c, + 0x3c, 0x44, 0x44, 0x41, 0x1b, 0x23, 0x23, 0x1f, 0x1f, 0x27, 0x27, 0x2f, + 0x2f, 0x2a, 0x18, 0x20, 0x20, 0x1c, 0x1c, 0x24, 0x24, 0x2c, 0x2c, 0x28, + 0x03, 0x0b, 0x0b, 0x07, 0x07, 0x0f, 0x0f, 0x17, 0x17, 0x12, 0x00, 0x08, + 0x08, 0x04, 0x04, 0x0c, 0x0c, 0x14, 0x14, 0x11, 0x41, 0x32, 0x02, 0x71, + 0x00, 0x12, 0x02, 0x72, 0x00, 0x28, 0x02, 0x71, 0x00, 0x2a, 0x02, 0x72, + 0x00, 0x41, 0x02, 0x71, 0x00, 0x42, 0x02, 0x72, 0x00, 0x59, 0x02, 0x71, + 0x00, 0x5b, 0x02, 0x72, 0x00, 0x71, 0x02, 0x71, 0x00, 0x72, 0x02, 0x72, + 0x00, 0x88, 0x02, 0x71, 0x00, 0x8a, 0x02, 0x72, 0x00, 0xa1, 0x02, 0x71, + 0x00, 0xa2, 0x02, 0x72, 0x00, 0xb8, 0x02, 0x71, 0x00, 0xba, 0x02, 0x72, + 0x00, 0xd1, 0x02, 0x71, 0x00, 0xd2, 0x02, 0x72, 0x00, 0xe8, 0x02, 0x71, + 0x00, 0xea, 0x02, 0x72, 0x01, 0x01, 0x02, 0x71, 0x01, 0x02, 0x02, 0x72, + 0x01, 0x18, 0x02, 0x71, 0x01, 0x1a, 0x02, 0x72, 0x01, 0x31, 0x02, 0x71, + 0x01, 0x33, 0x00, 0x2f, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, + 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, + 0xfd, 0xf6, 0xfd, 0xf6, 0xed, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x31, 0x30, 0x01, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x05, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x25, 0x33, 0x15, 0x23, 0x37, 0x33, + 0x15, 0x23, 0x03, 0xac, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, + 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, + 0x03, 0x4e, 0x5c, 0x5c, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, + 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x02, 0x92, + 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, + 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x03, 0x4e, 0x5c, 0x5c, + 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, + 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x02, 0x92, 0x5e, 0x5e, 0xfe, 0x88, + 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, + 0x5e, 0xbc, 0x5e, 0x5e, 0x03, 0x4e, 0x5c, 0x5c, 0xfe, 0x88, 0x5e, 0x5e, + 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, + 0x5e, 0x5e, 0x02, 0x92, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, + 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, + 0x03, 0x4e, 0x5c, 0x5c, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, + 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x02, 0x92, + 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, + 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x03, 0x4e, 0x5c, 0x5c, + 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, + 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x02, 0x92, 0x5e, 0x5e, 0xfe, 0x88, + 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, + 0x5e, 0xbc, 0x5e, 0x5e, 0x03, 0x4e, 0x5c, 0x5c, 0xfe, 0x88, 0x5e, 0x5e, + 0xbc, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, + 0x5e, 0x5e, 0x02, 0x92, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, + 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, + 0x07, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x00, 0x00, 0x3d, 0x00, 0x00, 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, + 0x00, 0x4a, 0x00, 0x4e, 0x00, 0x52, 0x00, 0x56, 0x00, 0x5a, 0x00, 0x5e, + 0x00, 0x62, 0x00, 0x66, 0x00, 0x6a, 0x00, 0x6e, 0x00, 0x72, 0x00, 0x76, + 0x00, 0x7a, 0x00, 0x7e, 0x00, 0x82, 0x00, 0x86, 0x00, 0x8a, 0x00, 0x8e, + 0x00, 0x92, 0x00, 0x96, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0xa2, 0x00, 0xa6, + 0x00, 0xaa, 0x00, 0xae, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xba, 0x00, 0xbe, + 0x00, 0xc2, 0x00, 0xc6, 0x00, 0xca, 0x00, 0xce, 0x00, 0xd2, 0x00, 0xd6, + 0x00, 0xda, 0x00, 0xde, 0x00, 0xe2, 0x00, 0xe6, 0x00, 0xea, 0x00, 0xee, + 0x00, 0xf2, 0x00, 0xf6, 0x00, 0xfa, 0x00, 0xfe, 0x01, 0x02, 0x01, 0x06, + 0x01, 0x0a, 0x01, 0x0e, 0x01, 0x12, 0x01, 0x16, 0x01, 0x1a, 0x01, 0x1e, + 0x01, 0x22, 0x01, 0x26, 0x01, 0x2a, 0x01, 0x2e, 0x01, 0x32, 0x01, 0x36, + 0x01, 0x3a, 0x02, 0xd3, 0x41, 0x1e, 0x00, 0x31, 0x01, 0x24, 0x01, 0x24, + 0x01, 0x1c, 0x01, 0x1c, 0x01, 0x28, 0x01, 0x28, 0x01, 0x34, 0x01, 0x34, + 0x01, 0x30, 0x00, 0x30, 0x01, 0x23, 0x01, 0x23, 0x01, 0x1b, 0x01, 0x1b, + 0x01, 0x27, 0x01, 0x27, 0x01, 0x33, 0x01, 0x33, 0x01, 0x32, 0x00, 0x29, + 0x01, 0x00, 0x01, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x01, 0x08, 0x01, 0x08, + 0x01, 0x14, 0x01, 0x14, 0x01, 0x10, 0xb4, 0x28, 0xff, 0xff, 0xf7, 0xf7, + 0xbc, 0x01, 0x07, 0x01, 0x07, 0x01, 0x13, 0x01, 0x13, 0x01, 0x12, 0x40, + 0x41, 0x21, 0xd4, 0xd4, 0xc8, 0xc8, 0xdc, 0xdc, 0xec, 0xec, 0xe4, 0x20, + 0xd3, 0xd3, 0xc7, 0xc7, 0xdb, 0xdb, 0xeb, 0xeb, 0xe6, 0x1c, 0xc2, 0xc2, + 0xce, 0xce, 0xda, 0xda, 0x76, 0x76, 0xe1, 0x19, 0x58, 0x58, 0x88, 0x88, + 0x5c, 0x5c, 0xa8, 0xa8, 0x60, 0x18, 0x57, 0x57, 0x87, 0x87, 0x5b, 0x5b, + 0xa7, 0xa7, 0x62, 0x15, 0x8b, 0x8b, 0x83, 0x83, 0x93, 0x93, 0xa3, 0xa3, + 0x9b, 0x04, 0x52, 0x52, 0x66, 0x66, 0xb9, 0x01, 0x3a, 0x01, 0x3a, 0xb2, + 0xb2, 0xb2, 0x01, 0xba, 0x02, 0x71, 0x00, 0xe9, 0x02, 0x72, 0xb4, 0x05, + 0x4f, 0x4f, 0x63, 0x63, 0xb9, 0x01, 0x37, 0x01, 0x37, 0xb2, 0xaf, 0xaf, + 0xe7, 0xb8, 0x02, 0x71, 0xb4, 0x08, 0x4b, 0x4b, 0x53, 0x53, 0xb9, 0x01, + 0x03, 0x01, 0x03, 0xb2, 0x6b, 0x6b, 0xbe, 0xb8, 0x02, 0x72, 0xb4, 0x09, + 0x4c, 0x4c, 0x54, 0x54, 0xb9, 0x01, 0x04, 0x01, 0x04, 0xb2, 0x6c, 0x6c, + 0xbc, 0xb8, 0x02, 0x71, 0xb2, 0x0c, 0xf2, 0xf2, 0xb9, 0x01, 0x1a, 0x01, + 0x1a, 0xb4, 0xc6, 0xc6, 0x72, 0x72, 0xb5, 0xb8, 0x02, 0x72, 0xb2, 0x0d, + 0xef, 0xef, 0xb9, 0x01, 0x17, 0x01, 0x17, 0xb4, 0xc3, 0xc3, 0x6f, 0x6f, + 0xb3, 0xb8, 0x02, 0x71, 0x40, 0x0a, 0x10, 0xcf, 0xcf, 0xf3, 0xf3, 0xb7, + 0xb7, 0x67, 0x67, 0xae, 0xb8, 0x02, 0x72, 0x40, 0x0a, 0x11, 0xd0, 0xd0, + 0xf4, 0xf4, 0xb8, 0xb8, 0x68, 0x68, 0xac, 0xb8, 0x02, 0x71, 0x40, 0x0a, + 0x14, 0x8e, 0x8e, 0x86, 0x86, 0x96, 0x96, 0xa6, 0xa6, 0x9d, 0x41, 0x09, + 0x02, 0x72, 0x00, 0x9b, 0x02, 0x71, 0x00, 0x62, 0x02, 0x72, 0x00, 0x60, + 0x02, 0x71, 0x00, 0xe1, 0x02, 0x72, 0x40, 0x0a, 0x1d, 0xbf, 0xbf, 0xcb, + 0xcb, 0xd7, 0xd7, 0x73, 0x73, 0xdf, 0xbc, 0x02, 0x71, 0x00, 0xe6, 0x02, + 0x72, 0x00, 0xe4, 0x02, 0x71, 0x40, 0x09, 0x24, 0xfe, 0xfe, 0x7a, 0x7a, + 0x7e, 0x7e, 0x82, 0x82, 0xb9, 0x01, 0x0d, 0x02, 0x72, 0x40, 0x09, 0x25, + 0xfb, 0xfb, 0x77, 0x77, 0x7b, 0x7b, 0x7f, 0x7f, 0x41, 0x09, 0x01, 0x0b, + 0x02, 0x71, 0x01, 0x12, 0x02, 0x72, 0x01, 0x10, 0x02, 0x71, 0x00, 0x2c, + 0x01, 0x22, 0x01, 0x22, 0xb5, 0x92, 0x92, 0x9a, 0x9a, 0xa2, 0xa2, 0xbc, + 0x01, 0x2d, 0x02, 0x72, 0x00, 0x2d, 0x01, 0x1f, 0x01, 0x1f, 0xb5, 0x8f, + 0x8f, 0x97, 0x97, 0x9f, 0x9f, 0xbd, 0x01, 0x2b, 0x02, 0x71, 0x01, 0x32, + 0x02, 0x72, 0x01, 0x30, 0x02, 0x71, 0x40, 0x0a, 0x34, 0x38, 0x38, 0x3c, + 0x3c, 0x40, 0x40, 0x44, 0x44, 0x47, 0xb8, 0x02, 0x72, 0x40, 0x0a, 0x36, + 0x3a, 0x3a, 0x3e, 0x3e, 0x42, 0x42, 0x45, 0x45, 0x49, 0x00, 0x2f, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xf6, 0x32, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xfd, 0xf6, 0xfd, 0x32, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xf6, 0x32, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0xfd, 0xf6, 0xfd, 0x32, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0xf6, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0xfd, 0xf6, 0xfd, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0xf6, 0xfd, 0xf6, 0xfd, 0xf6, 0x32, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0xfd, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0xf6, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0xfd, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xf6, 0x32, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xfd, 0x32, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xf6, 0x32, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0xfd, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0xf6, 0xed, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x31, 0x30, 0x11, 0x11, 0x21, 0x15, 0x23, + 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, + 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, + 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, + 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, + 0x15, 0x23, 0x35, 0x23, 0x15, 0x23, 0x35, 0x23, 0x15, 0x23, 0x35, 0x23, + 0x15, 0x23, 0x35, 0x23, 0x15, 0x23, 0x35, 0x23, 0x15, 0x23, 0x01, 0x15, + 0x33, 0x35, 0x27, 0x33, 0x35, 0x23, 0x07, 0x15, 0x33, 0x35, 0x13, 0x15, + 0x33, 0x35, 0x21, 0x15, 0x33, 0x35, 0x21, 0x15, 0x33, 0x35, 0x01, 0x33, + 0x35, 0x23, 0x01, 0x15, 0x33, 0x35, 0x03, 0x15, 0x33, 0x35, 0x03, 0x33, + 0x35, 0x23, 0x11, 0x33, 0x35, 0x23, 0x01, 0x33, 0x35, 0x23, 0x07, 0x33, + 0x35, 0x23, 0x07, 0x33, 0x35, 0x23, 0x01, 0x33, 0x35, 0x23, 0x15, 0x15, + 0x33, 0x35, 0x37, 0x33, 0x35, 0x23, 0x03, 0x33, 0x35, 0x23, 0x03, 0x33, + 0x35, 0x23, 0x11, 0x33, 0x35, 0x23, 0x01, 0x33, 0x35, 0x23, 0x13, 0x33, + 0x35, 0x23, 0x11, 0x33, 0x35, 0x23, 0x15, 0x15, 0x33, 0x35, 0x01, 0x15, + 0x33, 0x35, 0x13, 0x33, 0x35, 0x23, 0x03, 0x33, 0x35, 0x23, 0x05, 0x15, + 0x33, 0x35, 0x01, 0x15, 0x33, 0x35, 0x01, 0x33, 0x35, 0x23, 0x01, 0x33, + 0x35, 0x23, 0x13, 0x15, 0x33, 0x35, 0x27, 0x33, 0x35, 0x23, 0x13, 0x15, + 0x33, 0x35, 0x03, 0x15, 0x33, 0x35, 0x25, 0x33, 0x35, 0x23, 0x15, 0x15, + 0x33, 0x35, 0x25, 0x33, 0x35, 0x23, 0x15, 0x15, 0x33, 0x35, 0x03, 0x33, + 0x35, 0x23, 0x13, 0x15, 0x33, 0x35, 0x01, 0x33, 0x35, 0x23, 0x07, 0x15, + 0x33, 0x35, 0x03, 0x15, 0x33, 0x35, 0x37, 0x33, 0x35, 0x23, 0x15, 0x15, + 0x33, 0x35, 0x01, 0x15, 0x33, 0x35, 0x03, 0x15, 0x33, 0x35, 0x25, 0x33, + 0x35, 0x23, 0x15, 0x15, 0x33, 0x35, 0x33, 0x15, 0x33, 0x35, 0x01, 0x33, + 0x35, 0x23, 0x11, 0x15, 0x33, 0x35, 0x37, 0x33, 0x35, 0x23, 0x15, 0x15, + 0x33, 0x35, 0x21, 0x15, 0x33, 0x35, 0x25, 0x33, 0x35, 0x23, 0x15, 0x15, + 0x33, 0x35, 0x33, 0x15, 0x33, 0x35, 0x13, 0x33, 0x35, 0x23, 0x04, 0x66, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, + 0x03, 0x4e, 0x5e, 0x5e, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x5e, 0xfe, 0x2a, + 0x5e, 0xfe, 0x2a, 0x5e, 0x01, 0xd6, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, + 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x01, 0x78, 0x5e, 0x5e, 0xbc, 0x5e, + 0x5e, 0xbc, 0x5e, 0x5e, 0x01, 0x78, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, + 0xbc, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x5e, 0x5e, 0xfe, 0x88, 0x5e, 0x5e, + 0xbc, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0xfe, 0xe6, 0x5e, 0x5e, 0x5e, 0x5e, + 0xbc, 0x5e, 0x5e, 0x01, 0x78, 0x5e, 0xfe, 0x2a, 0x5e, 0x02, 0x92, 0x5e, + 0x5e, 0xfe, 0x88, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, 0x5e, 0x5e, 0xbc, 0x5e, + 0x5e, 0x5e, 0xfe, 0x2a, 0x5e, 0x5e, 0x5e, 0xfe, 0x2a, 0x5e, 0x5e, 0x5e, + 0x5e, 0x5e, 0x5e, 0xbc, 0x5e, 0x01, 0xd6, 0x5e, 0x5e, 0xbc, 0x5e, 0x5e, + 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0xfe, 0x2a, 0x5e, 0x5e, 0x5e, 0xfe, 0x2a, + 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x01, 0x1a, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, + 0x5e, 0x5e, 0xfe, 0x2a, 0x5e, 0xfe, 0x2a, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, + 0x5e, 0x5e, 0x5e, 0xfe, 0x60, 0x08, 0xfc, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x62, 0x62, 0x62, 0x62, + 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x08, 0x4a, 0x5c, 0x5c, 0x5c, + 0x5c, 0xb8, 0x5c, 0x5c, 0xfd, 0x20, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x03, 0x3c, 0x5c, 0xfd, 0xd8, 0x5c, 0x5c, 0x01, 0x70, 0x5c, 0x5c, 0xfe, + 0xec, 0x5c, 0xfc, 0xc4, 0x5c, 0xfe, 0x34, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, + 0x02, 0x84, 0x5c, 0xb8, 0x5c, 0x5c, 0x5c, 0x5c, 0xfb, 0x54, 0x5c, 0x03, + 0xf4, 0x5c, 0xfb, 0x54, 0x5c, 0x03, 0xf4, 0x5c, 0xfb, 0x54, 0x5c, 0x03, + 0xf4, 0x5c, 0xb8, 0x5c, 0x5c, 0x01, 0x70, 0x5c, 0x5c, 0x01, 0xcc, 0x5c, + 0xfe, 0x34, 0x5c, 0xb8, 0x5c, 0x5c, 0x01, 0x70, 0x5c, 0x5c, 0xfc, 0x0c, + 0x5c, 0x02, 0x84, 0x5c, 0xfc, 0x68, 0x5c, 0x5c, 0x5c, 0x5c, 0x02, 0x28, + 0x5c, 0x5c, 0xfd, 0x20, 0x5c, 0x5c, 0x5c, 0x5c, 0xb8, 0x5c, 0x5c, 0x5c, + 0x5c, 0xb8, 0x5c, 0x5c, 0x04, 0xac, 0x5c, 0xfa, 0xf8, 0x5c, 0x5c, 0x03, + 0x3c, 0x5c, 0xb8, 0x5c, 0x5c, 0xfb, 0xb0, 0x5c, 0x5c, 0x5c, 0x5c, 0xb8, + 0x5c, 0x5c, 0x05, 0xc0, 0x5c, 0x5c, 0xfa, 0x40, 0x5c, 0x5c, 0x5c, 0x5c, + 0xb8, 0x5c, 0x5c, 0x5c, 0x5c, 0x04, 0xac, 0x5c, 0xf9, 0x88, 0x5c, 0x5c, + 0x5c, 0x5c, 0xb8, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0xb8, 0x5c, 0x5c, + 0x5c, 0x5c, 0x07, 0x8c, 0x5c, 0x00, 0x00, 0x01, 0x01, 0xe8, 0xfd, 0xfe, + 0x02, 0x7e, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x1d, 0xb9, 0x00, 0x03, 0x02, + 0x58, 0xb4, 0x00, 0x00, 0x04, 0x05, 0x03, 0xba, 0x02, 0x65, 0x00, 0x02, + 0x02, 0x66, 0x00, 0x3f, 0x3f, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xed, 0x31, + 0x30, 0x01, 0x11, 0x33, 0x11, 0x01, 0xe8, 0x96, 0xfd, 0xfe, 0x09, 0x5e, + 0xf6, 0xa2, 0x00, 0x01, 0x00, 0x00, 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, + 0x00, 0x0b, 0x00, 0x39, 0xb1, 0x01, 0x0a, 0xb8, 0x02, 0x58, 0x40, 0x09, + 0x04, 0x08, 0x08, 0x0c, 0x0b, 0x0d, 0x05, 0x0c, 0x09, 0x41, 0x09, 0x02, + 0x66, 0x00, 0x0a, 0x00, 0x07, 0x02, 0x58, 0x00, 0x01, 0x00, 0x05, 0x02, + 0x62, 0x00, 0x02, 0x02, 0x65, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x01, 0x10, 0xc4, 0x10, 0xc4, 0x12, 0x39, 0x2f, 0xc4, 0xed, 0x32, 0x31, + 0x30, 0x01, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, + 0x21, 0x04, 0x66, 0xfe, 0x18, 0x96, 0xfe, 0x18, 0x01, 0xe8, 0x96, 0x01, + 0xe8, 0x02, 0x62, 0xfb, 0x9c, 0x04, 0x64, 0x96, 0x04, 0x64, 0xfb, 0x9c, + 0x00, 0x01, 0x00, 0x00, 0xfd, 0xfe, 0x02, 0x7e, 0x07, 0x5c, 0x00, 0x07, + 0x00, 0x2b, 0xb9, 0x00, 0x06, 0x02, 0x58, 0xb6, 0x01, 0x04, 0x04, 0x09, + 0x02, 0x08, 0x07, 0xbe, 0x02, 0x65, 0x00, 0x06, 0x02, 0x66, 0x00, 0x04, + 0x02, 0x58, 0x00, 0x02, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x01, + 0x10, 0xc4, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x31, 0x30, 0x01, 0x11, 0x21, + 0x35, 0x21, 0x11, 0x33, 0x11, 0x01, 0xe8, 0xfe, 0x18, 0x01, 0xe8, 0x96, + 0xfd, 0xfe, 0x04, 0x64, 0x96, 0x04, 0x64, 0xf6, 0xa2, 0x00, 0x00, 0x01, + 0x01, 0xe8, 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x07, 0x00, 0x2b, + 0xb1, 0x01, 0x06, 0xb8, 0x02, 0x58, 0xb5, 0x04, 0x04, 0x08, 0x07, 0x09, + 0x05, 0xbe, 0x02, 0x66, 0x00, 0x02, 0x02, 0x65, 0x00, 0x07, 0x02, 0x58, + 0x00, 0x01, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x01, 0x10, 0xc4, + 0x12, 0x39, 0x2f, 0xed, 0x32, 0x31, 0x30, 0x01, 0x21, 0x11, 0x23, 0x11, + 0x33, 0x11, 0x21, 0x04, 0x66, 0xfe, 0x18, 0x96, 0x96, 0x01, 0xe8, 0x02, + 0x62, 0xfb, 0x9c, 0x09, 0x5e, 0xfb, 0x9c, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x02, 0x62, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x07, 0x00, 0x32, 0xb9, 0x00, + 0x06, 0x02, 0x58, 0x40, 0x0b, 0x03, 0x02, 0x02, 0x03, 0x03, 0x08, 0x07, + 0x09, 0x01, 0x08, 0x04, 0xbd, 0x02, 0x66, 0x00, 0x06, 0x00, 0x03, 0x02, + 0x58, 0x00, 0x01, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x01, 0x10, + 0xc4, 0x10, 0xc4, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x31, 0x30, + 0x01, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x04, 0x66, 0xfb, 0x9a, + 0x01, 0xe8, 0x96, 0x01, 0xe8, 0x02, 0x62, 0x96, 0x04, 0x64, 0xfb, 0x9c, + 0x00, 0x01, 0x00, 0x00, 0x02, 0x62, 0x02, 0x7e, 0x07, 0x5c, 0x00, 0x05, + 0x00, 0x24, 0xb9, 0x00, 0x00, 0x02, 0x58, 0xb5, 0x03, 0x03, 0x07, 0x02, + 0x06, 0x05, 0xbc, 0x02, 0x66, 0x00, 0x03, 0x02, 0x58, 0x00, 0x00, 0x02, + 0x62, 0x00, 0x3f, 0xed, 0x3f, 0x01, 0x10, 0xc4, 0x12, 0x39, 0x2f, 0xed, + 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x11, 0x33, 0x02, 0x7e, 0xfd, 0x82, + 0x01, 0xe8, 0x96, 0x02, 0x62, 0x96, 0x04, 0x64, 0x00, 0x01, 0x01, 0xe8, + 0x02, 0x62, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x05, 0x00, 0x24, 0xb9, 0x00, + 0x04, 0x02, 0x58, 0xb5, 0x01, 0x01, 0x06, 0x05, 0x07, 0x03, 0xbc, 0x02, + 0x66, 0x00, 0x04, 0x02, 0x58, 0x00, 0x00, 0x02, 0x62, 0x00, 0x3f, 0xed, + 0x3f, 0x01, 0x10, 0xc4, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x21, + 0x11, 0x33, 0x11, 0x21, 0x04, 0x66, 0xfd, 0x82, 0x96, 0x01, 0xe8, 0x02, + 0x62, 0x04, 0xfa, 0xfb, 0x9c, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfd, 0xfe, + 0x04, 0x66, 0x02, 0xf8, 0x00, 0x07, 0x00, 0x2b, 0xb9, 0x00, 0x06, 0x02, + 0x58, 0xb7, 0x01, 0x01, 0x08, 0x05, 0x09, 0x02, 0x08, 0x07, 0xbd, 0x02, + 0x65, 0x00, 0x06, 0x00, 0x04, 0x02, 0x58, 0x00, 0x02, 0x02, 0x62, 0x00, + 0x3f, 0xed, 0x33, 0x3f, 0x01, 0x10, 0xc4, 0x10, 0xc4, 0x12, 0x39, 0x2f, + 0xed, 0x31, 0x30, 0x01, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x01, + 0xe8, 0xfe, 0x18, 0x04, 0x66, 0xfe, 0x18, 0xfd, 0xfe, 0x04, 0x64, 0x96, + 0x96, 0xfb, 0x9c, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfd, 0xfe, 0x02, 0x7e, + 0x02, 0xf8, 0x00, 0x05, 0x00, 0x24, 0xb9, 0x00, 0x04, 0x02, 0x58, 0xb5, + 0x01, 0x01, 0x07, 0x02, 0x06, 0x05, 0xbc, 0x02, 0x65, 0x00, 0x04, 0x02, + 0x58, 0x00, 0x02, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x3f, 0x01, 0x10, 0xc4, + 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x11, 0x21, 0x35, 0x21, 0x11, + 0x01, 0xe8, 0xfe, 0x18, 0x02, 0x7e, 0xfd, 0xfe, 0x04, 0x64, 0x96, 0xfb, + 0x06, 0x00, 0x00, 0x01, 0x01, 0xe8, 0xfd, 0xfe, 0x04, 0x66, 0x02, 0xf8, + 0x00, 0x05, 0x00, 0x24, 0xb9, 0x00, 0x01, 0x02, 0x58, 0xb5, 0x04, 0x04, + 0x06, 0x05, 0x07, 0x02, 0xbc, 0x02, 0x65, 0x00, 0x05, 0x02, 0x58, 0x00, + 0x01, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x3f, 0x01, 0x10, 0xc4, 0x12, 0x39, + 0x2f, 0xed, 0x31, 0x30, 0x01, 0x21, 0x11, 0x23, 0x11, 0x21, 0x04, 0x66, + 0xfe, 0x18, 0x96, 0x02, 0x7e, 0x02, 0x62, 0xfb, 0x9c, 0x04, 0xfa, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x02, 0x62, 0x04, 0x66, 0x02, 0xf8, 0x00, 0x03, + 0x00, 0x17, 0xb4, 0x03, 0x05, 0x01, 0x04, 0x03, 0xba, 0x02, 0x58, 0x00, + 0x01, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x01, 0x10, 0xc4, 0x10, 0xc4, 0x31, + 0x30, 0x01, 0x21, 0x35, 0x21, 0x04, 0x66, 0xfb, 0x9a, 0x04, 0x66, 0x02, + 0x62, 0x96, 0x00, 0x02, 0x00, 0x00, 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, + 0x00, 0x07, 0x00, 0x0f, 0x00, 0x40, 0xb7, 0x07, 0x0f, 0x11, 0x02, 0x0d, + 0x10, 0x06, 0x09, 0xb8, 0x02, 0x58, 0xb3, 0x03, 0x0c, 0x03, 0x07, 0xb8, + 0x02, 0x58, 0xb2, 0x01, 0x01, 0x0f, 0xbf, 0x02, 0x58, 0x00, 0x09, 0x00, + 0x0d, 0x02, 0x63, 0x00, 0x0a, 0x02, 0x65, 0x00, 0x05, 0x02, 0x66, 0x00, + 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0xed, 0x32, 0x10, 0xd4, 0xc4, 0x10, 0xd4, 0xc4, 0x31, 0x30, 0x01, 0x21, + 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, + 0x35, 0x21, 0x04, 0x66, 0xfb, 0x9a, 0x01, 0xe8, 0x96, 0x01, 0xe8, 0xfe, + 0x18, 0x96, 0xfe, 0x18, 0x04, 0x66, 0x02, 0xf8, 0x96, 0x03, 0xce, 0xfc, + 0x32, 0xfe, 0x3e, 0xfc, 0x32, 0x03, 0xce, 0x96, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xfe, 0x02, 0x7e, 0x07, 0x5c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x34, + 0xb4, 0x01, 0x0a, 0x0c, 0x00, 0x06, 0xb8, 0x02, 0x58, 0xb2, 0x03, 0x09, + 0x03, 0x41, 0x0a, 0x02, 0x58, 0x00, 0x01, 0x00, 0x06, 0x02, 0x58, 0x00, + 0x0a, 0x02, 0x63, 0x00, 0x07, 0x02, 0x65, 0x00, 0x04, 0x02, 0x66, 0x00, + 0x3f, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, 0x01, 0x2f, 0x33, 0xed, 0x32, 0x10, + 0xc4, 0x32, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x11, + 0x23, 0x11, 0x21, 0x35, 0x02, 0x7e, 0xfd, 0x82, 0x01, 0xe8, 0x96, 0x96, + 0xfe, 0x18, 0x02, 0xf8, 0x96, 0x03, 0xce, 0xfb, 0x06, 0xfb, 0x9c, 0x03, + 0xce, 0x96, 0x00, 0x02, 0x01, 0xe8, 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x34, 0xb4, 0x00, 0x0b, 0x0d, 0x04, 0x07, + 0xb8, 0x02, 0x58, 0xb2, 0x01, 0x0a, 0x08, 0x41, 0x0a, 0x02, 0x65, 0x00, + 0x04, 0x02, 0x58, 0x00, 0x00, 0x00, 0x0a, 0x02, 0x58, 0x00, 0x07, 0x02, + 0x63, 0x00, 0x03, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, + 0x01, 0x2f, 0x33, 0xed, 0x32, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x21, + 0x11, 0x33, 0x11, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x04, 0x66, + 0xfd, 0x82, 0x96, 0x01, 0xe8, 0xfe, 0x18, 0x96, 0x02, 0x7e, 0x02, 0xf8, + 0x04, 0x64, 0xfc, 0x32, 0xfe, 0x3e, 0xfc, 0x32, 0x04, 0x64, 0x00, 0x02, + 0x00, 0x00, 0x01, 0xcc, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x07, 0x00, 0x0b, + 0x00, 0x32, 0xb6, 0x0b, 0x07, 0x0d, 0x0a, 0x02, 0x0c, 0x06, 0xb8, 0x02, + 0x58, 0xb2, 0x03, 0x06, 0x02, 0xbf, 0x02, 0x58, 0x00, 0x00, 0x00, 0x0b, + 0x02, 0x58, 0x00, 0x09, 0x02, 0x63, 0x00, 0x04, 0x02, 0x66, 0x00, 0x3f, + 0x3f, 0xfd, 0xd6, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x10, 0xc4, 0x32, 0x10, + 0xc4, 0x32, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, + 0x11, 0x21, 0x35, 0x21, 0x04, 0x66, 0xfb, 0x9a, 0x01, 0xe8, 0x96, 0x01, + 0xe8, 0xfb, 0x9a, 0x04, 0x66, 0x02, 0xf8, 0x96, 0x03, 0xce, 0xfc, 0x32, + 0xfe, 0x3e, 0x96, 0x00, 0x00, 0x02, 0x00, 0x00, 0x01, 0xcc, 0x02, 0x7e, + 0x07, 0x5c, 0x00, 0x05, 0x00, 0x09, 0x00, 0x2d, 0xb4, 0x09, 0x01, 0x08, + 0x0a, 0x00, 0x41, 0x0b, 0x02, 0x58, 0x00, 0x03, 0x00, 0x02, 0x02, 0x58, + 0x00, 0x00, 0x00, 0x08, 0x02, 0x58, 0x00, 0x06, 0x02, 0x63, 0x00, 0x05, + 0x02, 0x66, 0x00, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, 0x01, 0x2f, 0xed, 0x10, + 0xd4, 0x32, 0xcd, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, + 0x21, 0x35, 0x21, 0x02, 0x7e, 0xfd, 0x82, 0x01, 0xe8, 0x96, 0xfd, 0x82, + 0x02, 0x7e, 0x02, 0xf8, 0x96, 0x03, 0xce, 0xfa, 0x70, 0x96, 0x00, 0x02, + 0x01, 0xe8, 0x01, 0xcc, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x05, 0x00, 0x09, + 0x00, 0x2d, 0xb4, 0x00, 0x09, 0x0b, 0x08, 0x04, 0x41, 0x0b, 0x02, 0x58, + 0x00, 0x01, 0x00, 0x04, 0x02, 0x58, 0x00, 0x00, 0x00, 0x09, 0x02, 0x58, + 0x00, 0x07, 0x02, 0x63, 0x00, 0x03, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0xfd, + 0xd6, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, + 0x21, 0x11, 0x33, 0x11, 0x21, 0x11, 0x21, 0x35, 0x21, 0x04, 0x66, 0xfd, + 0x82, 0x96, 0x01, 0xe8, 0xfd, 0x82, 0x02, 0x7e, 0x02, 0xf8, 0x04, 0x64, + 0xfc, 0x32, 0xfe, 0x3e, 0x96, 0x00, 0x00, 0x02, 0x00, 0x00, 0xfd, 0xfe, + 0x04, 0x66, 0x03, 0x8e, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x34, 0xb6, 0x08, + 0x04, 0x0d, 0x09, 0x03, 0x0c, 0x06, 0x41, 0x0c, 0x02, 0x58, 0x00, 0x01, + 0x00, 0x07, 0x02, 0x65, 0x00, 0x0b, 0x02, 0x58, 0x00, 0x09, 0x00, 0x04, + 0x02, 0x58, 0x00, 0x06, 0x00, 0x02, 0x02, 0x63, 0x00, 0x3f, 0x33, 0xfd, + 0xd6, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x10, 0xc4, 0x32, 0x10, 0xc4, 0x32, + 0x31, 0x30, 0x01, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x01, 0x21, + 0x35, 0x21, 0x01, 0xe8, 0xfe, 0x18, 0x04, 0x66, 0xfe, 0x18, 0x01, 0xe8, + 0xfb, 0x9a, 0x04, 0x66, 0xfd, 0xfe, 0x03, 0xce, 0x96, 0x96, 0xfc, 0x32, + 0x04, 0xfa, 0x96, 0x00, 0x00, 0x02, 0x00, 0x00, 0xfd, 0xfe, 0x02, 0x7e, + 0x03, 0x8e, 0x00, 0x05, 0x00, 0x09, 0x00, 0x2d, 0xb4, 0x07, 0x02, 0x0a, + 0x06, 0x04, 0x41, 0x0b, 0x02, 0x58, 0x00, 0x01, 0x00, 0x05, 0x02, 0x65, + 0x00, 0x09, 0x02, 0x58, 0x00, 0x07, 0x00, 0x04, 0x02, 0x58, 0x00, 0x02, + 0x02, 0x63, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x32, + 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x11, 0x21, 0x35, 0x21, 0x11, 0x11, + 0x21, 0x35, 0x21, 0x01, 0xe8, 0xfe, 0x18, 0x02, 0x7e, 0xfd, 0x82, 0x02, + 0x7e, 0xfd, 0xfe, 0x03, 0xce, 0x96, 0xfb, 0x9c, 0x04, 0xfa, 0x96, 0x00, + 0x00, 0x02, 0x01, 0xe8, 0xfd, 0xfe, 0x04, 0x66, 0x03, 0x8e, 0x00, 0x05, + 0x00, 0x09, 0x00, 0x28, 0xb6, 0x08, 0x04, 0x01, 0x09, 0x06, 0x0b, 0x02, + 0xbf, 0x02, 0x65, 0x00, 0x09, 0x02, 0x58, 0x00, 0x07, 0x00, 0x04, 0x02, + 0x58, 0x00, 0x01, 0x02, 0x63, 0x00, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x01, + 0x10, 0xd4, 0x32, 0xd4, 0xcd, 0x32, 0x31, 0x30, 0x01, 0x21, 0x11, 0x23, + 0x11, 0x21, 0x35, 0x21, 0x35, 0x21, 0x04, 0x66, 0xfe, 0x18, 0x96, 0x02, + 0x7e, 0xfd, 0x82, 0x02, 0x7e, 0x01, 0xcc, 0xfc, 0x32, 0x04, 0x64, 0x96, + 0x96, 0x00, 0x00, 0x02, 0x01, 0x52, 0xfd, 0xfe, 0x03, 0x14, 0x07, 0x5c, + 0x00, 0x03, 0x00, 0x07, 0x00, 0x26, 0xbc, 0x00, 0x06, 0x02, 0x58, 0x00, + 0x05, 0x00, 0x01, 0x02, 0x58, 0xb3, 0x00, 0x08, 0x02, 0x07, 0xbb, 0x02, + 0x65, 0x00, 0x01, 0x00, 0x06, 0x02, 0x66, 0x00, 0x3f, 0x33, 0x3f, 0x33, + 0x01, 0x10, 0xd6, 0xfd, 0xd6, 0xed, 0x31, 0x30, 0x01, 0x33, 0x11, 0x23, + 0x21, 0x11, 0x33, 0x11, 0x01, 0x52, 0x96, 0x96, 0x01, 0x2c, 0x96, 0x07, + 0x5c, 0xf6, 0xa2, 0x09, 0x5e, 0xf6, 0xa2, 0x00, 0x00, 0x04, 0x00, 0x00, + 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x11, + 0x00, 0x17, 0x00, 0x59, 0xb7, 0x0d, 0x0a, 0x19, 0x17, 0x02, 0x18, 0x0f, + 0x08, 0xb8, 0x02, 0x58, 0xb3, 0x0c, 0x07, 0x12, 0x05, 0xb8, 0x02, 0x58, + 0xb3, 0x15, 0x04, 0x09, 0x03, 0xb8, 0x02, 0x58, 0xb3, 0x06, 0x01, 0x0c, + 0x12, 0x41, 0x0c, 0x02, 0x58, 0x00, 0x0f, 0x00, 0x16, 0x02, 0x63, 0x00, + 0x14, 0x02, 0x65, 0x00, 0x11, 0x02, 0x65, 0x00, 0x07, 0x02, 0x66, 0x00, + 0x04, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0xfd, 0x32, + 0xd6, 0x32, 0xed, 0x32, 0x01, 0x2f, 0x33, 0xfd, 0x32, 0xd6, 0x32, 0xed, + 0x32, 0x10, 0xc4, 0x32, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x21, 0x35, + 0x21, 0x11, 0x33, 0x13, 0x11, 0x33, 0x11, 0x21, 0x15, 0x05, 0x21, 0x15, + 0x21, 0x11, 0x23, 0x03, 0x11, 0x23, 0x11, 0x21, 0x35, 0x01, 0xe8, 0xfe, + 0x18, 0x01, 0x52, 0x96, 0x96, 0x96, 0x01, 0x52, 0xfe, 0x18, 0x01, 0xe8, + 0xfe, 0xae, 0x96, 0x96, 0x96, 0xfe, 0xae, 0x02, 0xf8, 0x96, 0x03, 0xce, + 0xfb, 0x9c, 0x04, 0x64, 0xfc, 0x32, 0x96, 0x96, 0x96, 0xfc, 0x32, 0x04, + 0x64, 0xfb, 0x9c, 0x03, 0xce, 0x96, 0x00, 0x03, 0x00, 0x00, 0xfd, 0xfe, + 0x03, 0x14, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x46, + 0xb3, 0x09, 0x0c, 0x10, 0x01, 0xb8, 0x02, 0x58, 0xb2, 0x00, 0x04, 0x0a, + 0xb8, 0x02, 0x58, 0xb2, 0x07, 0x0d, 0x0f, 0x41, 0x0e, 0x02, 0x66, 0x00, + 0x0c, 0x02, 0x58, 0x00, 0x0a, 0x00, 0x09, 0x02, 0x58, 0x00, 0x07, 0x02, + 0x63, 0x00, 0x05, 0x02, 0x65, 0x00, 0x03, 0x02, 0x65, 0x00, 0x00, 0x02, + 0x66, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x01, 0x2f, + 0x33, 0xfd, 0x32, 0xd6, 0xed, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x33, + 0x11, 0x23, 0x03, 0x11, 0x23, 0x11, 0x21, 0x35, 0x25, 0x21, 0x35, 0x21, + 0x11, 0x33, 0x02, 0x7e, 0x96, 0x96, 0x96, 0x96, 0xfe, 0xae, 0x01, 0xe8, + 0xfe, 0x18, 0x01, 0x52, 0x96, 0x07, 0x5c, 0xf6, 0xa2, 0x04, 0x64, 0xfb, + 0x9c, 0x03, 0xce, 0x96, 0x96, 0x96, 0x03, 0xce, 0x00, 0x03, 0x01, 0x52, + 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x03, 0x00, 0x09, 0x00, 0x0f, + 0x00, 0x49, 0xb4, 0x0f, 0x09, 0x11, 0x0b, 0x07, 0x41, 0x16, 0x02, 0x58, + 0x00, 0x0e, 0x00, 0x06, 0x02, 0x72, 0x00, 0x00, 0x02, 0x58, 0x00, 0x03, + 0x00, 0x0d, 0x02, 0x65, 0x00, 0x08, 0x02, 0x58, 0x00, 0x04, 0x00, 0x0e, + 0x02, 0x58, 0x00, 0x0b, 0x02, 0x63, 0x00, 0x07, 0x02, 0x66, 0x00, 0x01, + 0x02, 0x65, 0x00, 0x00, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xfd, + 0xd6, 0xed, 0x3f, 0x01, 0x2f, 0xfd, 0xf6, 0x32, 0xed, 0x32, 0x10, 0xc4, + 0x32, 0x31, 0x30, 0x01, 0x11, 0x23, 0x11, 0x01, 0x21, 0x11, 0x33, 0x11, + 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x01, 0xe8, 0x96, 0x03, 0x14, + 0xfe, 0x18, 0x96, 0x01, 0x52, 0xfe, 0xae, 0x96, 0x01, 0xe8, 0x07, 0x5c, + 0xf6, 0xa2, 0x09, 0x5e, 0xfb, 0x9c, 0x04, 0x64, 0xfc, 0x32, 0xfe, 0x3e, + 0xfc, 0x32, 0x04, 0x64, 0x00, 0x03, 0x00, 0x00, 0x01, 0xcc, 0x04, 0x66, + 0x07, 0x5c, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x41, 0xb6, 0x0e, + 0x0a, 0x11, 0x0f, 0x02, 0x10, 0x09, 0xbb, 0x02, 0x58, 0x00, 0x06, 0x00, + 0x00, 0x02, 0x58, 0xb2, 0x03, 0x03, 0x0a, 0xb8, 0x02, 0x58, 0xb2, 0x00, + 0x06, 0x0d, 0xbe, 0x02, 0x58, 0x00, 0x0f, 0x02, 0x63, 0x00, 0x07, 0x02, + 0x66, 0x00, 0x04, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0x3f, 0xfd, 0xd6, 0x32, + 0xed, 0x32, 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x32, 0x10, 0xc4, + 0x32, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x11, 0x33, 0x13, 0x11, 0x33, + 0x11, 0x21, 0x15, 0x05, 0x21, 0x15, 0x21, 0x01, 0xe8, 0xfe, 0x18, 0x01, + 0x52, 0x96, 0x96, 0x96, 0x01, 0x52, 0xfb, 0x9a, 0x04, 0x66, 0xfb, 0x9a, + 0x02, 0xf8, 0x96, 0x03, 0xce, 0xfb, 0x9c, 0x04, 0x64, 0xfc, 0x32, 0x96, + 0x96, 0x96, 0x00, 0x02, 0x00, 0x00, 0x01, 0xcc, 0x03, 0x14, 0x07, 0x5c, + 0x00, 0x05, 0x00, 0x0b, 0x00, 0x38, 0xbc, 0x00, 0x05, 0x02, 0x58, 0x00, + 0x02, 0x00, 0x06, 0x02, 0x58, 0xb4, 0x09, 0x01, 0x08, 0x0c, 0x0a, 0x41, + 0x0a, 0x02, 0x66, 0x00, 0x08, 0x02, 0x58, 0x00, 0x06, 0x00, 0x01, 0x02, + 0x58, 0x00, 0x05, 0x02, 0x63, 0x00, 0x03, 0x02, 0x66, 0x00, 0x3f, 0x3f, + 0xfd, 0xd6, 0xed, 0x3f, 0x01, 0x10, 0xd4, 0x32, 0xdd, 0xfd, 0xd6, 0xed, + 0x31, 0x30, 0x11, 0x35, 0x21, 0x11, 0x33, 0x11, 0x01, 0x21, 0x35, 0x21, + 0x11, 0x33, 0x02, 0x7e, 0x96, 0xfe, 0xd4, 0xfe, 0x18, 0x01, 0x52, 0x96, + 0x01, 0xcc, 0x96, 0x04, 0xfa, 0xfa, 0x70, 0x01, 0x2c, 0x96, 0x03, 0xce, + 0x00, 0x02, 0x01, 0x52, 0x01, 0xcc, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x05, + 0x00, 0x0b, 0x00, 0x38, 0xb3, 0x04, 0x0a, 0x0d, 0x08, 0x41, 0x10, 0x02, + 0x58, 0x00, 0x07, 0x00, 0x02, 0x02, 0x58, 0x00, 0x01, 0x00, 0x07, 0x02, + 0x66, 0x00, 0x02, 0x02, 0x66, 0x00, 0x09, 0x02, 0x58, 0x00, 0x06, 0x00, + 0x03, 0x02, 0x58, 0x00, 0x00, 0x02, 0x63, 0x00, 0x3f, 0xfd, 0xd6, 0xed, + 0x3f, 0x3f, 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x32, 0x31, 0x30, + 0x01, 0x11, 0x33, 0x11, 0x21, 0x15, 0x01, 0x11, 0x33, 0x11, 0x21, 0x15, + 0x01, 0x52, 0x96, 0x02, 0x7e, 0xfe, 0x18, 0x96, 0x01, 0x52, 0x01, 0xcc, + 0x05, 0x90, 0xfb, 0x06, 0x96, 0x01, 0x2c, 0x04, 0x64, 0xfc, 0x32, 0x96, + 0x00, 0x03, 0x00, 0x00, 0xfd, 0xfe, 0x04, 0x66, 0x03, 0x8e, 0x00, 0x05, + 0x00, 0x0b, 0x00, 0x0f, 0x00, 0x3f, 0x40, 0x09, 0x0e, 0x07, 0x11, 0x0f, + 0x04, 0x10, 0x09, 0x06, 0x00, 0xbd, 0x02, 0x58, 0x00, 0x03, 0x00, 0x0b, + 0x02, 0x65, 0x00, 0x0d, 0x02, 0x58, 0xb2, 0x0f, 0x06, 0x00, 0xbd, 0x02, + 0x58, 0x00, 0x09, 0x00, 0x04, 0x02, 0x63, 0x00, 0x01, 0x02, 0x65, 0x00, + 0x3f, 0x3f, 0x33, 0xfd, 0x32, 0xd6, 0xed, 0x3f, 0x01, 0x2f, 0xfd, 0xd6, + 0xcd, 0x10, 0xc4, 0x32, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x11, 0x23, + 0x11, 0x21, 0x35, 0x21, 0x21, 0x15, 0x21, 0x11, 0x23, 0x01, 0x21, 0x15, + 0x21, 0x01, 0xe8, 0x96, 0xfe, 0xae, 0x02, 0x7e, 0x01, 0xe8, 0xfe, 0xae, + 0x96, 0xfd, 0x82, 0x04, 0x66, 0xfb, 0x9a, 0x02, 0x62, 0xfb, 0x9c, 0x03, + 0xce, 0x96, 0x96, 0xfc, 0x32, 0x05, 0x90, 0x96, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xfe, 0x03, 0x14, 0x03, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x38, + 0xb3, 0x04, 0x0a, 0x0c, 0x00, 0x41, 0x10, 0x02, 0x58, 0x00, 0x03, 0x00, + 0x06, 0x02, 0x58, 0x00, 0x09, 0x00, 0x00, 0x02, 0x58, 0x00, 0x03, 0x00, + 0x06, 0x02, 0x58, 0x00, 0x09, 0x02, 0x63, 0x00, 0x07, 0x02, 0x65, 0x00, + 0x02, 0x02, 0x65, 0x00, 0x3f, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, 0x01, 0x2f, + 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x11, 0x23, 0x11, + 0x21, 0x35, 0x01, 0x11, 0x23, 0x11, 0x21, 0x35, 0x03, 0x14, 0x96, 0xfd, + 0x82, 0x01, 0xe8, 0x96, 0xfe, 0xae, 0x03, 0x8e, 0xfa, 0x70, 0x04, 0xfa, + 0x96, 0xfe, 0xd4, 0xfb, 0x9c, 0x03, 0xce, 0x96, 0x00, 0x02, 0x01, 0x52, + 0xfd, 0xfe, 0x04, 0x66, 0x03, 0x8e, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x38, + 0xb3, 0x01, 0x07, 0x0d, 0x09, 0x41, 0x10, 0x02, 0x58, 0x00, 0x06, 0x00, + 0x02, 0x02, 0x58, 0x00, 0x05, 0x00, 0x0b, 0x02, 0x65, 0x00, 0x05, 0x02, + 0x58, 0x00, 0x02, 0x00, 0x06, 0x02, 0x58, 0x00, 0x09, 0x02, 0x63, 0x00, + 0x03, 0x02, 0x65, 0x00, 0x3f, 0x3f, 0xfd, 0xd6, 0xed, 0x3f, 0x01, 0x2f, + 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x01, 0x15, 0x21, 0x11, + 0x23, 0x11, 0x01, 0x21, 0x15, 0x21, 0x11, 0x23, 0x04, 0x66, 0xfd, 0x82, + 0x96, 0x01, 0x2c, 0x01, 0xe8, 0xfe, 0xae, 0x96, 0x03, 0x8e, 0x96, 0xfb, + 0x06, 0x05, 0x90, 0xfe, 0xd4, 0x96, 0xfc, 0x32, 0x00, 0x02, 0x00, 0x00, + 0x01, 0xcc, 0x04, 0x66, 0x03, 0x8e, 0x00, 0x03, 0x00, 0x07, 0x00, 0x23, + 0xb6, 0x05, 0x02, 0x09, 0x07, 0x03, 0x08, 0x01, 0xbd, 0x02, 0x58, 0x00, + 0x03, 0x00, 0x05, 0x02, 0x58, 0x00, 0x07, 0x02, 0x63, 0x00, 0x3f, 0xfd, + 0xd6, 0xed, 0x01, 0x10, 0xc4, 0x32, 0x10, 0xc4, 0x32, 0x31, 0x30, 0x11, + 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x04, 0x66, 0xfb, 0x9a, 0x04, + 0x66, 0xfb, 0x9a, 0x03, 0x8e, 0x96, 0x96, 0x96, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x45, + 0xb5, 0x0d, 0x11, 0x06, 0x10, 0x0b, 0x0f, 0xbb, 0x02, 0x58, 0x00, 0x08, + 0x00, 0x02, 0x02, 0x58, 0xb3, 0x04, 0x07, 0x07, 0x0c, 0x41, 0x0c, 0x02, + 0x58, 0x00, 0x04, 0x00, 0x0e, 0x02, 0x62, 0x00, 0x09, 0x02, 0x66, 0x00, + 0x08, 0x02, 0x65, 0x00, 0x02, 0x02, 0x65, 0x00, 0x01, 0x02, 0x66, 0x00, + 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0xfd, + 0xd6, 0xed, 0x32, 0x10, 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x33, 0x11, + 0x23, 0x11, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x11, 0x21, 0x15, 0x21, + 0x11, 0x01, 0x52, 0x96, 0x96, 0xfe, 0xae, 0x01, 0x52, 0x01, 0x2c, 0x96, + 0x01, 0x52, 0xfe, 0xae, 0x07, 0x5c, 0xf6, 0xa2, 0x04, 0x64, 0x96, 0xfb, + 0x06, 0x09, 0x5e, 0xfb, 0x9c, 0x96, 0xfb, 0x9c, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xfe, 0x03, 0x14, 0x07, 0x5c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x38, + 0xb2, 0x06, 0x0c, 0x0a, 0xbb, 0x02, 0x58, 0x00, 0x09, 0x00, 0x01, 0x02, + 0x58, 0xb2, 0x04, 0x00, 0x07, 0x41, 0x09, 0x02, 0x58, 0x00, 0x05, 0x02, + 0x62, 0x00, 0x08, 0x00, 0x03, 0x02, 0x65, 0x00, 0x09, 0x00, 0x00, 0x02, + 0x66, 0x00, 0x7c, 0x3f, 0x32, 0x3f, 0x33, 0x18, 0x3f, 0xed, 0x01, 0x2f, + 0x33, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x33, 0x11, 0x23, + 0x11, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x11, 0x01, 0x52, 0x96, 0x96, + 0xfe, 0xae, 0x01, 0x52, 0x01, 0x2c, 0x96, 0x07, 0x5c, 0xf6, 0xa2, 0x04, + 0x64, 0x96, 0xfb, 0x06, 0x09, 0x5e, 0xf6, 0xa2, 0x00, 0x02, 0x01, 0x52, + 0xfd, 0xfe, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x3a, + 0xb3, 0x04, 0x0d, 0x06, 0x02, 0x41, 0x11, 0x02, 0x58, 0x00, 0x01, 0x00, + 0x09, 0x02, 0x58, 0x00, 0x08, 0x00, 0x0a, 0x02, 0x65, 0x00, 0x09, 0x02, + 0x66, 0x00, 0x04, 0x02, 0x58, 0x00, 0x06, 0x02, 0x62, 0x00, 0x02, 0x02, + 0x66, 0x00, 0x00, 0x02, 0x65, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x3f, 0x3f, + 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x32, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x11, + 0x33, 0x11, 0x21, 0x15, 0x21, 0x11, 0x01, 0x33, 0x11, 0x23, 0x02, 0x7e, + 0x96, 0x01, 0x52, 0xfe, 0xae, 0xfe, 0x3e, 0x96, 0x96, 0xfd, 0xfe, 0x09, + 0x5e, 0xfb, 0x9c, 0x96, 0xfb, 0x9c, 0x09, 0x5e, 0xf6, 0xa2, 0x00, 0x01, + 0x00, 0x00, 0x02, 0x62, 0x04, 0x66, 0x07, 0x5c, 0x00, 0x0b, 0x00, 0x35, + 0xb4, 0x07, 0x0d, 0x0a, 0x0c, 0x05, 0xbb, 0x02, 0x58, 0x00, 0x04, 0x00, + 0x01, 0x02, 0x58, 0xb3, 0x00, 0x06, 0x02, 0x0b, 0xbe, 0x02, 0x58, 0x00, + 0x09, 0x02, 0x62, 0x00, 0x04, 0x02, 0x66, 0x00, 0x00, 0x02, 0x66, 0x00, + 0x3f, 0x3f, 0x3f, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, + 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x21, 0x15, 0x21, 0x35, 0x21, 0x01, 0x52, 0x96, 0x96, 0x96, 0x01, 0x52, + 0xfb, 0x9a, 0x01, 0x52, 0x07, 0x5c, 0xfb, 0x9c, 0x04, 0x64, 0xfb, 0x9c, + 0x96, 0x96, 0x00, 0x02, 0x00, 0x00, 0x02, 0x62, 0x03, 0x14, 0x07, 0x5c, + 0x00, 0x05, 0x00, 0x09, 0x00, 0x31, 0xb2, 0x04, 0x0a, 0x08, 0x41, 0x0e, + 0x02, 0x58, 0x00, 0x07, 0x00, 0x01, 0x02, 0x58, 0x00, 0x00, 0x00, 0x07, + 0x02, 0x66, 0x00, 0x06, 0x00, 0x05, 0x02, 0x58, 0x00, 0x02, 0x02, 0x62, + 0x00, 0x00, 0x02, 0x66, 0x00, 0x3f, 0x3f, 0xed, 0x33, 0x3f, 0x01, 0x2f, + 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x33, 0x11, 0x21, 0x35, + 0x21, 0x05, 0x11, 0x33, 0x11, 0x01, 0x52, 0x96, 0xfe, 0x18, 0x01, 0x52, + 0x01, 0x2c, 0x96, 0x07, 0x5c, 0xfb, 0x06, 0x96, 0x96, 0x04, 0xfa, 0xfb, + 0x06, 0x00, 0x00, 0x02, 0x01, 0x52, 0x02, 0x62, 0x04, 0x66, 0x07, 0x5c, + 0x00, 0x05, 0x00, 0x09, 0x00, 0x33, 0xb2, 0x04, 0x0b, 0x02, 0x41, 0x0f, + 0x02, 0x58, 0x00, 0x01, 0x00, 0x07, 0x02, 0x58, 0x00, 0x06, 0x00, 0x08, + 0x02, 0x62, 0x00, 0x07, 0x02, 0x66, 0x00, 0x02, 0x02, 0x66, 0x00, 0x03, + 0x02, 0x58, 0x00, 0x00, 0x02, 0x62, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x3f, + 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x31, 0x30, 0x01, 0x11, 0x33, + 0x11, 0x21, 0x15, 0x01, 0x33, 0x11, 0x23, 0x02, 0x7e, 0x96, 0x01, 0x52, + 0xfc, 0xec, 0x96, 0x96, 0x02, 0x62, 0x04, 0xfa, 0xfb, 0x9c, 0x96, 0x04, + 0xfa, 0xfb, 0x06, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfd, 0xfe, 0x04, 0x66, + 0x02, 0xf8, 0x00, 0x0b, 0x00, 0x35, 0xb4, 0x01, 0x0d, 0x0b, 0x0c, 0x03, + 0xbb, 0x02, 0x58, 0x00, 0x06, 0x00, 0x07, 0x02, 0x58, 0xb3, 0x0a, 0x07, + 0x03, 0x01, 0xbe, 0x02, 0x58, 0x00, 0x0b, 0x02, 0x62, 0x00, 0x08, 0x02, + 0x65, 0x00, 0x05, 0x02, 0x65, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x33, 0x33, + 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x10, 0xc4, 0x31, 0x30, 0x11, + 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x04, + 0x66, 0xfe, 0xae, 0x96, 0x96, 0x96, 0xfe, 0xae, 0x02, 0xf8, 0x96, 0xfb, + 0x9c, 0x04, 0x64, 0xfb, 0x9c, 0x04, 0x64, 0x00, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xfe, 0x03, 0x14, 0x02, 0xf8, 0x00, 0x05, 0x00, 0x09, 0x00, 0x31, + 0xb2, 0x00, 0x0a, 0x08, 0x41, 0x0e, 0x02, 0x58, 0x00, 0x07, 0x00, 0x01, + 0x02, 0x58, 0x00, 0x04, 0x00, 0x06, 0x02, 0x65, 0x00, 0x07, 0x00, 0x00, + 0x02, 0x58, 0x00, 0x04, 0x02, 0x62, 0x00, 0x02, 0x02, 0x65, 0x00, 0x3f, + 0x3f, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x31, + 0x30, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x01, 0x11, 0x33, 0x11, 0x01, + 0xe8, 0x96, 0xfe, 0xae, 0x02, 0x7e, 0x96, 0x02, 0xf8, 0xfb, 0x06, 0x04, + 0x64, 0xfb, 0x9c, 0x04, 0xfa, 0xfb, 0x06, 0x00, 0x00, 0x02, 0x01, 0x52, + 0xfd, 0xfe, 0x04, 0x66, 0x02, 0xf8, 0x00, 0x05, 0x00, 0x09, 0x00, 0x31, + 0xb2, 0x01, 0x0b, 0x03, 0x41, 0x0e, 0x02, 0x58, 0x00, 0x00, 0x00, 0x07, + 0x02, 0x58, 0x00, 0x06, 0x00, 0x08, 0x02, 0x65, 0x00, 0x04, 0x02, 0x65, + 0x00, 0x07, 0x00, 0x01, 0x02, 0x58, 0x00, 0x03, 0x02, 0x62, 0x00, 0x3f, + 0xed, 0x32, 0x3f, 0x3f, 0x01, 0x2f, 0xfd, 0xd6, 0xed, 0x10, 0xc4, 0x31, + 0x30, 0x01, 0x21, 0x15, 0x21, 0x11, 0x23, 0x01, 0x33, 0x11, 0x23, 0x02, + 0x7e, 0x01, 0xe8, 0xfe, 0xae, 0x96, 0xfe, 0xd4, 0x96, 0x96, 0x02, 0xf8, + 0x96, 0xfb, 0x9c, 0x04, 0xfa, 0xfb, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x32, + 0xff, 0xf4, 0x04, 0x34, 0x03, 0xf9, 0x00, 0x13, 0x00, 0x27, 0x00, 0x3b, + 0x00, 0x4f, 0x00, 0x63, 0x00, 0x77, 0x00, 0x8b, 0x00, 0x9f, 0x00, 0xb3, + 0x00, 0xc7, 0x00, 0xdb, 0x00, 0xef, 0x00, 0xe3, 0x40, 0x35, 0x3c, 0x46, + 0x50, 0x5a, 0x28, 0x32, 0x14, 0x1e, 0x64, 0x6e, 0x0f, 0x05, 0xeb, 0xe1, + 0x82, 0x78, 0x96, 0x8c, 0xd2, 0xc8, 0xaa, 0xa0, 0xbe, 0xb4, 0x46, 0x5a, + 0x32, 0x1e, 0x6e, 0x05, 0xe1, 0x78, 0x8c, 0xc8, 0xa0, 0xb4, 0xb4, 0xa0, + 0xc8, 0x8c, 0x78, 0xe1, 0x05, 0x6e, 0x1e, 0x32, 0x5a, 0x46, 0x0c, 0xf0, + 0xf1, 0x55, 0xd7, 0xb8, 0x02, 0x73, 0xb2, 0xcd, 0x41, 0xc3, 0xb8, 0x02, + 0x73, 0xb2, 0xb9, 0x2d, 0xaf, 0xb8, 0x02, 0x73, 0xb2, 0xa5, 0x19, 0x9b, + 0xbb, 0x02, 0x73, 0x00, 0x91, 0x00, 0xdc, 0x02, 0x73, 0x40, 0x1a, 0x80, + 0xe6, 0x90, 0xe6, 0x02, 0xe6, 0xe6, 0x23, 0x23, 0x91, 0x91, 0xa5, 0x37, + 0x37, 0xa5, 0xa5, 0x4b, 0xb9, 0xb9, 0xcd, 0x5f, 0x5f, 0xcd, 0xcd, 0x69, + 0x87, 0xb8, 0x02, 0x73, 0x40, 0x0b, 0x7d, 0x73, 0x73, 0x80, 0x7d, 0x90, + 0x7d, 0x02, 0x7d, 0x7d, 0x00, 0xb8, 0x02, 0x73, 0xb5, 0x8f, 0x0a, 0xaf, + 0x0a, 0x02, 0x0a, 0x00, 0x2f, 0x5d, 0xed, 0x33, 0x2f, 0x5d, 0x33, 0x2f, + 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x5d, 0xed, + 0x10, 0xed, 0x32, 0x10, 0xed, 0x32, 0x10, 0xed, 0x32, 0x10, 0xed, 0x32, + 0x11, 0x12, 0x01, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x10, + 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x10, + 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x31, 0x30, 0x01, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x03, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x27, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x27, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x37, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x37, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x13, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x37, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x01, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x02, 0x33, 0x0f, 0x1a, 0x13, + 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, + 0xa6, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, + 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0xa5, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, + 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x37, 0x0b, + 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, + 0x1a, 0x13, 0x0b, 0x37, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, + 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0xa6, 0x0b, 0x13, 0x1a, + 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, + 0x0b, 0x01, 0x2c, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, + 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x01, 0x0b, 0x13, 0x1a, 0x0f, + 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, + 0xa5, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, + 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x37, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, + 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x37, 0x0b, + 0x13, 0x1a, 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x0f, 0x0f, + 0x1a, 0x13, 0x0b, 0xfe, 0xc4, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, + 0x0f, 0x0f, 0x1a, 0x13, 0x0b, 0x0b, 0x13, 0x1a, 0x03, 0x6b, 0x0b, 0x14, + 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, + 0x14, 0x0b, 0xfd, 0x07, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, + 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x96, 0x0f, 0x19, 0x14, 0x0b, + 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0xd0, + 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, + 0x0b, 0x14, 0x19, 0xd0, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, + 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x96, 0x0f, 0x19, 0x14, 0x0b, + 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, + 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, + 0x0b, 0x14, 0x19, 0xfd, 0x07, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, + 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0xb4, 0x0f, 0x19, 0x14, + 0x0b, 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, + 0xee, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, 0x14, + 0x0b, 0x0b, 0x14, 0x19, 0xee, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, + 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0xfd, 0x2e, 0x0b, 0x14, + 0x19, 0x0f, 0x0f, 0x19, 0x14, 0x0b, 0x0b, 0x14, 0x19, 0x0f, 0x0f, 0x19, + 0x14, 0x0b, 0x00, 0x01, 0x00, 0x5e, 0xff, 0xec, 0x04, 0x10, 0x05, 0x2d, + 0x00, 0x23, 0x00, 0x39, 0xb1, 0x10, 0x0b, 0xb8, 0x01, 0xf6, 0xb3, 0x0e, + 0x21, 0x21, 0x1b, 0xb8, 0x01, 0xf5, 0x40, 0x09, 0x00, 0x00, 0x0e, 0x21, + 0xda, 0x20, 0x44, 0x0b, 0x06, 0xb8, 0x01, 0x17, 0xb6, 0x10, 0x15, 0x42, + 0x0e, 0x41, 0x0c, 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x30, + 0x31, 0x01, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, + 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, + 0x14, 0x0e, 0x02, 0x23, 0x35, 0x32, 0x36, 0x03, 0x1a, 0x10, 0x22, 0x38, + 0x27, 0x20, 0x44, 0x4b, 0x55, 0x30, 0xf7, 0xec, 0x07, 0x2c, 0x56, 0x56, + 0x57, 0x2c, 0x4e, 0x82, 0x5f, 0x35, 0x43, 0x7a, 0xaf, 0x6c, 0x6f, 0x73, + 0x01, 0x90, 0x01, 0xda, 0x3f, 0x58, 0x36, 0x18, 0x11, 0x2d, 0x4e, 0x3c, + 0xfc, 0x79, 0x05, 0x1b, 0xa2, 0x34, 0x45, 0x2a, 0x11, 0x2e, 0x5b, 0x8a, + 0x5c, 0xfd, 0xd4, 0x72, 0xa1, 0x65, 0x2e, 0xc3, 0x66, 0x00, 0x00, 0x01, + 0x00, 0x5e, 0xfe, 0x5c, 0x04, 0x10, 0x05, 0x2d, 0x00, 0x23, 0x00, 0x39, + 0xb1, 0x10, 0x0b, 0xb8, 0x01, 0xf6, 0xb3, 0x0e, 0x21, 0x21, 0x1a, 0xb8, + 0x01, 0xf5, 0x40, 0x09, 0x01, 0x01, 0x0e, 0x21, 0xda, 0x20, 0x45, 0x0b, + 0x06, 0xb8, 0x01, 0x17, 0xb6, 0x10, 0x15, 0x42, 0x0e, 0x41, 0x0c, 0x43, + 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, + 0x2f, 0xed, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x21, 0x11, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, + 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, 0x0e, 0x02, 0x23, + 0x35, 0x32, 0x36, 0x03, 0x1a, 0x10, 0x22, 0x38, 0x27, 0x20, 0x44, 0x4b, + 0x55, 0x30, 0xf7, 0xec, 0x07, 0x2c, 0x56, 0x56, 0x57, 0x2c, 0x4e, 0x82, + 0x5f, 0x35, 0x43, 0x7a, 0xaf, 0x6c, 0x6f, 0x73, 0x03, 0x6a, 0x3f, 0x58, + 0x36, 0x18, 0x11, 0x2d, 0x4e, 0x3c, 0xfc, 0x79, 0x05, 0x1b, 0xa2, 0x34, + 0x45, 0x2a, 0x11, 0x2e, 0x5b, 0x8a, 0x5c, 0xfc, 0x44, 0x72, 0xa1, 0x65, + 0x2e, 0xc3, 0x66, 0x00, 0x00, 0x01, 0x00, 0x5e, 0xff, 0xec, 0x04, 0x10, + 0x05, 0x2d, 0x00, 0x29, 0x00, 0x3c, 0xb1, 0x10, 0x0b, 0xb8, 0x01, 0xf6, + 0xb4, 0x0e, 0x24, 0x24, 0x0e, 0x1a, 0xb8, 0x01, 0xf5, 0x40, 0x0b, 0x01, + 0x24, 0x0d, 0x0d, 0x27, 0xe3, 0x23, 0x20, 0x44, 0x0b, 0x06, 0xb8, 0x01, + 0x17, 0xb4, 0x10, 0x15, 0x42, 0x0e, 0x41, 0x00, 0x3f, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x11, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x03, 0x1a, 0x10, 0x22, 0x38, 0x27, + 0x20, 0x44, 0x4b, 0x55, 0x30, 0xf7, 0xec, 0x07, 0x2c, 0x56, 0x56, 0x57, + 0x2c, 0x4e, 0x82, 0x5f, 0x35, 0x44, 0x80, 0xba, 0x75, 0x69, 0xb6, 0x52, + 0x56, 0xbd, 0x61, 0x84, 0x76, 0x01, 0xaf, 0x01, 0xbb, 0x3f, 0x58, 0x36, + 0x18, 0x11, 0x2d, 0x4e, 0x3c, 0xfe, 0x33, 0x03, 0x61, 0xa2, 0x34, 0x45, + 0x2a, 0x11, 0x2e, 0x5b, 0x8a, 0x5c, 0xfd, 0xdf, 0x79, 0xa5, 0x66, 0x2d, + 0x1c, 0x27, 0xee, 0x38, 0x2b, 0x7a, 0xff, 0xff, 0x00, 0x4f, 0xfe, 0xd9, + 0x04, 0x17, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x17, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x54, 0xe1, 0x00, 0xff, 0xff, 0x00, 0x3b, 0xfe, 0xd9, 0x03, 0xd1, + 0x05, 0x3d, 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x01, 0x54, + 0x59, 0x00, 0xff, 0xff, 0x00, 0x91, 0xfe, 0x6a, 0x04, 0x19, 0x03, 0xf8, + 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x01, 0x55, 0x1d, 0x00, + 0x00, 0x02, 0x00, 0xf4, 0x04, 0x15, 0x03, 0x72, 0x06, 0xb0, 0x00, 0x07, + 0x00, 0x0a, 0x00, 0x4b, 0x40, 0x0c, 0x09, 0x02, 0x03, 0x0a, 0x01, 0x00, + 0x06, 0x05, 0x08, 0x08, 0x04, 0x00, 0xbb, 0x01, 0x63, 0x00, 0x07, 0x00, + 0x03, 0x01, 0x55, 0x40, 0x12, 0x04, 0x02, 0x8d, 0x2f, 0x09, 0x3f, 0x09, + 0x4f, 0x09, 0x03, 0x09, 0x09, 0x04, 0x08, 0x05, 0x05, 0x00, 0x04, 0xb8, + 0x02, 0x85, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x5d, + 0xed, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x12, + 0x39, 0x39, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x27, 0x23, 0x07, 0x23, + 0x13, 0x33, 0x13, 0x01, 0x03, 0x33, 0x02, 0xcc, 0x27, 0xf2, 0x28, 0x97, + 0xdd, 0xc4, 0xdd, 0xfe, 0xbc, 0x5a, 0xb2, 0x04, 0x15, 0x84, 0x84, 0x02, + 0x9b, 0xfd, 0x65, 0x02, 0x17, 0xfe, 0xdb, 0x00, 0x00, 0x03, 0x01, 0x3c, + 0x04, 0x15, 0x03, 0x48, 0x06, 0xb0, 0x00, 0x12, 0x00, 0x1f, 0x00, 0x2a, + 0x00, 0x1f, 0x40, 0x0d, 0x0a, 0x29, 0x8d, 0x1a, 0x1a, 0x2a, 0x19, 0x8d, + 0x01, 0x01, 0x2a, 0x8d, 0x00, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0xed, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x30, 0x31, 0x01, 0x11, 0x33, + 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x06, + 0x23, 0x13, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x15, 0x33, 0x32, 0x3e, 0x02, + 0x03, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x23, 0x15, 0x01, 0x3c, + 0xf0, 0x7f, 0x7f, 0x0d, 0x1b, 0x29, 0x1c, 0x1c, 0x33, 0x26, 0x16, 0x99, + 0x90, 0x6f, 0x0c, 0x1c, 0x2a, 0x1e, 0x4d, 0x4d, 0x1f, 0x2a, 0x1b, 0x0c, + 0x63, 0x1e, 0x2e, 0x20, 0x10, 0x43, 0x43, 0x50, 0x04, 0x15, 0x02, 0x9b, + 0x50, 0x51, 0x19, 0x2f, 0x28, 0x1e, 0x09, 0x04, 0x18, 0x26, 0x34, 0x20, + 0x66, 0x67, 0x01, 0xe4, 0x11, 0x1c, 0x13, 0x0b, 0xa4, 0x0d, 0x19, 0x21, + 0xfe, 0x9d, 0x0e, 0x19, 0x23, 0x13, 0x29, 0x2e, 0xb4, 0x00, 0x00, 0x01, + 0x01, 0x21, 0x04, 0x0c, 0x03, 0x2e, 0x06, 0xb9, 0x00, 0x25, 0x00, 0x2f, + 0xb4, 0x13, 0x13, 0x25, 0x25, 0x1b, 0xb8, 0x01, 0x63, 0x40, 0x0d, 0x08, + 0x25, 0x20, 0x90, 0x03, 0x13, 0x16, 0x90, 0x12, 0x0d, 0x0d, 0x00, 0x03, + 0xb8, 0x02, 0x86, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x10, + 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x03, 0x2e, 0x31, 0x5d, 0x32, + 0x51, 0x7b, 0x55, 0x2c, 0x30, 0x59, 0x7f, 0x4f, 0x1a, 0x2d, 0x2b, 0x2c, + 0x18, 0x2f, 0x55, 0x23, 0x34, 0x49, 0x30, 0x15, 0x16, 0x30, 0x4a, 0x34, + 0x12, 0x2b, 0x2c, 0x2a, 0x12, 0x04, 0x2f, 0x12, 0x11, 0x2a, 0x54, 0x7c, + 0x52, 0x54, 0x83, 0x5a, 0x30, 0x02, 0x06, 0x09, 0x07, 0x85, 0x15, 0x11, + 0x22, 0x3c, 0x51, 0x31, 0x34, 0x51, 0x39, 0x1f, 0x06, 0x0b, 0x0f, 0x07, + 0x00, 0x02, 0x01, 0x23, 0x04, 0x15, 0x03, 0x56, 0x06, 0xb0, 0x00, 0x0c, + 0x00, 0x17, 0x00, 0x26, 0xb9, 0x00, 0x00, 0x01, 0x56, 0xb2, 0x0d, 0x0d, + 0x13, 0xb8, 0x01, 0x55, 0xb7, 0x07, 0x13, 0x8d, 0x07, 0x07, 0x14, 0x8d, + 0x06, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x23, + 0x11, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, + 0x33, 0x32, 0x36, 0x03, 0x56, 0x2b, 0x5b, 0x8d, 0x63, 0xbd, 0xdd, 0x55, + 0x80, 0x56, 0x2b, 0xa1, 0x12, 0x2a, 0x48, 0x36, 0x42, 0x39, 0x60, 0x63, + 0x05, 0x6b, 0x4e, 0x7e, 0x5a, 0x30, 0x02, 0x9b, 0x27, 0x4f, 0x7b, 0x5c, + 0x34, 0x51, 0x39, 0x1e, 0xfe, 0x47, 0x6a, 0x00, 0x00, 0x01, 0x01, 0x5b, + 0x04, 0x15, 0x03, 0x1b, 0x06, 0xb0, 0x00, 0x0b, 0x00, 0x39, 0x40, 0x09, + 0x06, 0x06, 0x0a, 0x03, 0x03, 0x0a, 0x0a, 0x05, 0x09, 0xb8, 0x01, 0x55, + 0x40, 0x0e, 0x00, 0x08, 0x8d, 0x05, 0x05, 0x01, 0x09, 0x8d, 0x00, 0x04, + 0x8d, 0x01, 0x01, 0x00, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x32, 0x2f, 0xed, + 0x10, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x11, 0x21, 0x15, 0x21, + 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x01, 0x5b, 0x01, 0xc0, 0xfe, + 0xd8, 0x01, 0x1a, 0xfe, 0xe6, 0x01, 0x28, 0x04, 0x15, 0x02, 0x9b, 0x73, + 0x99, 0x70, 0xad, 0x72, 0x00, 0x01, 0x01, 0x5b, 0x04, 0x15, 0x03, 0x13, + 0x06, 0xb0, 0x00, 0x09, 0x00, 0x2d, 0xb5, 0x02, 0x02, 0x09, 0x09, 0x04, + 0x00, 0xb8, 0x01, 0x55, 0x40, 0x0b, 0x07, 0x04, 0x8d, 0x01, 0x01, 0x06, + 0x00, 0x8d, 0x07, 0x07, 0x06, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x2f, + 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0x33, + 0x2f, 0x30, 0x31, 0x01, 0x15, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, + 0x15, 0x01, 0xf3, 0x01, 0x10, 0xfe, 0xf0, 0x98, 0x01, 0xb8, 0x06, 0x3d, + 0xb0, 0x6f, 0xfe, 0xf7, 0x02, 0x9b, 0x73, 0x00, 0x00, 0x01, 0x01, 0x0d, + 0x04, 0x09, 0x03, 0x3f, 0x06, 0xbb, 0x00, 0x27, 0x00, 0x36, 0xb2, 0x14, + 0x14, 0x02, 0xb8, 0x01, 0x55, 0xb2, 0x27, 0x27, 0x1c, 0xb8, 0x01, 0x56, + 0x40, 0x0e, 0x0b, 0x00, 0x8d, 0x01, 0x01, 0x10, 0x21, 0x90, 0x06, 0x17, + 0x90, 0x10, 0x10, 0x06, 0xb8, 0x02, 0x86, 0x00, 0x3f, 0x33, 0x2f, 0xed, + 0x10, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x30, 0x31, 0x01, 0x35, 0x21, 0x11, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, + 0x02, 0x37, 0x35, 0x02, 0x36, 0x01, 0x09, 0x33, 0x70, 0x41, 0x4e, 0x7b, + 0x57, 0x2e, 0x30, 0x5d, 0x87, 0x57, 0x33, 0x62, 0x30, 0x29, 0x63, 0x33, + 0x33, 0x4f, 0x35, 0x1b, 0x15, 0x2e, 0x49, 0x33, 0x0b, 0x12, 0x0e, 0x0d, + 0x08, 0x05, 0x27, 0x70, 0xfe, 0x9c, 0x15, 0x15, 0x2b, 0x55, 0x7d, 0x53, + 0x53, 0x84, 0x5b, 0x30, 0x10, 0x0d, 0x84, 0x12, 0x17, 0x21, 0x3a, 0x54, + 0x35, 0x33, 0x52, 0x3a, 0x1f, 0x02, 0x03, 0x03, 0x03, 0x9b, 0x00, 0x01, + 0x01, 0x28, 0x04, 0x15, 0x03, 0x3e, 0x06, 0xb0, 0x00, 0x0b, 0x00, 0x35, + 0xb9, 0x00, 0x0a, 0x01, 0x55, 0xb3, 0x01, 0x09, 0x09, 0x06, 0xba, 0x01, + 0x55, 0x00, 0x02, 0x01, 0x55, 0x40, 0x0b, 0x05, 0x02, 0x8d, 0x07, 0x07, + 0x04, 0x09, 0x05, 0x05, 0x00, 0x04, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0xed, 0x33, + 0x2f, 0x33, 0xed, 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x23, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x02, 0xa8, 0xe9, 0x97, 0x97, 0xe9, 0x96, + 0x04, 0x15, 0x01, 0x1e, 0xfe, 0xe2, 0x02, 0x9b, 0xfe, 0xf8, 0x01, 0x08, + 0xfd, 0x65, 0x00, 0x01, 0x01, 0x48, 0x04, 0x15, 0x03, 0x1e, 0x06, 0xb0, + 0x00, 0x0b, 0x00, 0x35, 0xb4, 0x06, 0x06, 0x03, 0x03, 0x04, 0xb8, 0x01, + 0x55, 0x40, 0x10, 0x0b, 0x09, 0x09, 0x00, 0x00, 0x0b, 0x05, 0x09, 0x8d, + 0x08, 0x04, 0x00, 0x8d, 0x01, 0x01, 0x08, 0xb8, 0x02, 0x85, 0x00, 0x3f, + 0x33, 0x2f, 0xed, 0x32, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x35, 0x21, + 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x11, 0x01, 0x48, 0x01, + 0xd6, 0x9f, 0x9f, 0xfe, 0x2a, 0x9f, 0x06, 0x41, 0x6f, 0x6f, 0xfe, 0x44, + 0x70, 0x70, 0x01, 0xbc, 0x00, 0x01, 0x01, 0x54, 0x04, 0x0b, 0x02, 0xf6, + 0x06, 0xb0, 0x00, 0x17, 0x00, 0x2d, 0xb9, 0x00, 0x17, 0x01, 0x56, 0x40, + 0x10, 0x14, 0x15, 0x15, 0x14, 0x09, 0x09, 0x14, 0x15, 0x8d, 0x16, 0x16, + 0x09, 0x0e, 0x8d, 0x08, 0x05, 0xb8, 0x02, 0x86, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x33, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x10, + 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x21, 0x35, 0x21, 0x02, + 0xf6, 0x21, 0x40, 0x5f, 0x3e, 0x2f, 0x55, 0x20, 0x0e, 0x26, 0x2c, 0x2d, + 0x17, 0x10, 0x26, 0x1d, 0x12, 0xfe, 0xfd, 0x01, 0x9c, 0x04, 0xdc, 0x2f, + 0x4d, 0x37, 0x1e, 0x13, 0x0f, 0x81, 0x0a, 0x13, 0x0d, 0x08, 0x0c, 0x1c, + 0x2c, 0x21, 0x01, 0x4f, 0x70, 0x00, 0x00, 0x01, 0x01, 0x3c, 0x04, 0x15, + 0x03, 0x5f, 0x06, 0xb0, 0x00, 0x0a, 0x00, 0x33, 0xb7, 0x07, 0x08, 0x08, + 0x00, 0x0a, 0x0a, 0x01, 0x05, 0xb8, 0x01, 0x55, 0x40, 0x0b, 0x04, 0x06, + 0x01, 0x09, 0x09, 0x03, 0x07, 0x04, 0x04, 0x00, 0x03, 0xb8, 0x02, 0x85, + 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, + 0x2f, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x03, 0x11, 0x23, 0x11, 0x33, 0x11, 0x13, 0x33, 0x03, 0x13, 0x02, 0x9f, + 0xcb, 0x98, 0x98, 0xca, 0xb4, 0xef, 0xfc, 0x04, 0x15, 0x01, 0x42, 0xfe, + 0xbe, 0x02, 0x9b, 0xfe, 0xd0, 0x01, 0x30, 0xfe, 0xc4, 0xfe, 0xa1, 0x00, + 0x00, 0x01, 0x01, 0x62, 0x04, 0x15, 0x03, 0x2b, 0x06, 0xb0, 0x00, 0x05, + 0x00, 0x1f, 0xb2, 0x04, 0x04, 0x02, 0xb8, 0x01, 0x56, 0xb6, 0x01, 0x03, + 0x8d, 0x00, 0x01, 0x01, 0x00, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x32, 0x2f, + 0x10, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x11, 0x33, + 0x11, 0x21, 0x15, 0x01, 0x62, 0x99, 0x01, 0x30, 0x04, 0x15, 0x02, 0x9b, + 0xfd, 0xd9, 0x74, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x04, 0x15, 0x03, 0x6a, + 0x06, 0xb0, 0x00, 0x12, 0x00, 0x52, 0x40, 0x0f, 0x05, 0x04, 0x0e, 0x0e, + 0x11, 0x0c, 0x07, 0x0b, 0x0b, 0x0a, 0x10, 0x02, 0x11, 0x11, 0x12, 0xb8, + 0x01, 0x52, 0xb2, 0x00, 0x00, 0x09, 0xb8, 0x01, 0x51, 0x40, 0x0e, 0x0a, + 0x02, 0x07, 0x07, 0x0b, 0x0e, 0x05, 0x05, 0x0a, 0x10, 0x0b, 0x0b, 0x00, + 0x0a, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, + 0x2f, 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x12, 0x39, 0x11, + 0x33, 0x33, 0x30, 0x31, 0x01, 0x03, 0x27, 0x07, 0x07, 0x23, 0x27, 0x27, + 0x07, 0x03, 0x23, 0x13, 0x33, 0x17, 0x17, 0x37, 0x37, 0x33, 0x13, 0x02, + 0xe3, 0x0d, 0x05, 0x24, 0x4e, 0x6c, 0x45, 0x20, 0x04, 0x0c, 0x82, 0x24, + 0xb5, 0x3b, 0x1f, 0x20, 0x3f, 0xb7, 0x25, 0x04, 0x15, 0x01, 0x6f, 0x96, + 0x66, 0xd9, 0xd9, 0x66, 0x93, 0xfe, 0x8e, 0x02, 0x9b, 0xb4, 0x6a, 0x64, + 0xba, 0xfd, 0x65, 0x00, 0x00, 0x01, 0x01, 0x28, 0x04, 0x15, 0x03, 0x43, + 0x06, 0xb0, 0x00, 0x0d, 0x00, 0x2c, 0xb9, 0x00, 0x0c, 0x01, 0x53, 0xb4, + 0x00, 0x0b, 0x0b, 0x07, 0x04, 0xb8, 0x01, 0x53, 0xb7, 0x05, 0x0b, 0x02, + 0x06, 0x06, 0x09, 0x00, 0x05, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x33, + 0x33, 0x2f, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x33, 0x2f, 0x33, 0xed, + 0x30, 0x31, 0x01, 0x03, 0x27, 0x15, 0x15, 0x23, 0x11, 0x33, 0x13, 0x17, + 0x11, 0x35, 0x33, 0x11, 0x02, 0x98, 0xbe, 0x29, 0x89, 0xac, 0xc1, 0x24, + 0x8a, 0x04, 0x15, 0x01, 0x70, 0x56, 0xf7, 0xcf, 0x02, 0x9b, 0xfe, 0x8d, + 0x4e, 0x01, 0x09, 0xb8, 0xfd, 0x65, 0x00, 0x02, 0x01, 0x07, 0x04, 0x09, + 0x03, 0x5f, 0x06, 0xbb, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x26, 0xb9, 0x00, + 0x00, 0x01, 0x56, 0xb2, 0x10, 0x10, 0x18, 0xb8, 0x01, 0x56, 0xb7, 0x08, + 0x13, 0x90, 0x0d, 0x0d, 0x1b, 0x90, 0x05, 0xb8, 0x02, 0x86, 0x00, 0x3f, + 0xed, 0x33, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x03, 0x5f, 0x2f, 0x53, 0x6f, 0x3f, 0x94, 0x94, + 0x2f, 0x53, 0x6f, 0x40, 0x93, 0x94, 0x9e, 0x42, 0x4c, 0x25, 0x36, 0x22, + 0x11, 0x43, 0x4b, 0x26, 0x36, 0x22, 0x10, 0x05, 0x65, 0x5b, 0x83, 0x55, + 0x29, 0xaf, 0xa7, 0x5b, 0x84, 0x54, 0x29, 0xae, 0xae, 0x73, 0x70, 0x1d, + 0x38, 0x53, 0x35, 0x72, 0x70, 0x1d, 0x38, 0x52, 0x00, 0x02, 0x01, 0x3f, + 0x04, 0x15, 0x03, 0x44, 0x06, 0xb0, 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x37, + 0xb1, 0x06, 0x15, 0xbb, 0x01, 0x55, 0x00, 0x09, 0x00, 0x00, 0x01, 0x56, + 0x40, 0x12, 0x0f, 0x0f, 0x09, 0x06, 0x8d, 0x0f, 0x16, 0x1f, 0x16, 0x02, + 0x16, 0x16, 0x08, 0x15, 0x8d, 0x09, 0x09, 0x08, 0xb8, 0x02, 0x85, 0x00, + 0x3f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x01, 0x2f, 0x33, + 0x2f, 0xed, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x23, 0x15, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, + 0x23, 0x23, 0x15, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x44, 0x26, 0x4a, 0x6f, + 0x49, 0x46, 0x97, 0xda, 0x49, 0x6f, 0x4c, 0x27, 0x9d, 0x11, 0x23, 0x35, + 0x24, 0x44, 0x47, 0x22, 0x33, 0x23, 0x12, 0x05, 0xdb, 0x34, 0x58, 0x40, + 0x24, 0xd6, 0x02, 0x9b, 0x1c, 0x37, 0x4f, 0x3b, 0x18, 0x29, 0x1c, 0x10, + 0xe5, 0x11, 0x20, 0x2c, 0x00, 0x02, 0x01, 0x07, 0x03, 0x54, 0x03, 0x78, + 0x06, 0xbb, 0x00, 0x20, 0x00, 0x30, 0x00, 0x4a, 0xb3, 0x18, 0x19, 0x19, + 0x0b, 0xbb, 0x01, 0x56, 0x00, 0x21, 0x00, 0x10, 0x01, 0x53, 0xb5, 0x00, + 0x00, 0x03, 0x21, 0x21, 0x29, 0xb8, 0x01, 0x56, 0x40, 0x10, 0x03, 0x18, + 0x15, 0x8d, 0x19, 0x1c, 0x1c, 0x10, 0x24, 0x90, 0x08, 0x08, 0x2c, 0x8d, + 0x00, 0x10, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0xed, 0x33, 0x2f, 0xed, + 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x12, + 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x26, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x17, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x13, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x01, 0xe9, 0x71, 0x71, 0x2f, 0x53, 0x6f, 0x3f, + 0x94, 0x94, 0x24, 0x40, 0x58, 0x31, 0x04, 0x14, 0x1d, 0x22, 0x12, 0x19, + 0x30, 0x13, 0x41, 0x24, 0x55, 0x2b, 0x35, 0x55, 0x3c, 0x23, 0xd6, 0x42, + 0x4c, 0x25, 0x35, 0x23, 0x11, 0x43, 0x4b, 0x25, 0x37, 0x21, 0x11, 0x04, + 0x10, 0x13, 0xa7, 0x92, 0x5a, 0x84, 0x56, 0x2b, 0xae, 0xa3, 0x4e, 0x79, + 0x55, 0x34, 0x0a, 0x19, 0x1a, 0x11, 0x06, 0x11, 0x0c, 0x58, 0x1b, 0x1c, + 0x16, 0x2f, 0x46, 0x01, 0x80, 0x72, 0x71, 0x1e, 0x38, 0x52, 0x35, 0x71, + 0x71, 0x1e, 0x38, 0x51, 0x00, 0x02, 0x01, 0x3c, 0x04, 0x15, 0x03, 0x58, + 0x06, 0xb0, 0x00, 0x17, 0x00, 0x22, 0x00, 0x3d, 0xb1, 0x05, 0x1c, 0xb8, + 0x01, 0x55, 0xb4, 0x08, 0x00, 0x17, 0x17, 0x0e, 0xb8, 0x01, 0x56, 0x40, + 0x10, 0x13, 0x18, 0x18, 0x08, 0x13, 0x05, 0x8d, 0x1d, 0x1d, 0x07, 0x1c, + 0x8d, 0x08, 0x08, 0x00, 0x07, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x27, 0x26, + 0x26, 0x23, 0x23, 0x11, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x17, 0x03, 0x34, 0x26, 0x23, 0x23, + 0x15, 0x33, 0x32, 0x3e, 0x02, 0x02, 0xa8, 0x69, 0x0d, 0x2c, 0x1d, 0x17, + 0x96, 0xd9, 0x3d, 0x65, 0x46, 0x26, 0x17, 0x2c, 0x3c, 0x23, 0x1b, 0x2e, + 0x17, 0x77, 0xd2, 0x3e, 0x3f, 0x37, 0x33, 0x1d, 0x30, 0x22, 0x12, 0x04, + 0x15, 0xd6, 0x1b, 0x1b, 0xfe, 0xf4, 0x02, 0x9b, 0x13, 0x2c, 0x47, 0x33, + 0x24, 0x39, 0x2a, 0x19, 0x05, 0x05, 0x2e, 0x2b, 0xdf, 0x01, 0xd6, 0x2d, + 0x27, 0xb4, 0x0c, 0x19, 0x24, 0x00, 0x00, 0x01, 0x01, 0x2a, 0x04, 0x09, + 0x03, 0x37, 0x06, 0xbb, 0x00, 0x39, 0x00, 0x43, 0xb2, 0x27, 0x27, 0x00, + 0xb8, 0x01, 0x63, 0xb2, 0x13, 0x13, 0x31, 0xb8, 0x01, 0x63, 0x40, 0x14, + 0x1c, 0x09, 0x09, 0x1c, 0x35, 0x21, 0x0e, 0x17, 0x05, 0x27, 0x2c, 0x90, + 0x26, 0x21, 0x21, 0x09, 0x0e, 0x90, 0x08, 0x05, 0xb8, 0x02, 0x86, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x11, + 0x12, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x06, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x06, 0x03, 0x37, 0x2d, 0x51, 0x6f, 0x42, + 0x3b, 0x6e, 0x35, 0x1a, 0x39, 0x3a, 0x39, 0x1a, 0x25, 0x35, 0x21, 0x0f, + 0x1f, 0x32, 0x40, 0x42, 0x3f, 0x32, 0x1f, 0x20, 0x45, 0x6b, 0x4c, 0x16, + 0x30, 0x30, 0x2b, 0x13, 0x13, 0x2b, 0x2e, 0x2f, 0x15, 0x22, 0x30, 0x1e, + 0x0e, 0x1e, 0x33, 0x40, 0x43, 0x3f, 0x33, 0x1e, 0x04, 0xde, 0x36, 0x51, + 0x34, 0x1a, 0x0d, 0x0e, 0x84, 0x08, 0x0f, 0x0a, 0x07, 0x0c, 0x13, 0x1b, + 0x10, 0x18, 0x20, 0x1a, 0x14, 0x18, 0x1d, 0x2c, 0x3d, 0x2b, 0x28, 0x46, + 0x35, 0x1f, 0x04, 0x05, 0x08, 0x04, 0x7b, 0x06, 0x0a, 0x08, 0x04, 0x0a, + 0x10, 0x19, 0x0f, 0x15, 0x1d, 0x17, 0x15, 0x18, 0x1f, 0x2d, 0x3c, 0x00, + 0x00, 0x01, 0x01, 0x1f, 0x04, 0x15, 0x03, 0x47, 0x06, 0xb0, 0x00, 0x07, + 0x00, 0x26, 0xb2, 0x07, 0x07, 0x00, 0xb8, 0x01, 0x56, 0x40, 0x0a, 0x03, + 0x04, 0x04, 0x03, 0x00, 0x04, 0x8d, 0x05, 0x05, 0x02, 0xb8, 0x02, 0x85, + 0x00, 0x3f, 0x33, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x15, + 0x02, 0x80, 0x9a, 0xc7, 0x02, 0x28, 0x06, 0x3f, 0xfd, 0xd6, 0x02, 0x2a, + 0x71, 0x71, 0x00, 0x01, 0x01, 0x24, 0x04, 0x09, 0x03, 0x42, 0x06, 0xb0, + 0x00, 0x19, 0x00, 0x25, 0xb9, 0x00, 0x19, 0x01, 0x55, 0xb2, 0x18, 0x18, + 0x0c, 0xb8, 0x01, 0x55, 0xb6, 0x0b, 0x18, 0x0b, 0x0b, 0x12, 0x8d, 0x05, + 0xb8, 0x02, 0x86, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x11, 0x33, 0x03, 0x42, 0x26, 0x47, 0x67, 0x40, 0x47, 0x67, 0x40, + 0x1c, 0x96, 0x0c, 0x1e, 0x2d, 0x22, 0x20, 0x2d, 0x1d, 0x0f, 0x96, 0x05, + 0x0a, 0x3f, 0x61, 0x40, 0x21, 0x21, 0x3d, 0x58, 0x36, 0x01, 0xbb, 0xfe, + 0x53, 0x21, 0x34, 0x23, 0x12, 0x10, 0x22, 0x37, 0x26, 0x01, 0xa8, 0x00, + 0x00, 0x01, 0x00, 0xf2, 0x04, 0x15, 0x03, 0x74, 0x06, 0xb0, 0x00, 0x08, + 0x00, 0x2e, 0xb5, 0x01, 0x00, 0x05, 0x05, 0x02, 0x07, 0xb8, 0x01, 0x56, + 0xb2, 0x08, 0x08, 0x03, 0xb8, 0x01, 0x65, 0xb5, 0x02, 0x07, 0x02, 0x02, + 0x05, 0x01, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, + 0x01, 0x23, 0x03, 0x33, 0x13, 0x17, 0x37, 0x13, 0x33, 0x02, 0x8f, 0xba, + 0xe3, 0xaa, 0x72, 0x29, 0x2c, 0x70, 0xa1, 0x04, 0x15, 0x02, 0x9b, 0xfe, + 0x83, 0x83, 0x8b, 0x01, 0x75, 0x00, 0x00, 0x01, 0x00, 0xfc, 0x04, 0x14, + 0x03, 0x6a, 0x06, 0xaf, 0x00, 0x12, 0x00, 0x52, 0x40, 0x0f, 0x10, 0x02, + 0x11, 0x11, 0x05, 0x04, 0x0e, 0x0e, 0x12, 0x0a, 0x0c, 0x07, 0x0b, 0x0b, + 0x09, 0xb8, 0x01, 0x51, 0xb2, 0x0a, 0x0a, 0x00, 0xb8, 0x01, 0x52, 0x40, + 0x0e, 0x12, 0x0e, 0x04, 0x04, 0x11, 0x09, 0x12, 0x12, 0x11, 0x07, 0x02, + 0x02, 0x0c, 0x11, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x12, 0x39, 0x11, 0x33, 0x33, + 0x32, 0x2f, 0x33, 0x33, 0x30, 0x31, 0x01, 0x13, 0x17, 0x37, 0x37, 0x33, + 0x17, 0x17, 0x37, 0x13, 0x33, 0x03, 0x23, 0x27, 0x27, 0x07, 0x07, 0x23, + 0x03, 0x01, 0x83, 0x0d, 0x05, 0x24, 0x4e, 0x6c, 0x45, 0x20, 0x04, 0x0c, + 0x82, 0x24, 0xb5, 0x3b, 0x1f, 0x20, 0x3f, 0xb7, 0x25, 0x06, 0xaf, 0xfe, + 0x91, 0x96, 0x66, 0xd9, 0xd9, 0x66, 0x93, 0x01, 0x72, 0xfd, 0x65, 0xb4, + 0x6a, 0x64, 0xba, 0x02, 0x9b, 0x00, 0x00, 0x01, 0x00, 0xf7, 0x04, 0x15, + 0x03, 0x6f, 0x06, 0xb0, 0x00, 0x0b, 0x00, 0x53, 0xb6, 0x0a, 0x04, 0x01, + 0x07, 0x07, 0x05, 0x08, 0xb8, 0x01, 0x67, 0xb2, 0x09, 0x09, 0x00, 0xb8, + 0x01, 0x7a, 0xb3, 0x0b, 0x0b, 0x03, 0x06, 0xb8, 0x01, 0x67, 0xb2, 0x05, + 0x05, 0x02, 0xb8, 0x01, 0x67, 0x40, 0x0c, 0x03, 0x0a, 0x07, 0x01, 0x04, + 0x04, 0x03, 0x08, 0x05, 0x05, 0x00, 0x03, 0xb8, 0x02, 0x85, 0x00, 0x3f, + 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, 0x01, 0x27, 0x07, 0x23, 0x13, + 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x13, 0x02, 0xb3, 0x86, 0x83, 0xb3, + 0xd6, 0xc8, 0xaf, 0x7d, 0x78, 0xaf, 0xc8, 0xdf, 0x04, 0x15, 0xef, 0xef, + 0x01, 0x56, 0x01, 0x45, 0xe2, 0xe2, 0xfe, 0xbb, 0xfe, 0xaa, 0x00, 0x01, + 0x00, 0xf3, 0x04, 0x15, 0x03, 0x72, 0x06, 0xb0, 0x00, 0x0a, 0x00, 0x34, + 0x40, 0x09, 0x05, 0x04, 0x04, 0x03, 0x09, 0x0a, 0x0a, 0x07, 0x00, 0xb8, + 0x01, 0x55, 0x40, 0x0a, 0x03, 0x07, 0x00, 0x03, 0x03, 0x02, 0x09, 0x04, + 0x04, 0x02, 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x12, 0x39, + 0x2f, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x39, 0x32, 0x2f, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x30, 0x31, 0x01, 0x15, 0x23, 0x35, 0x03, 0x33, 0x17, 0x17, + 0x37, 0x37, 0x33, 0x02, 0x7d, 0x98, 0xf2, 0xa5, 0x69, 0x32, 0x32, 0x6e, + 0x9f, 0x05, 0x01, 0xec, 0xeb, 0x01, 0xb0, 0xcc, 0x63, 0x66, 0xc9, 0x00, + 0x00, 0x01, 0x01, 0x2d, 0x04, 0x15, 0x03, 0x39, 0x06, 0xb0, 0x00, 0x09, + 0x00, 0x2f, 0x40, 0x14, 0x02, 0x06, 0x06, 0x08, 0x08, 0x07, 0x01, 0x03, + 0x03, 0x01, 0x01, 0x07, 0x90, 0x00, 0x06, 0x02, 0x90, 0x04, 0x04, 0x00, + 0xb8, 0x02, 0x85, 0x00, 0x3f, 0x32, 0x2f, 0xed, 0x32, 0x10, 0xed, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x15, 0x01, + 0x2d, 0x01, 0x46, 0xfe, 0xc5, 0x01, 0xfc, 0xfe, 0xb8, 0x01, 0x4d, 0x04, + 0x15, 0x67, 0x01, 0xba, 0x7a, 0x6e, 0xfe, 0x4d, 0x7a, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf5, 0x04, 0x64, 0x05, 0x2b, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x10, 0xb5, 0x01, 0x00, 0x02, 0xcc, 0x01, 0x04, 0x00, 0x2f, 0xde, + 0xed, 0x01, 0x2f, 0x2f, 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x01, 0x04, + 0x64, 0xfb, 0x9e, 0x04, 0x62, 0xfb, 0x9c, 0x04, 0x7d, 0xae, 0xfe, 0xca, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x85, 0x04, 0x64, 0x06, 0xbb, 0x02, 0x07, + 0x03, 0xba, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x02, 0x8c, 0x06, 0x43, 0x00, 0x03, 0x00, 0x04, 0x00, 0x16, 0xb9, 0x00, + 0x01, 0x01, 0x72, 0xb5, 0x02, 0x03, 0x03, 0x02, 0x04, 0x4f, 0x00, 0x3f, + 0xce, 0x32, 0x2f, 0x01, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, + 0x01, 0x02, 0x8c, 0xb2, 0xfe, 0x26, 0x06, 0x43, 0xfe, 0x17, 0x01, 0xe9, + 0xfd, 0xb5, 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, 0x02, 0x8c, 0x07, 0x84, + 0x00, 0x03, 0x00, 0x04, 0x00, 0x16, 0xb9, 0x00, 0x01, 0x01, 0x72, 0xb5, + 0x02, 0x03, 0x03, 0x02, 0x04, 0x41, 0x00, 0x3f, 0xce, 0x32, 0x2f, 0x01, + 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x01, 0x02, 0x8c, 0xb2, + 0xfe, 0x26, 0x07, 0x84, 0xfe, 0x17, 0x01, 0xe9, 0xfd, 0x97, 0x00, 0x03, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0x46, 0x06, 0x43, 0x00, 0x03, 0x00, 0x07, + 0x00, 0x08, 0x00, 0x22, 0xbc, 0x00, 0x05, 0x01, 0x72, 0x00, 0x06, 0x00, + 0x01, 0x01, 0x72, 0xb7, 0x02, 0x07, 0x03, 0x03, 0x06, 0x02, 0x08, 0x4f, + 0x00, 0x3f, 0xce, 0x32, 0x32, 0x2f, 0x33, 0x01, 0x2f, 0xfd, 0xde, 0xed, + 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x01, 0x01, + 0xd3, 0xb2, 0x02, 0x25, 0xb2, 0xfd, 0x6c, 0x06, 0x43, 0xfe, 0x17, 0x01, + 0xe9, 0xfe, 0x17, 0x01, 0xe9, 0xfd, 0xb5, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x05, 0x1b, 0x03, 0x46, 0x07, 0x84, 0x00, 0x03, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x24, 0xb9, 0x00, 0x05, 0x01, 0x72, 0xb2, 0x06, 0x06, 0x01, 0xb8, + 0x01, 0x72, 0xb7, 0x02, 0x07, 0x03, 0x03, 0x06, 0x02, 0x08, 0x41, 0x00, + 0x3f, 0xce, 0x32, 0x32, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, + 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x01, 0x01, + 0xd3, 0xb2, 0x02, 0x25, 0xb2, 0xfd, 0x6c, 0x07, 0x84, 0xfe, 0x17, 0x01, + 0xe9, 0xfe, 0x17, 0x01, 0xe9, 0xfd, 0x97, 0x00, 0x00, 0x03, 0xff, 0xf3, + 0x03, 0xf8, 0x04, 0x23, 0x05, 0x85, 0x00, 0x03, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x2b, 0x40, 0x13, 0x04, 0x06, 0x07, 0x05, 0x05, 0x07, 0x07, 0x00, + 0x02, 0x01, 0x01, 0x03, 0x07, 0x03, 0x80, 0x06, 0x02, 0x08, 0x4f, 0x00, + 0x3f, 0xde, 0x32, 0x1a, 0xcd, 0x32, 0x01, 0x2f, 0x32, 0x2f, 0x39, 0x39, + 0x32, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x01, 0x23, + 0x01, 0x21, 0x01, 0x23, 0x01, 0x01, 0x01, 0x3d, 0x01, 0x06, 0xf4, 0xfe, + 0xa4, 0x03, 0x2a, 0x01, 0x06, 0xf4, 0xfe, 0xa4, 0xfe, 0x2d, 0x05, 0x85, + 0xfe, 0xfa, 0x01, 0x06, 0xfe, 0xfa, 0x01, 0x06, 0xfe, 0x73, 0xff, 0xff, + 0xff, 0x9d, 0x05, 0x1b, 0x04, 0x23, 0x06, 0x87, 0x02, 0x26, 0x01, 0x3d, + 0x9d, 0x00, 0x01, 0x07, 0x01, 0x3d, 0x01, 0x75, 0x00, 0x00, 0x00, 0x0b, + 0xb4, 0x02, 0x00, 0x04, 0x41, 0x04, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, + 0x00, 0x02, 0x00, 0xaf, 0x04, 0x71, 0x03, 0xb7, 0x06, 0x6b, 0x00, 0x15, + 0x00, 0x21, 0x00, 0x45, 0xb4, 0x1c, 0x16, 0x16, 0x0a, 0x15, 0xb8, 0x01, + 0x74, 0xb2, 0x00, 0x00, 0x0b, 0xb8, 0x01, 0x74, 0x40, 0x1a, 0x0a, 0x19, + 0x0f, 0x1f, 0x01, 0x1f, 0x40, 0x13, 0x16, 0x48, 0x1f, 0x1f, 0x00, 0x3f, + 0x0a, 0x01, 0x0a, 0x0a, 0x10, 0xc9, 0x2f, 0x05, 0x4f, 0x05, 0x02, 0x05, + 0x00, 0x2f, 0x5d, 0xed, 0x33, 0x2f, 0x71, 0x33, 0x33, 0x2f, 0x2b, 0x5d, + 0xcd, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x31, + 0x30, 0x01, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x33, 0x1e, 0x03, + 0x33, 0x32, 0x3e, 0x02, 0x37, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, + 0x14, 0x06, 0x23, 0x22, 0x26, 0x03, 0xb7, 0x09, 0x37, 0x5e, 0x8a, 0x5c, + 0x5c, 0x8c, 0x61, 0x35, 0x06, 0xb3, 0x05, 0x19, 0x30, 0x4b, 0x38, 0x38, + 0x4b, 0x30, 0x19, 0x05, 0xfe, 0xac, 0x4b, 0x38, 0x38, 0x4b, 0x4b, 0x38, + 0x38, 0x4b, 0x05, 0xb1, 0x49, 0x76, 0x54, 0x2d, 0x2d, 0x53, 0x77, 0x49, + 0x1e, 0x39, 0x2d, 0x1c, 0x1c, 0x2d, 0x39, 0x1e, 0x41, 0x38, 0x41, 0x41, + 0x38, 0x38, 0x41, 0x41, 0x00, 0x02, 0x00, 0xaf, 0x05, 0x91, 0x03, 0xb7, + 0x07, 0x8b, 0x00, 0x15, 0x00, 0x21, 0x00, 0x4d, 0xb4, 0x1c, 0x16, 0x16, + 0x0a, 0x15, 0xb8, 0x01, 0x74, 0xb2, 0x00, 0x00, 0x0b, 0xb8, 0x01, 0x74, + 0x40, 0x21, 0x0a, 0x19, 0x1f, 0x40, 0x13, 0x16, 0x48, 0x1f, 0x1f, 0x00, + 0x3f, 0x0a, 0x01, 0x70, 0x0a, 0x01, 0x0a, 0x0a, 0x10, 0xc9, 0x90, 0x05, + 0xc0, 0x05, 0x02, 0x0f, 0x05, 0x3f, 0x05, 0x6f, 0x05, 0x03, 0x05, 0x00, + 0x2f, 0x5d, 0x5d, 0xed, 0x33, 0x2f, 0x5d, 0x71, 0x33, 0x33, 0x2f, 0x2b, + 0xcd, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x31, + 0x30, 0x01, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x33, 0x1e, 0x03, + 0x33, 0x32, 0x3e, 0x02, 0x37, 0x25, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, + 0x14, 0x06, 0x23, 0x22, 0x26, 0x03, 0xb7, 0x09, 0x37, 0x5e, 0x8a, 0x5c, + 0x5c, 0x8c, 0x61, 0x35, 0x06, 0xb3, 0x05, 0x19, 0x30, 0x4b, 0x38, 0x38, + 0x4b, 0x30, 0x19, 0x05, 0xfe, 0xac, 0x4b, 0x38, 0x38, 0x4b, 0x4b, 0x38, + 0x38, 0x4b, 0x06, 0xd1, 0x49, 0x76, 0x54, 0x2d, 0x2d, 0x53, 0x77, 0x49, + 0x1e, 0x39, 0x2d, 0x1c, 0x1c, 0x2d, 0x39, 0x1e, 0x41, 0x38, 0x41, 0x41, + 0x38, 0x38, 0x41, 0x41, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x53, + 0x05, 0x85, 0x00, 0x13, 0x00, 0x14, 0x00, 0x2e, 0xb9, 0x00, 0x0b, 0x01, + 0x74, 0xb2, 0x0a, 0x0a, 0x13, 0xb8, 0x01, 0x74, 0x40, 0x0f, 0x00, 0x10, + 0xc9, 0x40, 0x8f, 0x05, 0x9f, 0x05, 0x02, 0x05, 0x80, 0x0b, 0x00, 0x14, + 0x4f, 0x00, 0x3f, 0xde, 0x32, 0x1a, 0xdd, 0x5d, 0x1a, 0xed, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x23, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x05, + 0x01, 0x13, 0x28, 0x4b, 0x6c, 0x44, 0x44, 0x6a, 0x49, 0x26, 0xb5, 0x0f, + 0x1c, 0x27, 0x18, 0x2d, 0x3f, 0xfe, 0x38, 0x04, 0x71, 0x39, 0x65, 0x4b, + 0x2b, 0x2c, 0x4c, 0x64, 0x38, 0x16, 0x27, 0x1e, 0x11, 0x37, 0x35, 0x79, + 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x67, 0x06, 0xbc, 0x00, 0x15, + 0x00, 0x16, 0x00, 0x23, 0xb9, 0x00, 0x0a, 0x01, 0x74, 0xb2, 0x0b, 0x0b, + 0x15, 0xb8, 0x01, 0x74, 0xb7, 0x00, 0x05, 0xc9, 0x10, 0x0b, 0x00, 0x16, + 0x41, 0x00, 0x3f, 0xde, 0x32, 0xdc, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x23, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x05, 0xff, 0x2e, + 0x53, 0x72, 0x44, 0x44, 0x70, 0x51, 0x2c, 0xb5, 0x15, 0x24, 0x2d, 0x18, + 0x17, 0x2d, 0x25, 0x17, 0xfe, 0x4c, 0x05, 0xb2, 0x39, 0x62, 0x47, 0x28, + 0x29, 0x48, 0x61, 0x38, 0x1b, 0x25, 0x17, 0x0b, 0x0b, 0x17, 0x25, 0x1b, + 0x97, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xbc, 0x05, 0xa5, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x22, 0xb2, 0x00, 0x00, 0x0a, 0xba, 0x02, + 0x29, 0x00, 0x05, 0x01, 0x70, 0xb7, 0x14, 0x00, 0x99, 0x19, 0x19, 0x0f, + 0x1a, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0xed, + 0x32, 0x2f, 0x30, 0x31, 0x01, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, + 0x01, 0x02, 0xb2, 0x1e, 0x27, 0x15, 0x08, 0x22, 0x28, 0x22, 0x0e, 0x1f, + 0x32, 0x24, 0x20, 0x37, 0x28, 0x16, 0x1c, 0x40, 0x67, 0x4b, 0xfd, 0x4e, + 0x05, 0x4c, 0x03, 0x0b, 0x10, 0x15, 0x0d, 0x19, 0x14, 0x12, 0x22, 0x28, + 0x12, 0x24, 0x1d, 0x11, 0x12, 0x27, 0x3b, 0x28, 0x2e, 0x51, 0x3f, 0x28, + 0x04, 0xfe, 0x53, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x79, 0x02, 0xbc, + 0x07, 0x26, 0x03, 0x07, 0x03, 0xc6, 0x00, 0x00, 0x01, 0x81, 0x00, 0x09, + 0xb3, 0x00, 0x1a, 0x41, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x02, 0xbc, 0x05, 0x91, 0x00, 0x19, 0x00, 0x1a, + 0x00, 0x2b, 0x40, 0x15, 0x05, 0x05, 0x0a, 0x14, 0x14, 0x0a, 0x00, 0x00, + 0x0a, 0x05, 0x0f, 0x40, 0x0a, 0x0d, 0x48, 0x0f, 0x0f, 0x00, 0x19, 0x1a, + 0x4f, 0x00, 0x3f, 0xde, 0xcd, 0x33, 0x2f, 0x2b, 0x39, 0x01, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x3e, 0x03, + 0x35, 0x34, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0x05, 0x01, 0xae, 0x1e, 0x27, 0x15, 0x08, + 0x22, 0x28, 0x22, 0x0e, 0x1f, 0x32, 0x24, 0x20, 0x37, 0x28, 0x16, 0x1c, + 0x40, 0x67, 0x4b, 0xfe, 0x52, 0x04, 0x64, 0x03, 0x0b, 0x10, 0x15, 0x0d, + 0x19, 0x14, 0x12, 0x22, 0x28, 0x12, 0x24, 0x1d, 0x11, 0x12, 0x27, 0x3b, + 0x28, 0x2e, 0x51, 0x3f, 0x28, 0x04, 0x13, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x79, 0x02, 0xbc, 0x07, 0x12, 0x03, 0x07, 0x03, 0xc8, 0x00, 0x00, + 0x01, 0x81, 0x00, 0x09, 0xb3, 0x00, 0x1a, 0x41, 0x1a, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xbc, 0x05, 0xa5, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x33, 0x40, 0x1a, 0x14, 0x14, 0x0f, 0x05, + 0x19, 0x19, 0x0f, 0x0f, 0x05, 0x14, 0x0a, 0x19, 0x00, 0x1f, 0x0a, 0x2f, + 0x0a, 0x3f, 0x0a, 0x03, 0x0a, 0x0a, 0x00, 0x00, 0x1a, 0x4f, 0x00, 0x3f, + 0xce, 0x2f, 0x32, 0x2f, 0x5d, 0x10, 0xcd, 0x11, 0x39, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x2e, 0x03, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x17, 0x05, 0x02, 0xb2, 0x4b, 0x67, 0x40, 0x1c, + 0x16, 0x28, 0x37, 0x20, 0x24, 0x32, 0x1f, 0x0e, 0x22, 0x28, 0x22, 0x08, + 0x15, 0x27, 0x1e, 0xfd, 0x4e, 0x04, 0x1f, 0x04, 0x28, 0x3f, 0x51, 0x2e, + 0x28, 0x3b, 0x27, 0x12, 0x11, 0x1d, 0x24, 0x12, 0x28, 0x22, 0x12, 0x14, + 0x19, 0x0d, 0x15, 0x10, 0x0b, 0x03, 0x80, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x79, 0x02, 0xbc, 0x07, 0x26, 0x03, 0x07, 0x03, 0xca, 0x00, 0x00, + 0x01, 0x81, 0x00, 0x09, 0xb3, 0x00, 0x1a, 0x41, 0x1a, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x27, 0x02, 0xac, 0xff, 0xb4, + 0x03, 0x07, 0x01, 0x3c, 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x2f, 0xb1, 0x00, + 0x03, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x03, 0xb8, 0xff, 0x80, + 0x40, 0x18, 0x0a, 0x0b, 0x48, 0x30, 0x03, 0x50, 0x03, 0x02, 0x00, 0x03, + 0x30, 0x03, 0x40, 0x03, 0x60, 0x03, 0x80, 0x03, 0x90, 0x03, 0xf0, 0x03, + 0x07, 0x03, 0x00, 0x11, 0x5d, 0x71, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x27, 0x04, 0x08, 0xff, 0xb4, 0x03, 0x07, 0x01, 0x3e, + 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x2f, 0xb1, 0x00, 0x02, 0xb8, 0xff, 0x80, + 0xb3, 0x0e, 0x0e, 0x48, 0x02, 0xb8, 0xff, 0x80, 0x40, 0x18, 0x0a, 0x0b, + 0x48, 0x30, 0x02, 0x50, 0x02, 0x02, 0x00, 0x02, 0x30, 0x02, 0x40, 0x02, + 0x60, 0x02, 0x80, 0x02, 0x90, 0x02, 0xf0, 0x02, 0x07, 0x02, 0x00, 0x11, + 0x5d, 0x71, 0x2b, 0x2b, 0x35, 0x00, 0x00, 0x01, 0x01, 0x60, 0xfe, 0x3b, + 0x03, 0x06, 0xff, 0xad, 0x00, 0x07, 0x00, 0x26, 0xb1, 0x05, 0x00, 0xb8, + 0x01, 0x5e, 0x40, 0x0f, 0x01, 0x01, 0x03, 0x01, 0x02, 0x05, 0x0f, 0x06, + 0x1f, 0x06, 0x2f, 0x06, 0x03, 0x06, 0x08, 0x00, 0x10, 0xde, 0x5d, 0xdd, + 0xdd, 0xcd, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x23, + 0x35, 0x21, 0x35, 0x21, 0x35, 0x33, 0x03, 0x06, 0x6e, 0xfe, 0xc8, 0x01, + 0x38, 0x6e, 0xfe, 0x3b, 0x83, 0x6b, 0x84, 0x00, 0x00, 0x01, 0x01, 0x60, + 0xfe, 0x3b, 0x03, 0x06, 0xff, 0xad, 0x00, 0x07, 0x00, 0x26, 0xb3, 0x04, + 0x04, 0x02, 0x06, 0xb8, 0x01, 0x5e, 0x40, 0x0d, 0x07, 0x06, 0x05, 0x02, + 0x0f, 0x00, 0x1f, 0x00, 0x2f, 0x00, 0x03, 0x00, 0x08, 0x00, 0x10, 0xde, + 0x5d, 0xdd, 0xdd, 0xcd, 0x01, 0x2f, 0xed, 0x32, 0x32, 0x2f, 0x30, 0x31, + 0x05, 0x33, 0x15, 0x21, 0x15, 0x21, 0x15, 0x23, 0x01, 0x60, 0x6e, 0x01, + 0x38, 0xfe, 0xc8, 0x6e, 0x53, 0x84, 0x6b, 0x83, 0x00, 0x01, 0x01, 0x76, + 0x03, 0xf3, 0x02, 0xf0, 0x05, 0x6b, 0x00, 0x05, 0x00, 0x19, 0x40, 0x0b, + 0x03, 0x03, 0x00, 0x40, 0x03, 0x01, 0x03, 0x03, 0x00, 0x99, 0x01, 0x00, + 0x2f, 0xed, 0x33, 0x2f, 0x5d, 0x01, 0x2f, 0x32, 0x2f, 0x30, 0x31, 0x01, + 0x35, 0x21, 0x11, 0x23, 0x11, 0x01, 0x76, 0x01, 0x7a, 0x6a, 0x05, 0x03, + 0x68, 0xfe, 0x88, 0x01, 0x10, 0x00, 0xff, 0xff, 0x01, 0x76, 0x05, 0x55, + 0x02, 0xf0, 0x06, 0xcd, 0x02, 0x07, 0x03, 0xd0, 0x00, 0x00, 0x01, 0x62, + 0xff, 0xff, 0xff, 0xf9, 0xfe, 0x27, 0x02, 0x9c, 0xff, 0xb1, 0x03, 0x07, + 0x07, 0x2b, 0xff, 0xf9, 0xfa, 0x2f, 0x00, 0x5b, 0xb1, 0x00, 0x06, 0xb8, + 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x06, 0xb8, 0xff, 0xc0, 0xb3, 0x20, + 0x20, 0x48, 0x06, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x06, 0xb8, + 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, 0x06, 0xb8, 0xff, 0xc0, 0xb3, 0x19, + 0x1a, 0x48, 0x06, 0xb8, 0xff, 0xc0, 0xb3, 0x14, 0x16, 0x48, 0x06, 0xb8, + 0xff, 0x80, 0xb3, 0x0c, 0x0e, 0x48, 0x06, 0xb8, 0xff, 0x80, 0x40, 0x0f, + 0x0a, 0x0b, 0x48, 0x00, 0x06, 0x60, 0x06, 0x80, 0x06, 0x90, 0x06, 0xf0, + 0x06, 0x05, 0x06, 0x00, 0x11, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x35, 0x00, 0x00, 0x01, 0x01, 0x60, 0xfe, 0x3b, 0x03, 0x06, + 0xff, 0xad, 0x00, 0x07, 0x00, 0x1c, 0x40, 0x0c, 0x06, 0x04, 0x03, 0x01, + 0x06, 0x00, 0x3f, 0x01, 0x01, 0x01, 0x03, 0x08, 0x00, 0x10, 0xde, 0xd6, + 0x5d, 0xcd, 0x33, 0x01, 0x2f, 0xd6, 0xdd, 0xc6, 0x30, 0x31, 0x01, 0x35, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x15, 0x01, 0x60, 0x9c, 0x6e, 0x9c, 0xfe, + 0x3b, 0x6b, 0x01, 0x07, 0xfe, 0xf9, 0x6b, 0x00, 0x00, 0x01, 0x01, 0x60, + 0xfe, 0x3b, 0x03, 0x06, 0xff, 0xad, 0x00, 0x07, 0x00, 0x1c, 0x40, 0x0c, + 0x01, 0x02, 0x05, 0x06, 0x3f, 0x04, 0x01, 0x04, 0x02, 0x06, 0x07, 0x08, + 0x00, 0x10, 0xde, 0xdd, 0x32, 0xc6, 0x5d, 0x01, 0x2f, 0xdd, 0xdd, 0xcd, + 0x30, 0x31, 0x05, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x03, 0x06, + 0x9c, 0x6e, 0x9c, 0x53, 0x6b, 0xfe, 0xf9, 0x01, 0x07, 0x6b, 0x00, 0x01, + 0x01, 0x60, 0xfe, 0x3b, 0x03, 0x06, 0xff, 0xad, 0x00, 0x0b, 0x00, 0x28, + 0x40, 0x14, 0x0b, 0x01, 0x02, 0x08, 0x05, 0x06, 0x04, 0x02, 0x05, 0x0b, + 0x08, 0x0f, 0x09, 0x1f, 0x09, 0x2f, 0x09, 0x03, 0x09, 0x0c, 0x00, 0x10, + 0xde, 0x5d, 0xdd, 0x32, 0xdd, 0x32, 0xcd, 0x01, 0x2f, 0xdd, 0x32, 0xdd, + 0xcd, 0x33, 0x30, 0x31, 0x05, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, + 0x33, 0x35, 0x33, 0x15, 0x03, 0x06, 0x9c, 0x6e, 0x9c, 0x9c, 0x6e, 0xd7, + 0x6b, 0x83, 0x83, 0x6b, 0x84, 0x84, 0x00, 0x01, 0x01, 0x60, 0xfe, 0xbe, + 0x03, 0x06, 0xff, 0x29, 0x00, 0x03, 0x00, 0x10, 0xb5, 0x02, 0x00, 0x02, + 0x99, 0x03, 0x04, 0x00, 0x10, 0xde, 0xed, 0x01, 0x2f, 0x2f, 0x30, 0x31, + 0x05, 0x15, 0x21, 0x35, 0x03, 0x06, 0xfe, 0x5a, 0xd7, 0x6b, 0x6b, 0x00, + 0x00, 0x01, 0x01, 0x66, 0xfe, 0x74, 0x02, 0xf3, 0xff, 0xec, 0x00, 0x13, + 0x00, 0x24, 0xb9, 0x00, 0x01, 0x01, 0x5f, 0x40, 0x0d, 0x12, 0x12, 0x0d, + 0x0b, 0x0b, 0x0c, 0x0c, 0x10, 0xad, 0x06, 0x06, 0x00, 0x52, 0x00, 0x3f, + 0x32, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0xed, + 0x30, 0x31, 0x05, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, + 0x37, 0x17, 0x16, 0x16, 0x33, 0x32, 0x35, 0x35, 0x02, 0xf3, 0x1b, 0x2f, + 0x3d, 0x22, 0x23, 0x3b, 0x36, 0x34, 0x1c, 0x66, 0x21, 0x13, 0x20, 0x13, + 0x1d, 0x14, 0x99, 0x42, 0x56, 0x33, 0x14, 0x0f, 0x1e, 0x2e, 0x20, 0x6a, + 0x24, 0x14, 0x15, 0x25, 0xbb, 0x00, 0x00, 0x01, 0x01, 0x66, 0xfe, 0x74, + 0x02, 0xf3, 0xff, 0xec, 0x00, 0x13, 0x00, 0x24, 0xb3, 0x07, 0x08, 0x08, + 0x01, 0xb8, 0x01, 0x5f, 0x40, 0x0a, 0x12, 0x08, 0x07, 0x07, 0x03, 0xad, + 0x0d, 0x0d, 0x00, 0x52, 0x00, 0x3f, 0x32, 0x2f, 0xed, 0x32, 0x2f, 0x33, + 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x05, 0x15, 0x14, 0x33, + 0x32, 0x36, 0x37, 0x37, 0x17, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x35, 0x02, 0x09, 0x22, 0x13, 0x1b, 0x13, 0x21, 0x66, 0x1c, 0x31, 0x33, + 0x38, 0x22, 0x22, 0x41, 0x32, 0x1e, 0x14, 0xbb, 0x25, 0x15, 0x14, 0x24, + 0x6a, 0x20, 0x2e, 0x1e, 0x0f, 0x13, 0x2d, 0x4a, 0x36, 0xb8, 0x00, 0x02, + 0x00, 0xd9, 0xfe, 0x9c, 0x03, 0x8d, 0xff, 0xaf, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x25, 0xbc, 0x00, 0x14, 0x02, 0x27, 0x00, 0x1e, 0x00, 0x00, 0x02, + 0x27, 0xb2, 0x0a, 0x19, 0x05, 0xb8, 0x01, 0x43, 0xb3, 0x23, 0x0f, 0x0f, + 0x28, 0x00, 0x10, 0xce, 0x2f, 0x32, 0xed, 0x32, 0x01, 0x2f, 0xfd, 0xd6, + 0xed, 0x30, 0x31, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, + 0xeb, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, + 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, 0x15, 0x26, 0x32, 0x1c, 0x1d, + 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0xdb, + 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, + 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, + 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x00, 0x00, 0x02, 0x01, 0x43, + 0xfd, 0xf2, 0x03, 0x23, 0xff, 0xb0, 0x00, 0x13, 0x00, 0x1f, 0x00, 0x2a, + 0xb9, 0x00, 0x1a, 0x01, 0x5e, 0xb3, 0x40, 0x0a, 0xc0, 0x00, 0xb8, 0x01, + 0x5e, 0x40, 0x0b, 0x14, 0x1d, 0x9a, 0x00, 0x05, 0x01, 0x05, 0x17, 0x9a, + 0x0f, 0x20, 0x00, 0x10, 0xde, 0xed, 0xd4, 0x71, 0xed, 0x01, 0x2f, 0xfd, + 0x1a, 0xdc, 0x1a, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x03, 0x23, + 0x26, 0x42, 0x57, 0x31, 0x31, 0x57, 0x42, 0x26, 0x26, 0x42, 0x57, 0x31, + 0x32, 0x57, 0x41, 0x26, 0x92, 0x36, 0x28, 0x28, 0x36, 0x36, 0x28, 0x28, + 0x36, 0xfe, 0xd2, 0x2f, 0x52, 0x3d, 0x22, 0x21, 0x3c, 0x51, 0x31, 0x31, + 0x52, 0x3b, 0x21, 0x21, 0x3b, 0x51, 0x32, 0x26, 0x33, 0x33, 0x26, 0x26, + 0x33, 0x33, 0x00, 0x01, 0x01, 0xda, 0xfd, 0xf1, 0x02, 0x8c, 0xff, 0x93, + 0x00, 0x03, 0x00, 0x15, 0xb9, 0x00, 0x01, 0x01, 0x72, 0xb4, 0x02, 0x01, + 0x01, 0x00, 0x04, 0x00, 0x10, 0xc6, 0x32, 0x2f, 0x01, 0x2f, 0xed, 0x30, + 0x31, 0x05, 0x11, 0x23, 0x11, 0x02, 0x8c, 0xb2, 0x6d, 0xfe, 0x5e, 0x01, + 0xa2, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xfe, 0xbe, 0x03, 0x74, 0xff, 0xad, + 0x00, 0x07, 0x00, 0x2d, 0xbc, 0x00, 0x00, 0x01, 0x5e, 0x00, 0x05, 0x00, + 0x04, 0x01, 0x5e, 0x40, 0x10, 0x01, 0x04, 0x99, 0x40, 0x01, 0x80, 0x06, + 0x10, 0x02, 0x20, 0x02, 0x30, 0x02, 0x03, 0x02, 0x08, 0x00, 0x10, 0xd6, + 0x5d, 0x32, 0x1a, 0xdd, 0x1a, 0xed, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x30, + 0x31, 0x01, 0x21, 0x35, 0x33, 0x15, 0x21, 0x35, 0x33, 0x03, 0x74, 0xfd, + 0x7d, 0x6e, 0x01, 0xa7, 0x6e, 0xfe, 0xbe, 0xef, 0x84, 0x84, 0x00, 0x01, + 0x00, 0xf1, 0xfe, 0xd1, 0x03, 0x74, 0xff, 0xad, 0x00, 0x28, 0x00, 0x47, + 0xb9, 0x00, 0x22, 0x01, 0x5e, 0xb3, 0x23, 0x23, 0x03, 0x18, 0xbb, 0x01, + 0x5e, 0x00, 0x17, 0x00, 0x0d, 0x01, 0x5e, 0x40, 0x17, 0x0c, 0x0c, 0x17, + 0x1c, 0x03, 0x13, 0x99, 0x40, 0x00, 0x06, 0x06, 0x80, 0x22, 0x17, 0x10, + 0x0c, 0x20, 0x0c, 0x30, 0x0c, 0x03, 0x0c, 0x29, 0x00, 0x10, 0xd6, 0x5d, + 0x32, 0x32, 0x1a, 0xcd, 0x2f, 0x32, 0x1a, 0xed, 0x32, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x10, 0xed, 0x39, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x01, + 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x35, 0x33, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x33, 0x15, 0x14, 0x0e, 0x02, + 0x02, 0xbc, 0x36, 0x3f, 0x14, 0x14, 0x41, 0x35, 0x32, 0x45, 0x2d, 0x14, + 0x6e, 0x06, 0x10, 0x1d, 0x17, 0x31, 0x24, 0x69, 0x24, 0x31, 0x17, 0x1d, + 0x10, 0x06, 0x6e, 0x14, 0x2d, 0x46, 0xfe, 0xd1, 0x27, 0x23, 0x22, 0x28, + 0x1e, 0x34, 0x46, 0x28, 0x1c, 0x16, 0x16, 0x25, 0x1a, 0x0e, 0x35, 0x28, + 0x1c, 0x1c, 0x28, 0x35, 0x0e, 0x1a, 0x25, 0x16, 0x16, 0x1c, 0x28, 0x46, + 0x34, 0x1e, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x27, 0x03, 0x85, 0xff, 0xb4, + 0x03, 0x07, 0x01, 0x42, 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x2f, 0xb1, 0x00, + 0x01, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x01, 0xb8, 0xff, 0x80, + 0x40, 0x18, 0x0a, 0x0b, 0x48, 0x30, 0x01, 0x50, 0x01, 0x02, 0x00, 0x01, + 0x30, 0x01, 0x40, 0x01, 0x60, 0x01, 0x80, 0x01, 0x90, 0x01, 0xf0, 0x01, + 0x07, 0x01, 0x00, 0x11, 0x5d, 0x71, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x27, 0x03, 0x87, 0xff, 0xb4, 0x03, 0x07, 0x01, 0x40, + 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x2f, 0xb1, 0x00, 0x06, 0xb8, 0xff, 0x80, + 0xb3, 0x0e, 0x0e, 0x48, 0x06, 0xb8, 0xff, 0x80, 0x40, 0x18, 0x0a, 0x0b, + 0x48, 0x30, 0x06, 0x50, 0x06, 0x02, 0x00, 0x06, 0x30, 0x06, 0x40, 0x06, + 0x60, 0x06, 0x80, 0x06, 0x90, 0x06, 0xf0, 0x06, 0x07, 0x06, 0x00, 0x11, + 0x5d, 0x71, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x27, + 0x03, 0x53, 0xff, 0xb4, 0x03, 0x07, 0x01, 0x4b, 0x00, 0x00, 0xfa, 0x2f, + 0x00, 0x3b, 0xb1, 0x00, 0x0a, 0xb8, 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, + 0x0a, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1e, 0x48, 0x0a, 0xb8, 0xff, 0x80, + 0xb3, 0x0e, 0x0e, 0x48, 0x0a, 0xb8, 0xff, 0x80, 0x40, 0x13, 0x0a, 0x0b, + 0x48, 0x00, 0x0a, 0x30, 0x0a, 0x40, 0x0a, 0x60, 0x0a, 0x80, 0x0a, 0x90, + 0x0a, 0xf0, 0x0a, 0x07, 0x0a, 0x00, 0x11, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x27, 0x03, 0x53, 0xff, 0xb4, + 0x03, 0x07, 0x03, 0xc4, 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x39, 0xb1, 0x00, + 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x05, 0xb8, 0xff, 0xc0, + 0xb3, 0x1a, 0x1a, 0x48, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, + 0x05, 0xb8, 0xff, 0x80, 0x40, 0x11, 0x0a, 0x0b, 0x48, 0x00, 0x05, 0x30, + 0x05, 0x40, 0x05, 0x80, 0x05, 0x90, 0x05, 0xf0, 0x05, 0x06, 0x05, 0x00, + 0x11, 0x5d, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x27, 0x03, 0xac, 0xff, 0xc8, 0x03, 0x07, 0x01, 0x45, 0x00, 0x00, + 0xfa, 0x2f, 0x00, 0x48, 0xb1, 0x00, 0x0f, 0xb8, 0xff, 0xc0, 0xb3, 0x20, + 0x20, 0x48, 0x0f, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1d, 0x48, 0x0f, 0xb8, + 0xff, 0xc0, 0xb3, 0x18, 0x18, 0x48, 0x0f, 0xb8, 0xff, 0x80, 0xb3, 0x0e, + 0x0e, 0x48, 0x0f, 0xb8, 0xff, 0x80, 0x40, 0x16, 0x0a, 0x0b, 0x48, 0x30, + 0x0f, 0x50, 0x0f, 0x02, 0x00, 0x0f, 0x30, 0x0f, 0x40, 0x0f, 0x60, 0x0f, + 0x80, 0x0f, 0x90, 0x0f, 0x06, 0x0f, 0x00, 0x11, 0x5d, 0x71, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x65, 0x03, 0x4a, + 0xff, 0xcf, 0x03, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x6d, 0x00, 0x4e, + 0xb1, 0x00, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x34, 0x34, 0x48, 0x04, 0xb8, + 0xff, 0xc0, 0xb3, 0x2a, 0x2a, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x20, + 0x20, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1e, 0x48, 0x04, 0xb8, + 0xff, 0xc0, 0xb3, 0x16, 0x16, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x14, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x04, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x0c, 0x48, 0x04, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x66, + 0x04, 0x66, 0xff, 0x27, 0x02, 0x06, 0x02, 0x4f, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfd, 0xf1, 0x04, 0x66, 0xff, 0x93, 0x03, 0x06, 0x03, 0x36, + 0x00, 0x00, 0x00, 0x23, 0xb1, 0x00, 0x02, 0xb8, 0xff, 0xc0, 0xb4, 0x09, + 0x09, 0x48, 0x01, 0x02, 0xb8, 0xff, 0xc0, 0xb3, 0x15, 0x15, 0x48, 0x02, + 0xb8, 0xff, 0xc0, 0xb3, 0x0d, 0x0d, 0x48, 0x02, 0x00, 0x11, 0x2b, 0x2b, + 0x35, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x10, 0x03, 0xac, + 0x02, 0xb1, 0x03, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfd, 0x18, 0x00, 0x1d, + 0x40, 0x15, 0x00, 0x10, 0x18, 0x30, 0x18, 0x02, 0x50, 0x18, 0x60, 0x18, + 0xb0, 0x18, 0x03, 0x00, 0x18, 0x20, 0x18, 0x30, 0x18, 0x03, 0x18, 0x00, + 0x11, 0x5d, 0x5d, 0x71, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x7a, + 0x03, 0xac, 0x03, 0x1b, 0x03, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfd, 0x82, + 0x00, 0x18, 0xb1, 0x00, 0x18, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, + 0x18, 0xb8, 0xff, 0xc0, 0xb3, 0x0b, 0x0b, 0x48, 0x18, 0x00, 0x11, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0xd2, 0x01, 0xa3, 0x03, 0x94, 0x02, 0x61, + 0x02, 0x06, 0x0a, 0x66, 0x00, 0x00, 0xff, 0xff, 0x00, 0xd2, 0x02, 0x30, + 0x03, 0x94, 0x02, 0xee, 0x03, 0x07, 0x0a, 0x66, 0x00, 0x00, 0x00, 0x8d, + 0x00, 0x22, 0xb1, 0x00, 0x03, 0xb8, 0xff, 0xc0, 0x40, 0x13, 0x16, 0x16, + 0x48, 0x03, 0x40, 0x14, 0x15, 0x48, 0x03, 0x40, 0x11, 0x12, 0x48, 0x03, + 0x40, 0x0f, 0x0f, 0x48, 0x03, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0xff, 0xff, 0x00, 0x85, 0x01, 0x82, 0x03, 0xe1, 0x02, 0x57, 0x03, 0x06, + 0x01, 0x77, 0x00, 0xcc, 0x00, 0x1e, 0xb6, 0x00, 0x00, 0x40, 0x15, 0x15, + 0x48, 0x00, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x11, 0x48, 0x00, 0xb8, 0xff, + 0xc0, 0xb3, 0x0c, 0x0d, 0x48, 0x00, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x35, + 0xff, 0xff, 0x00, 0x85, 0x02, 0x23, 0x03, 0xe1, 0x02, 0xf8, 0x02, 0x06, + 0x01, 0x77, 0x00, 0x6d, 0xff, 0xff, 0x00, 0x00, 0xff, 0x54, 0x04, 0x64, + 0x04, 0x28, 0x02, 0x06, 0x0a, 0x68, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x54, 0x04, 0x64, 0x04, 0x28, 0x02, 0x06, 0x0a, 0x68, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, 0x05, 0x95, 0x02, 0x06, + 0x0a, 0x67, 0x00, 0x00, 0xff, 0xff, 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, + 0x05, 0x95, 0x02, 0x06, 0x0a, 0x67, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf9, + 0xfe, 0x27, 0x02, 0x9c, 0xff, 0xb1, 0x03, 0x07, 0x07, 0x2a, 0xff, 0xf9, + 0xfa, 0x2f, 0x00, 0x47, 0xb1, 0x00, 0x0e, 0xb8, 0xff, 0x80, 0xb3, 0x1c, + 0x1c, 0x48, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x14, 0x16, 0x48, 0x0e, 0xb8, + 0xff, 0x80, 0xb3, 0x0d, 0x0e, 0x48, 0x0e, 0xb8, 0xff, 0x80, 0x40, 0x1e, + 0x0a, 0x0b, 0x48, 0x00, 0x0e, 0x10, 0x0e, 0x40, 0x0e, 0x50, 0x0e, 0x70, + 0x0e, 0xb0, 0x0e, 0x06, 0x00, 0x0e, 0x30, 0x0e, 0x60, 0x0e, 0x80, 0x0e, + 0x90, 0x0e, 0xf0, 0x0e, 0x06, 0x0e, 0x00, 0x11, 0x5d, 0x71, 0x2b, 0x2b, + 0x2b, 0x2b, 0x35, 0x00, 0x00, 0x01, 0x00, 0xf1, 0xfe, 0xbe, 0x03, 0x74, + 0xff, 0xad, 0x00, 0x07, 0x00, 0x27, 0xb9, 0x00, 0x02, 0x01, 0x5e, 0xb2, + 0x07, 0x07, 0x04, 0xb8, 0x01, 0x5e, 0x40, 0x09, 0x40, 0x05, 0x05, 0x00, + 0x80, 0x03, 0x99, 0x06, 0x08, 0x00, 0x10, 0xde, 0xed, 0x1a, 0xcc, 0x32, + 0x01, 0x2f, 0x1a, 0xed, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x23, 0x35, + 0x21, 0x15, 0x23, 0x35, 0x21, 0x03, 0x74, 0x6e, 0xfe, 0x59, 0x6e, 0x02, + 0x83, 0xfe, 0xbe, 0x84, 0x84, 0xef, 0x00, 0x02, 0x01, 0x6d, 0xfe, 0x23, + 0x02, 0xf8, 0xff, 0xae, 0x00, 0x03, 0x00, 0x07, 0x00, 0x32, 0xb9, 0x00, + 0x05, 0x01, 0x5e, 0xb3, 0x40, 0x02, 0xc0, 0x04, 0xb8, 0x01, 0x5e, 0x40, + 0x11, 0x03, 0x04, 0x99, 0x40, 0x03, 0xc0, 0x07, 0x99, 0x0f, 0x00, 0x1f, + 0x00, 0x2f, 0x00, 0x03, 0x00, 0x08, 0x00, 0x10, 0xde, 0x5d, 0xed, 0x1a, + 0xdd, 0x1a, 0xed, 0x01, 0x2f, 0xed, 0x1a, 0xdd, 0x1a, 0xed, 0x30, 0x31, + 0x05, 0x21, 0x11, 0x21, 0x37, 0x33, 0x35, 0x23, 0x01, 0x6d, 0x01, 0x8b, + 0xfe, 0x75, 0x6b, 0xb5, 0xb5, 0x52, 0xfe, 0x75, 0x6b, 0xb5, 0x00, 0x01, + 0x00, 0xf3, 0xfe, 0xd1, 0x03, 0x72, 0xff, 0xad, 0x00, 0x20, 0x00, 0x4b, + 0xb1, 0x18, 0x07, 0xb8, 0x01, 0x5e, 0xb3, 0x08, 0x08, 0x10, 0x00, 0xbb, + 0x01, 0x5e, 0x00, 0x20, 0x00, 0x0f, 0x01, 0x5e, 0x40, 0x09, 0x10, 0x18, + 0x03, 0x0c, 0x99, 0x15, 0x40, 0x00, 0x0f, 0xb8, 0xff, 0xd8, 0x40, 0x0c, + 0x19, 0x20, 0x48, 0x0f, 0xe0, 0x08, 0x01, 0x08, 0x80, 0x1b, 0x15, 0x21, + 0x00, 0x10, 0xde, 0x32, 0x1a, 0xdc, 0x5d, 0xc6, 0x2b, 0x32, 0x1a, 0x10, + 0xed, 0x32, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x39, 0x31, 0x30, 0x01, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x15, 0x23, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x3e, 0x03, 0x33, 0x32, + 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x03, 0x05, 0x02, + 0x1e, 0x29, 0x31, 0x24, 0x69, 0x24, 0x31, 0x29, 0x1e, 0x02, 0x6d, 0x04, + 0x19, 0x2d, 0x40, 0x2c, 0x35, 0x41, 0x14, 0x14, 0x3f, 0x36, 0x2c, 0x41, + 0x2c, 0x19, 0x04, 0xfe, 0xfc, 0x23, 0x2b, 0x35, 0x28, 0x1c, 0x1c, 0x28, + 0x35, 0x2a, 0x23, 0x15, 0x21, 0x39, 0x29, 0x18, 0x28, 0x22, 0x23, 0x27, + 0x17, 0x29, 0x39, 0x22, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xf5, + 0x05, 0xbe, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x59, 0x40, 0x2d, 0x0a, 0x06, + 0x06, 0x07, 0x0b, 0x08, 0x02, 0x05, 0x05, 0x07, 0x00, 0x04, 0x04, 0x01, + 0x01, 0x03, 0x07, 0x09, 0x09, 0x07, 0x01, 0x09, 0x09, 0x0b, 0x05, 0x02, + 0x08, 0x08, 0x00, 0x00, 0x0a, 0x10, 0x0a, 0x20, 0x0a, 0x03, 0x0a, 0xc0, + 0x03, 0x07, 0x07, 0x04, 0x06, 0x0c, 0x4f, 0x00, 0x3f, 0xde, 0x32, 0x32, + 0x11, 0x33, 0x1a, 0xcc, 0x5d, 0x32, 0x39, 0x11, 0x33, 0x33, 0x33, 0x32, + 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xcc, 0x32, 0x2f, 0x32, 0x11, + 0x33, 0x11, 0x39, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x30, + 0x31, 0x01, 0x17, 0x07, 0x17, 0x07, 0x27, 0x07, 0x27, 0x37, 0x27, 0x37, + 0x17, 0x01, 0x02, 0xa9, 0x4c, 0x75, 0x75, 0x4e, 0x75, 0x75, 0x4c, 0x75, + 0x75, 0x4e, 0x75, 0xfd, 0xcc, 0x05, 0xbe, 0x4c, 0x75, 0x76, 0x4e, 0x76, + 0x76, 0x4c, 0x75, 0x76, 0x4e, 0x76, 0xfe, 0xb0, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x64, 0x02, 0xf5, 0x07, 0x2a, 0x03, 0x07, 0x03, 0xf4, 0x00, 0x00, + 0x01, 0x6c, 0x00, 0x09, 0xb3, 0x00, 0x0c, 0x41, 0x0c, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xb4, 0x06, 0xdc, + 0x00, 0x27, 0x00, 0x28, 0x00, 0x43, 0xb9, 0x00, 0x09, 0x01, 0x5e, 0xb3, + 0x25, 0x25, 0x16, 0x1e, 0xb8, 0x01, 0x5e, 0x40, 0x18, 0x0e, 0x03, 0x03, + 0x0e, 0x16, 0x09, 0x25, 0x0e, 0x1e, 0x25, 0x1e, 0x11, 0x06, 0x99, 0x20, + 0x00, 0x01, 0x00, 0x00, 0x1b, 0x99, 0x11, 0x28, 0x4f, 0x00, 0x3f, 0xde, + 0xed, 0x33, 0x2f, 0x5d, 0xed, 0x12, 0x39, 0x39, 0x11, 0x33, 0x11, 0x33, + 0x01, 0x2f, 0xcd, 0x32, 0x2f, 0x10, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x30, + 0x31, 0x01, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x1e, 0x02, 0x15, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x04, 0x35, 0x34, 0x36, 0x01, + 0x02, 0x8b, 0x1a, 0x0f, 0x0b, 0x10, 0x34, 0x35, 0x2a, 0x31, 0x29, 0x76, + 0x63, 0x0d, 0x11, 0x09, 0x03, 0x02, 0x06, 0x0b, 0x07, 0x30, 0x3a, 0x13, + 0x1e, 0x22, 0x1e, 0x13, 0x70, 0xfd, 0xdf, 0x06, 0xdc, 0x18, 0x25, 0x23, + 0x15, 0x25, 0x24, 0x20, 0x37, 0x3f, 0x4e, 0x36, 0x5d, 0x64, 0x06, 0x0d, + 0x16, 0x10, 0x13, 0x19, 0x0d, 0x04, 0x20, 0x28, 0x16, 0x26, 0x27, 0x28, + 0x30, 0x3a, 0x25, 0x59, 0x68, 0xfd, 0x1c, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x04, 0xb9, 0x02, 0xb4, 0x07, 0x9d, 0x03, 0x07, 0x03, 0xf6, 0x00, 0x00, + 0x00, 0xc1, 0x00, 0x09, 0xb3, 0x00, 0x28, 0x41, 0x28, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x2f, 0x04, 0x66, 0x07, 0x05, + 0x02, 0x27, 0x02, 0x4f, 0x00, 0x00, 0x07, 0xde, 0x01, 0x07, 0x02, 0x4f, + 0x00, 0x00, 0x06, 0xc9, 0x00, 0x3e, 0xb1, 0x01, 0x05, 0xb8, 0xff, 0xc0, + 0xb3, 0x23, 0x24, 0x48, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x10, 0x48, + 0x05, 0xb8, 0xff, 0xc0, 0xb4, 0x09, 0x09, 0x48, 0x00, 0x05, 0xb8, 0xff, + 0xc0, 0xb3, 0x15, 0x16, 0x48, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x13, + 0x48, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0d, 0x48, 0x05, 0x00, 0x11, + 0x2b, 0x2b, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x93, 0x04, 0x66, 0x07, 0x69, 0x02, 0x27, 0x02, 0x4f, 0x00, 0x00, + 0x08, 0x42, 0x01, 0x07, 0x02, 0x4f, 0x00, 0x00, 0x07, 0x2d, 0x00, 0x1a, + 0x40, 0x09, 0x00, 0x01, 0x40, 0x09, 0x0f, 0x48, 0x01, 0x01, 0x05, 0xb8, + 0xff, 0xc0, 0xb3, 0x18, 0x18, 0x48, 0x05, 0x00, 0x11, 0x2b, 0x35, 0x11, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xac, 0x05, 0x85, + 0x02, 0x06, 0x01, 0x3c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x1b, + 0x02, 0xae, 0x06, 0x87, 0x02, 0x06, 0x01, 0x3d, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x03, 0xf8, 0x04, 0x08, 0x05, 0x85, 0x02, 0x06, 0x01, 0x3e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xe1, 0x06, 0x87, + 0x02, 0x06, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x03, 0x74, 0x05, 0x32, 0x00, 0x07, 0x00, 0x08, 0x00, 0x28, 0xbc, 0x00, + 0x04, 0x01, 0x5e, 0x00, 0x05, 0x00, 0x01, 0x01, 0x5e, 0x40, 0x0b, 0x00, + 0x03, 0x99, 0x40, 0x06, 0x06, 0x80, 0x01, 0x05, 0x08, 0x4f, 0x00, 0x3f, + 0xde, 0x32, 0x1a, 0xcd, 0x2f, 0x1a, 0xed, 0x01, 0x2f, 0xed, 0x2f, 0xed, + 0x30, 0x31, 0x01, 0x23, 0x35, 0x21, 0x15, 0x23, 0x35, 0x21, 0x01, 0x03, + 0x74, 0x6e, 0xfe, 0x59, 0x6e, 0x02, 0x83, 0xfc, 0x8c, 0x04, 0x43, 0x84, + 0x84, 0xef, 0xfe, 0xc6, 0xff, 0xff, 0x00, 0x00, 0x05, 0x5b, 0x03, 0x74, + 0x06, 0x95, 0x03, 0x07, 0x03, 0xfe, 0x00, 0x00, 0x01, 0x63, 0x00, 0x09, + 0xb3, 0x00, 0x08, 0x41, 0x08, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfd, 0xf1, 0x04, 0x66, 0xff, 0x93, 0x03, 0x06, 0x03, 0x36, + 0x00, 0x00, 0x00, 0x1a, 0xb2, 0x01, 0x00, 0x06, 0xb8, 0xff, 0xc0, 0xb3, + 0x15, 0x15, 0x48, 0x06, 0xb8, 0xff, 0xc0, 0xb3, 0x0d, 0x0d, 0x48, 0x06, + 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xc5, + 0x03, 0x46, 0x00, 0x10, 0x03, 0x07, 0x03, 0xbe, 0x00, 0x00, 0xf9, 0xcd, + 0x00, 0x2c, 0xb2, 0x01, 0x00, 0x03, 0xb8, 0xff, 0x80, 0xb3, 0x20, 0x2c, + 0x48, 0x03, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1e, 0x48, 0x03, 0xb8, 0xff, + 0xc0, 0xb3, 0x18, 0x1a, 0x48, 0x03, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x16, + 0x48, 0x03, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x35, 0xff, 0xff, + 0x01, 0x76, 0xfe, 0x22, 0x02, 0xf0, 0xff, 0x9a, 0x03, 0x07, 0x03, 0xd0, + 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x21, 0xb1, 0x00, 0x01, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x11, 0x48, 0x01, 0xb8, 0xff, 0xc0, 0xb3, 0x0d, 0x0d, 0x48, + 0x01, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0a, 0x48, 0x01, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf7, 0x03, 0x99, + 0x06, 0x01, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x5f, 0x40, 0x2e, 0x1c, 0x11, + 0x1f, 0x10, 0x01, 0x0c, 0x00, 0x0f, 0x0f, 0x10, 0x10, 0x17, 0x1f, 0x00, + 0x00, 0x06, 0x07, 0x07, 0x16, 0x17, 0x17, 0x16, 0x16, 0x0a, 0x00, 0x1f, + 0x1f, 0x07, 0x06, 0x06, 0x1c, 0x01, 0x03, 0x1a, 0xce, 0x11, 0x0e, 0x13, + 0x03, 0xce, 0x0a, 0x0a, 0x10, 0x0f, 0x20, 0x4f, 0x00, 0x3f, 0xce, 0x32, + 0x32, 0x2f, 0xed, 0xdc, 0x39, 0x39, 0xed, 0x11, 0x39, 0x39, 0x32, 0x2f, + 0x33, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x12, 0x39, + 0x39, 0x11, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x07, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x17, 0x06, 0x06, 0x23, 0x22, 0x27, 0x26, 0x23, 0x07, 0x27, + 0x37, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x17, + 0x32, 0x17, 0x37, 0x01, 0x02, 0xcf, 0x3e, 0x11, 0x12, 0x25, 0x38, 0x1b, + 0x6d, 0x2a, 0x70, 0x51, 0x3b, 0x29, 0x02, 0x02, 0x37, 0x9e, 0x3e, 0x10, + 0x12, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x28, 0x02, 0x01, + 0x38, 0xfd, 0xcf, 0x05, 0xb9, 0x89, 0x05, 0x2f, 0x2b, 0x6c, 0x51, 0x4d, + 0x11, 0x01, 0x7a, 0x48, 0x88, 0x06, 0x2e, 0x2c, 0x6d, 0x50, 0x4d, 0x12, + 0x01, 0x7b, 0xfd, 0xf6, 0xff, 0xff, 0x00, 0x00, 0x05, 0x5f, 0x03, 0x99, + 0x07, 0x69, 0x02, 0x07, 0x04, 0x03, 0x00, 0x00, 0x01, 0x68, 0x00, 0x04, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, 0x07, 0x07, 0x00, 0x16, 0x00, 0x26, + 0x00, 0x36, 0x00, 0x37, 0x00, 0x49, 0xb1, 0x17, 0x27, 0xb8, 0x01, 0xa9, + 0x40, 0x1f, 0x1d, 0x2d, 0x2d, 0x0c, 0x16, 0x00, 0x00, 0x0b, 0x0c, 0x0c, + 0x0b, 0x0b, 0x03, 0x32, 0x2a, 0x2a, 0x00, 0x16, 0x16, 0x0e, 0xaf, 0x08, + 0x08, 0x13, 0xaf, 0x03, 0x03, 0x22, 0x1a, 0x37, 0x4f, 0x00, 0x3f, 0xde, + 0xcd, 0x32, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x32, 0x2f, + 0xcd, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x12, + 0x39, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x03, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x11, 0x14, 0x06, 0x23, 0x22, 0x26, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x03, 0xac, 0x2a, + 0x77, 0x4a, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x55, + 0x97, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xa0, 0x3e, 0x2e, + 0x2d, 0x3d, 0x11, 0x1c, 0x27, 0x16, 0x16, 0x27, 0x1e, 0x11, 0x3e, 0x2e, + 0x2d, 0x3d, 0x11, 0x1c, 0x27, 0x16, 0x16, 0x27, 0x1e, 0x11, 0xfd, 0x61, + 0x05, 0xd9, 0x4a, 0x4a, 0x1f, 0x26, 0x1f, 0x23, 0x2d, 0x59, 0x93, 0x1f, + 0x26, 0x1f, 0x25, 0x2b, 0xfe, 0xb5, 0x2d, 0x36, 0x36, 0x2d, 0x16, 0x25, + 0x1b, 0x0e, 0x0e, 0x1b, 0x25, 0x01, 0xa7, 0x2d, 0x36, 0x36, 0x2d, 0x16, + 0x25, 0x1b, 0x0e, 0x0e, 0x1b, 0x25, 0xfd, 0x3f, 0xff, 0xff, 0x00, 0x00, + 0x04, 0x8f, 0x03, 0xac, 0x07, 0x9e, 0x03, 0x07, 0x04, 0x05, 0x00, 0x00, + 0x00, 0x97, 0x00, 0x55, 0xb3, 0x02, 0x01, 0x00, 0x37, 0xb8, 0xff, 0x80, + 0xb3, 0x26, 0x26, 0x48, 0x37, 0xb8, 0xff, 0x80, 0xb3, 0x24, 0x24, 0x48, + 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x22, 0x22, 0x48, 0x37, 0xb8, 0xff, 0xc0, + 0xb3, 0x20, 0x20, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x16, 0x1e, 0x48, + 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x14, 0x48, 0x37, 0xb8, 0xff, 0xc0, + 0xb3, 0x0b, 0x0c, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb5, 0x09, 0x09, 0x48, + 0x37, 0x41, 0x37, 0x00, 0x11, 0x3f, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x35, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, + 0x03, 0xac, 0x06, 0xc6, 0x02, 0x26, 0x01, 0x45, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x45, 0x00, 0x00, 0x01, 0x2d, 0x00, 0x0f, 0xb1, 0x02, 0x31, 0xb8, + 0xff, 0xc0, 0xb3, 0x0b, 0x0b, 0x48, 0x31, 0x00, 0x11, 0x2b, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x04, 0xd8, 0x03, 0xac, 0x07, 0x9e, 0x02, 0x27, + 0x01, 0x45, 0x00, 0x00, 0x02, 0x05, 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x53, 0xb2, 0x02, 0x00, 0x31, 0xb8, 0xff, 0x80, 0xb3, + 0x2f, 0x32, 0x48, 0x31, 0xb8, 0xff, 0xc0, 0xb3, 0x27, 0x2a, 0x48, 0x31, + 0xb8, 0xff, 0xc0, 0xb3, 0x22, 0x22, 0x48, 0x31, 0xb8, 0xff, 0x80, 0xb3, + 0x1c, 0x1f, 0x48, 0x31, 0xb8, 0xff, 0xc0, 0xb3, 0x1a, 0x1a, 0x48, 0x31, + 0xb8, 0xff, 0xc0, 0xb3, 0x16, 0x16, 0x48, 0x31, 0xb8, 0xff, 0xc0, 0xb3, + 0x0e, 0x14, 0x48, 0x31, 0xb8, 0xff, 0xc0, 0xb5, 0x09, 0x0c, 0x48, 0x31, + 0x41, 0x31, 0x00, 0x11, 0x3f, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0x00, 0x01, 0x00, 0x46, 0xfe, 0x3b, 0x04, 0x1f, + 0xff, 0xad, 0x00, 0x0b, 0x00, 0x38, 0x40, 0x1e, 0x05, 0x0a, 0x0a, 0x08, + 0x04, 0x0b, 0x0b, 0x01, 0x03, 0x06, 0x06, 0x07, 0x02, 0x08, 0x01, 0x04, + 0x05, 0x99, 0x0a, 0x0a, 0x00, 0x1f, 0x09, 0x2f, 0x09, 0x3f, 0x09, 0x03, + 0x09, 0x0c, 0x00, 0x10, 0xce, 0x5d, 0x32, 0x32, 0x2f, 0xed, 0x17, 0x39, + 0x32, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x33, + 0x30, 0x31, 0x05, 0x17, 0x15, 0x07, 0x35, 0x21, 0x15, 0x27, 0x35, 0x37, + 0x15, 0x21, 0x03, 0x3c, 0xe3, 0xe3, 0xfd, 0xed, 0xe3, 0xe3, 0x02, 0x13, + 0x53, 0xa2, 0x2f, 0xa1, 0x83, 0x83, 0xa1, 0x2f, 0xa2, 0x84, 0x00, 0x01, + 0x01, 0x7a, 0xfe, 0x15, 0x02, 0xec, 0xff, 0xac, 0x00, 0x07, 0x00, 0x2b, + 0xb5, 0x03, 0x04, 0x01, 0x05, 0x05, 0x06, 0xb8, 0x01, 0x5e, 0xb6, 0x01, + 0x02, 0x02, 0x01, 0x06, 0x00, 0x02, 0xb8, 0x01, 0x0a, 0xb1, 0x03, 0x08, + 0x00, 0x10, 0xde, 0xfd, 0xc6, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0x11, 0x39, 0x39, 0x30, 0x31, 0x01, 0x35, 0x23, 0x37, 0x33, + 0x17, 0x23, 0x15, 0x01, 0xfe, 0x84, 0xa2, 0x2f, 0xa1, 0x83, 0xfe, 0x15, + 0xc8, 0xcf, 0xcf, 0xc8, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xbf, + 0x05, 0xe0, 0x00, 0x06, 0x00, 0x07, 0x00, 0x2d, 0x40, 0x17, 0x01, 0x05, + 0x80, 0x02, 0x00, 0x05, 0x04, 0x01, 0x01, 0x02, 0x1f, 0x03, 0x2f, 0x03, + 0x3f, 0x03, 0x03, 0x03, 0x03, 0x00, 0x06, 0x07, 0x4f, 0x00, 0x3f, 0xce, + 0x32, 0x32, 0x2f, 0x5d, 0x33, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0x33, + 0x1a, 0xcd, 0x32, 0x30, 0x31, 0x01, 0x37, 0x27, 0x35, 0x05, 0x15, 0x05, + 0x05, 0x01, 0xa7, 0xaa, 0xaa, 0x01, 0x18, 0xfe, 0xe8, 0xfe, 0x59, 0x04, + 0xad, 0x64, 0x64, 0x6b, 0xb5, 0x34, 0xb4, 0x4b, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x5b, 0x02, 0xbf, 0x07, 0x43, 0x03, 0x07, 0x04, 0x0c, 0x00, 0x00, + 0x01, 0x63, 0x00, 0x09, 0xb3, 0x00, 0x07, 0x41, 0x07, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0x96, 0x05, 0x78, + 0x00, 0x0f, 0x00, 0x10, 0x00, 0x2b, 0x40, 0x18, 0x09, 0x0f, 0x0f, 0x0c, + 0x05, 0x09, 0x99, 0x0f, 0x08, 0x01, 0x1f, 0x08, 0x2f, 0x08, 0x3f, 0x08, + 0x03, 0x08, 0x08, 0x0f, 0x99, 0x00, 0x10, 0x4f, 0x00, 0x3f, 0xde, 0xed, + 0x33, 0x2f, 0x5d, 0x71, 0xed, 0x01, 0x2f, 0xcd, 0x33, 0x2f, 0x33, 0x31, + 0x30, 0x01, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, 0x15, 0x22, 0x06, + 0x15, 0x14, 0x16, 0x33, 0x05, 0x02, 0x93, 0x2f, 0x48, 0x32, 0x1a, 0x69, + 0x5d, 0x31, 0x2b, 0x2c, 0x2d, 0xfd, 0x6d, 0x04, 0x0f, 0x1b, 0x32, 0x43, + 0x29, 0x51, 0x5f, 0x55, 0x38, 0x2a, 0x28, 0x35, 0x6c, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x05, 0x56, 0x02, 0x96, 0x06, 0xd6, 0x03, 0x07, 0x04, 0x0e, + 0x00, 0x00, 0x01, 0x5e, 0x00, 0x09, 0xb3, 0x00, 0x10, 0x41, 0x10, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0x00, 0x02, 0x00, 0xaf, 0x04, 0x65, 0x03, 0xb7, + 0x06, 0x5f, 0x00, 0x15, 0x00, 0x21, 0x00, 0x3f, 0xb4, 0x16, 0x1c, 0x1c, + 0x00, 0x0b, 0xb8, 0x01, 0x74, 0xb2, 0x0a, 0x0a, 0x15, 0xb8, 0x01, 0x74, + 0x40, 0x15, 0x00, 0x10, 0xc9, 0x70, 0x05, 0x01, 0x05, 0x05, 0x0b, 0xdf, + 0x00, 0x01, 0x00, 0x40, 0x0d, 0x10, 0x48, 0x00, 0x00, 0x1f, 0x19, 0x00, + 0x2f, 0xcd, 0x33, 0x2f, 0x2b, 0x5d, 0x33, 0x33, 0x2f, 0x5d, 0xed, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x13, + 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x23, 0x2e, 0x03, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x05, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, + 0x33, 0x32, 0x16, 0xaf, 0x09, 0x37, 0x5e, 0x8a, 0x5c, 0x5c, 0x8c, 0x61, + 0x35, 0x06, 0xb3, 0x05, 0x19, 0x30, 0x4b, 0x38, 0x38, 0x4b, 0x30, 0x19, + 0x05, 0x01, 0x54, 0x4b, 0x38, 0x38, 0x4b, 0x4b, 0x38, 0x38, 0x4b, 0x05, + 0x1f, 0x49, 0x76, 0x54, 0x2d, 0x2d, 0x53, 0x76, 0x4a, 0x1e, 0x3a, 0x2d, + 0x1b, 0x1b, 0x2d, 0x3a, 0x1e, 0x41, 0x38, 0x41, 0x41, 0x38, 0x38, 0x41, + 0x41, 0x00, 0x00, 0x02, 0x00, 0xaf, 0x05, 0x7b, 0x03, 0xb7, 0x07, 0x75, + 0x00, 0x15, 0x00, 0x21, 0x00, 0x59, 0xb9, 0x00, 0x16, 0x02, 0x04, 0xb3, + 0x1c, 0x1c, 0x00, 0x0b, 0xb8, 0x01, 0x74, 0xb2, 0x0a, 0x0a, 0x15, 0xb8, + 0x01, 0x74, 0x40, 0x1d, 0x00, 0x10, 0xc9, 0x70, 0x05, 0x01, 0x05, 0x05, + 0x0b, 0xdf, 0x00, 0x01, 0x00, 0x40, 0x0d, 0x10, 0x48, 0x00, 0x00, 0x4f, + 0x1f, 0x5f, 0x1f, 0xdf, 0x1f, 0xef, 0x1f, 0x04, 0x1f, 0xb8, 0x01, 0x22, + 0xb7, 0x0f, 0x19, 0x3f, 0x19, 0x6f, 0x19, 0x03, 0x19, 0x00, 0x2f, 0x5d, + 0xed, 0x5d, 0x33, 0x2f, 0x2b, 0x5d, 0x33, 0x33, 0x2f, 0x5d, 0xed, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x13, + 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x23, 0x2e, 0x03, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x05, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, + 0x33, 0x32, 0x16, 0xaf, 0x09, 0x37, 0x5e, 0x8a, 0x5c, 0x5c, 0x8c, 0x61, + 0x35, 0x06, 0xb3, 0x05, 0x19, 0x30, 0x4b, 0x38, 0x38, 0x4b, 0x30, 0x19, + 0x05, 0x01, 0x54, 0x4b, 0x38, 0x38, 0x4b, 0x4b, 0x38, 0x38, 0x4b, 0x06, + 0x35, 0x49, 0x76, 0x54, 0x2d, 0x2d, 0x53, 0x76, 0x4a, 0x1e, 0x3a, 0x2d, + 0x1b, 0x1b, 0x2d, 0x3a, 0x1e, 0x41, 0x38, 0x41, 0x41, 0x38, 0x38, 0x41, + 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xe7, 0x02, 0xf5, 0xff, 0xad, + 0x03, 0x07, 0x03, 0xf4, 0x00, 0x00, 0xf9, 0xef, 0x00, 0x33, 0xb1, 0x00, + 0x0a, 0xb8, 0xff, 0x80, 0xb3, 0x18, 0x18, 0x48, 0x0a, 0xb8, 0xff, 0x80, + 0xb3, 0x13, 0x14, 0x48, 0x0a, 0xb8, 0xff, 0xc0, 0xb3, 0x0d, 0x0f, 0x48, + 0x0a, 0xb8, 0xff, 0x80, 0xb3, 0x0b, 0x0c, 0x48, 0x0a, 0xb8, 0xff, 0xc0, + 0xb3, 0x0a, 0x0a, 0x48, 0x0a, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x35, 0x00, 0x00, 0x01, 0x01, 0xa7, 0xfe, 0x40, 0x02, 0xbf, 0xff, 0xdd, + 0x00, 0x06, 0x00, 0x39, 0xb3, 0x05, 0x00, 0x00, 0x06, 0xb8, 0x01, 0x5e, + 0xb6, 0x02, 0x03, 0x02, 0x06, 0x06, 0x00, 0x01, 0xb8, 0xff, 0xc0, 0x40, + 0x0f, 0x09, 0x0c, 0x48, 0x01, 0x01, 0x05, 0x0f, 0x04, 0x1f, 0x04, 0x2f, + 0x04, 0x03, 0x04, 0x07, 0x00, 0x10, 0xce, 0x5d, 0x32, 0x32, 0x2f, 0x2b, + 0x33, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x15, 0x25, 0x35, 0x25, 0x15, 0x07, 0x02, 0xbf, 0xfe, 0xe8, + 0x01, 0x18, 0xaa, 0xfe, 0xaa, 0x6a, 0xb4, 0x34, 0xb5, 0x6b, 0x64, 0x00, + 0x00, 0x01, 0x01, 0xa7, 0xfe, 0x40, 0x02, 0xbf, 0xff, 0xdd, 0x00, 0x06, + 0x00, 0x36, 0x40, 0x0b, 0x01, 0x05, 0x05, 0x02, 0x00, 0x05, 0x04, 0x01, + 0x01, 0x00, 0x06, 0xb8, 0xff, 0xc0, 0x40, 0x0f, 0x09, 0x0c, 0x48, 0x06, + 0x06, 0x02, 0x0f, 0x03, 0x1f, 0x03, 0x2f, 0x03, 0x03, 0x03, 0x07, 0x00, + 0x10, 0xce, 0x5d, 0x32, 0x32, 0x2f, 0x2b, 0x33, 0x39, 0x11, 0x33, 0x33, + 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x37, 0x27, 0x35, + 0x05, 0x15, 0x05, 0x01, 0xa7, 0xaa, 0xaa, 0x01, 0x18, 0xfe, 0xe8, 0xfe, + 0xaa, 0x64, 0x64, 0x6b, 0xb5, 0x34, 0xb4, 0x00, 0x00, 0x02, 0x00, 0xe2, + 0xfe, 0x40, 0x03, 0x83, 0xff, 0xdd, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x5a, + 0x40, 0x1d, 0x0a, 0x09, 0x0d, 0x0d, 0x0c, 0x0b, 0x0b, 0x07, 0x08, 0x08, + 0x05, 0x02, 0x06, 0x06, 0x01, 0x05, 0x0c, 0x08, 0x08, 0x80, 0x0d, 0x09, + 0x09, 0x05, 0x04, 0x01, 0x01, 0x00, 0x06, 0xb8, 0xff, 0xc0, 0x40, 0x0f, + 0x09, 0x0c, 0x48, 0x06, 0x06, 0x02, 0x0f, 0x03, 0x1f, 0x03, 0x2f, 0x03, + 0x03, 0x03, 0x0e, 0x00, 0x10, 0xce, 0x5d, 0x32, 0x32, 0x2f, 0x2b, 0x33, + 0x39, 0x11, 0x33, 0x33, 0x32, 0x2f, 0x33, 0x1a, 0xcd, 0x2f, 0x32, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x32, 0x32, 0x2f, 0x33, + 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x13, 0x37, 0x27, 0x35, 0x05, 0x15, + 0x05, 0x25, 0x23, 0x13, 0x33, 0x13, 0x23, 0x27, 0xe2, 0xaa, 0xaa, 0x01, + 0x18, 0xfe, 0xe8, 0x01, 0x6f, 0x6b, 0xb5, 0x34, 0xb4, 0x6a, 0x64, 0xfe, + 0xaa, 0x64, 0x64, 0x6b, 0xb5, 0x34, 0xb4, 0x42, 0x01, 0x18, 0xfe, 0xe8, + 0xaa, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xab, 0x06, 0x10, + 0x00, 0x11, 0x00, 0x12, 0x00, 0x25, 0x40, 0x13, 0x03, 0x0c, 0x0c, 0x06, + 0x11, 0x06, 0x9a, 0x1f, 0x07, 0x2f, 0x07, 0x02, 0x07, 0x07, 0x00, 0x9a, + 0x11, 0x12, 0x4f, 0x00, 0x3f, 0xde, 0xed, 0x33, 0x2f, 0x5d, 0xed, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x23, 0x35, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x05, + 0x01, 0xbb, 0x28, 0x36, 0x36, 0x28, 0x31, 0x58, 0x41, 0x26, 0x26, 0x42, + 0x57, 0x31, 0xfe, 0x45, 0x04, 0xce, 0x36, 0x28, 0x28, 0x36, 0x86, 0x22, + 0x3c, 0x54, 0x31, 0x30, 0x54, 0x3e, 0x23, 0x50, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x56, 0x02, 0xab, 0x07, 0x6e, 0x03, 0x07, 0x04, 0x16, 0x00, 0x00, + 0x01, 0x5e, 0x00, 0x09, 0xb3, 0x00, 0x12, 0x41, 0x12, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xd1, 0x05, 0xa8, + 0x02, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x1b, + 0x02, 0xcd, 0x06, 0xa6, 0x02, 0x06, 0x01, 0x53, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x7e, 0xfe, 0x2b, 0x02, 0xe7, 0xff, 0xad, 0x00, 0x43, 0x00, 0x82, + 0x40, 0x44, 0x29, 0x24, 0x24, 0x3b, 0x40, 0x40, 0x11, 0x1e, 0x07, 0x02, + 0x02, 0x19, 0x1e, 0x21, 0x16, 0x2c, 0x43, 0x0a, 0x38, 0x2c, 0x38, 0x31, + 0x37, 0x31, 0x12, 0x37, 0x0b, 0x0b, 0x12, 0x42, 0x22, 0x22, 0x3b, 0x43, + 0x38, 0x2c, 0x16, 0x0a, 0x21, 0x00, 0x20, 0x20, 0x07, 0x21, 0x29, 0x19, + 0x0f, 0x19, 0x1f, 0x19, 0x2f, 0x19, 0x03, 0x30, 0x19, 0x30, 0x19, 0x0e, + 0xc0, 0x0f, 0x34, 0x1f, 0x34, 0x2f, 0x34, 0x03, 0x34, 0x44, 0x00, 0x10, + 0xde, 0x5d, 0x1a, 0xcd, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x11, 0x12, 0x39, + 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x32, + 0x11, 0x33, 0x01, 0x2f, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x12, 0x39, + 0x39, 0x11, 0x33, 0x33, 0x11, 0x33, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, + 0x12, 0x39, 0x33, 0x2f, 0x33, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x16, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x27, 0x27, 0x17, 0x14, 0x06, 0x23, + 0x22, 0x26, 0x35, 0x37, 0x34, 0x36, 0x36, 0x37, 0x07, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x37, 0x37, 0x27, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x17, 0x17, 0x2e, 0x02, 0x34, 0x35, 0x34, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x07, 0x37, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x07, + 0x07, 0x02, 0xdb, 0x0c, 0x0b, 0x0f, 0x10, 0x05, 0x07, 0x06, 0x55, 0x0c, + 0x12, 0x1e, 0x1b, 0x14, 0x01, 0x02, 0x05, 0x05, 0x56, 0x06, 0x07, 0x04, + 0x0f, 0x10, 0x0c, 0x0d, 0x62, 0x62, 0x0d, 0x0c, 0x11, 0x10, 0x04, 0x05, + 0x07, 0x55, 0x05, 0x05, 0x03, 0x15, 0x1a, 0x1e, 0x12, 0x0c, 0x56, 0x06, + 0x07, 0x04, 0x0f, 0x0f, 0x0c, 0x0c, 0x62, 0xfe, 0xc0, 0x06, 0x0c, 0x09, + 0x18, 0x14, 0x0e, 0x06, 0x40, 0x6c, 0x0c, 0x0e, 0x0b, 0x0a, 0x03, 0x02, + 0x15, 0x2e, 0x29, 0x40, 0x06, 0x0c, 0x14, 0x18, 0x0b, 0x0b, 0x07, 0x2b, + 0x2c, 0x06, 0x0d, 0x0b, 0x18, 0x13, 0x0c, 0x05, 0x40, 0x28, 0x2d, 0x16, + 0x05, 0x01, 0x0b, 0x0a, 0x0c, 0x0e, 0x6c, 0x40, 0x06, 0x0d, 0x15, 0x18, + 0x0a, 0x0e, 0x04, 0x2b, 0x00, 0x03, 0x00, 0xde, 0xfe, 0x44, 0x03, 0x87, + 0xff, 0xad, 0x00, 0x1f, 0x00, 0x2b, 0x00, 0x37, 0x00, 0x40, 0x40, 0x20, + 0x09, 0x19, 0x2c, 0x26, 0x26, 0x2c, 0x2c, 0x20, 0x32, 0x12, 0x20, 0x00, + 0x23, 0x2f, 0x17, 0x29, 0x35, 0x09, 0x05, 0x30, 0x0d, 0x40, 0x0d, 0x50, + 0x0d, 0x03, 0x0d, 0x0d, 0x1d, 0x19, 0x17, 0x38, 0x00, 0x10, 0xce, 0x32, + 0x32, 0x32, 0x2f, 0x5d, 0x33, 0x33, 0xcd, 0x32, 0x10, 0xcd, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, + 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x27, 0x26, 0x27, 0x06, + 0x07, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x17, 0x36, 0x37, 0x36, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x25, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x03, 0x87, 0x1c, 0x34, 0x4a, + 0x2f, 0x31, 0x25, 0x23, 0x18, 0x19, 0x22, 0x25, 0x2f, 0x31, 0x49, 0x2f, + 0x17, 0x1a, 0x33, 0x4b, 0x30, 0x5c, 0x32, 0x19, 0x23, 0x26, 0x30, 0x5c, + 0x65, 0x6a, 0x2b, 0x31, 0x2c, 0x2d, 0x29, 0x33, 0x2c, 0x2d, 0xfe, 0xe0, + 0x2b, 0x31, 0x2c, 0x2d, 0x29, 0x33, 0x2c, 0x2d, 0xfe, 0xfd, 0x29, 0x43, + 0x32, 0x1b, 0x0d, 0x0d, 0x17, 0x17, 0x0c, 0x0e, 0x1a, 0x2f, 0x41, 0x28, + 0x28, 0x44, 0x31, 0x1a, 0x2f, 0x16, 0x0c, 0x0d, 0x5f, 0x58, 0x29, 0x39, + 0x33, 0x29, 0x2c, 0x37, 0x35, 0x28, 0x29, 0x39, 0x33, 0x29, 0x2c, 0x37, + 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xf0, 0x06, 0x2d, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x2d, 0x40, 0x14, 0x07, 0x06, 0x06, 0x00, + 0x05, 0x05, 0x03, 0x02, 0x02, 0x04, 0x01, 0x01, 0x40, 0x05, 0x05, 0x02, + 0xc0, 0x07, 0x08, 0x4f, 0x00, 0x3f, 0xde, 0x1a, 0xcc, 0x39, 0x2f, 0x1a, + 0xcd, 0x01, 0x2f, 0x32, 0x32, 0x11, 0x33, 0x32, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x23, 0x13, 0x33, 0x07, 0x33, 0x03, 0x23, 0x05, + 0x02, 0x62, 0xec, 0x59, 0x6f, 0x3a, 0xec, 0x59, 0x6f, 0xfd, 0xd8, 0x05, + 0x04, 0x01, 0x29, 0xc1, 0xfe, 0xd7, 0x4b, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x5b, 0x02, 0xf0, 0x07, 0x90, 0x03, 0x07, 0x04, 0x1c, 0x00, 0x00, + 0x01, 0x63, 0x00, 0x12, 0xb1, 0x00, 0x08, 0xb8, 0xff, 0xc0, 0xb5, 0x09, + 0x09, 0x48, 0x08, 0x41, 0x08, 0x00, 0x11, 0x3f, 0x2b, 0x35, 0x00, 0x01, + 0x00, 0x03, 0xfe, 0x40, 0x04, 0x6a, 0xff, 0xca, 0x00, 0x0d, 0x00, 0x23, + 0xb4, 0x08, 0x07, 0x0d, 0x00, 0x02, 0xb8, 0x01, 0x40, 0xb7, 0x0a, 0x00, + 0x07, 0x07, 0x0d, 0x08, 0x08, 0x0e, 0x00, 0x10, 0xce, 0x2f, 0x32, 0x32, + 0x11, 0x33, 0xde, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x05, + 0x02, 0x21, 0x22, 0x2e, 0x02, 0x27, 0x37, 0x16, 0x21, 0x32, 0x36, 0x37, + 0x04, 0x6a, 0xfc, 0xfe, 0xce, 0x47, 0x8e, 0x8f, 0x8f, 0x46, 0x35, 0xe4, + 0x01, 0x16, 0x8b, 0xff, 0x71, 0xb1, 0xfe, 0xf1, 0x1c, 0x40, 0x68, 0x4b, + 0x7b, 0x9a, 0x56, 0x41, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x6a, + 0x05, 0x83, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x23, 0x40, 0x0a, 0x08, 0x07, + 0x0d, 0x00, 0x00, 0x07, 0x07, 0x0d, 0x08, 0x0a, 0xb8, 0x01, 0x40, 0xb2, + 0x02, 0x0e, 0x4f, 0x00, 0x3f, 0xd6, 0xfd, 0xce, 0x32, 0x32, 0x11, 0x33, + 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x31, 0x30, 0x01, 0x02, 0x21, 0x22, 0x2e, + 0x02, 0x27, 0x37, 0x16, 0x21, 0x32, 0x36, 0x37, 0x01, 0x04, 0x6a, 0xfc, + 0xfe, 0xce, 0x47, 0x8e, 0x8f, 0x8f, 0x46, 0x35, 0xe4, 0x01, 0x16, 0x8b, + 0xff, 0x71, 0xfb, 0xd3, 0x05, 0x08, 0xfe, 0xf1, 0x1c, 0x40, 0x68, 0x4b, + 0x7b, 0x9a, 0x56, 0x41, 0xfe, 0x78, 0xff, 0xff, 0x00, 0x00, 0x05, 0x92, + 0x04, 0x6a, 0x07, 0x1d, 0x03, 0x07, 0x04, 0x1f, 0x00, 0x00, 0x01, 0x9a, + 0x00, 0x09, 0xb3, 0x00, 0x0e, 0x41, 0x0e, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x4d, 0x04, 0x66, 0x06, 0x0e, 0x02, 0x07, + 0x02, 0x4f, 0x00, 0x00, 0x06, 0xe7, 0xff, 0xff, 0x00, 0x00, 0x05, 0xcb, + 0x04, 0x66, 0x06, 0x8c, 0x03, 0x07, 0x02, 0x4f, 0x00, 0x00, 0x07, 0x65, + 0x00, 0x13, 0x40, 0x0c, 0x00, 0x00, 0x40, 0x0d, 0x0d, 0x48, 0x00, 0x40, + 0x09, 0x0a, 0x48, 0x00, 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x66, 0x04, 0x66, 0xff, 0x27, 0x02, 0x06, 0x02, 0x4f, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x26, 0x05, 0x89, + 0x00, 0x1f, 0x00, 0x20, 0x00, 0x32, 0xb9, 0x00, 0x1f, 0x01, 0x5f, 0xb2, + 0x00, 0x00, 0x0f, 0xb8, 0x01, 0x5f, 0xb2, 0x10, 0x1f, 0x15, 0xbb, 0x01, + 0x30, 0x00, 0x0c, 0x00, 0x1c, 0x01, 0x30, 0xb5, 0x05, 0x10, 0x10, 0x05, + 0x20, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x2f, 0x10, 0xed, 0xdc, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x16, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x04, 0x23, 0x22, 0x06, 0x15, 0x23, 0x26, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x04, 0x33, 0x32, 0x36, 0x35, 0x01, 0x04, 0x25, 0x01, + 0x22, 0x48, 0x6b, 0x47, 0x37, 0x58, 0x4b, 0x3f, 0x3d, 0x3c, 0x22, 0x3b, + 0x39, 0xa0, 0x02, 0x23, 0x47, 0x6b, 0x47, 0x37, 0x58, 0x4b, 0x3f, 0x3d, + 0x3c, 0x22, 0x3f, 0x36, 0xfc, 0x7b, 0x05, 0x7b, 0x3d, 0x78, 0x71, 0x46, + 0x19, 0x25, 0x2d, 0x26, 0x19, 0x4c, 0x50, 0x3c, 0x7a, 0x70, 0x46, 0x19, + 0x25, 0x2d, 0x26, 0x19, 0x4a, 0x52, 0xfe, 0x7d, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x74, 0x04, 0x26, 0x07, 0x05, 0x03, 0x07, 0x04, 0x24, 0x00, 0x00, + 0x01, 0x7c, 0x00, 0x12, 0xb1, 0x00, 0x20, 0xb8, 0xff, 0xc0, 0xb5, 0x09, + 0x09, 0x48, 0x20, 0x41, 0x20, 0x00, 0x11, 0x3f, 0x2b, 0x35, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x04, 0x6a, 0x05, 0x83, 0x00, 0x0d, 0x00, 0x0e, + 0x00, 0x25, 0x40, 0x09, 0x00, 0x0d, 0x05, 0x06, 0x0d, 0x06, 0x06, 0x05, + 0x0b, 0xb8, 0x01, 0x40, 0xb4, 0x03, 0x00, 0x05, 0x0e, 0x4f, 0x00, 0x3f, + 0xd6, 0x32, 0xde, 0xed, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x26, 0x26, 0x23, 0x20, 0x07, 0x27, 0x3e, 0x03, + 0x33, 0x20, 0x13, 0x05, 0x04, 0x2d, 0x71, 0xff, 0x8b, 0xfe, 0xea, 0xe4, + 0x35, 0x46, 0x8f, 0x8f, 0x8e, 0x47, 0x01, 0x32, 0xfc, 0xfb, 0x96, 0x03, + 0xfc, 0x41, 0x56, 0x9a, 0x7b, 0x4b, 0x68, 0x40, 0x1c, 0xfe, 0xf1, 0x7c, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x88, 0x04, 0x6a, 0x07, 0x13, 0x03, 0x07, + 0x04, 0x26, 0x00, 0x00, 0x01, 0x90, 0x00, 0x12, 0xb1, 0x00, 0x0e, 0xb8, + 0xff, 0xc0, 0xb5, 0x09, 0x09, 0x48, 0x0e, 0x41, 0x0e, 0x00, 0x11, 0x3f, + 0x2b, 0x35, 0x00, 0x01, 0x00, 0x06, 0xfe, 0x3b, 0x04, 0x60, 0xff, 0xad, + 0x00, 0x07, 0x00, 0x29, 0x40, 0x15, 0x06, 0x03, 0x00, 0x00, 0x01, 0x01, + 0x02, 0x07, 0x03, 0x04, 0x99, 0x07, 0x0f, 0x00, 0x1f, 0x00, 0x2f, 0x00, + 0x03, 0x00, 0x08, 0x00, 0x10, 0xde, 0x5d, 0xdd, 0xfd, 0xcd, 0x12, 0x39, + 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x05, 0x17, 0x15, + 0x07, 0x35, 0x21, 0x35, 0x21, 0x03, 0x7d, 0xe3, 0xe3, 0xfc, 0x89, 0x03, + 0x77, 0x53, 0xa2, 0x2f, 0xa1, 0x83, 0x6b, 0x00, 0x00, 0x02, 0x01, 0x35, + 0x04, 0x09, 0x03, 0x0e, 0x06, 0x22, 0x00, 0x1c, 0x00, 0x27, 0x00, 0x62, + 0xb5, 0x30, 0x0d, 0x40, 0x0d, 0x02, 0x1b, 0xb8, 0x01, 0x53, 0xb4, 0x0d, + 0x00, 0x27, 0x27, 0x21, 0xb8, 0x01, 0x55, 0x40, 0x0b, 0x07, 0x14, 0x14, + 0x07, 0x14, 0x11, 0x8d, 0x18, 0x1d, 0x8c, 0x0d, 0xb8, 0xff, 0xc0, 0xb3, + 0x0d, 0x10, 0x48, 0x0d, 0xb8, 0xff, 0xe8, 0xb6, 0x09, 0x0c, 0x48, 0x0d, + 0x0d, 0x15, 0x18, 0xb8, 0x02, 0x83, 0xb4, 0x27, 0x24, 0x8d, 0x01, 0x04, + 0xba, 0x02, 0x86, 0x00, 0x00, 0x02, 0x85, 0x00, 0x3f, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0x39, 0x2f, 0x2b, 0x2b, 0xed, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, 0x33, 0xed, 0x00, 0x71, + 0x30, 0x31, 0x01, 0x27, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x33, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, + 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x27, 0x23, 0x22, 0x06, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x02, 0x91, 0x02, 0x20, 0x52, 0x3a, 0x56, + 0x58, 0x21, 0x42, 0x65, 0x44, 0x3e, 0x2e, 0x36, 0x2e, 0x5f, 0x30, 0x29, + 0x68, 0x36, 0x7b, 0x6e, 0x8f, 0x46, 0x3b, 0x34, 0x26, 0x20, 0x17, 0x36, + 0x22, 0x04, 0x15, 0x36, 0x1d, 0x25, 0x5a, 0x47, 0x25, 0x3e, 0x2d, 0x1a, + 0x19, 0x25, 0x2b, 0x17, 0x15, 0x6e, 0x0f, 0x14, 0x57, 0x59, 0xfe, 0xa3, + 0xdf, 0x2b, 0x1c, 0x1c, 0x1e, 0x23, 0x21, 0x00, 0xff, 0xff, 0x01, 0x35, + 0x04, 0xc3, 0x03, 0x0e, 0x06, 0xdc, 0x02, 0x07, 0x04, 0x29, 0x00, 0x00, + 0x00, 0xba, 0x00, 0x02, 0x01, 0x33, 0x04, 0x09, 0x03, 0x23, 0x06, 0x22, + 0x00, 0x1a, 0x00, 0x23, 0x00, 0x4d, 0xb7, 0x30, 0x23, 0x40, 0x23, 0x02, + 0x0a, 0x0a, 0x03, 0xb8, 0x01, 0x52, 0xb3, 0x1b, 0x1b, 0x23, 0x04, 0xb8, + 0x01, 0x53, 0x40, 0x0e, 0x11, 0x04, 0x8c, 0x23, 0x28, 0x09, 0x0c, 0x48, + 0x23, 0x23, 0x07, 0x20, 0x8d, 0x16, 0xb8, 0x02, 0x83, 0xb7, 0x0a, 0x35, + 0x07, 0x01, 0x07, 0x8d, 0x0b, 0x0e, 0xb8, 0x02, 0x86, 0x00, 0x3f, 0x33, + 0xed, 0x5d, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x2b, 0xed, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x00, 0x71, 0x30, 0x31, 0x01, + 0x14, 0x06, 0x07, 0x21, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, + 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x07, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x03, 0x23, 0x01, 0x04, + 0xfe, 0xa1, 0x01, 0x52, 0x3e, 0x26, 0x5b, 0x35, 0x2c, 0x6b, 0x32, 0x7f, + 0x8b, 0x24, 0x42, 0x5f, 0x3c, 0x39, 0x59, 0x3d, 0x20, 0x8c, 0x12, 0x1c, + 0x26, 0x13, 0x2a, 0x3d, 0x07, 0x05, 0x3d, 0x0d, 0x27, 0x16, 0x3f, 0x40, + 0x0e, 0x0e, 0x6b, 0x0d, 0x0f, 0x84, 0x7f, 0x3f, 0x66, 0x49, 0x28, 0x22, + 0x3c, 0x54, 0x1d, 0x1b, 0x28, 0x1b, 0x0d, 0x38, 0x33, 0x00, 0xff, 0xff, + 0x01, 0x33, 0x04, 0xc3, 0x03, 0x23, 0x06, 0xdc, 0x02, 0x07, 0x04, 0x2b, + 0x00, 0x00, 0x00, 0xba, 0x00, 0x02, 0x01, 0x66, 0x04, 0x15, 0x03, 0x37, + 0x07, 0x06, 0x00, 0x0f, 0x00, 0x19, 0x00, 0x49, 0xb2, 0x15, 0x15, 0x14, + 0xbb, 0x01, 0x55, 0x00, 0x19, 0x00, 0x00, 0x01, 0x67, 0x40, 0x0d, 0x08, + 0x08, 0x19, 0x18, 0x18, 0x19, 0x11, 0x11, 0x19, 0x14, 0x18, 0x8d, 0x17, + 0xb8, 0x02, 0x85, 0x40, 0x0b, 0x0d, 0xb4, 0x00, 0x03, 0x10, 0x03, 0x02, + 0x03, 0x11, 0x8d, 0x12, 0xb8, 0x02, 0x84, 0x00, 0x3f, 0xed, 0xde, 0x5d, + 0xed, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x03, + 0x23, 0x35, 0x21, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x02, 0xaa, 0x34, + 0x27, 0x13, 0x22, 0x19, 0x0e, 0x0e, 0x19, 0x22, 0x13, 0x27, 0x34, 0x9d, + 0x96, 0x01, 0x29, 0x97, 0xfe, 0x2f, 0xa7, 0x06, 0xb2, 0x23, 0x32, 0x0d, + 0x17, 0x1f, 0x12, 0x11, 0x1e, 0x17, 0x0e, 0x32, 0xfe, 0xda, 0x68, 0xfe, + 0x67, 0x68, 0x68, 0x00, 0xff, 0xff, 0x01, 0x66, 0x04, 0xcf, 0x03, 0x37, + 0x07, 0xc0, 0x02, 0x07, 0x04, 0x2d, 0x00, 0x00, 0x00, 0xba, 0x00, 0x02, + 0x01, 0x47, 0x04, 0x09, 0x03, 0x56, 0x06, 0x22, 0x00, 0x0f, 0x00, 0x1e, + 0x00, 0x28, 0xb9, 0x00, 0x00, 0x01, 0x55, 0xb2, 0x10, 0x10, 0x17, 0xb8, + 0x01, 0x55, 0xb3, 0x08, 0x12, 0x8d, 0x0d, 0xb8, 0x02, 0x83, 0xb2, 0x1a, + 0x8d, 0x05, 0xb8, 0x02, 0x86, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x07, 0x34, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x56, 0x24, + 0x45, 0x63, 0x40, 0x7a, 0x89, 0x25, 0x46, 0x63, 0x3f, 0x7d, 0x85, 0x94, + 0x72, 0x1f, 0x2c, 0x1d, 0x0d, 0x3f, 0x36, 0x1e, 0x2b, 0x1c, 0x0d, 0x05, + 0x1a, 0x3c, 0x65, 0x48, 0x28, 0x85, 0x85, 0x3d, 0x65, 0x46, 0x27, 0x85, + 0x86, 0x99, 0x18, 0x2a, 0x38, 0x20, 0x4e, 0x4c, 0x18, 0x29, 0x39, 0x00, + 0xff, 0xff, 0x01, 0x47, 0x04, 0xc3, 0x03, 0x56, 0x06, 0xdc, 0x02, 0x07, + 0x04, 0x2f, 0x00, 0x00, 0x00, 0xba, 0x00, 0x01, 0x01, 0x69, 0x04, 0x09, + 0x03, 0x34, 0x06, 0x17, 0x00, 0x14, 0x00, 0x35, 0xb1, 0x0b, 0x08, 0xb8, + 0x01, 0x53, 0xb2, 0x07, 0x07, 0x00, 0xbb, 0x01, 0x53, 0x00, 0x14, 0x00, + 0x14, 0x02, 0x84, 0xb4, 0x06, 0x03, 0x8d, 0x0b, 0x10, 0xbc, 0x02, 0x86, + 0x00, 0x0a, 0x02, 0x85, 0x00, 0x07, 0x02, 0x84, 0x00, 0x3f, 0x3f, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, + 0x31, 0x01, 0x11, 0x14, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x23, + 0x27, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x35, 0x11, 0x01, 0xf8, 0x3a, 0x1b, + 0x39, 0x20, 0x8e, 0x7e, 0x02, 0x10, 0x21, 0x26, 0x2e, 0x1c, 0x56, 0x54, + 0x06, 0x17, 0xfe, 0xb2, 0x4e, 0x2f, 0x29, 0x01, 0x44, 0xfd, 0xfe, 0x3e, + 0x10, 0x1b, 0x14, 0x0b, 0x64, 0x52, 0x01, 0x58, 0xff, 0xff, 0x01, 0x69, + 0x04, 0xc3, 0x03, 0x34, 0x06, 0xd1, 0x02, 0x07, 0x04, 0x31, 0x00, 0x00, + 0x00, 0xba, 0x00, 0x01, 0x01, 0x53, 0x04, 0x0c, 0x03, 0x12, 0x06, 0x1f, + 0x00, 0x1a, 0x00, 0x2e, 0xb4, 0x0e, 0x0e, 0x1a, 0x1a, 0x14, 0xb8, 0x01, + 0x55, 0xb5, 0x05, 0x0e, 0x11, 0x8d, 0x0d, 0x0a, 0xb8, 0x02, 0x83, 0xb4, + 0x1a, 0x17, 0x8d, 0x00, 0x02, 0xb8, 0x02, 0x86, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, + 0x30, 0x31, 0x01, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x03, 0x12, 0x4e, 0x5c, 0x82, 0x93, 0x29, 0x4b, + 0x6a, 0x41, 0x35, 0x4a, 0x1e, 0x26, 0x4e, 0x21, 0x43, 0x4c, 0x50, 0x41, + 0x22, 0x51, 0x23, 0x04, 0x2b, 0x1f, 0x85, 0x80, 0x3d, 0x64, 0x47, 0x26, + 0x0b, 0x09, 0x83, 0x12, 0x14, 0x54, 0x44, 0x48, 0x4e, 0x14, 0x0e, 0x00, + 0xff, 0xff, 0x01, 0x53, 0x04, 0xc6, 0x03, 0x12, 0x06, 0xd9, 0x02, 0x07, + 0x04, 0x33, 0x00, 0x00, 0x00, 0xba, 0x00, 0x02, 0x01, 0x3d, 0x04, 0x09, + 0x03, 0x29, 0x06, 0xdc, 0x00, 0x14, 0x00, 0x21, 0x00, 0x3d, 0xb9, 0x00, + 0x14, 0x01, 0x53, 0xb3, 0x11, 0x00, 0x1b, 0x15, 0xbb, 0x01, 0x55, 0x00, + 0x09, 0x00, 0x12, 0x02, 0x82, 0xb4, 0x1c, 0x1f, 0x8d, 0x11, 0x0e, 0xb8, + 0x02, 0x83, 0xb4, 0x1b, 0x18, 0x8d, 0x01, 0x04, 0xba, 0x02, 0x86, 0x00, + 0x00, 0x02, 0x85, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x33, 0xed, 0x30, 0x31, 0x01, + 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x17, 0x35, 0x33, 0x11, 0x25, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x37, 0x35, 0x26, 0x26, 0x23, 0x22, 0x06, 0x02, 0xaa, 0x02, 0x1d, 0x52, + 0x31, 0x30, 0x4c, 0x34, 0x1b, 0x2a, 0x4b, 0x67, 0x3d, 0x12, 0x24, 0x0f, + 0x8e, 0xfe, 0xa9, 0x2c, 0x29, 0x1d, 0x37, 0x20, 0x10, 0x29, 0x12, 0x39, + 0x45, 0x04, 0x15, 0x3d, 0x1d, 0x2c, 0x25, 0x44, 0x60, 0x3b, 0x47, 0x68, + 0x43, 0x21, 0x04, 0x03, 0xc3, 0xfd, 0x39, 0xfe, 0x51, 0x47, 0x2e, 0x2a, + 0xda, 0x05, 0x05, 0x58, 0xff, 0xff, 0x01, 0x3d, 0x04, 0xc3, 0x03, 0x29, + 0x07, 0x96, 0x02, 0x07, 0x04, 0x35, 0x00, 0x00, 0x00, 0xba, 0x00, 0x01, + 0x01, 0x4d, 0x04, 0x15, 0x03, 0x18, 0x06, 0xdc, 0x00, 0x13, 0x00, 0x36, + 0xb1, 0x0a, 0x07, 0xbb, 0x01, 0x53, 0x00, 0x08, 0x00, 0x13, 0x01, 0x53, + 0xb7, 0x00, 0x00, 0x08, 0x06, 0x03, 0x8d, 0x0c, 0x0f, 0xbe, 0x02, 0x83, + 0x00, 0x09, 0x02, 0x82, 0x00, 0x08, 0x02, 0x85, 0x00, 0x00, 0x02, 0x85, + 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, + 0xed, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x11, 0x34, 0x23, 0x22, 0x06, + 0x07, 0x11, 0x23, 0x11, 0x33, 0x15, 0x07, 0x36, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x11, 0x02, 0x8a, 0x3a, 0x1d, 0x37, 0x20, 0x8f, 0x8f, 0x06, 0x20, + 0x44, 0x34, 0x55, 0x55, 0x04, 0x15, 0x01, 0x4e, 0x4e, 0x2e, 0x2a, 0xfe, + 0xbc, 0x02, 0xc7, 0xb1, 0x4a, 0x20, 0x21, 0x62, 0x53, 0xfe, 0xa8, 0x00, + 0xff, 0xff, 0x01, 0x4d, 0x04, 0xcf, 0x03, 0x18, 0x07, 0x96, 0x02, 0x07, + 0x04, 0x37, 0x00, 0x00, 0x00, 0xba, 0x00, 0x01, 0x01, 0x1a, 0x04, 0x15, + 0x03, 0x5f, 0x06, 0x21, 0x00, 0x23, 0x00, 0x53, 0xb1, 0x17, 0x13, 0xb8, + 0x01, 0x51, 0xb2, 0x14, 0x1d, 0x09, 0xb8, 0x01, 0x51, 0xb3, 0x0a, 0x0a, + 0x14, 0x23, 0xb8, 0x01, 0x51, 0x40, 0x0c, 0x00, 0x00, 0x14, 0x11, 0x04, + 0x0e, 0x8d, 0x20, 0x1d, 0x17, 0x07, 0x1a, 0x41, 0x09, 0x02, 0x83, 0x00, + 0x15, 0x02, 0x84, 0x00, 0x14, 0x02, 0x85, 0x00, 0x0a, 0x02, 0x85, 0x00, + 0x00, 0x02, 0x85, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x33, + 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x32, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x11, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x37, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x37, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, + 0x17, 0x36, 0x36, 0x33, 0x32, 0x15, 0x11, 0x02, 0xe0, 0x15, 0x0f, 0x0e, + 0x1a, 0x14, 0x01, 0x7e, 0x16, 0x10, 0x0b, 0x27, 0x14, 0x01, 0x7e, 0x6e, + 0x02, 0x15, 0x49, 0x20, 0x2c, 0x2e, 0x08, 0x17, 0x44, 0x20, 0x7a, 0x04, + 0x15, 0x01, 0x5d, 0x24, 0x22, 0x28, 0x31, 0x02, 0xfe, 0xb4, 0x01, 0x5d, + 0x24, 0x22, 0x28, 0x31, 0x02, 0xfe, 0xb4, 0x02, 0x02, 0x33, 0x20, 0x1d, + 0x20, 0x22, 0x23, 0x1f, 0x9d, 0xfe, 0x91, 0x00, 0xff, 0xff, 0x01, 0x1a, + 0x04, 0xcf, 0x03, 0x5f, 0x06, 0xdb, 0x02, 0x07, 0x04, 0x39, 0x00, 0x00, + 0x00, 0xba, 0x00, 0x01, 0x01, 0x4b, 0x04, 0x15, 0x03, 0x1e, 0x06, 0x22, + 0x00, 0x11, 0x00, 0x3a, 0xb1, 0x0b, 0x07, 0xbb, 0x01, 0x55, 0x00, 0x08, + 0x00, 0x11, 0x01, 0x53, 0x40, 0x0f, 0x00, 0x06, 0x1f, 0x00, 0x2f, 0x00, + 0x3f, 0x00, 0x03, 0x00, 0x00, 0x03, 0x8d, 0x0b, 0x0e, 0xbc, 0x02, 0x83, + 0x00, 0x09, 0x02, 0x84, 0x00, 0x08, 0x02, 0x85, 0x00, 0x3f, 0x3f, 0x3f, + 0x33, 0xed, 0x32, 0x2f, 0x5d, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x32, + 0x30, 0x31, 0x01, 0x36, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, + 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x02, 0x8c, 0x02, 0x1f, + 0x1d, 0x1a, 0x37, 0x23, 0x93, 0x83, 0x04, 0x1a, 0x4e, 0x36, 0x55, 0x59, + 0x04, 0x05, 0x49, 0x39, 0x31, 0x29, 0x32, 0xfe, 0xbd, 0x02, 0x02, 0x38, + 0x1f, 0x24, 0x6b, 0x6e, 0xff, 0xff, 0x01, 0x4b, 0x04, 0xcf, 0x03, 0x1e, + 0x06, 0xdc, 0x02, 0x07, 0x04, 0x3b, 0x00, 0x00, 0x00, 0xba, 0x00, 0x01, + 0x01, 0x3c, 0x04, 0x09, 0x03, 0x2a, 0x06, 0xba, 0x00, 0x17, 0x00, 0x3f, + 0xb5, 0x17, 0x17, 0x0f, 0x0f, 0x0d, 0x10, 0xb8, 0x01, 0x55, 0x40, 0x0d, + 0x07, 0x0a, 0x08, 0x08, 0x07, 0x0b, 0x0c, 0x0c, 0x10, 0x07, 0x8d, 0x0d, + 0x0a, 0xb8, 0x02, 0x84, 0xb4, 0x17, 0x14, 0x8d, 0x00, 0x03, 0xb8, 0x02, + 0x86, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x33, 0x2f, + 0x33, 0x01, 0x2f, 0x32, 0x2f, 0x32, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x32, + 0x2f, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x35, 0x23, + 0x35, 0x33, 0x35, 0x37, 0x15, 0x33, 0x15, 0x23, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x03, 0x2a, 0x23, 0x4b, 0x20, 0x6e, 0x64, 0x8e, 0x8e, + 0x93, 0xcd, 0xcd, 0x26, 0x2c, 0x1d, 0x41, 0x1d, 0x04, 0x1b, 0x09, 0x09, + 0x58, 0x5c, 0xf2, 0x68, 0x81, 0x22, 0xa3, 0x68, 0xe9, 0x28, 0x2a, 0x0c, + 0x08, 0x00, 0xff, 0xff, 0x01, 0x3c, 0x04, 0xc3, 0x03, 0x2a, 0x07, 0x74, + 0x02, 0x07, 0x04, 0x3d, 0x00, 0x00, 0x00, 0xba, 0x00, 0x01, 0x01, 0x0e, + 0x04, 0x15, 0x03, 0x57, 0x06, 0x17, 0x00, 0x06, 0x00, 0x34, 0xb5, 0x01, + 0x00, 0x04, 0x04, 0x02, 0x06, 0xb8, 0x01, 0x56, 0xb2, 0x05, 0x05, 0x03, + 0x41, 0x09, 0x01, 0x56, 0x00, 0x02, 0x00, 0x05, 0x02, 0x84, 0x00, 0x02, + 0x02, 0x84, 0x00, 0x04, 0x00, 0x01, 0x02, 0x85, 0x00, 0x3f, 0x33, 0x3f, + 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x11, 0x33, 0x33, + 0x30, 0x31, 0x01, 0x23, 0x03, 0x33, 0x13, 0x13, 0x33, 0x02, 0x82, 0x9e, + 0xd6, 0x9d, 0x89, 0x89, 0x9a, 0x04, 0x15, 0x02, 0x02, 0xfe, 0x94, 0x01, + 0x6c, 0x00, 0xff, 0xff, 0x01, 0x0e, 0x04, 0xcf, 0x03, 0x57, 0x06, 0xd1, + 0x02, 0x07, 0x04, 0x3f, 0x00, 0x00, 0x00, 0xba, 0x00, 0x01, 0x01, 0x12, + 0x04, 0x15, 0x03, 0x54, 0x06, 0x17, 0x00, 0x0f, 0x00, 0x59, 0xb9, 0x00, + 0x08, 0x01, 0x66, 0x40, 0x0a, 0x07, 0x07, 0x03, 0x0c, 0x09, 0x04, 0x01, + 0x01, 0x0f, 0x02, 0xbb, 0x01, 0x65, 0x00, 0x03, 0x00, 0x0a, 0x01, 0x56, + 0xb2, 0x0b, 0x0b, 0x0f, 0xbb, 0x01, 0x67, 0x00, 0x00, 0x00, 0x0a, 0x02, + 0x84, 0xb6, 0x0c, 0x09, 0x01, 0x04, 0x04, 0x03, 0x07, 0xbc, 0x02, 0x84, + 0x00, 0x03, 0x02, 0x85, 0x00, 0x00, 0x02, 0x85, 0x00, 0x3f, 0x3f, 0x3f, + 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x32, 0x2f, + 0xed, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x01, 0x27, 0x07, 0x23, 0x13, 0x26, 0x26, 0x27, 0x33, + 0x17, 0x37, 0x33, 0x07, 0x16, 0x16, 0x17, 0x02, 0xa5, 0x74, 0x75, 0xaa, + 0xca, 0x2e, 0x63, 0x2f, 0xac, 0x70, 0x71, 0xa1, 0xba, 0x30, 0x64, 0x30, + 0x04, 0x15, 0xa2, 0xa2, 0x01, 0x03, 0x3f, 0x82, 0x3e, 0x9e, 0x9e, 0xfe, + 0x40, 0x85, 0x3f, 0x00, 0xff, 0xff, 0x01, 0x12, 0x04, 0xcf, 0x03, 0x54, + 0x06, 0xd1, 0x02, 0x07, 0x04, 0x41, 0x00, 0x00, 0x00, 0xba, 0x00, 0x03, + 0x00, 0x9d, 0x04, 0x29, 0x03, 0xc9, 0x06, 0x94, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x2b, 0x00, 0x45, 0xb7, 0x28, 0x2b, 0x2b, 0x0a, 0x2a, 0x29, 0x29, + 0x14, 0xb8, 0x02, 0x27, 0xb2, 0x1e, 0x1e, 0x00, 0xb8, 0x02, 0x27, 0xb4, + 0x0a, 0x2b, 0x28, 0x28, 0x19, 0xb8, 0x01, 0x43, 0xb7, 0x0f, 0x23, 0x01, + 0x23, 0x29, 0x2a, 0x2a, 0x0f, 0xb9, 0x01, 0x43, 0x00, 0x05, 0x00, 0x2f, + 0xed, 0x33, 0x2f, 0x33, 0x2f, 0x5d, 0xed, 0x33, 0x2f, 0x33, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x25, 0x01, 0x07, + 0x01, 0x01, 0xaf, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x02, 0x1a, 0x15, 0x26, 0x32, + 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, + 0x15, 0xfd, 0xb4, 0x01, 0xce, 0x79, 0xfe, 0x32, 0x04, 0xb2, 0x1c, 0x32, + 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, + 0x33, 0x01, 0x3c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x63, 0xfe, 0x3a, 0x78, 0x01, 0xc6, + 0xff, 0xff, 0x00, 0x9d, 0x05, 0x33, 0x03, 0xc9, 0x07, 0x9e, 0x02, 0x07, + 0x04, 0x43, 0x00, 0x00, 0x01, 0x0a, 0x00, 0x03, 0x00, 0x9d, 0x04, 0x29, + 0x03, 0xc9, 0x06, 0x94, 0x00, 0x13, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x43, + 0xb7, 0x29, 0x2a, 0x2a, 0x14, 0x2b, 0x28, 0x28, 0x00, 0xb8, 0x02, 0x27, + 0xb2, 0x0a, 0x0a, 0x1e, 0xb8, 0x02, 0x27, 0xb4, 0x14, 0x28, 0x2b, 0x2b, + 0x23, 0xb8, 0x01, 0x43, 0xb6, 0x0f, 0x19, 0x01, 0x19, 0x2a, 0x29, 0x05, + 0xb9, 0x01, 0x43, 0x00, 0x0f, 0x00, 0x2f, 0xed, 0xc4, 0x32, 0x2f, 0x5d, + 0xed, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, + 0x33, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x01, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x25, 0x01, 0x27, 0x01, 0x02, 0xb7, 0x16, 0x24, 0x33, + 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, + 0x16, 0xfd, 0xe6, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, + 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x02, 0xc5, 0xfe, 0x32, 0x79, + 0x01, 0xce, 0x04, 0xb2, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, + 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x01, 0x74, 0x1c, 0x33, 0x25, + 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, + 0x23, 0xfe, 0x3a, 0x78, 0x01, 0xc6, 0xff, 0xff, 0x00, 0x9d, 0x05, 0x33, + 0x03, 0xc9, 0x07, 0x9e, 0x02, 0x07, 0x04, 0x45, 0x00, 0x00, 0x01, 0x0a, + 0x00, 0x01, 0x01, 0xd0, 0xfe, 0x2f, 0x02, 0x96, 0xff, 0xd3, 0x00, 0x32, + 0x00, 0x30, 0x40, 0x15, 0x15, 0x1e, 0x10, 0x23, 0x23, 0x0b, 0x28, 0x1e, + 0x28, 0x00, 0x06, 0x18, 0x18, 0x06, 0x06, 0x2d, 0x2d, 0x00, 0x19, 0x03, + 0x34, 0x00, 0x10, 0xde, 0xc4, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x33, + 0x2f, 0x11, 0x12, 0x39, 0x39, 0x11, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x31, 0x30, 0x05, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, + 0x15, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x35, 0x34, 0x23, 0x22, 0x06, 0x07, 0x01, 0xd0, + 0x0b, 0x35, 0x21, 0x32, 0x33, 0x17, 0x1b, 0x17, 0x0f, 0x13, 0x0f, 0x10, + 0x12, 0x10, 0x27, 0x23, 0x21, 0x3d, 0x30, 0x1d, 0x0f, 0x13, 0x0f, 0x0e, + 0x11, 0x0e, 0x17, 0x1d, 0x17, 0x1a, 0x0e, 0x2e, 0x11, 0x49, 0x08, 0x14, + 0x29, 0x24, 0x17, 0x1d, 0x16, 0x13, 0x0e, 0x09, 0x0d, 0x0e, 0x13, 0x0f, + 0x0f, 0x14, 0x0f, 0x0e, 0x09, 0x0d, 0x24, 0x0b, 0x21, 0x0b, 0x16, 0x1f, + 0x14, 0x0f, 0x13, 0x0f, 0x0f, 0x0a, 0x09, 0x0d, 0x0f, 0x14, 0x11, 0x15, + 0x18, 0x12, 0x11, 0x0d, 0x14, 0x12, 0x13, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xdd, 0x05, 0xf8, 0x00, 0x15, 0x00, 0x16, 0x00, 0x2a, + 0xb9, 0x00, 0x00, 0x01, 0x70, 0xb2, 0x15, 0x15, 0x0b, 0xb8, 0x01, 0x74, + 0x40, 0x0d, 0x0a, 0x3f, 0x15, 0x4f, 0x15, 0x02, 0x15, 0x10, 0xc9, 0x0b, + 0x05, 0x16, 0x4f, 0x00, 0x3f, 0xde, 0xc4, 0xed, 0xc4, 0x5d, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x0e, 0x03, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x01, + 0x03, 0xdd, 0x06, 0x35, 0x63, 0x94, 0x65, 0x4c, 0x73, 0x4d, 0x27, 0xb5, + 0x10, 0x20, 0x30, 0x21, 0x3b, 0x51, 0x35, 0x1d, 0x07, 0xfc, 0xd2, 0x05, + 0xf8, 0x45, 0x8c, 0x70, 0x46, 0x2c, 0x4c, 0x64, 0x38, 0x16, 0x27, 0x1e, + 0x11, 0x2d, 0x43, 0x4e, 0x21, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x00, 0x6e, + 0x04, 0xb4, 0x03, 0xf8, 0x05, 0xba, 0x00, 0x05, 0x00, 0x27, 0x40, 0x17, + 0x05, 0x02, 0x05, 0x40, 0x0f, 0x13, 0x48, 0x05, 0x80, 0x6f, 0x02, 0x7f, + 0x02, 0x02, 0x02, 0xcc, 0x40, 0x01, 0x01, 0x2f, 0x01, 0x01, 0x01, 0x00, + 0x2f, 0x5d, 0x5d, 0xed, 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0xc4, 0x31, + 0x30, 0x01, 0x21, 0x35, 0x21, 0x37, 0x21, 0x02, 0x9c, 0xfd, 0xd2, 0x01, + 0xe8, 0x58, 0x01, 0x4a, 0x04, 0xb4, 0xae, 0x58, 0x00, 0x01, 0x00, 0x6e, + 0x05, 0xb5, 0x03, 0xf8, 0x06, 0xbb, 0x00, 0x05, 0x00, 0x23, 0x40, 0x14, + 0x05, 0x02, 0x05, 0x40, 0x0f, 0x13, 0x48, 0x05, 0x80, 0x6f, 0x02, 0x7f, + 0x02, 0x02, 0x02, 0xcc, 0x0f, 0x01, 0x01, 0x01, 0x00, 0x2f, 0x5d, 0xed, + 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0xc4, 0x31, 0x30, 0x01, 0x21, 0x35, + 0x21, 0x37, 0x21, 0x02, 0x9c, 0xfd, 0xd2, 0x01, 0xe8, 0x58, 0x01, 0x4a, + 0x05, 0xb5, 0xae, 0x58, 0x00, 0x01, 0x00, 0x6e, 0x04, 0xb4, 0x03, 0xf8, + 0x05, 0xba, 0x00, 0x05, 0x00, 0x27, 0x40, 0x17, 0x02, 0x05, 0x05, 0x40, + 0x0f, 0x13, 0x48, 0x05, 0x80, 0x6f, 0x01, 0x7f, 0x01, 0x02, 0x01, 0xcc, + 0x40, 0x04, 0x01, 0x2f, 0x04, 0x01, 0x04, 0x00, 0x2f, 0x5d, 0x5d, 0xed, + 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0xc4, 0x31, 0x30, 0x01, 0x17, 0x21, + 0x15, 0x21, 0x01, 0x01, 0xb8, 0x58, 0x01, 0xe8, 0xfd, 0xd2, 0xfe, 0xa4, + 0x05, 0xba, 0x58, 0xae, 0x01, 0x06, 0x00, 0x01, 0x00, 0x6e, 0x05, 0xb5, + 0x03, 0xf8, 0x06, 0xbb, 0x00, 0x05, 0x00, 0x23, 0x40, 0x14, 0x02, 0x05, + 0x05, 0x40, 0x0f, 0x13, 0x48, 0x05, 0x80, 0x6f, 0x01, 0x7f, 0x01, 0x02, + 0x01, 0xcc, 0x0f, 0x04, 0x01, 0x04, 0x00, 0x2f, 0x5d, 0xed, 0x5d, 0x1a, + 0xcd, 0x2b, 0x01, 0x2f, 0xc4, 0x31, 0x30, 0x01, 0x17, 0x21, 0x15, 0x21, + 0x01, 0x01, 0xb8, 0x58, 0x01, 0xe8, 0xfd, 0xd2, 0xfe, 0xa4, 0x06, 0xbb, + 0x58, 0xae, 0x01, 0x06, 0x00, 0x01, 0x00, 0x99, 0x05, 0x12, 0x03, 0xcd, + 0x06, 0x18, 0x00, 0x05, 0x00, 0x30, 0x40, 0x17, 0x01, 0x05, 0x60, 0x03, + 0x70, 0x03, 0x02, 0x03, 0xcc, 0x40, 0x00, 0x40, 0x0f, 0x13, 0x48, 0x00, + 0x80, 0x00, 0x01, 0xa0, 0x01, 0x02, 0x01, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x11, 0x48, 0x01, 0x00, 0x2f, 0x2b, 0x5d, 0x1a, 0xdd, 0x2b, 0x1a, 0xed, + 0x5d, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x01, 0x01, 0x23, 0x27, 0x21, 0x35, + 0x02, 0xc7, 0x01, 0x06, 0xf4, 0x75, 0xfe, 0x35, 0x06, 0x18, 0xfe, 0xfa, + 0x58, 0xae, 0x00, 0x01, 0x00, 0x99, 0x06, 0x13, 0x03, 0xcd, 0x07, 0x19, + 0x00, 0x05, 0x00, 0x2f, 0x40, 0x1f, 0x01, 0x05, 0x60, 0x03, 0x70, 0x03, + 0x02, 0x03, 0xcc, 0x40, 0x00, 0x40, 0x0f, 0x13, 0x48, 0x00, 0x80, 0x10, + 0x01, 0x40, 0x01, 0x50, 0x01, 0x70, 0x01, 0x80, 0x01, 0x90, 0x01, 0x06, + 0x01, 0x00, 0x2f, 0x5d, 0x1a, 0xdd, 0x2b, 0x1a, 0xed, 0x5d, 0x01, 0x2f, + 0xcd, 0x31, 0x30, 0x01, 0x01, 0x23, 0x27, 0x21, 0x35, 0x02, 0xc7, 0x01, + 0x06, 0xf4, 0x75, 0xfe, 0x35, 0x07, 0x19, 0xfe, 0xfa, 0x58, 0xae, 0x00, + 0x00, 0x01, 0x00, 0x99, 0x05, 0x12, 0x03, 0xcd, 0x06, 0x18, 0x00, 0x05, + 0x00, 0x30, 0x40, 0x17, 0x03, 0x01, 0x60, 0x05, 0x70, 0x05, 0x02, 0x05, + 0xcc, 0x40, 0x02, 0x40, 0x0f, 0x13, 0x48, 0x02, 0x80, 0x00, 0x01, 0xa0, + 0x01, 0x02, 0x01, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x11, 0x48, 0x01, 0x00, + 0x2f, 0x2b, 0x5d, 0x1a, 0xdd, 0x2b, 0x1a, 0xed, 0x5d, 0x01, 0x2f, 0xcd, + 0x31, 0x30, 0x01, 0x23, 0x01, 0x21, 0x15, 0x21, 0x01, 0x8d, 0xf4, 0x01, + 0x06, 0x02, 0x2e, 0xfe, 0x35, 0x05, 0x12, 0x01, 0x06, 0xae, 0x00, 0x01, + 0x00, 0x99, 0x06, 0x13, 0x03, 0xcd, 0x07, 0x19, 0x00, 0x05, 0x00, 0x2f, + 0x40, 0x1f, 0x03, 0x01, 0x60, 0x05, 0x70, 0x05, 0x02, 0x05, 0xcc, 0x40, + 0x02, 0x40, 0x0f, 0x13, 0x48, 0x02, 0x80, 0x10, 0x01, 0x40, 0x01, 0x50, + 0x01, 0x70, 0x01, 0x80, 0x01, 0x90, 0x01, 0x06, 0x01, 0x00, 0x2f, 0x5d, + 0x1a, 0xdd, 0x2b, 0x1a, 0xed, 0x5d, 0x01, 0x2f, 0xcd, 0x31, 0x30, 0x01, + 0x23, 0x01, 0x21, 0x15, 0x21, 0x01, 0x8d, 0xf4, 0x01, 0x06, 0x02, 0x2e, + 0xfe, 0x35, 0x06, 0x13, 0x01, 0x06, 0xae, 0x00, 0x00, 0x01, 0xff, 0xda, + 0x04, 0xc8, 0x04, 0x8c, 0x05, 0xce, 0x00, 0x09, 0x00, 0x1c, 0x40, 0x0f, + 0x04, 0x09, 0x09, 0x40, 0x0f, 0x13, 0x48, 0x09, 0x80, 0x40, 0x08, 0x70, + 0x08, 0x02, 0x08, 0x00, 0x2f, 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0xc4, + 0x31, 0x30, 0x01, 0x17, 0x37, 0x21, 0x01, 0x23, 0x27, 0x07, 0x23, 0x01, + 0x01, 0x24, 0x8c, 0x8c, 0x01, 0x4a, 0x01, 0x06, 0xf4, 0xb7, 0xb7, 0xf4, + 0xfe, 0xa4, 0x05, 0xce, 0x8c, 0x8c, 0xfe, 0xfa, 0x8a, 0x8a, 0x01, 0x06, + 0x00, 0x01, 0xff, 0xdb, 0x05, 0xc9, 0x04, 0x8c, 0x06, 0xcf, 0x00, 0x09, + 0x00, 0x1a, 0x40, 0x0d, 0x04, 0x09, 0x09, 0x40, 0x0f, 0x13, 0x48, 0x09, + 0x80, 0x70, 0x08, 0x01, 0x08, 0x00, 0x2f, 0x5d, 0x1a, 0xcd, 0x2b, 0x01, + 0x2f, 0xc4, 0x31, 0x30, 0x01, 0x17, 0x37, 0x21, 0x01, 0x23, 0x27, 0x07, + 0x23, 0x01, 0x01, 0x25, 0x8b, 0x8c, 0x01, 0x4a, 0x01, 0x06, 0xf4, 0xb7, + 0xb7, 0xf4, 0xfe, 0xa5, 0x06, 0xcf, 0x8c, 0x8c, 0xfe, 0xfa, 0x8a, 0x8a, + 0x01, 0x06, 0x00, 0x01, 0xff, 0xda, 0x04, 0xc8, 0x04, 0x8c, 0x05, 0xce, + 0x00, 0x09, 0x00, 0x1c, 0x40, 0x0f, 0x03, 0x08, 0x09, 0x40, 0x0f, 0x13, + 0x48, 0x09, 0x80, 0x40, 0x08, 0x70, 0x08, 0x02, 0x08, 0x00, 0x2f, 0x5d, + 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0xc4, 0x31, 0x30, 0x01, 0x17, 0x37, 0x21, + 0x01, 0x23, 0x27, 0x07, 0x23, 0x01, 0x02, 0x2a, 0x8c, 0x8c, 0x01, 0x4a, + 0xfe, 0xa4, 0xf4, 0xb7, 0xb7, 0xf4, 0x01, 0x06, 0x05, 0xce, 0x8c, 0x8c, + 0xfe, 0xfa, 0x8a, 0x8a, 0x01, 0x06, 0x00, 0x01, 0xff, 0xda, 0x05, 0xc9, + 0x04, 0x8c, 0x06, 0xcf, 0x00, 0x09, 0x00, 0x1a, 0x40, 0x0d, 0x03, 0x08, + 0x09, 0x40, 0x0f, 0x13, 0x48, 0x09, 0x80, 0x70, 0x08, 0x01, 0x08, 0x00, + 0x2f, 0x5d, 0x1a, 0xcd, 0x2b, 0x01, 0x2f, 0xc4, 0x31, 0x30, 0x01, 0x17, + 0x37, 0x21, 0x01, 0x23, 0x27, 0x07, 0x23, 0x01, 0x02, 0x2a, 0x8c, 0x8c, + 0x01, 0x4a, 0xfe, 0xa4, 0xf4, 0xb7, 0xb7, 0xf4, 0x01, 0x06, 0x06, 0xcf, + 0x8c, 0x8c, 0xfe, 0xfa, 0x8a, 0x8a, 0x01, 0x06, 0xff, 0xff, 0x01, 0x4b, + 0xfe, 0x14, 0x03, 0x1e, 0x00, 0x21, 0x03, 0x07, 0x04, 0x3b, 0x00, 0x00, + 0xf9, 0xff, 0x00, 0x09, 0xb3, 0x00, 0x08, 0x6f, 0x08, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xbf, 0x05, 0xe0, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x2f, 0x40, 0x17, 0x04, 0x06, 0x06, 0x05, + 0x01, 0x04, 0x03, 0x03, 0x02, 0x01, 0x1b, 0x05, 0x2b, 0x05, 0x3b, 0x05, + 0x03, 0x05, 0x05, 0x06, 0x00, 0x07, 0x4f, 0x00, 0x3f, 0xde, 0xcd, 0x33, + 0x3d, 0x2f, 0x5d, 0x33, 0x33, 0x33, 0x18, 0x2f, 0xcd, 0x01, 0x2f, 0x33, + 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x25, 0x35, 0x25, 0x15, 0x07, 0x17, + 0x05, 0x02, 0xbf, 0xfe, 0xe8, 0x01, 0x18, 0xaa, 0xaa, 0xfd, 0x41, 0x04, + 0x43, 0xb4, 0x34, 0xb5, 0x6b, 0x64, 0x64, 0xb5, 0xff, 0xff, 0x00, 0x00, + 0x05, 0x5b, 0x02, 0xbf, 0x07, 0x43, 0x03, 0x07, 0x04, 0x56, 0x00, 0x00, + 0x01, 0x63, 0x00, 0x09, 0xb3, 0x00, 0x07, 0x41, 0x07, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0x00, 0x02, 0x00, 0xe2, 0xfe, 0x40, 0x03, 0x83, 0xff, 0xdd, + 0x00, 0x06, 0x00, 0x0d, 0x00, 0x4c, 0x40, 0x23, 0x0b, 0x0a, 0x07, 0x07, + 0x09, 0x0c, 0x09, 0x08, 0x08, 0x0d, 0x0c, 0x0c, 0x01, 0x05, 0x05, 0x00, + 0x02, 0x07, 0x0b, 0x0b, 0x0c, 0x08, 0x08, 0x0c, 0x0c, 0x05, 0x04, 0x01, + 0x01, 0x00, 0x06, 0x06, 0x02, 0x03, 0x0e, 0x00, 0x10, 0xce, 0x32, 0x32, + 0x2f, 0x33, 0x39, 0x11, 0x33, 0x33, 0x32, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x33, + 0x11, 0x33, 0x11, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x13, 0x37, + 0x27, 0x35, 0x05, 0x15, 0x05, 0x25, 0x37, 0x33, 0x03, 0x23, 0x03, 0x33, + 0xe2, 0xaa, 0xaa, 0x01, 0x18, 0xfe, 0xe8, 0x01, 0xd3, 0x64, 0x6a, 0xb4, + 0x34, 0xb5, 0x6b, 0xfe, 0xaa, 0x64, 0x64, 0x6b, 0xb5, 0x34, 0xb4, 0xb0, + 0xaa, 0xfe, 0xe8, 0x01, 0x18, 0x00, 0x00, 0x03, 0xff, 0xda, 0x00, 0x00, + 0x04, 0x19, 0x05, 0x1b, 0x00, 0x24, 0x00, 0x2f, 0x00, 0x3a, 0x00, 0x4f, + 0xb9, 0x00, 0x06, 0x01, 0x84, 0xb2, 0x0f, 0x35, 0x2f, 0xbb, 0x01, 0xd2, + 0x00, 0x00, 0x00, 0x18, 0x01, 0xff, 0xb2, 0x30, 0x30, 0x22, 0xb8, 0x02, + 0x06, 0x40, 0x16, 0x2a, 0x00, 0x1d, 0x36, 0x2d, 0x2e, 0xd5, 0x35, 0x36, + 0x36, 0x2f, 0x14, 0x34, 0x01, 0xd4, 0x0c, 0x14, 0x41, 0x2f, 0xde, 0x00, + 0x43, 0x00, 0x3f, 0xed, 0x3f, 0xcd, 0xfd, 0xc5, 0x11, 0x12, 0x39, 0x2f, + 0xc4, 0xfd, 0xc4, 0x12, 0x39, 0x01, 0x2f, 0xd4, 0xed, 0x33, 0x2f, 0xed, + 0x10, 0xed, 0x32, 0x2f, 0xed, 0x31, 0x30, 0x21, 0x11, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x17, 0x23, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, + 0x10, 0x21, 0x37, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x23, 0x11, + 0x13, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x21, + 0x22, 0x32, 0x21, 0x10, 0x05, 0x08, 0x07, 0x02, 0xc5, 0x06, 0x0d, 0x32, + 0x5d, 0x86, 0x54, 0xe7, 0xd5, 0xe6, 0x17, 0x30, 0x48, 0x31, 0x31, 0x59, + 0x43, 0x27, 0xfe, 0x06, 0x10, 0x3a, 0x55, 0x38, 0x1a, 0x71, 0x78, 0x13, + 0xd1, 0x57, 0x66, 0x14, 0x0f, 0x37, 0x4a, 0x2d, 0x14, 0x04, 0x60, 0x17, + 0x27, 0x34, 0x1c, 0x16, 0x29, 0x22, 0x18, 0x06, 0x14, 0x4d, 0x26, 0x51, + 0x79, 0x50, 0x27, 0x9c, 0x9e, 0x32, 0x5c, 0x4e, 0x3c, 0x11, 0x08, 0x2f, + 0x4b, 0x66, 0x3f, 0xfe, 0x6f, 0xc9, 0x1e, 0x35, 0x48, 0x29, 0x55, 0x60, + 0xfe, 0x87, 0x02, 0xed, 0x4a, 0x58, 0xfe, 0xa6, 0x1d, 0x33, 0x42, 0x00, + 0xff, 0xff, 0x00, 0x81, 0x00, 0x00, 0x04, 0x19, 0x05, 0x1b, 0x02, 0x06, + 0x01, 0xe1, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, + 0x05, 0x1b, 0x00, 0x0c, 0x00, 0x23, 0x00, 0x30, 0xb1, 0x19, 0x0c, 0xbb, + 0x01, 0xf3, 0x00, 0x23, 0x00, 0x1f, 0x02, 0x06, 0x40, 0x0f, 0x05, 0x05, + 0x10, 0x23, 0x0b, 0xd8, 0x19, 0x19, 0x15, 0x0c, 0xdc, 0x23, 0x43, 0x15, + 0x41, 0x00, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xc4, + 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, 0x25, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x03, 0x26, 0x26, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x04, 0x21, 0x21, 0x02, 0x21, 0x3a, 0x5a, 0x3c, 0x1f, 0x1d, 0x3f, + 0x61, 0x45, 0x99, 0xf4, 0x3c, 0x45, 0x28, 0x52, 0x7c, 0x55, 0x17, 0x13, + 0xb0, 0x7f, 0xbd, 0x7b, 0x3d, 0xfe, 0xf8, 0xfe, 0xff, 0xfe, 0x71, 0xc5, + 0x21, 0x38, 0x4a, 0x29, 0x2a, 0x46, 0x32, 0x1b, 0xfe, 0x77, 0x02, 0xfd, + 0x1b, 0x44, 0x2f, 0x1d, 0x47, 0x3d, 0x2a, 0x13, 0x13, 0xfe, 0x19, 0x3a, + 0x65, 0x8a, 0x4f, 0xca, 0xcc, 0x00, 0x00, 0x01, 0x00, 0x7a, 0xff, 0xee, + 0x04, 0x14, 0x05, 0x2d, 0x00, 0x25, 0x00, 0x2d, 0xb9, 0x00, 0x08, 0x02, + 0x1d, 0xb5, 0x1b, 0x1b, 0x12, 0x00, 0x13, 0x16, 0xb8, 0x01, 0x12, 0xb4, + 0x12, 0x0d, 0x44, 0x25, 0x20, 0xb8, 0x01, 0x16, 0xb2, 0x00, 0x03, 0x42, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0x33, 0x2f, 0xed, 0x31, 0x30, 0x13, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x02, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x07, 0x7a, 0x57, 0xa3, 0x58, 0x8d, 0xd9, 0x95, 0x4d, 0x54, 0x9c, + 0xdf, 0x8b, 0x2d, 0x4f, 0x4c, 0x4e, 0x2a, 0x55, 0x9a, 0x3f, 0x5d, 0x84, + 0x55, 0x28, 0x29, 0x56, 0x86, 0x5c, 0x21, 0x4d, 0x4f, 0x4d, 0x21, 0x04, + 0xe8, 0x23, 0x22, 0x53, 0xa4, 0xf3, 0xa1, 0xa5, 0xfe, 0xff, 0xb1, 0x5d, + 0x04, 0x0b, 0x12, 0x0e, 0xf4, 0x28, 0x22, 0x43, 0x79, 0xa7, 0x64, 0x6a, + 0xa7, 0x74, 0x3d, 0x0d, 0x15, 0x1d, 0x0f, 0x00, 0x00, 0x01, 0x00, 0x52, + 0xff, 0xee, 0x04, 0xb1, 0x06, 0x33, 0x00, 0x36, 0x00, 0x3e, 0xb9, 0x00, + 0x10, 0x01, 0x88, 0xb6, 0x24, 0x24, 0x00, 0x00, 0x08, 0x18, 0x2c, 0xb8, + 0x02, 0x1d, 0x40, 0x09, 0x08, 0x1e, 0xd1, 0x6f, 0x15, 0x01, 0x15, 0x4b, + 0x27, 0xb8, 0x01, 0x12, 0xb3, 0x10, 0x0d, 0x42, 0x31, 0xb8, 0x01, 0x16, + 0xb1, 0x03, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x3f, 0x5d, 0xed, + 0x01, 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0xed, 0x31, 0x30, + 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, + 0x33, 0x32, 0x16, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, + 0x03, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x03, 0xec, + 0x58, 0xa2, 0x58, 0x8d, 0xd9, 0x95, 0x4d, 0x54, 0x9c, 0xdf, 0x8b, 0x1f, + 0x39, 0x1b, 0x06, 0x26, 0x42, 0x61, 0x41, 0x29, 0x3e, 0x1b, 0x09, 0x12, + 0x16, 0x1e, 0x16, 0x19, 0x23, 0x18, 0x0b, 0x01, 0x55, 0x9a, 0x3f, 0x5d, + 0x84, 0x55, 0x28, 0x29, 0x56, 0x86, 0x5c, 0x21, 0x4d, 0x4f, 0x4d, 0x21, + 0x33, 0x23, 0x22, 0x53, 0xa4, 0xf3, 0xa1, 0xa5, 0x01, 0x01, 0xb1, 0x5d, + 0x02, 0x02, 0x49, 0x65, 0x3f, 0x1d, 0x08, 0x05, 0xb6, 0x03, 0x06, 0x05, + 0x03, 0x0d, 0x20, 0x35, 0x28, 0xed, 0x28, 0x22, 0x43, 0x79, 0xa7, 0x64, + 0x6a, 0xa7, 0x74, 0x3d, 0x0d, 0x16, 0x1c, 0x0f, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x31, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x02, 0xff, 0xda, 0x00, 0x00, 0x04, 0x31, 0x05, 0x1b, 0x00, 0x1f, + 0x00, 0x28, 0x00, 0x30, 0xbc, 0x00, 0x0c, 0x01, 0x84, 0x00, 0x15, 0x00, + 0x00, 0x02, 0x05, 0xb2, 0x20, 0x20, 0x26, 0xb8, 0x01, 0xf4, 0x40, 0x0b, + 0x06, 0x25, 0x07, 0xd4, 0x12, 0x1a, 0x41, 0x26, 0xe3, 0x06, 0x43, 0x00, + 0x3f, 0xed, 0x3f, 0xcd, 0xfd, 0xc5, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x2f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x0e, + 0x03, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x23, 0x26, 0x26, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x11, + 0x32, 0x36, 0x04, 0x31, 0x44, 0x8c, 0xd6, 0x93, 0xd7, 0x23, 0x33, 0x20, + 0x0f, 0x05, 0x08, 0x07, 0x02, 0xc5, 0x06, 0x0d, 0x3a, 0x64, 0x87, 0x4e, + 0x9b, 0x96, 0xdc, 0x91, 0x46, 0xfe, 0xf8, 0x2b, 0x4b, 0x64, 0x39, 0x8d, + 0x86, 0x02, 0x9e, 0xa2, 0xfa, 0xaa, 0x58, 0x04, 0x60, 0x01, 0x17, 0x27, + 0x33, 0x1c, 0x16, 0x29, 0x22, 0x18, 0x06, 0x14, 0x4d, 0x26, 0x57, 0x7b, + 0x4c, 0x23, 0x4b, 0x9c, 0xf0, 0xb6, 0x84, 0xad, 0x66, 0x28, 0xfc, 0x81, + 0xd8, 0x00, 0x00, 0x02, 0x00, 0x4d, 0x00, 0x00, 0x03, 0xe5, 0x05, 0x1b, + 0x00, 0x0e, 0x00, 0x1b, 0x00, 0x35, 0xb9, 0x00, 0x05, 0x01, 0xf3, 0xb3, + 0x00, 0x0f, 0x0f, 0x16, 0xb8, 0x02, 0x06, 0x40, 0x11, 0x09, 0x02, 0x02, + 0x09, 0x11, 0xd8, 0x0e, 0x0e, 0x03, 0x1b, 0xdc, 0x06, 0x43, 0x02, 0xda, + 0x03, 0x41, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x31, 0x30, 0x01, + 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, 0x22, 0x24, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x13, 0x11, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x02, 0xf1, 0xfd, 0xb7, 0x03, 0x3d, 0xfe, 0x71, 0xff, 0xfe, 0xf6, 0x3d, + 0x7b, 0xbd, 0x7f, 0xb0, 0x99, 0x45, 0x61, 0x3f, 0x1d, 0x1f, 0x3c, 0x59, + 0x3b, 0x03, 0x0e, 0x01, 0x4a, 0xc3, 0xfa, 0xe5, 0xcd, 0xc9, 0x4f, 0x8a, + 0x65, 0x3a, 0xfd, 0xb7, 0x01, 0x89, 0x1b, 0x32, 0x46, 0x2a, 0x29, 0x4a, + 0x38, 0x21, 0x00, 0x01, 0x00, 0x9b, 0x00, 0x00, 0x03, 0xae, 0x05, 0x1b, + 0x00, 0x0b, 0x00, 0x3b, 0xb9, 0x00, 0x0b, 0x01, 0xf9, 0x40, 0x10, 0x06, + 0x02, 0x02, 0x01, 0x08, 0x08, 0x01, 0x04, 0x04, 0x01, 0x04, 0xe0, 0x05, + 0x05, 0x01, 0x08, 0xb8, 0x01, 0x0b, 0xb2, 0x09, 0x41, 0x01, 0xb8, 0x01, + 0x0b, 0xb1, 0x00, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, + 0xed, 0x31, 0x30, 0x33, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x11, 0x21, + 0x35, 0x21, 0x11, 0x9b, 0x02, 0x19, 0xfe, 0x00, 0x02, 0x00, 0xfd, 0xe7, + 0x03, 0x13, 0xd0, 0x01, 0x6b, 0xcb, 0x01, 0x45, 0xd0, 0xfa, 0xe5, 0x00, + 0x00, 0x02, 0x00, 0x2a, 0xff, 0xee, 0x04, 0x3c, 0x05, 0x2d, 0x00, 0x1d, + 0x00, 0x28, 0x00, 0x3a, 0xb1, 0x23, 0x06, 0xb8, 0x02, 0x21, 0xb2, 0x15, + 0x15, 0x24, 0xb8, 0x02, 0x07, 0xb7, 0x1d, 0x14, 0x24, 0xe0, 0x14, 0x14, + 0x03, 0x1e, 0xb8, 0x01, 0x12, 0xb3, 0x0b, 0x44, 0x1d, 0x18, 0xb8, 0x01, + 0x16, 0xb2, 0x00, 0x03, 0x42, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x33, + 0x31, 0x30, 0x13, 0x36, 0x36, 0x33, 0x20, 0x00, 0x11, 0x14, 0x02, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x04, 0x35, 0x34, 0x37, 0x21, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x01, 0x32, 0x3e, 0x02, 0x37, 0x21, 0x14, 0x1e, + 0x02, 0x61, 0x58, 0xc6, 0x7b, 0x01, 0x19, 0x01, 0x29, 0x4c, 0x8b, 0xc3, + 0x77, 0x3c, 0x7b, 0x72, 0x63, 0x4a, 0x2b, 0x03, 0x02, 0xfd, 0x05, 0xad, + 0xa5, 0x3d, 0x6a, 0x5c, 0x4e, 0x21, 0x01, 0xca, 0x38, 0x57, 0x3f, 0x27, + 0x08, 0xfe, 0x0f, 0x27, 0x42, 0x59, 0x04, 0xe3, 0x23, 0x27, 0xfe, 0xb6, + 0xfe, 0xbf, 0xa5, 0xfe, 0xff, 0xb1, 0x5d, 0x14, 0x36, 0x5d, 0x91, 0xcc, + 0x8a, 0x35, 0x39, 0xb6, 0xb0, 0x0f, 0x17, 0x1e, 0x0f, 0xfc, 0xca, 0x31, + 0x5a, 0x7f, 0x4e, 0x69, 0x86, 0x4c, 0x1d, 0x00, 0x00, 0x01, 0x00, 0x6a, + 0xff, 0xe9, 0x04, 0x0a, 0x05, 0x31, 0x00, 0x35, 0x00, 0x41, 0xb1, 0x0b, + 0x1e, 0xb8, 0x01, 0xff, 0xb6, 0x0e, 0x25, 0x14, 0x25, 0x14, 0x00, 0x2b, + 0xb8, 0x02, 0x05, 0x40, 0x13, 0x06, 0x00, 0x0b, 0x26, 0xd5, 0x23, 0x23, + 0x30, 0x14, 0x19, 0xdb, 0x13, 0x10, 0x42, 0x35, 0x30, 0xe0, 0x03, 0x44, + 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, + 0x39, 0x01, 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x2f, 0xed, + 0x39, 0x31, 0x30, 0x25, 0x06, 0x06, 0x23, 0x20, 0x24, 0x35, 0x34, 0x3e, + 0x02, 0x37, 0x26, 0x26, 0x35, 0x10, 0x21, 0x32, 0x16, 0x17, 0x15, 0x2e, + 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x15, + 0x21, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x37, 0x04, 0x0a, 0x62, 0xc3, 0x73, 0xfe, 0xff, 0xfe, 0xf9, 0x27, 0x43, + 0x58, 0x32, 0x66, 0x5b, 0x01, 0xd1, 0x64, 0xc0, 0x55, 0x36, 0x5b, 0x54, + 0x53, 0x2e, 0x3e, 0x57, 0x36, 0x19, 0x16, 0x40, 0x74, 0x5e, 0xe7, 0xfe, + 0xc8, 0x41, 0x61, 0x40, 0x20, 0x20, 0x43, 0x67, 0x47, 0x37, 0x63, 0x5e, + 0x5d, 0x32, 0x25, 0x1f, 0x1d, 0xd4, 0xca, 0x3f, 0x69, 0x4f, 0x32, 0x08, + 0x25, 0x8f, 0x6f, 0x01, 0x56, 0x1b, 0x1a, 0xcd, 0x0f, 0x17, 0x10, 0x08, + 0x1a, 0x2e, 0x3f, 0x25, 0x27, 0x47, 0x36, 0x1f, 0xbc, 0x1c, 0x32, 0x47, + 0x2a, 0x2a, 0x4b, 0x39, 0x21, 0x0a, 0x12, 0x1a, 0x10, 0x00, 0x00, 0x01, + 0xff, 0xa1, 0xfe, 0x5c, 0x03, 0xbc, 0x05, 0x1b, 0x00, 0x19, 0x00, 0x39, + 0xb6, 0x17, 0x01, 0x19, 0x19, 0x09, 0x14, 0x01, 0xb8, 0x01, 0xf9, 0x40, + 0x09, 0x12, 0x09, 0x14, 0x00, 0xdf, 0x17, 0x17, 0x13, 0x0d, 0xb8, 0x01, + 0x0c, 0xb2, 0x06, 0x4a, 0x16, 0xb8, 0x01, 0x0b, 0xb1, 0x13, 0x41, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x2f, 0x2f, + 0xed, 0x11, 0x12, 0x39, 0x2f, 0x11, 0x33, 0x31, 0x30, 0x01, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x01, 0xb2, 0x27, + 0x53, 0x81, 0x5a, 0x39, 0x5b, 0x28, 0x26, 0x4c, 0x23, 0x21, 0x31, 0x20, + 0x10, 0x03, 0x04, 0xfd, 0xf6, 0x01, 0xee, 0x02, 0x17, 0xfd, 0xe7, 0x71, + 0x9e, 0x65, 0x2e, 0x10, 0x0d, 0xd0, 0x0c, 0x10, 0x10, 0x2f, 0x57, 0x47, + 0x05, 0x11, 0xd0, 0xfe, 0x96, 0xca, 0x00, 0x01, 0x00, 0x2f, 0xff, 0xe9, + 0x04, 0xcb, 0x06, 0x33, 0x00, 0x38, 0x00, 0x53, 0xb2, 0x1c, 0x1c, 0x13, + 0xb8, 0x01, 0x88, 0xb2, 0x27, 0x27, 0x02, 0xb8, 0x01, 0xd2, 0xb3, 0x01, + 0x38, 0x38, 0x2f, 0xb8, 0x02, 0x04, 0x40, 0x10, 0x0b, 0x00, 0xe0, 0x01, + 0x01, 0x34, 0x10, 0x21, 0xd1, 0x6f, 0x18, 0x01, 0x18, 0x4b, 0x27, 0x2a, + 0xb8, 0x01, 0x15, 0xb3, 0x13, 0x10, 0x42, 0x34, 0xb8, 0x01, 0x15, 0xb1, + 0x06, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x5d, 0xed, + 0x11, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x39, 0xed, + 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x31, 0x30, 0x01, 0x35, 0x21, 0x11, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x02, 0x39, 0x01, 0xd1, + 0x5b, 0xc3, 0x73, 0x88, 0xd9, 0x98, 0x51, 0x55, 0xa3, 0xed, 0x98, 0x24, + 0x46, 0x23, 0x06, 0x25, 0x43, 0x61, 0x41, 0x29, 0x3e, 0x1b, 0x09, 0x12, + 0x16, 0x1e, 0x16, 0x1a, 0x24, 0x17, 0x0b, 0x4b, 0xb2, 0x5b, 0x5c, 0x8d, + 0x5f, 0x31, 0x26, 0x55, 0x86, 0x60, 0x2d, 0x36, 0x1e, 0x02, 0x29, 0xcb, + 0xfd, 0x47, 0x2a, 0x28, 0x54, 0xa6, 0xf6, 0xa2, 0xa3, 0x01, 0x02, 0xb3, + 0x5e, 0x05, 0x05, 0x49, 0x66, 0x40, 0x1d, 0x08, 0x05, 0xb6, 0x03, 0x06, + 0x05, 0x03, 0x0e, 0x24, 0x3c, 0x2d, 0xe1, 0x23, 0x2d, 0x3f, 0x78, 0xab, + 0x6c, 0x68, 0xa7, 0x75, 0x3e, 0x0c, 0x0a, 0x01, 0x4e, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x08, 0x00, 0x0b, + 0x00, 0x55, 0x40, 0x32, 0x0a, 0x09, 0x0b, 0x08, 0x02, 0x05, 0x05, 0x00, + 0x01, 0x00, 0x01, 0x00, 0x03, 0x07, 0x03, 0x08, 0x05, 0x02, 0x0b, 0x0b, + 0x40, 0x23, 0x27, 0x48, 0x0b, 0x40, 0x18, 0x1b, 0x48, 0x8b, 0x0b, 0x9b, + 0x0b, 0xab, 0x0b, 0x03, 0x6f, 0x0b, 0x7f, 0x0b, 0x02, 0x0b, 0x01, 0x06, + 0x03, 0x41, 0x09, 0xd4, 0x01, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x12, + 0x39, 0x5d, 0x5d, 0x2b, 0x2b, 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, 0x2f, + 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x31, 0x30, 0x21, 0x21, 0x01, 0x01, 0x21, 0x01, 0x01, 0x21, 0x01, + 0x03, 0x33, 0x27, 0x03, 0xf0, 0xfc, 0x81, 0x01, 0x24, 0xfe, 0x6b, 0x01, + 0x17, 0x01, 0x24, 0x01, 0x25, 0x01, 0x06, 0xfe, 0x6a, 0xf7, 0xad, 0x55, + 0x02, 0x0f, 0x03, 0x0c, 0xfd, 0xb3, 0x02, 0x4d, 0xfc, 0xf2, 0xfe, 0xad, + 0xaf, 0x00, 0x00, 0x01, 0x01, 0x84, 0xff, 0xf5, 0x03, 0xaa, 0x05, 0x85, + 0x00, 0x13, 0x00, 0x1d, 0xb2, 0x0a, 0x0a, 0x02, 0xbb, 0x02, 0x11, 0x00, + 0x00, 0x00, 0x07, 0x01, 0x36, 0xb3, 0x0e, 0x51, 0x00, 0x53, 0x00, 0x3f, + 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x31, 0x30, 0x01, 0x33, 0x11, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x01, 0x84, 0xfa, 0x09, 0x1e, 0x37, 0x2e, 0x38, 0x4d, + 0x1b, 0x23, 0x6a, 0x42, 0x5a, 0x82, 0x54, 0x27, 0x05, 0x85, 0xfc, 0x17, + 0x2d, 0x4c, 0x37, 0x20, 0x0c, 0x06, 0xd2, 0x08, 0x0f, 0x29, 0x54, 0x80, + 0x58, 0x00, 0xff, 0xff, 0x00, 0x96, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x69, 0x00, 0x00, + 0x00, 0x11, 0x40, 0x0a, 0x01, 0x0f, 0x0c, 0x01, 0x0f, 0x0c, 0x8f, 0x0c, + 0x02, 0x0c, 0x00, 0x11, 0x5d, 0x71, 0x35, 0x00, 0x00, 0x01, 0x00, 0x81, + 0x00, 0x00, 0x04, 0x42, 0x05, 0x28, 0x00, 0x19, 0x00, 0x3d, 0xb2, 0x07, + 0x00, 0x04, 0xb8, 0x01, 0xf9, 0x40, 0x09, 0x05, 0x12, 0x12, 0x01, 0x01, + 0x02, 0x02, 0x05, 0x14, 0xb8, 0x01, 0x11, 0x40, 0x0d, 0x0e, 0x42, 0x03, + 0x8e, 0x00, 0x08, 0x08, 0x01, 0x06, 0x41, 0x05, 0x01, 0x43, 0x00, 0x3f, + 0x33, 0x3f, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x32, 0x31, 0x30, 0x01, + 0x01, 0x21, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x13, 0x3e, 0x03, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x02, 0x6f, + 0x01, 0xd3, 0xfe, 0xc2, 0xfe, 0x77, 0xfa, 0xfa, 0xed, 0x29, 0x47, 0x4b, + 0x57, 0x38, 0x1b, 0x3f, 0x25, 0x2a, 0x1e, 0x17, 0x26, 0x23, 0x22, 0x13, + 0x02, 0xac, 0xfd, 0x54, 0x02, 0x78, 0xfd, 0x88, 0x05, 0x1b, 0xfd, 0xad, + 0x01, 0x63, 0x3e, 0x5e, 0x40, 0x21, 0x06, 0x05, 0xd6, 0x09, 0x0b, 0x18, + 0x25, 0x1b, 0x00, 0x01, 0x00, 0x3b, 0xff, 0xec, 0x04, 0x2b, 0x05, 0x1b, + 0x00, 0x2a, 0x00, 0x49, 0xb3, 0x18, 0x19, 0x19, 0x17, 0xb8, 0x01, 0x9d, + 0xb2, 0x14, 0x21, 0x0b, 0xb8, 0x01, 0x9c, 0xb5, 0x09, 0x09, 0x29, 0x14, + 0x14, 0x01, 0xb8, 0x01, 0x9d, 0x40, 0x10, 0x29, 0x21, 0x19, 0x11, 0x06, + 0xd8, 0x26, 0x1e, 0x26, 0x18, 0x26, 0x44, 0x15, 0x0a, 0x00, 0x41, 0x00, + 0x3f, 0x32, 0x32, 0x3f, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x32, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x33, 0x10, 0xed, + 0x33, 0x11, 0x39, 0x31, 0x30, 0x01, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x11, 0x33, 0x11, 0x23, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x0e, + 0x03, 0x23, 0x22, 0x26, 0x35, 0x11, 0x01, 0x0e, 0x04, 0x0c, 0x17, 0x14, + 0x1f, 0x3c, 0x26, 0xd1, 0x04, 0x0c, 0x18, 0x14, 0x1a, 0x40, 0x27, 0xd3, + 0xb5, 0x04, 0x16, 0x2c, 0x32, 0x39, 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, + 0x33, 0x3b, 0x24, 0x6f, 0x6a, 0x05, 0x1b, 0xfc, 0x29, 0x26, 0x39, 0x26, + 0x13, 0x54, 0x65, 0x03, 0xb6, 0xfc, 0x29, 0x26, 0x39, 0x26, 0x13, 0x54, + 0x65, 0x03, 0xb6, 0xfa, 0xe5, 0x94, 0x2d, 0x40, 0x29, 0x12, 0x59, 0x4f, + 0x2d, 0x40, 0x29, 0x12, 0x9b, 0x98, 0x03, 0xfc, 0x00, 0x01, 0xff, 0x94, + 0xfe, 0x5b, 0x04, 0x10, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x38, 0xb9, 0x00, + 0x1b, 0x01, 0xc2, 0xb4, 0x00, 0x18, 0x18, 0x16, 0x03, 0xb8, 0x01, 0xc2, + 0x40, 0x0b, 0x14, 0x0c, 0x0c, 0x14, 0x02, 0x18, 0x00, 0x19, 0x15, 0x41, + 0x0f, 0xb8, 0x01, 0x0c, 0xb2, 0x08, 0x45, 0x00, 0x00, 0x2f, 0x3f, 0xed, + 0x3f, 0x33, 0x12, 0x39, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x33, 0x2f, 0x33, 0xed, 0x31, 0x30, 0x21, 0x01, 0x27, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x11, 0x21, 0x01, 0x17, 0x11, 0x33, 0x11, 0x02, 0xe4, 0xfe, 0xa2, + 0x48, 0x1f, 0x4a, 0x78, 0x5a, 0x1d, 0x37, 0x1b, 0x12, 0x27, 0x0f, 0x21, + 0x31, 0x20, 0x10, 0x01, 0x2e, 0x01, 0x65, 0x3f, 0xe0, 0x03, 0x0c, 0xa8, + 0xfc, 0x49, 0x71, 0x9e, 0x65, 0x2e, 0x07, 0x06, 0xcf, 0x05, 0x06, 0x10, + 0x2f, 0x57, 0x47, 0x05, 0x12, 0xfc, 0xef, 0x99, 0x03, 0xaa, 0xfa, 0xe5, + 0xff, 0xff, 0x00, 0x25, 0xff, 0xe9, 0x04, 0x42, 0x05, 0x31, 0x02, 0x06, + 0x02, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x51, 0xff, 0xf0, 0x04, 0x14, + 0x05, 0x28, 0x00, 0x17, 0x00, 0x2a, 0x00, 0x41, 0xb1, 0x15, 0x03, 0xb8, + 0x01, 0x9d, 0xb3, 0x22, 0x22, 0x0d, 0x17, 0xb8, 0x01, 0x9d, 0xb2, 0x00, + 0x00, 0x18, 0xb8, 0x01, 0xa3, 0xb2, 0x0d, 0x02, 0x01, 0xb8, 0x01, 0x18, + 0x40, 0x0c, 0x15, 0x16, 0x41, 0x26, 0xdb, 0x12, 0x42, 0x1d, 0xdc, 0x08, + 0x44, 0x00, 0x00, 0x2f, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x31, + 0x30, 0x21, 0x11, 0x07, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x25, 0x11, 0x01, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x34, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x03, 0x41, 0x8d, 0x2a, 0x4c, 0x69, 0x3f, 0x59, 0x7c, + 0x4d, 0x23, 0x20, 0x4e, 0x84, 0x63, 0x50, 0x6b, 0x20, 0x01, 0x93, 0xfd, + 0x18, 0x03, 0x13, 0x2a, 0x26, 0x18, 0x1f, 0x12, 0x06, 0x1d, 0x2c, 0x28, + 0x2c, 0x14, 0x04, 0x04, 0x3c, 0x14, 0xfd, 0x0a, 0x5b, 0x7c, 0x4b, 0x20, + 0x4b, 0x9f, 0xf8, 0xad, 0xaf, 0x01, 0x01, 0xa8, 0x51, 0x23, 0x15, 0x2b, + 0xfa, 0xe5, 0x02, 0x8f, 0x7f, 0xb4, 0x72, 0x34, 0x0f, 0x23, 0x3b, 0x2c, + 0x02, 0x90, 0x4a, 0x3b, 0x37, 0x73, 0xb1, 0x00, 0x00, 0x02, 0xff, 0xda, + 0x00, 0x00, 0x04, 0x12, 0x05, 0x1b, 0x00, 0x1f, 0x00, 0x2a, 0x00, 0x3a, + 0xbc, 0x00, 0x11, 0x01, 0x84, 0x00, 0x1a, 0x00, 0x03, 0x02, 0x00, 0xb3, + 0x20, 0x20, 0x27, 0x0a, 0xb8, 0x01, 0xf5, 0x40, 0x0f, 0x0b, 0x09, 0xe1, + 0x27, 0x27, 0x0a, 0x1f, 0x25, 0x0c, 0xd4, 0x17, 0x1f, 0x41, 0x0a, 0x43, + 0x00, 0x3f, 0x3f, 0xcd, 0xfd, 0xc5, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x32, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x11, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x23, 0x26, 0x26, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x36, + 0x02, 0x1a, 0xfd, 0xfb, 0x3d, 0x77, 0xb1, 0x75, 0x21, 0xf6, 0x22, 0x32, + 0x21, 0x10, 0x05, 0x08, 0x07, 0x02, 0xc5, 0x06, 0x0d, 0x39, 0x63, 0x88, + 0x4f, 0x01, 0xc3, 0x19, 0x37, 0x59, 0x40, 0x10, 0x18, 0x71, 0x70, 0x05, + 0x1b, 0xd8, 0xc8, 0x66, 0xad, 0x7e, 0x46, 0xfe, 0x5c, 0x04, 0x60, 0x17, + 0x27, 0x34, 0x1c, 0x16, 0x29, 0x22, 0x18, 0x06, 0x14, 0x4d, 0x26, 0x5a, + 0x7a, 0x4c, 0x21, 0xfe, 0x4f, 0x34, 0x55, 0x3c, 0x20, 0xfe, 0x21, 0x88, + 0x00, 0x02, 0x00, 0x81, 0xff, 0x5c, 0x04, 0x35, 0x05, 0x1b, 0x00, 0x19, + 0x00, 0x24, 0x00, 0x3c, 0xb4, 0x11, 0x12, 0x12, 0x0d, 0x08, 0xb8, 0x02, + 0x00, 0xb4, 0x1a, 0x1a, 0x1e, 0x01, 0x18, 0xb8, 0x01, 0xf5, 0x40, 0x0f, + 0x19, 0x0d, 0x17, 0xd8, 0x1f, 0x1f, 0x02, 0x19, 0x43, 0x11, 0x1e, 0xe2, + 0x02, 0x00, 0x41, 0x00, 0x3f, 0xdd, 0xed, 0x2f, 0x3f, 0x12, 0x39, 0x2f, + 0xed, 0x39, 0x01, 0x2f, 0xed, 0x32, 0x32, 0x33, 0x2f, 0xed, 0x33, 0x33, + 0x11, 0x33, 0x31, 0x30, 0x13, 0x33, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x13, 0x21, 0x03, 0x26, 0x26, + 0x23, 0x23, 0x11, 0x23, 0x01, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, + 0x3e, 0x02, 0x81, 0xf6, 0x87, 0x6c, 0xb0, 0x7c, 0x43, 0x2a, 0x4c, 0x69, + 0x3e, 0x30, 0x50, 0x28, 0xd1, 0xfe, 0xdf, 0xb8, 0x1a, 0x5d, 0x3f, 0x2f, + 0xf6, 0x02, 0x56, 0x7a, 0x7a, 0x6c, 0x64, 0x39, 0x5d, 0x42, 0x24, 0x05, + 0x1b, 0xa4, 0x25, 0x56, 0x8a, 0x64, 0x48, 0x70, 0x51, 0x32, 0x0a, 0x0a, + 0x58, 0x55, 0xfe, 0x4a, 0x01, 0xa4, 0x3c, 0x3d, 0xfe, 0x87, 0x02, 0xf6, + 0x60, 0x54, 0xfe, 0x8f, 0x18, 0x30, 0x46, 0x00, 0x00, 0x01, 0x00, 0x62, + 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x31, 0x00, 0x35, 0x00, 0x39, 0xb2, 0x2d, + 0x2d, 0x1a, 0xb8, 0x02, 0x07, 0xb2, 0x09, 0x09, 0x23, 0xb8, 0x02, 0x22, + 0xb6, 0x00, 0x11, 0x11, 0x00, 0x05, 0x15, 0x28, 0xb8, 0x01, 0x13, 0xb3, + 0x1f, 0x31, 0x44, 0x0c, 0xb8, 0x01, 0x0d, 0xb1, 0x15, 0x42, 0x00, 0x3f, + 0xed, 0x3f, 0x39, 0xed, 0x11, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x31, 0x30, 0x13, 0x34, 0x3e, 0x06, 0x35, + 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x62, 0x37, + 0x5b, 0x73, 0x79, 0x73, 0x5b, 0x37, 0x6e, 0x81, 0x25, 0x52, 0x51, 0x4c, + 0x20, 0x40, 0xb2, 0x5f, 0x82, 0xb5, 0x72, 0x33, 0x36, 0x59, 0x71, 0x77, + 0x71, 0x59, 0x36, 0x1a, 0x3a, 0x60, 0x46, 0x2f, 0x64, 0x65, 0x64, 0x2e, + 0x5e, 0xd9, 0x67, 0x74, 0xbc, 0x84, 0x48, 0x01, 0x6a, 0x50, 0x79, 0x5c, + 0x45, 0x38, 0x31, 0x35, 0x3f, 0x29, 0x42, 0x42, 0x08, 0x0f, 0x14, 0x0c, + 0xe1, 0x10, 0x19, 0x37, 0x60, 0x84, 0x4d, 0x51, 0x79, 0x5b, 0x43, 0x37, + 0x31, 0x36, 0x43, 0x2d, 0x23, 0x35, 0x25, 0x13, 0x0c, 0x15, 0x1c, 0x10, + 0xf3, 0x1c, 0x18, 0x2a, 0x5d, 0x92, 0xff, 0xff, 0x00, 0x66, 0x00, 0x00, + 0x03, 0xfe, 0x05, 0x1b, 0x02, 0x06, 0x01, 0xa1, 0x00, 0x00, 0x00, 0x01, + 0xff, 0xf1, 0x00, 0x00, 0x04, 0x17, 0x05, 0x1b, 0x00, 0x17, 0x00, 0x2f, + 0xb9, 0x00, 0x03, 0x01, 0xfb, 0xb5, 0x04, 0x04, 0x18, 0x19, 0x0e, 0x09, + 0xb8, 0x01, 0x84, 0x40, 0x0b, 0x0f, 0x12, 0x01, 0x02, 0x06, 0xe2, 0x0f, + 0x17, 0x41, 0x03, 0x43, 0x00, 0x3f, 0x3f, 0xcd, 0xed, 0x32, 0x01, 0x2f, + 0x2f, 0x33, 0xed, 0x32, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, + 0x15, 0x21, 0x11, 0x23, 0x11, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, + 0x17, 0x23, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x04, 0x17, 0xfe, + 0x9a, 0xfc, 0x7d, 0x47, 0x3e, 0x05, 0x08, 0x07, 0x02, 0xc5, 0x06, 0x0d, + 0x30, 0x59, 0x7e, 0x4e, 0x05, 0x1b, 0xcd, 0xfb, 0xb2, 0x04, 0x4e, 0x43, + 0x39, 0x16, 0x29, 0x22, 0x18, 0x06, 0x14, 0x4d, 0x26, 0x57, 0x7b, 0x4c, + 0x23, 0x00, 0x00, 0x01, 0x00, 0x4f, 0xfe, 0x55, 0x04, 0x17, 0x05, 0x1b, + 0x00, 0x17, 0x00, 0x31, 0xb4, 0x16, 0x16, 0x08, 0x08, 0x17, 0xb8, 0x01, + 0xfb, 0x40, 0x0b, 0x12, 0x13, 0x13, 0x12, 0x17, 0x13, 0xe2, 0x14, 0x41, + 0x08, 0x05, 0xb8, 0x01, 0x0c, 0xb2, 0x09, 0x0c, 0x45, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x2f, 0x32, 0x2f, 0x31, 0x30, 0x25, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x21, 0x35, + 0x21, 0x15, 0x21, 0x02, 0xb1, 0x12, 0x22, 0x34, 0x21, 0x20, 0x4f, 0x26, + 0x28, 0x62, 0x39, 0x5a, 0x81, 0x54, 0x28, 0xfe, 0x9a, 0x03, 0xc8, 0xfe, + 0x9a, 0x03, 0x47, 0x57, 0x2f, 0x10, 0x10, 0x0c, 0xd0, 0x0d, 0x10, 0x28, + 0x5e, 0x98, 0x71, 0x04, 0x6a, 0xcd, 0xcd, 0x00, 0x00, 0x01, 0x00, 0x23, + 0xff, 0xea, 0x04, 0x43, 0x05, 0x1b, 0x00, 0x2f, 0x00, 0x4a, 0xb4, 0x19, + 0x10, 0x18, 0x18, 0x1e, 0xb8, 0x02, 0x02, 0x40, 0x09, 0x10, 0x15, 0x01, + 0x15, 0x01, 0x10, 0x10, 0x2d, 0x06, 0xb8, 0x02, 0x04, 0x40, 0x0d, 0x28, + 0x2e, 0x2e, 0x28, 0x19, 0x15, 0x01, 0x2e, 0xd1, 0x16, 0x2f, 0x41, 0x0b, + 0xb8, 0x01, 0x18, 0xb1, 0x23, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, + 0x32, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x39, 0x33, 0x2f, + 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x11, 0x39, 0x31, 0x30, + 0x01, 0x15, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x27, 0x35, 0x21, 0x15, 0x23, 0x1e, 0x03, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, + 0x23, 0x35, 0x01, 0xe7, 0x36, 0x48, 0x2d, 0x13, 0x1a, 0x3d, 0x64, 0x4b, + 0x48, 0x66, 0x42, 0x1e, 0x0f, 0x2b, 0x4c, 0x3d, 0x01, 0xc9, 0xd3, 0x32, + 0x4e, 0x35, 0x1c, 0x53, 0x90, 0xc3, 0x70, 0x79, 0xc1, 0x86, 0x48, 0x21, + 0x3b, 0x50, 0x2f, 0xdb, 0x05, 0x1b, 0xaa, 0x25, 0x67, 0x81, 0x99, 0x56, + 0x5c, 0x9d, 0x72, 0x41, 0x3c, 0x6f, 0x9c, 0x5f, 0x58, 0x95, 0x7e, 0x69, + 0x2c, 0xac, 0xb4, 0x22, 0x6a, 0x84, 0x97, 0x4f, 0x9d, 0xf1, 0xa4, 0x55, + 0x50, 0x9d, 0xec, 0x9c, 0x51, 0x9f, 0x8b, 0x6e, 0x1f, 0xb4, 0x00, 0x01, + 0x00, 0x57, 0xff, 0xe9, 0x04, 0x0f, 0x05, 0x2f, 0x00, 0x29, 0x00, 0x34, + 0xb3, 0x08, 0x08, 0x1f, 0x12, 0xb8, 0x01, 0xf5, 0xb2, 0x29, 0x29, 0x1f, + 0xb8, 0x01, 0xf5, 0x40, 0x09, 0x1c, 0x1d, 0x41, 0x24, 0xe0, 0x17, 0x44, + 0x08, 0x05, 0xb8, 0x01, 0x0c, 0xb2, 0x09, 0x0c, 0x42, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x03, 0x19, 0x12, 0x22, 0x34, 0x21, 0x17, 0x3c, + 0x26, 0x2b, 0x5f, 0x2d, 0x54, 0x79, 0x4e, 0x26, 0x43, 0x7d, 0xb4, 0x70, + 0x80, 0xb2, 0x6f, 0x33, 0xf6, 0x18, 0x37, 0x58, 0x40, 0x3b, 0x57, 0x38, + 0x1b, 0x03, 0xb6, 0x33, 0x42, 0x25, 0x0e, 0x08, 0x0c, 0xd1, 0x0c, 0x08, + 0x28, 0x58, 0x8e, 0x67, 0xfe, 0x27, 0x7d, 0xbd, 0x7e, 0x40, 0x40, 0x78, + 0xac, 0x6b, 0x03, 0x63, 0xfc, 0xac, 0x42, 0x66, 0x47, 0x24, 0x1f, 0x45, + 0x6c, 0x4d, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x04, 0x77, 0x05, 0x28, + 0x00, 0x17, 0x00, 0x33, 0xb1, 0x17, 0x11, 0xb8, 0x01, 0xf9, 0x40, 0x10, + 0x12, 0x12, 0x08, 0x15, 0x14, 0x08, 0x13, 0x10, 0x17, 0x17, 0x11, 0x14, + 0x41, 0x11, 0x43, 0x0c, 0xb8, 0x01, 0x11, 0xb1, 0x05, 0x42, 0x00, 0x3f, + 0xed, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0x2f, 0x33, + 0x12, 0x39, 0x2f, 0xed, 0x39, 0x31, 0x30, 0x01, 0x3e, 0x03, 0x33, 0x32, + 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x01, 0x11, 0x23, + 0x11, 0x01, 0x21, 0x13, 0x17, 0x02, 0xe5, 0x21, 0x3a, 0x40, 0x51, 0x38, + 0x1b, 0x2e, 0x25, 0x14, 0x22, 0x0e, 0x23, 0x2e, 0x15, 0xfe, 0xe0, 0xfa, + 0xfe, 0x57, 0x01, 0x11, 0xc0, 0x58, 0x04, 0x40, 0x42, 0x59, 0x36, 0x17, + 0x02, 0x05, 0xd6, 0x03, 0x02, 0x1e, 0x2a, 0xfd, 0xc7, 0xfe, 0x31, 0x01, + 0xcd, 0x03, 0x4e, 0xfe, 0x6c, 0xc6, 0x00, 0x01, 0x00, 0x68, 0x00, 0x00, + 0x03, 0xfe, 0x05, 0x1b, 0x00, 0x11, 0x00, 0x61, 0x40, 0x24, 0x01, 0x10, + 0x0f, 0x02, 0x0f, 0x02, 0x0a, 0x07, 0x06, 0x0b, 0x06, 0x08, 0x08, 0x06, + 0x06, 0x0c, 0x0c, 0x0b, 0x0f, 0x11, 0x11, 0x0f, 0x03, 0x03, 0x0f, 0x10, + 0x0a, 0x11, 0xdf, 0x07, 0x01, 0x00, 0x00, 0x04, 0x0f, 0x0b, 0xb8, 0x01, + 0x18, 0xb4, 0x0e, 0x43, 0x06, 0x02, 0x03, 0xb8, 0x01, 0x18, 0xb1, 0x04, + 0x41, 0x00, 0x3f, 0xfd, 0xc4, 0x32, 0x3f, 0xed, 0x32, 0x11, 0x39, 0x2f, + 0x33, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0x11, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0x7d, 0x87, 0xc4, + 0xc4, 0x01, 0x33, 0x10, 0x87, 0xc4, 0xc4, 0x31, 0x30, 0x13, 0x21, 0x13, + 0x21, 0x35, 0x21, 0x15, 0x03, 0x33, 0x15, 0x21, 0x03, 0x21, 0x15, 0x21, + 0x35, 0x01, 0x23, 0xaa, 0x01, 0x45, 0xcf, 0xfd, 0xbd, 0x03, 0x7b, 0xe3, + 0xbd, 0xfe, 0xb9, 0xed, 0x02, 0x62, 0xfc, 0x6a, 0x01, 0x01, 0xbf, 0x03, + 0x06, 0x01, 0x36, 0xdf, 0xc8, 0xfe, 0xb3, 0xca, 0xfe, 0xa3, 0xdf, 0xba, + 0x01, 0x82, 0x00, 0x01, 0x00, 0x5c, 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x1b, + 0x00, 0x26, 0x00, 0x49, 0xb7, 0x17, 0x10, 0x10, 0x00, 0x12, 0x16, 0x16, + 0x1e, 0xb8, 0x02, 0x05, 0x40, 0x0e, 0x0a, 0x0a, 0x00, 0x13, 0x13, 0x00, + 0x11, 0x17, 0xc3, 0x0f, 0x0f, 0x14, 0x00, 0x05, 0xb8, 0x01, 0x0c, 0xb4, + 0x26, 0x23, 0x44, 0x16, 0x13, 0xb8, 0x01, 0x17, 0xb1, 0x14, 0x41, 0x00, + 0x3f, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, + 0x33, 0x2f, 0x33, 0x31, 0x30, 0x13, 0x16, 0x17, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x21, 0x35, + 0x21, 0x15, 0x01, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x5c, 0x77, 0x63, 0x31, 0x67, 0x36, 0x3b, 0x5a, 0x3c, 0x1f, + 0x16, 0x44, 0x7d, 0x67, 0x84, 0x01, 0x51, 0xfd, 0xfc, 0x03, 0x47, 0xfe, + 0x86, 0x53, 0x81, 0x60, 0x42, 0x28, 0x12, 0x43, 0x83, 0xc3, 0x7f, 0x73, + 0xc3, 0x62, 0x01, 0x00, 0x25, 0x11, 0x08, 0x08, 0x20, 0x38, 0x4a, 0x2a, + 0x2a, 0x4f, 0x3d, 0x24, 0xbc, 0x01, 0x21, 0xde, 0xcf, 0xfe, 0xc4, 0x21, + 0x37, 0x4b, 0x53, 0x59, 0x2a, 0x65, 0x9f, 0x6f, 0x3b, 0x1d, 0x1f, 0x00, + 0x00, 0x01, 0x00, 0x6a, 0xff, 0xe9, 0x04, 0x0a, 0x05, 0x1b, 0x00, 0x26, + 0x00, 0x47, 0x40, 0x0d, 0x0f, 0x16, 0x16, 0x26, 0x13, 0x13, 0x26, 0x26, + 0x08, 0x14, 0x10, 0x10, 0x1c, 0xb8, 0x02, 0x05, 0xb7, 0x08, 0x15, 0x0f, + 0xc3, 0x17, 0x17, 0x21, 0x14, 0xb8, 0x01, 0x17, 0xb3, 0x11, 0x41, 0x26, + 0x21, 0xb8, 0x01, 0x0c, 0xb2, 0x00, 0x03, 0x44, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x31, + 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x04, + 0x33, 0x01, 0x35, 0x21, 0x15, 0x21, 0x01, 0x15, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x36, 0x37, 0x04, 0x0a, + 0x62, 0xc3, 0x73, 0x80, 0xc2, 0x83, 0x43, 0x12, 0x28, 0x42, 0x60, 0x81, + 0x53, 0xfe, 0x86, 0x03, 0x47, 0xfd, 0xfc, 0x01, 0x51, 0x84, 0x67, 0x7d, + 0x44, 0x16, 0x1f, 0x3c, 0x5a, 0x3b, 0x36, 0x67, 0x31, 0x63, 0x77, 0x25, + 0x1f, 0x1d, 0x3b, 0x6f, 0x9f, 0x65, 0x2a, 0x59, 0x53, 0x4b, 0x37, 0x21, + 0x01, 0x3c, 0xcf, 0xde, 0xfe, 0xdf, 0xbc, 0x24, 0x3d, 0x4f, 0x2a, 0x2a, + 0x4a, 0x38, 0x20, 0x08, 0x08, 0x11, 0x25, 0x00, 0x00, 0x01, 0x00, 0x35, + 0xff, 0xec, 0x04, 0x02, 0x05, 0x1b, 0x00, 0x21, 0x00, 0x4b, 0x40, 0x0a, + 0x1b, 0x1c, 0x1c, 0x16, 0x15, 0x15, 0x0b, 0x1a, 0x1a, 0x00, 0xb8, 0x02, + 0x03, 0x40, 0x0e, 0x11, 0x11, 0x0b, 0x17, 0x17, 0x0b, 0x14, 0x15, 0xdd, + 0x1c, 0x1c, 0x0e, 0x1b, 0x17, 0xb8, 0x01, 0x1d, 0xb7, 0x18, 0x41, 0x0b, + 0x0e, 0xe3, 0x0a, 0x05, 0x44, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x32, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x31, + 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x21, 0x13, 0x23, 0x35, + 0x21, 0x15, 0x21, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x04, 0x02, 0x58, 0x9c, + 0xd4, 0x7c, 0x1f, 0x46, 0x48, 0x44, 0x1d, 0x39, 0x93, 0x4e, 0x97, 0x9c, + 0x92, 0xa3, 0xff, 0x00, 0x50, 0xe3, 0x03, 0x85, 0xfe, 0x43, 0x2e, 0x3b, + 0x64, 0xb6, 0x8b, 0x53, 0x01, 0xa2, 0x69, 0xa3, 0x70, 0x3a, 0x04, 0x06, + 0x09, 0x05, 0xd5, 0x0e, 0x11, 0x72, 0x67, 0x6a, 0x67, 0x01, 0xd1, 0xe6, + 0xe6, 0xfe, 0xf6, 0x24, 0x59, 0x98, 0x00, 0x04, 0x00, 0x4d, 0x00, 0x00, + 0x04, 0x53, 0x06, 0xac, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x23, 0x00, 0x2a, + 0x00, 0x97, 0xb3, 0x2a, 0x24, 0x27, 0x28, 0xbb, 0x01, 0xa3, 0x00, 0x29, + 0x00, 0x26, 0x01, 0xa3, 0x40, 0x11, 0x25, 0x40, 0x29, 0x25, 0x20, 0x27, + 0x27, 0x1f, 0x20, 0x1a, 0x1a, 0x1c, 0x21, 0x1b, 0x1f, 0x1f, 0x00, 0xb8, + 0x01, 0x8a, 0xb4, 0x0f, 0x0f, 0x08, 0x1c, 0x15, 0xb8, 0x01, 0x85, 0xb2, + 0x08, 0x1a, 0x21, 0xb8, 0x01, 0x10, 0xb3, 0x22, 0x41, 0x1f, 0x1b, 0xb8, + 0x01, 0x0f, 0xb4, 0x40, 0x1e, 0x43, 0x28, 0x26, 0xb8, 0xff, 0xc0, 0x40, + 0x10, 0x1c, 0x1f, 0x48, 0x26, 0x40, 0x0e, 0x13, 0x48, 0x26, 0x80, 0x27, + 0x00, 0x24, 0x01, 0x24, 0x14, 0xb8, 0x01, 0x0b, 0xb5, 0x09, 0x41, 0x15, + 0xe2, 0x07, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0xd6, 0x5d, 0x32, 0x1a, + 0xcd, 0x2b, 0x2b, 0x32, 0x3f, 0x1a, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, + 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x33, 0x11, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x19, 0x2f, 0x1a, 0xcd, 0xcd, 0x1a, 0x18, + 0x10, 0xed, 0x10, 0xed, 0x11, 0x33, 0x33, 0x31, 0x30, 0x01, 0x14, 0x0e, + 0x04, 0x23, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, + 0x23, 0x11, 0x32, 0x3e, 0x02, 0x01, 0x03, 0x21, 0x15, 0x21, 0x35, 0x13, + 0x23, 0x35, 0x21, 0x25, 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x02, 0x76, + 0x0c, 0x1e, 0x36, 0x55, 0x77, 0x50, 0xad, 0xad, 0x79, 0x95, 0x52, 0x1c, + 0xd0, 0x11, 0x24, 0x37, 0x27, 0x27, 0x38, 0x23, 0x11, 0x02, 0x95, 0xf7, + 0x01, 0x04, 0xfe, 0x31, 0xfb, 0xe9, 0x01, 0xb0, 0xfe, 0xc4, 0x9c, 0xc0, + 0x3a, 0x3a, 0xbc, 0x9c, 0x02, 0x9c, 0x5c, 0xab, 0x94, 0x7a, 0x57, 0x30, + 0x05, 0x1b, 0x60, 0xab, 0xea, 0x97, 0x7f, 0xab, 0x67, 0x2b, 0xfc, 0x82, + 0x2d, 0x69, 0xac, 0x02, 0x44, 0xfc, 0x83, 0xd6, 0xcb, 0x03, 0x79, 0xd7, + 0x8b, 0x01, 0x06, 0x85, 0x85, 0xfe, 0xfa, 0x00, 0x00, 0x04, 0x00, 0x4d, + 0x00, 0x00, 0x04, 0x53, 0x05, 0x85, 0x00, 0x09, 0x00, 0x10, 0x00, 0x1f, + 0x00, 0x2a, 0x00, 0x80, 0xb9, 0x00, 0x0e, 0x01, 0xa3, 0xb3, 0x0f, 0x0f, + 0x0d, 0x0c, 0xb8, 0x01, 0xa3, 0x40, 0x0d, 0x0b, 0x0b, 0x10, 0x0a, 0x0d, + 0x0d, 0x00, 0x01, 0x05, 0x05, 0x07, 0x07, 0x11, 0xb8, 0x01, 0x8a, 0xb3, + 0x20, 0x20, 0x02, 0x26, 0xb8, 0x01, 0x85, 0xb5, 0x19, 0x06, 0x00, 0x00, + 0x02, 0x25, 0xb8, 0x01, 0x0b, 0x40, 0x1b, 0x1a, 0x41, 0x26, 0xe2, 0x40, + 0x18, 0x43, 0x0e, 0x0b, 0x40, 0x0e, 0x13, 0x48, 0x0b, 0x80, 0x0d, 0x0a, + 0x00, 0x06, 0xd6, 0x08, 0x4f, 0x05, 0x01, 0xd5, 0x04, 0x43, 0x00, 0x3f, + 0xed, 0x32, 0x3f, 0xed, 0x32, 0xd6, 0x32, 0x1a, 0xcd, 0x2b, 0x32, 0x3f, + 0x1a, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x19, 0x2f, + 0x33, 0x33, 0x33, 0x18, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x03, 0x33, 0x15, 0x21, 0x35, 0x13, 0x23, 0x35, 0x21, 0x25, 0x03, + 0x33, 0x17, 0x37, 0x33, 0x03, 0x01, 0x14, 0x0e, 0x04, 0x23, 0x23, 0x11, + 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, 0x11, 0x32, 0x3e, + 0x02, 0x04, 0x3b, 0xe3, 0xf0, 0xfe, 0x45, 0xe7, 0xc7, 0x01, 0x8e, 0xfe, + 0xc4, 0x9c, 0xc0, 0x3a, 0x3a, 0xbc, 0x9c, 0xfe, 0xbf, 0x0c, 0x1e, 0x36, + 0x55, 0x77, 0x50, 0xad, 0xad, 0x79, 0x95, 0x52, 0x1c, 0xd0, 0x11, 0x24, + 0x37, 0x27, 0x27, 0x38, 0x23, 0x11, 0x03, 0x49, 0xfd, 0x74, 0xbd, 0xb2, + 0x02, 0x88, 0xbe, 0x87, 0x01, 0x06, 0x85, 0x85, 0xfe, 0xfa, 0xfe, 0x1d, + 0x5c, 0xab, 0x94, 0x7a, 0x57, 0x30, 0x05, 0x1b, 0x60, 0xab, 0xea, 0x97, + 0x7f, 0xab, 0x67, 0x2b, 0xfc, 0x82, 0x2d, 0x69, 0xac, 0x00, 0x00, 0x02, + 0x00, 0x4e, 0x00, 0x00, 0x04, 0x18, 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x15, + 0x00, 0x41, 0xb6, 0x0e, 0x0e, 0x07, 0x07, 0x15, 0x15, 0x14, 0xbb, 0x01, + 0xc3, 0x00, 0x11, 0x00, 0x01, 0x01, 0xa3, 0x40, 0x09, 0x0c, 0x0c, 0x11, + 0x0f, 0x0e, 0xe0, 0x12, 0x41, 0x07, 0xb8, 0x01, 0x0f, 0xb2, 0x06, 0x06, + 0x14, 0xb8, 0x01, 0x0f, 0xb1, 0x11, 0x43, 0x00, 0x3f, 0xed, 0x33, 0x2f, + 0xed, 0x3f, 0xe4, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, + 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x23, 0x35, 0x03, 0x21, 0x11, + 0x33, 0x11, 0x33, 0x04, 0x18, 0x2a, 0x64, 0xa6, 0x7d, 0x36, 0x51, 0x35, + 0x1a, 0xed, 0x40, 0xfe, 0x3e, 0xe2, 0xe0, 0x05, 0x1b, 0xfc, 0x5d, 0x5f, + 0x8d, 0x5d, 0x2f, 0xd6, 0x0e, 0x29, 0x4c, 0x3f, 0x02, 0xb8, 0xcb, 0xfa, + 0xe5, 0x05, 0x1b, 0xfb, 0xbb, 0x00, 0x00, 0x03, 0x00, 0x4e, 0xfe, 0x5c, + 0x04, 0x0f, 0x05, 0xae, 0x00, 0x15, 0x00, 0x1b, 0x00, 0x2f, 0x00, 0x5b, + 0xb2, 0x1b, 0x1b, 0x1a, 0xbb, 0x01, 0xc3, 0x00, 0x17, 0x00, 0x1c, 0x02, + 0x3c, 0x40, 0x09, 0x26, 0x26, 0x0a, 0x0a, 0x12, 0x17, 0x14, 0x14, 0x01, + 0xb8, 0x01, 0xa2, 0xb5, 0x12, 0x12, 0x17, 0x18, 0x41, 0x1a, 0xb8, 0x01, + 0x0f, 0xb2, 0x17, 0x43, 0x2b, 0xb8, 0x01, 0x4b, 0x40, 0x0c, 0x21, 0x21, + 0x14, 0xd6, 0x15, 0x4f, 0x0a, 0x0f, 0xda, 0x09, 0x06, 0x56, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x3f, 0xed, 0x3f, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x32, 0x2f, + 0xed, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, 0x11, + 0x23, 0x35, 0x13, 0x21, 0x11, 0x33, 0x11, 0x33, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x04, 0x01, 0x2c, 0x61, 0x9a, 0x6d, 0x4b, 0x5a, 0x14, 0x0c, 0x23, 0x2c, + 0x30, 0x19, 0x72, 0x5e, 0xfc, 0x02, 0xfe, 0x20, 0xe2, 0xfe, 0x01, 0xe1, + 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, 0x2b, 0x18, 0x18, 0x2b, 0x3a, 0x22, + 0x22, 0x3b, 0x2b, 0x18, 0x03, 0xf8, 0xfc, 0x1a, 0x69, 0xa3, 0x70, 0x3a, + 0x0a, 0x05, 0xd2, 0x05, 0x0b, 0x09, 0x05, 0x90, 0x8c, 0x02, 0xff, 0xbe, + 0xfc, 0x08, 0x05, 0x1b, 0xfb, 0xbb, 0x04, 0x38, 0x21, 0x3a, 0x2b, 0x19, + 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, + 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x04, 0x34, 0x05, 0x1b, 0x00, 0x0b, + 0x00, 0x1b, 0x00, 0x4d, 0xb4, 0x13, 0x13, 0x1a, 0x1a, 0x0b, 0xb8, 0x01, + 0x84, 0xb3, 0x08, 0x01, 0x0a, 0x0d, 0xb8, 0x01, 0xc2, 0xb3, 0x18, 0x18, + 0x02, 0x04, 0xb8, 0x01, 0x84, 0xb5, 0x05, 0x1a, 0xe0, 0x1b, 0x41, 0x13, + 0xb8, 0x01, 0x0f, 0x40, 0x0c, 0x12, 0x43, 0x0a, 0x41, 0x02, 0x06, 0x41, + 0x05, 0x43, 0x08, 0x01, 0x43, 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x33, 0x3f, + 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x2f, + 0x33, 0x33, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x21, 0x23, 0x03, + 0x13, 0x11, 0x23, 0x11, 0x33, 0x13, 0x03, 0x11, 0x33, 0x21, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x35, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x23, 0x35, 0x02, + 0x7f, 0xe7, 0xbf, 0x1a, 0xc1, 0xe2, 0xbf, 0x17, 0xc1, 0x01, 0xb7, 0x18, + 0x50, 0x95, 0x7d, 0x36, 0x3e, 0x1f, 0x07, 0x9d, 0x03, 0x4f, 0xfe, 0x51, + 0xfe, 0x60, 0x05, 0x1b, 0xfc, 0x99, 0x01, 0x74, 0x01, 0xf3, 0xfc, 0x5d, + 0x5f, 0x8d, 0x5d, 0x2f, 0xd6, 0x14, 0x2d, 0x4a, 0x37, 0x02, 0xb8, 0xcb, + 0x00, 0x03, 0x00, 0x32, 0xfe, 0x5c, 0x04, 0x37, 0x05, 0xae, 0x00, 0x0b, + 0x00, 0x23, 0x00, 0x37, 0x00, 0x5b, 0xb1, 0x24, 0x0d, 0xb8, 0x01, 0xa4, + 0xb2, 0x20, 0x09, 0x00, 0xb8, 0x01, 0x6b, 0x40, 0x09, 0x08, 0x15, 0x08, + 0x15, 0x05, 0x22, 0x20, 0x04, 0x02, 0xbb, 0x01, 0x6a, 0x00, 0x05, 0x00, + 0x33, 0x01, 0x44, 0x40, 0x16, 0x29, 0x29, 0x21, 0xd6, 0x23, 0x4f, 0x16, + 0x1b, 0xda, 0x15, 0x12, 0x45, 0x0a, 0x41, 0x02, 0x07, 0x41, 0x05, 0x43, + 0x08, 0x01, 0x43, 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x33, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x01, 0x2f, 0xfd, 0xcd, 0x2f, + 0xc6, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0xed, 0xcd, 0x10, 0xed, 0x32, 0x30, + 0x31, 0x21, 0x23, 0x03, 0x13, 0x11, 0x23, 0x11, 0x33, 0x13, 0x03, 0x11, + 0x33, 0x01, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, + 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x23, 0x35, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x02, 0x7f, 0xe7, 0xbf, 0x1a, 0xc1, 0xe2, 0xbf, 0x17, 0xc1, 0x01, + 0xac, 0x20, 0x52, 0x8d, 0x6d, 0x4b, 0x5a, 0x14, 0x0c, 0x23, 0x2c, 0x30, + 0x19, 0x39, 0x42, 0x21, 0x09, 0x92, 0x01, 0x7c, 0x18, 0x2b, 0x3b, 0x22, + 0x22, 0x3a, 0x2b, 0x18, 0x18, 0x2b, 0x3a, 0x22, 0x22, 0x3b, 0x2b, 0x18, + 0x03, 0x4f, 0xfe, 0x51, 0xfe, 0x60, 0x05, 0x1b, 0xfc, 0x99, 0x01, 0x74, + 0x01, 0xf3, 0xfe, 0xdd, 0xfc, 0x1a, 0x69, 0xa3, 0x70, 0x3a, 0x0a, 0x05, + 0xd2, 0x05, 0x0b, 0x09, 0x05, 0x24, 0x48, 0x6a, 0x46, 0x02, 0xff, 0xbe, + 0x01, 0x16, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, + 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x62, 0x06, 0x87, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x43, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x0f, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x6c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x0f, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x6e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, + 0x07, 0x9e, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x70, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x07, 0x9e, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x07, 0x9e, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x72, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xd7, 0x00, 0x00, 0x04, 0x3d, 0x06, 0x64, 0x02, 0x26, 0x00, 0x28, + 0x00, 0x00, 0x00, 0x07, 0x01, 0x4a, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x2f, 0xff, 0xe9, 0x04, 0x7a, 0x05, 0x31, 0x00, 0x2f, 0x00, 0x88, + 0xb5, 0x00, 0x00, 0x04, 0x04, 0x02, 0x23, 0xb8, 0x02, 0x04, 0xb5, 0x12, + 0x1a, 0x1a, 0x09, 0x07, 0x05, 0xb8, 0x01, 0xd2, 0x40, 0x3a, 0x2e, 0x02, + 0x02, 0x12, 0x09, 0x8f, 0x2f, 0x9f, 0x2f, 0x02, 0x2f, 0xc3, 0x00, 0x06, + 0x00, 0x0f, 0x03, 0x01, 0x6f, 0x03, 0x7f, 0x03, 0xff, 0x03, 0x03, 0x03, + 0xe0, 0x04, 0x0f, 0x00, 0x1f, 0x00, 0x2f, 0x00, 0xaf, 0x00, 0x04, 0x3f, + 0x04, 0xbf, 0x04, 0x02, 0x04, 0x40, 0x11, 0x15, 0x48, 0x04, 0x40, 0x09, + 0x0d, 0x48, 0x00, 0x04, 0x00, 0x04, 0x28, 0x1e, 0xb8, 0x01, 0x15, 0xb2, + 0x17, 0x42, 0x28, 0xb8, 0x01, 0x15, 0xb1, 0x0d, 0x44, 0x00, 0x3f, 0xed, + 0x3f, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x2b, 0x2b, 0x71, 0x5d, 0x10, + 0xed, 0x5d, 0x71, 0x11, 0x33, 0x10, 0xed, 0x5d, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x32, 0x32, 0x2f, 0x10, 0xed, 0x11, 0x39, 0x2f, + 0x33, 0x2f, 0x30, 0x31, 0x01, 0x33, 0x35, 0x23, 0x35, 0x21, 0x11, 0x33, + 0x15, 0x23, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x35, 0x23, + 0x02, 0x36, 0xe1, 0xde, 0x01, 0xd1, 0x70, 0x70, 0x5a, 0xc4, 0x73, 0x88, + 0xd9, 0x98, 0x51, 0x55, 0xa3, 0xed, 0x98, 0x5a, 0xab, 0x55, 0x4a, 0xb3, + 0x5b, 0x5c, 0x8d, 0x5f, 0x31, 0x26, 0x55, 0x86, 0x60, 0x17, 0x22, 0x1e, + 0x1b, 0x0f, 0xe1, 0x01, 0xd9, 0x50, 0xcb, 0xfe, 0xe5, 0xae, 0xf0, 0x2a, + 0x28, 0x54, 0xa6, 0xf6, 0xa2, 0xa3, 0x01, 0x02, 0xb3, 0x5e, 0x1f, 0x1a, + 0xf3, 0x23, 0x2d, 0x40, 0x76, 0xac, 0x6c, 0x68, 0xa7, 0x75, 0x3e, 0x03, + 0x06, 0x08, 0x05, 0x50, 0xff, 0xff, 0x00, 0x1e, 0xff, 0xe9, 0x04, 0x0a, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, + 0x1e, 0x00, 0xff, 0xff, 0xff, 0xf2, 0x00, 0x00, 0x04, 0x42, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0xf2, 0x00, + 0xff, 0xff, 0x00, 0x25, 0xfe, 0x6a, 0x04, 0x41, 0x05, 0x31, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x01, 0x55, 0xfe, 0xe3, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x02, 0xfe, 0x6a, 0x04, 0x41, 0x06, 0x64, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x27, 0x01, 0x55, 0xfe, 0xe3, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4a, 0x02, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xfc, 0x06, 0x87, 0x02, 0x26, 0x04, 0x78, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x43, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x04, 0x48, + 0x05, 0x1b, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x23, 0x00, 0x55, 0x40, 0x0a, + 0x20, 0x1a, 0x1a, 0x1c, 0x1b, 0x1f, 0x1f, 0x21, 0x21, 0x00, 0xb8, 0x01, + 0x85, 0xb4, 0x0f, 0x0f, 0x08, 0x1c, 0x15, 0xb8, 0x01, 0x85, 0xb2, 0x08, + 0x1a, 0x21, 0xb8, 0x01, 0x10, 0xb2, 0x22, 0x22, 0x14, 0xb8, 0x01, 0x0b, + 0xb3, 0x09, 0x41, 0x1f, 0x1b, 0xb8, 0x01, 0x0f, 0xb5, 0x1e, 0x1e, 0x15, + 0xe2, 0x08, 0x43, 0x00, 0x3f, 0xed, 0x33, 0x10, 0xed, 0x32, 0x3f, 0xed, + 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0xed, + 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x14, 0x0e, 0x04, 0x23, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, + 0x2e, 0x02, 0x23, 0x11, 0x32, 0x3e, 0x02, 0x01, 0x03, 0x21, 0x15, 0x21, + 0x35, 0x13, 0x23, 0x35, 0x21, 0x02, 0x76, 0x0c, 0x1e, 0x36, 0x55, 0x77, + 0x50, 0xad, 0xad, 0x79, 0x95, 0x52, 0x1c, 0xc6, 0x14, 0x28, 0x3a, 0x27, + 0x27, 0x3b, 0x27, 0x14, 0x02, 0x8b, 0xf7, 0x01, 0x04, 0xfe, 0x31, 0xfb, + 0xe9, 0x01, 0xb0, 0x02, 0x9c, 0x5c, 0xab, 0x94, 0x7a, 0x57, 0x30, 0x05, + 0x1b, 0x60, 0xab, 0xea, 0x97, 0x7f, 0xab, 0x67, 0x2b, 0xfc, 0x82, 0x2d, + 0x69, 0xac, 0x02, 0x44, 0xfc, 0x83, 0xd6, 0xcb, 0x03, 0x79, 0xd7, 0x00, + 0x00, 0x03, 0x00, 0x4d, 0x00, 0x00, 0x04, 0x48, 0x05, 0x1b, 0x00, 0x09, + 0x00, 0x18, 0x00, 0x23, 0x00, 0x4c, 0xb5, 0x01, 0x05, 0x05, 0x07, 0x07, + 0x0a, 0xb8, 0x01, 0x85, 0xb3, 0x19, 0x19, 0x02, 0x1f, 0xb8, 0x01, 0x85, + 0xb5, 0x12, 0x06, 0x00, 0x00, 0x02, 0x1e, 0xb8, 0x01, 0x0b, 0x40, 0x10, + 0x13, 0x41, 0x05, 0x01, 0xd5, 0x04, 0x04, 0x1f, 0xe2, 0x12, 0x43, 0x00, + 0x07, 0xd6, 0x08, 0x4f, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x33, 0x10, + 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x03, + 0x33, 0x15, 0x21, 0x35, 0x13, 0x23, 0x35, 0x21, 0x01, 0x14, 0x0e, 0x04, + 0x23, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, + 0x11, 0x32, 0x3e, 0x02, 0x04, 0x3b, 0xe3, 0xf0, 0xfe, 0x45, 0xe7, 0xc7, + 0x01, 0x8e, 0xfe, 0x3b, 0x0c, 0x1e, 0x36, 0x55, 0x77, 0x50, 0xad, 0xad, + 0x79, 0x95, 0x52, 0x1c, 0xc6, 0x14, 0x28, 0x3a, 0x27, 0x27, 0x3b, 0x27, + 0x14, 0x03, 0x49, 0xfd, 0x74, 0xbd, 0xb2, 0x02, 0x88, 0xbe, 0xfe, 0xa4, + 0x5c, 0xab, 0x94, 0x7a, 0x57, 0x30, 0x05, 0x1b, 0x60, 0xab, 0xea, 0x97, + 0x7f, 0xab, 0x67, 0x2b, 0xfc, 0x82, 0x2d, 0x69, 0xac, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0a, 0x06, 0x87, 0x02, 0x26, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x55, + 0xff, 0xec, 0x04, 0x11, 0x05, 0x1b, 0x00, 0x1d, 0x00, 0x42, 0xb9, 0x00, + 0x09, 0x01, 0xa1, 0xb4, 0x08, 0x00, 0x00, 0x03, 0x12, 0xb8, 0x01, 0x9d, + 0xb3, 0x11, 0x11, 0x06, 0x02, 0xb8, 0x01, 0xa1, 0x40, 0x11, 0x03, 0x01, + 0xa6, 0x06, 0x06, 0x04, 0x0d, 0xd8, 0x18, 0x44, 0x11, 0x4f, 0x08, 0x04, + 0x41, 0x03, 0x43, 0x00, 0x3f, 0x3f, 0x33, 0x3f, 0x3f, 0xed, 0x11, 0x39, + 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, + 0x33, 0xed, 0x30, 0x31, 0x01, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0xd9, 0xac, 0xd8, + 0xd8, 0xac, 0xd8, 0x1e, 0x27, 0x27, 0x21, 0xd3, 0x1c, 0x42, 0x6d, 0x51, + 0x50, 0x6c, 0x43, 0x1d, 0x02, 0x58, 0xfd, 0xa8, 0x05, 0x1b, 0xfd, 0xd7, + 0x02, 0x29, 0xfc, 0x0d, 0x3f, 0x3d, 0x3d, 0x3f, 0x02, 0xd0, 0xfd, 0x27, + 0x4c, 0x73, 0x4d, 0x27, 0x2b, 0x51, 0x77, 0x4c, 0x00, 0x02, 0x00, 0x5f, + 0xfe, 0x6f, 0x04, 0x14, 0x05, 0x30, 0x00, 0x11, 0x00, 0x1f, 0x00, 0x3a, + 0xb9, 0x00, 0x00, 0x01, 0xf9, 0xb4, 0x12, 0x12, 0x1d, 0x0a, 0x06, 0xbb, + 0x01, 0xce, 0x00, 0x07, 0x00, 0x1d, 0x01, 0x1c, 0xb4, 0x05, 0x05, 0x20, + 0x1c, 0x17, 0xb8, 0x01, 0x0c, 0xb6, 0x0a, 0x0d, 0x42, 0x08, 0x41, 0x07, + 0x45, 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0xed, + 0x01, 0x2f, 0xed, 0x32, 0x32, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, + 0x02, 0x06, 0x04, 0x07, 0x11, 0x23, 0x11, 0x33, 0x15, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x11, 0x36, 0x12, 0x04, 0x14, 0x63, 0xb8, 0xfe, 0xf9, 0xa5, 0xee, 0xe8, + 0x3d, 0xa9, 0x70, 0x5a, 0x8c, 0x5f, 0x32, 0xfa, 0x1e, 0x37, 0x4c, 0x2d, + 0x1f, 0x48, 0x46, 0x3d, 0x15, 0xe4, 0xe9, 0x03, 0x49, 0xb1, 0xfe, 0xe2, + 0xdb, 0x9a, 0x2d, 0xfe, 0x97, 0x06, 0xac, 0x7c, 0x42, 0x4f, 0x47, 0x80, + 0xb4, 0x6e, 0x47, 0x6a, 0x45, 0x22, 0x16, 0x29, 0x38, 0x22, 0xfc, 0xf7, + 0x49, 0x01, 0x42, 0x00, 0xff, 0xff, 0x00, 0x32, 0x00, 0x00, 0x04, 0x10, + 0x06, 0x87, 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3d, + 0x32, 0x00, 0xff, 0xff, 0xff, 0xb5, 0x00, 0x00, 0x04, 0x62, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x74, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x99, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x76, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xb5, 0x00, 0x00, 0x03, 0xcb, 0x06, 0x87, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x74, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xcb, 0x06, 0x99, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x76, 0x00, 0x00, 0xff, 0xff, 0xff, 0xb5, 0x00, 0x00, + 0x03, 0xd0, 0x06, 0x87, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x74, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, + 0x06, 0x99, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x76, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xb5, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x74, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x99, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x76, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xb5, 0x00, 0x00, 0x04, 0x35, 0x06, 0x87, 0x02, 0x26, 0x00, 0x15, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x74, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x35, 0x06, 0x99, 0x02, 0x26, 0x00, 0x15, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x76, 0x00, 0x00, 0xff, 0xff, 0xff, 0xb5, 0xff, 0xe9, + 0x04, 0x0f, 0x06, 0x87, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x74, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, + 0x06, 0x99, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x76, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x5c, 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x1b, + 0x00, 0x26, 0x00, 0x48, 0x40, 0x0b, 0x17, 0x11, 0x11, 0x0a, 0x13, 0x13, + 0x00, 0x12, 0x16, 0x16, 0x1e, 0xb8, 0x02, 0x05, 0x40, 0x0b, 0x0a, 0x0a, + 0x00, 0x11, 0x17, 0xc3, 0x10, 0x10, 0x14, 0x00, 0x05, 0xb8, 0x01, 0x0c, + 0xb3, 0x26, 0x23, 0x44, 0x13, 0xb8, 0x01, 0x17, 0xb1, 0x14, 0x41, 0x00, + 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x12, 0x39, + 0x2f, 0x33, 0x30, 0x31, 0x13, 0x16, 0x17, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x21, 0x35, 0x21, + 0x15, 0x01, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x27, 0x5c, 0x77, 0x63, 0x31, 0x67, 0x36, 0x3b, 0x5a, 0x3c, 0x1f, 0x16, + 0x44, 0x7d, 0x67, 0x84, 0x01, 0x51, 0xfd, 0xfc, 0x03, 0x47, 0xfe, 0x86, + 0x53, 0x81, 0x60, 0x42, 0x28, 0x12, 0x43, 0x83, 0xc3, 0x7f, 0x73, 0xc3, + 0x62, 0x01, 0x00, 0x25, 0x11, 0x08, 0x08, 0x20, 0x38, 0x4a, 0x2a, 0x2a, + 0x4f, 0x3d, 0x24, 0xbc, 0x01, 0x21, 0xde, 0xcf, 0xfe, 0xc4, 0x21, 0x37, + 0x4b, 0x53, 0x59, 0x2a, 0x65, 0x9f, 0x6f, 0x3b, 0x1d, 0x1f, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x06, 0x87, 0x02, 0x26, 0x00, 0x0b, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0x00, 0x01, 0x00, 0x8b, + 0xfe, 0x72, 0x03, 0xdd, 0x05, 0x31, 0x00, 0x16, 0x00, 0x32, 0xb1, 0x0b, + 0x07, 0xbb, 0x01, 0xf3, 0x00, 0x08, 0x00, 0x16, 0x01, 0xf3, 0xb4, 0x00, + 0x00, 0x08, 0x06, 0x03, 0xb8, 0x01, 0x0c, 0x40, 0x09, 0x0b, 0x10, 0x42, + 0x09, 0x41, 0x08, 0x43, 0x00, 0x45, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x30, 0x31, + 0x01, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, + 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x02, 0xe9, 0x7c, 0x3e, + 0x71, 0x3f, 0xf4, 0xd3, 0x06, 0x1f, 0x43, 0x4d, 0x5b, 0x38, 0x4e, 0x74, + 0x4e, 0x27, 0xfe, 0x72, 0x05, 0x47, 0xa7, 0x64, 0x56, 0xfc, 0x5a, 0x05, + 0x1b, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, 0x51, 0xfa, 0xa5, + 0x00, 0x02, 0x00, 0x5e, 0xff, 0xe8, 0x04, 0x08, 0x05, 0x1b, 0x00, 0x34, + 0x00, 0x44, 0x00, 0x61, 0x40, 0x09, 0x3a, 0x1c, 0x08, 0x2c, 0x2c, 0x17, + 0x0d, 0x34, 0x31, 0xb8, 0x01, 0xf3, 0xb4, 0x03, 0x00, 0x03, 0x03, 0x0d, + 0xb8, 0x01, 0xf8, 0xb4, 0x35, 0x35, 0x17, 0x22, 0x27, 0xb8, 0x01, 0xd2, + 0xb3, 0x21, 0x1f, 0x1f, 0x3f, 0xb8, 0x01, 0xf7, 0x40, 0x10, 0x17, 0x1c, + 0x08, 0x08, 0x3a, 0xd1, 0x2c, 0x2c, 0x00, 0x42, 0xde, 0x12, 0x44, 0x21, + 0x00, 0x41, 0x00, 0x3f, 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, + 0x11, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, + 0x2f, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x12, 0x39, 0x11, + 0x33, 0x33, 0x33, 0x30, 0x31, 0x01, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x34, 0x37, 0x33, 0x0e, 0x03, + 0x15, 0x14, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, 0x13, + 0x34, 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x03, 0x9d, 0x20, 0x1f, 0x1c, 0x36, 0x51, 0x35, 0x3a, 0x5f, 0x45, 0x26, + 0x27, 0x68, 0xb7, 0x90, 0x90, 0xb6, 0x68, 0x26, 0x25, 0x43, 0x5f, 0x3a, + 0x6a, 0x6b, 0x3f, 0xe6, 0x11, 0x14, 0x0a, 0x03, 0x1a, 0x30, 0x43, 0x28, + 0x2b, 0x43, 0x2f, 0x19, 0x10, 0x22, 0x59, 0x21, 0x3b, 0x51, 0x30, 0x32, + 0x52, 0x39, 0x1f, 0x68, 0x74, 0x74, 0x69, 0x05, 0x1b, 0x32, 0x6a, 0x36, + 0x32, 0x62, 0x5a, 0x50, 0x1f, 0x26, 0x4e, 0x5b, 0x71, 0x49, 0x46, 0x88, + 0x6b, 0x42, 0x40, 0x6a, 0x88, 0x49, 0x46, 0x70, 0x5d, 0x50, 0x26, 0x3f, + 0xb8, 0x65, 0x6e, 0x65, 0x1c, 0x31, 0x2c, 0x27, 0x11, 0x38, 0x56, 0x46, + 0x3b, 0x1d, 0x1d, 0x3b, 0x46, 0x56, 0x38, 0x22, 0x57, 0x38, 0xfc, 0x5e, + 0x24, 0x49, 0x46, 0x41, 0x1c, 0x1c, 0x41, 0x47, 0x48, 0x24, 0x5e, 0x6a, + 0x6a, 0x00, 0x00, 0x01, 0x00, 0x68, 0xfe, 0x5c, 0x03, 0xfe, 0x05, 0x1b, + 0x00, 0x1d, 0x00, 0x42, 0xb2, 0x14, 0x14, 0x1d, 0xb8, 0x01, 0x9d, 0x40, + 0x12, 0x08, 0x02, 0x06, 0x06, 0x08, 0x07, 0x01, 0x04, 0x04, 0x01, 0x14, + 0x17, 0xd4, 0x13, 0x10, 0x45, 0x06, 0x03, 0xb8, 0x01, 0x18, 0xb2, 0x04, + 0x41, 0x07, 0xb8, 0x01, 0x18, 0xb1, 0x00, 0x43, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0x33, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x33, 0x35, + 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x15, 0x23, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x35, 0x68, 0x02, 0x56, 0xfd, 0xbd, 0x03, 0x7b, 0xfd, 0xa6, 0x02, + 0x62, 0x01, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x51, 0x27, 0x16, 0x39, 0x1a, + 0x16, 0x23, 0x1a, 0x0e, 0xba, 0x03, 0x82, 0xdf, 0xc8, 0xfc, 0x8c, 0xdf, + 0x61, 0x63, 0x7e, 0x48, 0x1a, 0x04, 0x04, 0xc0, 0x05, 0x08, 0x0c, 0x22, + 0x3b, 0x30, 0x50, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, + 0x06, 0xa6, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, + 0x00, 0x00, 0xff, 0xff, 0x00, 0xb8, 0xfe, 0xd9, 0x03, 0xcb, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x54, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x07, 0x9e, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6a, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x79, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x41, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x41, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x72, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, + 0x06, 0x64, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, + 0x00, 0x00, 0xff, 0xff, 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, 0x05, 0x95, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x67, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, 0x05, 0x95, 0x02, 0x26, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x67, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x0c, 0x00, 0x00, 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0f, + 0x00, 0x00, 0x01, 0x07, 0x0a, 0x69, 0xff, 0x4e, 0x00, 0x00, 0x00, 0x0a, + 0xb4, 0x01, 0x0f, 0x06, 0x01, 0x06, 0x00, 0x11, 0x5d, 0x35, 0xff, 0xff, + 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, 0x05, 0x95, 0x02, 0x26, 0x00, 0x17, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x67, 0x00, 0x00, 0xff, 0xff, 0x01, 0x15, + 0x00, 0x00, 0x03, 0xcf, 0x05, 0x85, 0x02, 0x06, 0x06, 0x40, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, 0x05, 0x1b, 0x00, 0x16, + 0x00, 0x23, 0x00, 0x32, 0x00, 0x8d, 0xb1, 0x0e, 0x09, 0xb8, 0x01, 0xff, + 0x40, 0x09, 0x17, 0x17, 0x29, 0x30, 0x30, 0x29, 0x2e, 0x1e, 0x31, 0xb8, + 0x01, 0xf3, 0xb7, 0x01, 0x04, 0x01, 0x02, 0x02, 0x01, 0x01, 0x13, 0xb8, + 0x02, 0x06, 0x40, 0x3b, 0x29, 0x31, 0xaf, 0x02, 0x01, 0x02, 0x40, 0x18, + 0x1b, 0x48, 0x02, 0xd6, 0x03, 0x2e, 0x03, 0x0e, 0x2d, 0xd5, 0x1e, 0x10, + 0x03, 0x20, 0x03, 0xa0, 0x03, 0x03, 0x0f, 0x03, 0x1f, 0x03, 0x02, 0x03, + 0x40, 0x0f, 0x12, 0x48, 0x2f, 0x1e, 0xff, 0x1e, 0x02, 0x1e, 0x40, 0x0f, + 0x13, 0x48, 0x03, 0x1e, 0x03, 0x1e, 0x32, 0x1d, 0xda, 0x05, 0x41, 0x32, + 0xde, 0x00, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x2f, + 0x2f, 0x2b, 0x5d, 0x2b, 0x5d, 0x71, 0x10, 0xed, 0x39, 0x11, 0x33, 0x10, + 0xed, 0x2b, 0x71, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x32, 0x11, 0x39, 0x2f, 0x11, 0x33, 0x2f, 0xed, + 0x39, 0x30, 0x31, 0x33, 0x11, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x16, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x04, 0x23, 0x13, + 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, + 0x81, 0x81, 0x81, 0x01, 0xa6, 0xdf, 0xdf, 0x17, 0x30, 0x48, 0x31, 0x31, + 0x59, 0x43, 0x27, 0xfe, 0xf4, 0xfd, 0xd5, 0x18, 0x35, 0x53, 0x3b, 0x95, + 0x95, 0x3c, 0x53, 0x35, 0x17, 0xc4, 0x3b, 0x59, 0x3c, 0x1f, 0x7f, 0x83, + 0x99, 0xa5, 0xa5, 0x01, 0x25, 0xbe, 0x03, 0x38, 0x9c, 0x9e, 0x31, 0x5d, + 0x4e, 0x3c, 0x11, 0x08, 0x2f, 0x4b, 0x66, 0x3f, 0xc8, 0xc9, 0x03, 0xb6, + 0x25, 0x3c, 0x2a, 0x17, 0xfe, 0xa6, 0x1d, 0x33, 0x42, 0xfd, 0x39, 0x1e, + 0x35, 0x48, 0x29, 0x55, 0x60, 0x5f, 0xbe, 0x5c, 0x00, 0x02, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x18, 0x00, 0x25, 0x00, 0x44, + 0xb3, 0x0a, 0x0a, 0x08, 0x0b, 0xb8, 0x01, 0xf5, 0xb3, 0x05, 0x1f, 0x04, + 0x20, 0xb8, 0x01, 0xf5, 0x40, 0x15, 0x17, 0x18, 0x18, 0x01, 0x17, 0x20, + 0x0b, 0x18, 0xda, 0x08, 0x04, 0x00, 0x00, 0x02, 0x19, 0xe0, 0x11, 0x44, + 0x06, 0x02, 0x41, 0x00, 0x3f, 0x33, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x33, + 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x30, 0x31, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x35, 0x23, 0x01, 0x32, 0x3e, 0x02, 0x35, + 0x35, 0x21, 0x15, 0x14, 0x1e, 0x02, 0x61, 0xf6, 0x01, 0xb8, 0xf6, 0x61, + 0x61, 0x40, 0x79, 0xb1, 0x70, 0x80, 0xaf, 0x6c, 0x2f, 0x61, 0x02, 0x34, + 0x3b, 0x53, 0x35, 0x18, 0xfe, 0x48, 0x15, 0x33, 0x55, 0x03, 0x20, 0x01, + 0xfb, 0xfe, 0x05, 0x01, 0xfb, 0xfe, 0x05, 0xc3, 0x7c, 0x7d, 0xbd, 0x7e, + 0x40, 0x40, 0x78, 0xac, 0x6b, 0xa5, 0xfe, 0x57, 0x1f, 0x45, 0x6c, 0x4d, + 0x8c, 0x96, 0x42, 0x66, 0x47, 0x24, 0xff, 0xff, 0x00, 0x04, 0x00, 0x00, + 0x04, 0x62, 0x05, 0x1b, 0x02, 0x06, 0x01, 0x9a, 0x00, 0x00, 0xff, 0xff, + 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, 0x05, 0x95, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x67, 0x00, 0x00, 0xff, 0xff, 0x00, 0xac, + 0xff, 0xec, 0x04, 0x5c, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0d, 0x00, 0x00, + 0x01, 0x07, 0x0a, 0x69, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x0a, 0xb4, 0x01, + 0x0f, 0x18, 0x01, 0x18, 0x00, 0x11, 0x5d, 0x35, 0x00, 0x02, 0x00, 0x39, + 0xfe, 0x62, 0x04, 0xe8, 0x05, 0x2e, 0x00, 0x29, 0x00, 0x39, 0x00, 0x45, + 0xb9, 0x00, 0x35, 0x02, 0x02, 0xb3, 0x0a, 0x1e, 0x1e, 0x16, 0xb8, 0x01, + 0xc9, 0xb4, 0x2d, 0x14, 0x00, 0x1e, 0x1b, 0xb8, 0x01, 0x10, 0x40, 0x0d, + 0x1f, 0x24, 0x45, 0x15, 0x42, 0x2e, 0x30, 0xd9, 0x14, 0x0f, 0x42, 0x2d, + 0x2a, 0xb8, 0x01, 0x0d, 0xb2, 0x00, 0x05, 0x44, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x33, 0xed, 0x32, 0x2f, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x0e, 0x03, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x17, 0x37, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x27, 0x32, 0x36, 0x37, 0x11, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x02, 0xfa, 0x12, + 0x31, 0x41, 0x53, 0x34, 0x5a, 0x9f, 0x78, 0x45, 0x3e, 0x81, 0xc8, 0x8b, + 0x19, 0x42, 0x43, 0x3d, 0x15, 0xa8, 0x09, 0x1e, 0x37, 0x2e, 0x24, 0x3a, + 0x1b, 0x11, 0x20, 0x26, 0x30, 0x21, 0x5a, 0x7d, 0x4d, 0x22, 0xe5, 0x3f, + 0x6a, 0x31, 0x50, 0x3f, 0x4e, 0x6e, 0x46, 0x21, 0x25, 0x3d, 0x4d, 0x5f, + 0x16, 0x2b, 0x21, 0x14, 0x53, 0xa2, 0xf0, 0x9c, 0x95, 0x01, 0x02, 0xbf, + 0x6d, 0x06, 0x0a, 0x0d, 0x07, 0x25, 0xfa, 0xdb, 0x2d, 0x4c, 0x37, 0x20, + 0x06, 0x06, 0xd2, 0x04, 0x06, 0x05, 0x02, 0x30, 0x5c, 0x88, 0x58, 0xef, + 0x3d, 0x4b, 0x03, 0x0e, 0x18, 0x44, 0x7e, 0xb3, 0x6f, 0x82, 0xaf, 0x6b, + 0x2e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x35, 0x05, 0x1b, + 0x00, 0x1b, 0x00, 0x26, 0x00, 0x44, 0xb3, 0x12, 0x11, 0x11, 0x08, 0xb8, + 0x02, 0x00, 0xb4, 0x0d, 0x1c, 0x1c, 0x21, 0x18, 0xb8, 0x01, 0xf5, 0x40, + 0x14, 0x19, 0x1b, 0x1b, 0x02, 0x19, 0x0d, 0x17, 0x1b, 0xd8, 0x21, 0x00, + 0x00, 0x02, 0x19, 0x11, 0x43, 0x20, 0xe2, 0x02, 0x41, 0x00, 0x3f, 0xed, + 0x3f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x39, 0x01, 0x2f, 0x33, + 0x33, 0x2f, 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, + 0x30, 0x31, 0x11, 0x33, 0x11, 0x21, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x16, 0x16, 0x17, 0x13, 0x21, 0x03, 0x26, 0x26, 0x23, 0x23, + 0x11, 0x23, 0x11, 0x23, 0x01, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, + 0x3e, 0x02, 0x90, 0x01, 0x6e, 0x6c, 0xb0, 0x7c, 0x43, 0x2a, 0x4c, 0x69, + 0x3e, 0x30, 0x50, 0x28, 0xd1, 0xfe, 0xdf, 0xb8, 0x1a, 0x5d, 0x3f, 0x20, + 0xf6, 0x90, 0x02, 0xd7, 0x7a, 0x7a, 0x5d, 0x55, 0x39, 0x5d, 0x42, 0x24, + 0x02, 0xdd, 0x02, 0x3e, 0x25, 0x56, 0x8a, 0x64, 0x48, 0x70, 0x51, 0x32, + 0x0a, 0x0a, 0x58, 0x55, 0xfe, 0x4a, 0x01, 0xa4, 0x3c, 0x3d, 0xfd, 0xe3, + 0x02, 0x1d, 0x01, 0x7d, 0x60, 0x54, 0xfe, 0x8f, 0x18, 0x30, 0x46, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x11, + 0x00, 0x14, 0x00, 0x7a, 0x40, 0x12, 0x05, 0x12, 0x06, 0x04, 0x14, 0x12, + 0x03, 0x12, 0x01, 0x10, 0x0f, 0x02, 0x0f, 0x08, 0x0b, 0x0c, 0x07, 0x0c, + 0xb8, 0x01, 0xf9, 0x40, 0x29, 0x0f, 0x0f, 0x02, 0x06, 0x07, 0x03, 0x02, + 0x0f, 0x0c, 0x12, 0x13, 0x0b, 0x0b, 0x14, 0x10, 0x11, 0xda, 0x00, 0x05, + 0x08, 0x08, 0x04, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x12, 0x00, 0x12, 0x00, + 0x02, 0x0d, 0x43, 0x07, 0x41, 0x03, 0x41, 0x06, 0x02, 0x41, 0x00, 0x3f, + 0x33, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x71, 0x11, 0x33, + 0x33, 0x33, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x32, 0x11, 0x33, 0x11, + 0x33, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0xfd, 0x7d, + 0x87, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0x01, 0x18, 0x2f, 0x7d, 0x87, + 0xc4, 0xc4, 0x87, 0xc4, 0x31, 0x30, 0x11, 0x33, 0x27, 0x21, 0x17, 0x21, + 0x37, 0x21, 0x07, 0x33, 0x15, 0x23, 0x03, 0x11, 0x23, 0x11, 0x03, 0x23, + 0x05, 0x37, 0x23, 0x72, 0x68, 0x01, 0x11, 0x63, 0x01, 0x6d, 0x69, 0x01, + 0x06, 0x6a, 0x76, 0xd9, 0xe0, 0xfa, 0xdf, 0xd4, 0x02, 0x33, 0x56, 0xaf, + 0x04, 0x4b, 0xd0, 0xd0, 0xd0, 0xd0, 0xc3, 0xfe, 0x47, 0xfe, 0x31, 0x01, + 0xcd, 0x01, 0xbb, 0xc7, 0xc7, 0x00, 0xff, 0xff, 0x00, 0x04, 0xfd, 0xf2, + 0x04, 0x62, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x03, 0xda, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x19, + 0x06, 0xa6, 0x02, 0x26, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, 0xfe, 0x4d, 0x04, 0x19, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x19, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x05, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, + 0x00, 0x2e, 0xb1, 0x03, 0x2c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, + 0x2c, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x2c, 0x40, 0x10, + 0x10, 0x48, 0x2c, 0x40, 0x0d, 0x0d, 0x48, 0x2c, 0xb8, 0xff, 0xc0, 0xb3, + 0x0a, 0x0b, 0x48, 0x2c, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0xd9, 0x03, 0xec, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x31, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x56, + 0xfe, 0x4d, 0x04, 0x31, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, + 0x04, 0x31, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x02, 0x19, 0xb8, + 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0x40, 0x0e, + 0x11, 0x12, 0x48, 0x19, 0x40, 0x10, 0x10, 0x48, 0x19, 0x40, 0x0d, 0x0d, + 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0x00, 0x11, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x04, + 0x04, 0x31, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, 0x01, 0x07, + 0x03, 0xc8, 0x00, 0x00, 0xfa, 0x0c, 0x00, 0x69, 0xb1, 0x02, 0x27, 0xb8, + 0xff, 0xc0, 0xb3, 0x1e, 0x1e, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x1a, 0x1a, 0x48, 0x27, 0xb8, + 0xff, 0xc0, 0xb3, 0x18, 0x18, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x16, + 0x16, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x14, 0x48, 0x27, 0xb8, + 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x27, 0xb8, 0xff, 0x80, 0xb3, 0x0e, + 0x0e, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x0d, 0x0d, 0x48, 0x27, 0xb8, + 0xff, 0x80, 0xb3, 0x0a, 0x0c, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x09, + 0x09, 0x48, 0x27, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, + 0x04, 0x31, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x07, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x40, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x4e, 0xb1, 0x02, 0x1e, 0xb8, + 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x1e, 0xb8, + 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x1e, 0xb8, 0xff, 0x80, 0xb3, 0x0e, + 0x0e, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x1e, 0xb8, + 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x09, + 0x09, 0x48, 0x1e, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x07, 0x99, + 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x59, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x07, 0x99, 0x02, 0x26, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x63, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xcb, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x4e, + 0xb1, 0x01, 0x12, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x12, 0xb8, + 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x12, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x12, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x12, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x12, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0c, 0x48, 0x12, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x12, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x12, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, + 0x03, 0xcb, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, 0x1b, 0xb8, + 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x20, + 0x20, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, 0x1b, 0xb8, + 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x1b, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0c, 0x48, 0x1b, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x1b, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x1b, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0xd9, 0x03, 0xcb, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x26, 0x01, 0x54, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xbc, 0x06, 0xa6, 0x02, 0x26, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x2f, 0xff, 0xe9, 0x04, 0x0a, 0x06, 0x64, 0x02, 0x26, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x32, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x07, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x5f, 0xfe, 0x4d, + 0x04, 0x07, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, + 0x06, 0x9a, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x24, 0xfe, 0xd9, 0x04, 0x07, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x07, 0x01, 0x54, 0xfe, 0x80, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x27, 0x04, 0x07, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, 0x01, 0x4b, 0x00, 0x00, + 0xfa, 0x2f, 0x00, 0x5e, 0xb1, 0x01, 0x16, 0xb8, 0xff, 0xc0, 0xb3, 0x24, + 0x24, 0x48, 0x16, 0xb8, 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, 0x16, 0xb8, + 0xff, 0xc0, 0x40, 0x09, 0x1c, 0x1e, 0x48, 0x16, 0x40, 0x17, 0x17, 0x48, + 0x16, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x16, 0xb8, 0xff, 0xc0, + 0xb3, 0x0f, 0x0f, 0x48, 0x16, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, + 0x16, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0d, 0x48, 0x16, 0xb8, 0xff, 0x80, + 0xb3, 0x0a, 0x0b, 0x48, 0x16, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, + 0x16, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xd0, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x24, + 0x24, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, 0x1b, 0xb8, + 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, 0x1b, 0xb8, 0xff, 0x80, 0xb3, 0x1c, + 0x1c, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x1b, 0xb8, + 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x1b, 0xb8, 0xff, 0x80, 0xb3, 0x0e, + 0x0e, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x1b, 0xb8, + 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x09, + 0x09, 0x48, 0x1b, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe1, + 0x07, 0x9e, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6c, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x81, 0xfe, 0x4d, 0x04, 0x42, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x42, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0e, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, + 0xb1, 0x01, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0c, 0xb8, + 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x0c, 0x40, 0x10, 0x10, 0x48, + 0x0c, 0x40, 0x0d, 0x0d, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, + 0x48, 0x0c, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0xc5, 0xfe, 0x4d, 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x3c, 0x00, 0xff, 0xff, 0x00, 0x28, + 0xfe, 0x4d, 0x03, 0xe7, 0x06, 0x64, 0x02, 0x26, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x26, 0x02, 0xd7, 0x3c, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x28, 0x00, + 0xff, 0xff, 0x00, 0x32, 0xfe, 0x1d, 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x0f, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x32, 0xfa, 0x25, + 0x00, 0x2e, 0xb1, 0x01, 0x07, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, + 0x07, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x07, 0x40, 0x10, + 0x10, 0x48, 0x07, 0x40, 0x0d, 0x0d, 0x48, 0x07, 0xb8, 0xff, 0xc0, 0xb3, + 0x0a, 0x0b, 0x48, 0x07, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0xff, 0xff, 0x00, 0x32, 0xfe, 0x1d, 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x0f, 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x32, 0xfa, 0x25, + 0x00, 0x4e, 0xb1, 0x01, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, + 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0c, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, + 0x0c, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x0c, 0xb8, 0xff, 0xc0, + 0xb3, 0x0c, 0x0c, 0x48, 0x0c, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, + 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x0c, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x39, 0x06, 0x87, 0x02, 0x26, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x39, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x2d, 0xfe, 0x4d, 0x04, 0x39, + 0x05, 0x1b, 0x02, 0x26, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x06, 0xa6, + 0x02, 0x26, 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x5e, 0xfe, 0x4d, 0x04, 0x10, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x11, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x10, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x11, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, + 0xb1, 0x01, 0x0f, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0f, 0xb8, + 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x0f, 0x40, 0x10, 0x10, 0x48, + 0x0f, 0x40, 0x0d, 0x0d, 0x48, 0x0f, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, + 0x48, 0x0f, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x27, 0x04, 0x10, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x11, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x45, + 0xb1, 0x01, 0x14, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x14, 0xb8, + 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x14, 0xb8, 0xff, 0xc0, 0xb3, 0x18, + 0x18, 0x48, 0x14, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x14, 0xb8, + 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, 0x14, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, + 0x0b, 0x48, 0x14, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x0f, 0x48, 0x14, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x56, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x41, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x64, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x41, 0x07, 0x99, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x59, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, + 0x07, 0x99, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x63, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12, 0x06, 0x87, + 0x02, 0x26, 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x12, 0x06, 0xa6, 0x02, 0x26, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x35, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x15, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x81, + 0xfe, 0x4d, 0x04, 0x35, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x15, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, + 0x04, 0x35, 0x06, 0x64, 0x02, 0x26, 0x00, 0x15, 0x00, 0x00, 0x00, 0x26, + 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x35, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x15, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, + 0xb1, 0x02, 0x24, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x24, 0xb8, + 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x24, 0x40, 0x10, 0x10, 0x48, + 0x24, 0x40, 0x0d, 0x0d, 0x48, 0x24, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, + 0x48, 0x24, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xfc, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x62, + 0xfe, 0x4d, 0x03, 0xfc, 0x05, 0x31, 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x08, 0x07, 0x6c, 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x65, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xfc, + 0x07, 0x9e, 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x5f, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x03, 0xfc, 0x06, 0xa6, + 0x02, 0x26, 0x00, 0x16, 0x00, 0x00, 0x00, 0x26, 0x01, 0x53, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x17, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x17, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4f, 0xfe, 0x4d, 0x04, 0x17, + 0x05, 0x1b, 0x02, 0x26, 0x00, 0x17, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x17, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x17, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x09, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x09, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x09, + 0x40, 0x10, 0x10, 0x48, 0x09, 0x40, 0x0d, 0x0d, 0x48, 0x09, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x09, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x17, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x17, 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x4e, 0xb1, 0x01, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x24, + 0x24, 0x48, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0e, 0xb8, + 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, + 0x0f, 0x48, 0x0e, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x0e, 0xb8, + 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x0e, 0xb8, 0xff, 0x80, 0xb3, 0x0a, + 0x0b, 0x48, 0x0e, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x0e, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x57, 0xfe, 0x9c, 0x04, 0x0f, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x06, 0x03, 0xd9, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x04, 0x0f, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, + 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x29, 0xb8, 0xff, 0xc0, + 0xb3, 0x20, 0x20, 0x48, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, + 0x29, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x29, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, + 0x29, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x29, 0xb8, 0xff, 0xc0, + 0xb3, 0x0c, 0x0c, 0x48, 0x29, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, + 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x29, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x0f, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x18, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x4e, + 0xb1, 0x01, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x20, 0xb8, + 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x20, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0c, 0x48, 0x20, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x20, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x20, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, + 0x04, 0x0f, 0x07, 0x9e, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x56, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x0f, + 0x07, 0x9e, 0x02, 0x26, 0x00, 0x18, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x5c, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x06, 0xa0, + 0x02, 0x26, 0x00, 0x19, 0x00, 0x00, 0x00, 0x06, 0x01, 0x46, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x04, 0x66, 0x05, 0x1b, 0x02, 0x26, + 0x00, 0x19, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x46, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x21, + 0xfe, 0x4d, 0x04, 0x46, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x1a, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x5e, 0x06, 0xa6, 0x02, 0x26, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x53, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5e, + 0x06, 0x9a, 0x02, 0x26, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x06, 0xa6, + 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x53, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x1d, 0x00, 0x00, 0x00, 0x06, 0x01, 0x41, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x68, 0xfe, 0x4d, 0x03, 0xfe, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x1d, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xfe, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x1d, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, + 0x0b, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0b, 0xb8, 0xff, 0xc0, + 0x40, 0x0e, 0x11, 0x12, 0x48, 0x0b, 0x40, 0x10, 0x10, 0x48, 0x0b, 0x40, + 0x0d, 0x0d, 0x48, 0x0b, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x0b, + 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0xff, 0xdf, + 0x00, 0x00, 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x27, 0x0a, 0x69, 0xff, 0x21, 0xff, 0x73, 0x01, 0x07, 0x0a, 0x69, + 0xff, 0x21, 0x00, 0x8e, 0x00, 0x24, 0x40, 0x18, 0x01, 0x06, 0x40, 0x09, + 0x09, 0x48, 0x06, 0x02, 0x0a, 0x40, 0x23, 0x23, 0x48, 0x0a, 0x40, 0x0f, + 0x15, 0x48, 0x0a, 0x40, 0x09, 0x09, 0x48, 0x0a, 0x00, 0x11, 0x2b, 0x2b, + 0x2b, 0x35, 0x00, 0x11, 0x2b, 0x35, 0xff, 0xff, 0xff, 0x19, 0x00, 0x00, + 0x03, 0xe7, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x07, + 0x01, 0x45, 0xff, 0x19, 0xfd, 0xce, 0xff, 0xff, 0xff, 0x89, 0x00, 0x00, + 0x04, 0x12, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x13, 0x00, 0x00, 0x01, 0x07, + 0x0a, 0x69, 0xfe, 0xcb, 0x00, 0xd4, 0x00, 0x4c, 0x40, 0x15, 0x1f, 0x40, + 0x18, 0x18, 0x48, 0x1e, 0x40, 0x18, 0x18, 0x48, 0x1f, 0x40, 0x11, 0x11, + 0x48, 0x1e, 0x40, 0x11, 0x11, 0x48, 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x12, + 0x12, 0x48, 0x1c, 0xb8, 0xff, 0xc0, 0xb3, 0x12, 0x12, 0x48, 0x1d, 0xb8, + 0xff, 0xc0, 0xb3, 0x0f, 0x10, 0x48, 0x1c, 0xb8, 0xff, 0xc0, 0xb4, 0x0f, + 0x10, 0x48, 0x02, 0x1c, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0a, 0x48, 0x1c, + 0x00, 0x11, 0x2b, 0x35, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x00, 0x02, 0x00, 0x81, 0xfe, 0x5c, 0x04, 0x35, 0x05, 0x1b, 0x00, 0x29, + 0x00, 0x34, 0x00, 0x4d, 0xb9, 0x00, 0x23, 0x02, 0x23, 0xb3, 0x24, 0x24, + 0x1f, 0x1a, 0xb8, 0x02, 0x00, 0xb6, 0x2a, 0x2a, 0x13, 0x2f, 0x08, 0x08, + 0x00, 0xb8, 0x01, 0xf5, 0x40, 0x14, 0x13, 0x1f, 0x29, 0xd8, 0x2f, 0x2f, + 0x14, 0x24, 0x08, 0x05, 0xd9, 0x09, 0x0e, 0x0e, 0x24, 0x43, 0x2e, 0xe2, + 0x14, 0x41, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, + 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x11, + 0x33, 0x2f, 0xed, 0x33, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x05, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x11, 0x21, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, + 0x16, 0x17, 0x13, 0x21, 0x03, 0x26, 0x26, 0x23, 0x23, 0x01, 0x34, 0x26, + 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x77, 0x0d, 0x1a, 0x26, + 0x19, 0x1a, 0x34, 0x16, 0x14, 0x33, 0x34, 0x31, 0x10, 0x3c, 0x60, 0x43, + 0x25, 0x01, 0x7d, 0x6c, 0xb0, 0x7c, 0x43, 0x2a, 0x4c, 0x69, 0x3e, 0x30, + 0x50, 0x28, 0xd1, 0xfe, 0xdf, 0xb8, 0x1a, 0x5d, 0x3f, 0x2f, 0x01, 0x60, + 0x7a, 0x7a, 0x6c, 0x64, 0x39, 0x5d, 0x42, 0x24, 0x49, 0x30, 0x3b, 0x22, + 0x0c, 0x08, 0x05, 0xc4, 0x03, 0x04, 0x03, 0x01, 0x1a, 0x48, 0x7e, 0x63, + 0x05, 0x7c, 0x25, 0x56, 0x8a, 0x64, 0x48, 0x70, 0x51, 0x32, 0x0a, 0x0a, + 0x59, 0x54, 0xfe, 0x4a, 0x01, 0xa4, 0x3c, 0x3d, 0x01, 0x7d, 0x60, 0x54, + 0xfe, 0x8f, 0x18, 0x30, 0x47, 0x00, 0xff, 0xff, 0x00, 0x5f, 0xfe, 0xe5, + 0x04, 0x66, 0x05, 0x1b, 0x02, 0x06, 0x09, 0x44, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x81, 0xfe, 0xe5, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x0e, 0x00, 0x4c, + 0xb2, 0x0a, 0x03, 0x06, 0xb8, 0x01, 0xf9, 0x40, 0x09, 0x05, 0x08, 0x09, + 0x09, 0x0b, 0x0b, 0x01, 0x01, 0x0c, 0xb8, 0x01, 0xf5, 0x40, 0x10, 0x00, + 0x00, 0x05, 0x07, 0x02, 0x0a, 0x0a, 0x03, 0x08, 0x05, 0x41, 0x03, 0x43, + 0x0e, 0x0e, 0x0b, 0xb8, 0x01, 0x0e, 0xb1, 0x01, 0x43, 0x00, 0x3f, 0xed, + 0x33, 0x2f, 0x3f, 0x3f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x10, 0xed, + 0x32, 0x32, 0x30, 0x31, 0x21, 0x23, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x01, 0x21, 0x01, 0x01, 0x33, 0x03, 0x23, 0x03, 0x70, 0x6c, 0xfe, 0x77, + 0xfa, 0xfa, 0x01, 0x87, 0x01, 0x29, 0xfe, 0x44, 0x01, 0x43, 0xb4, 0x10, + 0xe6, 0x02, 0x78, 0xfd, 0x88, 0x05, 0x1b, 0xfd, 0xad, 0x02, 0x53, 0xfd, + 0x91, 0xfe, 0x29, 0xfe, 0x10, 0x00, 0x00, 0x01, 0x00, 0x68, 0xfe, 0xe5, + 0x04, 0x08, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x3a, 0x40, 0x09, 0x0b, 0x05, + 0x07, 0x07, 0x05, 0x06, 0x0a, 0x0a, 0x03, 0xb8, 0x01, 0xf7, 0xb2, 0x00, + 0x0a, 0x06, 0xb8, 0x01, 0x18, 0xb3, 0x08, 0x41, 0x05, 0x0b, 0xb8, 0x01, + 0x18, 0xb4, 0x04, 0x02, 0x02, 0x04, 0x43, 0x00, 0x3f, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x30, 0x31, 0x25, 0x03, 0x23, 0x11, 0x21, 0x35, + 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x04, 0x08, 0x12, 0xe6, 0xfd, 0x58, + 0x02, 0x56, 0xfd, 0xbd, 0x03, 0x7b, 0xfd, 0xa6, 0xdf, 0xfe, 0x06, 0x01, + 0x1b, 0xba, 0x03, 0x82, 0xdf, 0xc8, 0xfc, 0x8c, 0x00, 0x01, 0x00, 0x7a, + 0xff, 0xee, 0x04, 0x14, 0x05, 0x2d, 0x00, 0x25, 0x00, 0x31, 0xb9, 0x00, + 0x1d, 0x02, 0x1d, 0xb7, 0x0a, 0x0a, 0x00, 0x12, 0x12, 0x00, 0x00, 0x05, + 0xb8, 0x01, 0x16, 0xb4, 0x25, 0x22, 0x44, 0x12, 0x0f, 0xb8, 0x01, 0x12, + 0xb2, 0x13, 0x18, 0x42, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x13, + 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x16, 0x12, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x7a, 0x21, 0x4d, 0x4f, 0x4d, 0x21, + 0x5c, 0x86, 0x56, 0x29, 0x28, 0x55, 0x84, 0x5d, 0x3f, 0x9a, 0x55, 0x2a, + 0x4e, 0x4c, 0x4f, 0x2d, 0x8b, 0xdf, 0x9c, 0x54, 0x4d, 0x95, 0xd9, 0x8d, + 0x58, 0xa3, 0x57, 0x01, 0x19, 0x0f, 0x1d, 0x15, 0x0d, 0x3d, 0x74, 0xa7, + 0x6a, 0x64, 0xa7, 0x79, 0x43, 0x22, 0x28, 0xf4, 0x0e, 0x12, 0x0b, 0x04, + 0x5d, 0xb1, 0xfe, 0xff, 0xa5, 0xa1, 0xf3, 0xa4, 0x53, 0x22, 0x23, 0x00, + 0x00, 0x01, 0x00, 0xaa, 0xff, 0xff, 0x03, 0xae, 0x05, 0x1a, 0x00, 0x09, + 0x00, 0x2f, 0xb9, 0x00, 0x07, 0x01, 0xf9, 0x40, 0x0d, 0x04, 0x00, 0x00, + 0x09, 0x02, 0x02, 0x09, 0x02, 0xdf, 0x03, 0x03, 0x05, 0x09, 0xb8, 0x01, + 0x0b, 0xb3, 0x08, 0x43, 0x05, 0x41, 0x00, 0x3f, 0x3f, 0xed, 0x11, 0x39, + 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x30, + 0x31, 0x25, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x21, 0x35, 0x02, + 0xb4, 0xfe, 0x12, 0x01, 0xee, 0xfa, 0xfc, 0xfc, 0xcf, 0x01, 0x6a, 0xca, + 0x02, 0x17, 0xfa, 0xe5, 0xd0, 0x00, 0x00, 0x01, 0x00, 0x73, 0x00, 0x00, + 0x03, 0xfe, 0x05, 0x1b, 0x00, 0x07, 0x00, 0x23, 0xb1, 0x06, 0x02, 0xb8, + 0x01, 0xf5, 0xb2, 0x03, 0x00, 0x01, 0xb8, 0x01, 0x0e, 0xb6, 0x06, 0x06, + 0x02, 0x04, 0x41, 0x02, 0x43, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, + 0x01, 0x2f, 0x2f, 0xed, 0x32, 0x30, 0x31, 0x01, 0x21, 0x11, 0x23, 0x11, + 0x33, 0x11, 0x21, 0x03, 0xfe, 0xfd, 0x6b, 0xf6, 0xf6, 0x02, 0x95, 0x02, + 0x39, 0xfd, 0xc7, 0x05, 0x1b, 0xfd, 0xf3, 0x00, 0x00, 0x02, 0x00, 0x00, + 0xff, 0xee, 0x04, 0x1d, 0x05, 0x85, 0x00, 0x1b, 0x00, 0x2c, 0x00, 0x4e, + 0x40, 0x0a, 0x0c, 0x08, 0x14, 0x13, 0x0f, 0x25, 0x11, 0x11, 0x08, 0x00, + 0xbb, 0x02, 0x17, 0x00, 0x1c, 0x00, 0x25, 0x02, 0x0b, 0xb2, 0x0a, 0x08, + 0x21, 0xb8, 0x01, 0x31, 0x40, 0x13, 0x17, 0x50, 0x12, 0x8f, 0x0a, 0x01, + 0x0a, 0xcc, 0x0f, 0x3f, 0x0b, 0x01, 0x0b, 0x0d, 0x53, 0x28, 0xfc, 0x05, + 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xd6, 0x71, 0x32, 0xed, 0x5d, 0x32, 0x3f, + 0xed, 0x01, 0x2f, 0xc6, 0xed, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x11, 0x33, + 0x33, 0x33, 0x11, 0x33, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, + 0x15, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, + 0x1d, 0x4f, 0x8d, 0xc0, 0x71, 0x6f, 0xbf, 0x57, 0x8b, 0x8b, 0xf4, 0xf0, + 0xf0, 0x0a, 0x37, 0x93, 0x67, 0x5a, 0x8c, 0x5f, 0x32, 0xff, 0x00, 0x18, + 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x55, 0x2c, 0x3a, 0x5f, 0x43, + 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, 0x41, 0x21, 0x1c, 0x04, 0x29, 0xae, + 0x83, 0x83, 0xae, 0x25, 0xc8, 0x47, 0x56, 0x48, 0x85, 0xbd, 0x76, 0x4a, + 0x76, 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x4e, 0x0b, 0x0e, 0x30, 0x58, 0x7f, + 0x00, 0x02, 0x00, 0x8b, 0xff, 0xee, 0x04, 0x1d, 0x05, 0x85, 0x00, 0x15, + 0x00, 0x26, 0x00, 0x37, 0xb2, 0x0e, 0x0d, 0x1f, 0xb8, 0x02, 0x0b, 0xb4, + 0x08, 0x0b, 0x0b, 0x08, 0x00, 0xb8, 0x02, 0x17, 0xb2, 0x16, 0x08, 0x1b, + 0xb8, 0x01, 0x31, 0x40, 0x0a, 0x11, 0x50, 0x0c, 0xff, 0x09, 0x53, 0x22, + 0xfc, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, + 0xd4, 0xed, 0x11, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x32, 0x31, 0x30, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x21, 0x15, 0x21, 0x15, + 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, + 0x4f, 0x8d, 0xc0, 0x71, 0x6f, 0xbf, 0x57, 0x03, 0x29, 0xfd, 0xcb, 0x0a, + 0x37, 0x93, 0x67, 0x5a, 0x8c, 0x5f, 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, + 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x55, 0x2c, 0x3a, 0x5f, 0x43, 0x24, 0x02, + 0x0e, 0x8c, 0xcc, 0x87, 0x41, 0x21, 0x1c, 0x05, 0x5a, 0xc3, 0x90, 0xc8, + 0x47, 0x56, 0x48, 0x85, 0xbd, 0x79, 0x4d, 0x76, 0x4c, 0x23, 0x64, 0x56, + 0xfe, 0x4b, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x00, 0x02, 0x00, 0x0a, + 0xff, 0xee, 0x04, 0x1d, 0x05, 0x89, 0x00, 0x10, 0x00, 0x2e, 0x00, 0x32, + 0xb2, 0x1e, 0x1d, 0x09, 0xbb, 0x02, 0x0b, 0x00, 0x2e, 0x00, 0x26, 0x02, + 0x17, 0x40, 0x09, 0x00, 0x00, 0x14, 0x2e, 0x0c, 0xfc, 0x2b, 0x52, 0x05, + 0xb8, 0x01, 0x31, 0xb3, 0x21, 0x50, 0x19, 0x53, 0x00, 0x3f, 0x3f, 0xed, + 0x3f, 0xed, 0x01, 0x2f, 0xc4, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x32, + 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x15, 0x11, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x03, 0x1d, 0x18, 0x2d, + 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x55, 0x2c, 0x3a, 0x5f, 0x43, 0x24, + 0xfd, 0x6e, 0x3c, 0x45, 0x28, 0x52, 0x7c, 0x55, 0x17, 0x13, 0x0a, 0x37, + 0x93, 0x67, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8d, 0xc0, 0x71, 0x6f, 0xbf, + 0x57, 0x02, 0x04, 0x54, 0x76, 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x44, 0x0b, + 0x0e, 0x30, 0x58, 0x7f, 0x02, 0x7b, 0x1b, 0x44, 0x2f, 0x1d, 0x47, 0x3d, + 0x2a, 0x13, 0x13, 0xfe, 0xd6, 0xc8, 0x47, 0x56, 0x48, 0x85, 0xbd, 0x76, + 0x8c, 0xcc, 0x87, 0x41, 0x21, 0x1c, 0x00, 0x01, 0x00, 0x85, 0xff, 0xee, + 0x04, 0x70, 0x04, 0xf4, 0x00, 0x35, 0x00, 0x41, 0xb9, 0x00, 0x0f, 0x01, + 0x8e, 0xb6, 0x23, 0x23, 0x00, 0x00, 0x08, 0x19, 0x2b, 0xb8, 0x02, 0x1b, + 0xb2, 0x08, 0x23, 0x26, 0xb8, 0x01, 0x31, 0x40, 0x0a, 0x0d, 0x1d, 0xcf, + 0x14, 0x14, 0x0f, 0x0d, 0x50, 0x35, 0x30, 0xb8, 0x01, 0x34, 0xb1, 0x03, + 0x52, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0x33, 0x2f, 0xed, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0xed, 0x31, + 0x30, 0x25, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x26, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x03, 0xc1, + 0x48, 0x99, 0x55, 0x79, 0xc0, 0x86, 0x47, 0x4d, 0x8c, 0xc5, 0x79, 0x2d, + 0x29, 0x08, 0x27, 0x42, 0x5e, 0x3e, 0x14, 0x1e, 0x1a, 0x17, 0x0e, 0x13, + 0x27, 0x1a, 0x19, 0x24, 0x18, 0x0b, 0x3f, 0x8f, 0x42, 0x44, 0x6c, 0x4a, + 0x27, 0x2a, 0x4d, 0x6c, 0x42, 0x20, 0x47, 0x47, 0x45, 0x1e, 0x27, 0x1d, + 0x1c, 0x42, 0x82, 0xc0, 0x7e, 0x7a, 0xc6, 0x8c, 0x4c, 0x03, 0x41, 0x5b, + 0x39, 0x1a, 0x01, 0x03, 0x03, 0x03, 0xb4, 0x06, 0x06, 0x0d, 0x20, 0x35, + 0x28, 0xc2, 0x1f, 0x22, 0x2e, 0x52, 0x75, 0x46, 0x49, 0x74, 0x51, 0x2b, + 0x09, 0x11, 0x16, 0x0d, 0x00, 0x02, 0x00, 0x4a, 0xff, 0xe9, 0x03, 0xdb, + 0x05, 0x85, 0x00, 0x18, 0x00, 0x29, 0x00, 0x39, 0xb9, 0x00, 0x18, 0x02, + 0x0b, 0xb4, 0x13, 0x01, 0x21, 0x21, 0x19, 0xb8, 0x02, 0x17, 0x40, 0x0d, + 0x0b, 0x15, 0x15, 0x0b, 0x15, 0xff, 0x16, 0x53, 0x25, 0xfc, 0x10, 0x50, + 0x1e, 0xb8, 0x01, 0x31, 0xb2, 0x06, 0x52, 0x00, 0x00, 0x2f, 0x3f, 0xed, + 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, + 0x33, 0x33, 0xed, 0x31, 0x30, 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x35, 0x21, 0x35, + 0x21, 0x11, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x08, 0x06, 0x20, 0x44, 0x4e, 0x59, + 0x36, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8c, 0xc0, 0x71, 0x26, 0x4d, 0x1e, + 0xfd, 0xcb, 0x03, 0x29, 0xfd, 0x6f, 0x17, 0x2d, 0x42, 0x2a, 0x3e, 0x70, + 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, 0x96, 0x27, 0x40, 0x2d, + 0x19, 0x48, 0x85, 0xbe, 0x75, 0x8c, 0xcd, 0x87, 0x41, 0x0a, 0x08, 0xca, + 0xc3, 0xfa, 0x7b, 0x01, 0xf4, 0x54, 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, + 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x02, 0x00, 0x48, 0xff, 0xe9, + 0x04, 0x12, 0x05, 0x9a, 0x00, 0x32, 0x00, 0x44, 0x00, 0x40, 0xb1, 0x33, + 0x05, 0xb8, 0x02, 0x15, 0xb4, 0x00, 0x1b, 0x1b, 0x24, 0x2e, 0xbb, 0x02, + 0x15, 0x00, 0x38, 0x00, 0x41, 0x02, 0x15, 0xb7, 0x24, 0x13, 0x13, 0x24, + 0x00, 0x33, 0x18, 0x3c, 0xb8, 0x01, 0x32, 0xb5, 0x29, 0x54, 0x18, 0xfd, + 0x0a, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x01, 0x2f, + 0x33, 0x2f, 0x10, 0xed, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x33, + 0x31, 0x30, 0x01, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x27, 0x26, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, + 0x34, 0x26, 0x27, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x3e, 0x03, 0x35, 0x34, 0x27, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x02, 0xd8, 0x13, + 0x25, 0x1d, 0x11, 0x2b, 0x58, 0x8a, 0x5e, 0x0d, 0x24, 0x27, 0x29, 0x12, + 0x25, 0x45, 0x21, 0x28, 0x50, 0x4a, 0x40, 0x18, 0x40, 0x31, 0x2d, 0x23, + 0xa0, 0x4d, 0x66, 0x3c, 0x19, 0x44, 0x80, 0xb7, 0x73, 0x70, 0xb1, 0x7b, + 0x40, 0x2b, 0x51, 0x75, 0xec, 0x38, 0x54, 0x37, 0x1c, 0x3e, 0x3e, 0x6d, + 0x38, 0x56, 0x3a, 0x1d, 0x4d, 0x4e, 0x01, 0xae, 0x13, 0x2b, 0x30, 0x36, + 0x1e, 0x39, 0x5f, 0x45, 0x26, 0x01, 0x01, 0x03, 0x02, 0x04, 0x0a, 0x08, + 0xcc, 0x0a, 0x0f, 0x0a, 0x05, 0x22, 0x1e, 0x1a, 0x2a, 0x1a, 0x77, 0x39, + 0x77, 0x78, 0x77, 0x39, 0x73, 0xbe, 0x87, 0x4b, 0x40, 0x7d, 0xb7, 0x78, + 0x5a, 0x9d, 0x82, 0x65, 0x6e, 0x13, 0x3b, 0x55, 0x72, 0x4b, 0x88, 0x50, + 0x51, 0x2e, 0x4f, 0x69, 0x3b, 0x55, 0x95, 0x3c, 0x00, 0x01, 0x00, 0x30, + 0xfe, 0x5c, 0x04, 0x1b, 0x05, 0x98, 0x00, 0x2b, 0x00, 0x47, 0xb5, 0x00, + 0x00, 0x0b, 0x0b, 0x09, 0x0d, 0xb8, 0x02, 0x0d, 0x40, 0x1b, 0x1e, 0x22, + 0x1e, 0x20, 0x20, 0x1e, 0x1e, 0x16, 0x0c, 0x1f, 0xfa, 0x09, 0x22, 0x22, + 0x2c, 0x00, 0x03, 0xfd, 0x2b, 0x28, 0x54, 0x16, 0x19, 0xff, 0x15, 0x12, + 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x10, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x21, 0x15, 0x21, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x11, 0x21, 0x35, 0x21, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x04, 0x1b, 0x29, 0x6d, 0x39, 0x27, 0x43, 0x31, 0x1c, 0x01, 0x67, + 0xfe, 0x99, 0x28, 0x5b, 0x91, 0x69, 0x47, 0x7a, 0x27, 0x29, 0x71, 0x37, + 0x32, 0x3e, 0x22, 0x0c, 0xfe, 0xd9, 0x01, 0x27, 0x3b, 0x6c, 0x99, 0x5e, + 0x3f, 0x6f, 0x30, 0x04, 0xb6, 0x0e, 0x13, 0x17, 0x32, 0x4d, 0x37, 0xa4, + 0xbe, 0xfd, 0x6f, 0x6a, 0xa5, 0x71, 0x3b, 0x12, 0x14, 0xd6, 0x1a, 0x1f, + 0x1f, 0x3e, 0x5c, 0x3d, 0x02, 0x93, 0xbe, 0x9a, 0x6c, 0x9b, 0x63, 0x2e, + 0x11, 0x0c, 0x00, 0x01, 0x00, 0x57, 0xff, 0xec, 0x04, 0x14, 0x05, 0x85, + 0x00, 0x2c, 0x00, 0x3a, 0xb9, 0x00, 0x19, 0x01, 0xa8, 0xb3, 0x2c, 0x2c, + 0x0c, 0x21, 0xb8, 0x01, 0xa8, 0xb3, 0x20, 0x20, 0x0e, 0x0b, 0xb8, 0x01, + 0xa9, 0x40, 0x0e, 0x0c, 0x1c, 0xfc, 0x27, 0x52, 0x20, 0x4f, 0x05, 0xf2, + 0x13, 0x50, 0x0d, 0x53, 0x0c, 0x00, 0x2f, 0x3f, 0x3f, 0xed, 0x3f, 0x3f, + 0xed, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, + 0x23, 0x11, 0x33, 0x11, 0x07, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0xe1, 0x09, 0x12, 0x1a, 0x12, + 0x12, 0x22, 0x1d, 0x17, 0x06, 0xd5, 0xd5, 0x06, 0x1a, 0x59, 0x33, 0x2d, + 0x53, 0x41, 0x27, 0x1e, 0x27, 0x27, 0x21, 0xd3, 0x1c, 0x42, 0x6d, 0x51, + 0x50, 0x6b, 0x40, 0x1c, 0x02, 0xbb, 0x2d, 0x39, 0x21, 0x0d, 0x11, 0x1b, + 0x21, 0x10, 0xfd, 0x0e, 0x05, 0x85, 0xfe, 0xaa, 0x88, 0x2f, 0x2d, 0x1c, + 0x3f, 0x68, 0x4b, 0xfe, 0x33, 0x3f, 0x3d, 0x3d, 0x3f, 0x02, 0xd0, 0xfd, + 0x27, 0x4c, 0x73, 0x4d, 0x27, 0x2b, 0x51, 0x77, 0x4c, 0x00, 0xff, 0xff, + 0x00, 0x8b, 0xfe, 0x73, 0x04, 0x1d, 0x04, 0x0e, 0x02, 0x06, 0x00, 0x92, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x95, 0x00, 0x00, 0x04, 0x3f, 0x05, 0x98, + 0x00, 0x19, 0x00, 0x40, 0xb5, 0x18, 0x15, 0x15, 0x0c, 0x0c, 0x02, 0xb8, + 0x02, 0x0b, 0x40, 0x10, 0x17, 0x16, 0x16, 0x19, 0x00, 0x00, 0x03, 0x18, + 0x01, 0x99, 0x15, 0x15, 0x00, 0x17, 0x4f, 0x0f, 0xb8, 0x01, 0x04, 0xb4, + 0x09, 0x54, 0x03, 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0xed, 0x3f, 0x12, + 0x39, 0x2f, 0xed, 0x33, 0x01, 0x2f, 0x33, 0x11, 0x33, 0x33, 0x11, 0x33, + 0xed, 0x32, 0x2f, 0x32, 0x11, 0x33, 0x31, 0x30, 0x21, 0x01, 0x11, 0x23, + 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x11, 0x01, 0x21, 0x01, 0x01, 0x03, 0x00, 0xfe, 0x89, + 0xf4, 0x2b, 0x59, 0x86, 0x5b, 0x71, 0x50, 0x26, 0x50, 0x20, 0x28, 0x3b, + 0x26, 0x13, 0x01, 0x63, 0x01, 0x31, 0xfe, 0x64, 0x01, 0xbe, 0x01, 0xfc, + 0xfe, 0x04, 0x03, 0xea, 0x7b, 0xa6, 0x63, 0x2a, 0x18, 0xc9, 0x0c, 0x0c, + 0x14, 0x32, 0x54, 0x40, 0xfe, 0x55, 0x01, 0xae, 0xfe, 0x31, 0xfd, 0xd7, + 0xff, 0xff, 0x00, 0x91, 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x8e, 0x00, 0x00, 0x01, 0x07, 0x0a, 0x66, 0x00, 0x14, 0x00, 0xda, + 0x00, 0x11, 0x40, 0x0b, 0x01, 0x2f, 0x0a, 0x5f, 0x0a, 0x70, 0x0a, 0x9f, + 0x0a, 0x04, 0x0a, 0x00, 0x11, 0x5d, 0x35, 0x00, 0xff, 0xff, 0x00, 0x32, + 0xff, 0xe9, 0x03, 0xee, 0x05, 0x85, 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, + 0x00, 0x07, 0x0a, 0x66, 0xff, 0x60, 0x00, 0xda, 0xff, 0xff, 0x00, 0x79, + 0xff, 0xe9, 0x03, 0xee, 0x05, 0x9a, 0x02, 0x26, 0x01, 0x28, 0x00, 0x00, + 0x01, 0x07, 0x0a, 0x66, 0xff, 0xff, 0x00, 0xda, 0x00, 0x0f, 0xb1, 0x01, + 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x10, 0x10, 0x48, 0x20, 0x00, 0x11, 0x2b, + 0x35, 0x00, 0x00, 0x01, 0x00, 0x0e, 0xff, 0xee, 0x04, 0x4c, 0x05, 0xaa, + 0x00, 0x31, 0x00, 0x57, 0x40, 0x2e, 0x34, 0x00, 0x01, 0x06, 0x00, 0x16, + 0x00, 0x02, 0x2f, 0x17, 0x14, 0x01, 0x2b, 0x2b, 0x09, 0x09, 0x20, 0x2e, + 0x20, 0x31, 0x00, 0x00, 0x2b, 0x04, 0x62, 0x2b, 0x72, 0x2b, 0x82, 0x2b, + 0x03, 0x14, 0x2b, 0x24, 0x2b, 0x34, 0x2b, 0x03, 0x2b, 0x0f, 0x2e, 0x24, + 0x52, 0x16, 0x15, 0x04, 0xb8, 0x01, 0x31, 0xb1, 0x0f, 0x54, 0x00, 0x3f, + 0xed, 0xc6, 0x32, 0x3f, 0x2f, 0x12, 0x39, 0x5d, 0x5d, 0x11, 0x12, 0x39, + 0x11, 0x33, 0x01, 0x2f, 0x2f, 0x12, 0x39, 0x2f, 0x39, 0x11, 0x33, 0x33, + 0x33, 0x33, 0x00, 0x5d, 0x5d, 0x31, 0x30, 0x13, 0x37, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x17, + 0x37, 0x17, 0x07, 0x01, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x03, 0x27, 0x07, 0x03, 0x21, 0x01, + 0x27, 0x07, 0xbb, 0xa4, 0x09, 0x21, 0x14, 0x0f, 0x29, 0x2b, 0x2a, 0x0f, + 0x15, 0x33, 0x31, 0x2d, 0x11, 0x2d, 0x42, 0x38, 0x32, 0x1c, 0xa8, 0x63, + 0xaa, 0x01, 0x38, 0x0a, 0x13, 0x15, 0x18, 0x10, 0x08, 0x18, 0x08, 0x2a, + 0x38, 0x1e, 0x2f, 0x43, 0x34, 0x29, 0x15, 0x84, 0x2f, 0x37, 0xe5, 0xfe, + 0xf5, 0x01, 0xb9, 0x04, 0xa7, 0x04, 0x4e, 0x62, 0x09, 0x0e, 0x03, 0x06, + 0x07, 0x04, 0xcc, 0x06, 0x09, 0x07, 0x03, 0x08, 0x15, 0x25, 0x1c, 0x70, + 0xa1, 0x66, 0xfc, 0x82, 0x1e, 0x29, 0x18, 0x0a, 0x02, 0x02, 0xbf, 0x0b, + 0x08, 0x15, 0x32, 0x54, 0x3e, 0x01, 0x87, 0x97, 0x97, 0xfd, 0xb2, 0x04, + 0x17, 0x0b, 0x70, 0x00, 0xff, 0xff, 0x00, 0x79, 0xfe, 0x73, 0x03, 0xe2, + 0x04, 0x0e, 0x02, 0x06, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x4e, + 0xff, 0xf2, 0x04, 0x14, 0x04, 0x03, 0x00, 0x12, 0x00, 0x28, 0x00, 0x41, + 0xb1, 0x28, 0x18, 0xb8, 0x01, 0x8d, 0xb3, 0x12, 0x12, 0x22, 0x14, 0xb8, + 0x01, 0xa7, 0xb2, 0x15, 0x15, 0x08, 0xb8, 0x01, 0xd3, 0x40, 0x0c, 0x22, + 0x03, 0xff, 0x25, 0x50, 0x0d, 0xf7, 0x1d, 0x52, 0x15, 0x17, 0x16, 0xb8, + 0x01, 0x34, 0xb2, 0x28, 0x13, 0x4f, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x2f, + 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x32, 0x31, 0x30, 0x01, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x01, 0x11, 0x23, + 0x11, 0x07, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x10, + 0x12, 0x33, 0x32, 0x16, 0x17, 0x01, 0xed, 0x21, 0x31, 0x27, 0x2c, 0x16, + 0x06, 0x05, 0x16, 0x2d, 0x28, 0x1b, 0x21, 0x10, 0x05, 0x02, 0x27, 0xd1, + 0x90, 0x28, 0x49, 0x65, 0x3c, 0x56, 0x7f, 0x54, 0x2a, 0xa2, 0xad, 0x48, + 0x61, 0x28, 0x02, 0xd0, 0x37, 0x39, 0x26, 0x4f, 0x7c, 0x55, 0x50, 0x7c, + 0x55, 0x2c, 0x11, 0x1e, 0x29, 0x18, 0x02, 0xe2, 0xfc, 0x01, 0x03, 0x2a, + 0x15, 0xfd, 0xce, 0x39, 0x5a, 0x3d, 0x21, 0x38, 0x7b, 0xc3, 0x8c, 0x01, + 0x0c, 0x01, 0x03, 0x1d, 0x1d, 0x00, 0x00, 0x02, 0x00, 0x8b, 0xfe, 0x73, + 0x04, 0x1d, 0x05, 0x98, 0x00, 0x25, 0x00, 0x36, 0x00, 0x3a, 0xb3, 0x13, + 0x13, 0x09, 0x00, 0xb8, 0x02, 0x17, 0xb4, 0x26, 0x26, 0x2f, 0x1c, 0x09, + 0xbb, 0x02, 0x0b, 0x00, 0x0a, 0x00, 0x2b, 0x01, 0x31, 0x40, 0x0c, 0x21, + 0x50, 0x16, 0xfb, 0x10, 0x54, 0x09, 0x55, 0x32, 0xfc, 0x05, 0x52, 0x00, + 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x32, + 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x3e, 0x03, + 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x8d, 0xc0, + 0x71, 0x26, 0x4c, 0x1f, 0xf4, 0x2d, 0x5a, 0x86, 0x58, 0x71, 0x50, 0x26, + 0x50, 0x20, 0x28, 0x3b, 0x26, 0x13, 0x1c, 0x3f, 0x47, 0x53, 0x32, 0x5a, + 0x8c, 0x5f, 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, + 0x1d, 0x54, 0x2d, 0x3a, 0x5f, 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, + 0x41, 0x0a, 0x08, 0xfe, 0x73, 0x05, 0x85, 0x77, 0xa0, 0x60, 0x29, 0x18, + 0xbf, 0x0c, 0x0c, 0x14, 0x2f, 0x4f, 0x3b, 0x8a, 0x20, 0x34, 0x24, 0x14, + 0x48, 0x85, 0xbd, 0x80, 0x54, 0x76, 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x44, + 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x00, 0x01, 0x00, 0x9b, 0xff, 0xe9, + 0x03, 0xd0, 0x04, 0x0e, 0x00, 0x2d, 0x00, 0x5a, 0xb2, 0x26, 0x26, 0x18, + 0xb8, 0x02, 0x1c, 0xb2, 0x09, 0x09, 0x21, 0xb8, 0x02, 0x24, 0x40, 0x2b, + 0x00, 0x0f, 0x0f, 0x00, 0x97, 0x05, 0x01, 0x76, 0x05, 0x86, 0x05, 0x02, + 0x67, 0x05, 0x01, 0x05, 0x13, 0x26, 0x23, 0xf7, 0x1d, 0x10, 0x19, 0x1d, + 0x48, 0xc8, 0x1d, 0x01, 0x69, 0x1d, 0x79, 0x1d, 0x02, 0x1d, 0x27, 0x29, + 0x52, 0x0f, 0x0c, 0xf2, 0x10, 0x13, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0x33, 0x39, 0x5d, 0x5d, 0x2b, 0xed, 0x32, 0x11, 0x39, 0x5d, 0x5d, + 0x5d, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, + 0x31, 0x30, 0x13, 0x34, 0x3e, 0x06, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x06, + 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x9b, 0x2f, 0x4c, 0x62, 0x66, 0x62, 0x4c, 0x2f, 0x5b, 0x4b, 0x4b, 0x98, + 0x58, 0x39, 0xa9, 0x61, 0x6a, 0x9f, 0x69, 0x34, 0x2f, 0x4c, 0x61, 0x66, + 0x61, 0x4c, 0x2f, 0xbf, 0x54, 0xba, 0x5e, 0xa2, 0xe2, 0x54, 0x9c, 0x79, + 0x48, 0x01, 0x20, 0x45, 0x64, 0x47, 0x31, 0x26, 0x20, 0x26, 0x31, 0x24, + 0x30, 0x28, 0x17, 0x1c, 0xc7, 0x0c, 0x14, 0x2c, 0x4d, 0x6a, 0x3e, 0x45, + 0x64, 0x48, 0x32, 0x27, 0x21, 0x27, 0x31, 0x23, 0x63, 0x23, 0x27, 0xdc, + 0x29, 0x20, 0x49, 0x77, 0x00, 0x01, 0x00, 0x3b, 0xfe, 0x56, 0x03, 0xd1, + 0x05, 0x3d, 0x00, 0x26, 0x00, 0x55, 0xb1, 0x1c, 0x21, 0xb8, 0x02, 0x11, + 0xb7, 0x16, 0x0a, 0x0a, 0x16, 0x12, 0x1f, 0x1f, 0x00, 0xb8, 0x01, 0xdf, + 0x40, 0x17, 0x12, 0x12, 0x1b, 0x16, 0x18, 0x18, 0x16, 0x20, 0x17, 0xfa, + 0x1a, 0x1d, 0x1a, 0x1c, 0x1c, 0x1a, 0x4f, 0x24, 0xff, 0x13, 0x52, 0x0a, + 0x0d, 0xb8, 0x01, 0x02, 0xb2, 0x09, 0x06, 0x56, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x12, + 0x39, 0x2f, 0x10, 0xed, 0x32, 0x31, 0x30, 0x25, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x37, 0x11, 0x21, + 0x15, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x03, 0xd1, 0x22, 0x4d, + 0x7b, 0x5a, 0x2e, 0x57, 0x23, 0x26, 0x38, 0x23, 0x21, 0x30, 0x1f, 0x0f, + 0x18, 0xc8, 0xb9, 0xfe, 0xef, 0x01, 0x11, 0xfa, 0x01, 0x8b, 0xfe, 0x75, + 0x50, 0x5e, 0x3c, 0x71, 0xcd, 0xd5, 0x71, 0x9e, 0x65, 0x2e, 0x0a, 0x0a, + 0xc6, 0x0b, 0x08, 0x0c, 0x2a, 0x51, 0x45, 0xaa, 0xb7, 0x01, 0xf0, 0xbe, + 0x01, 0x04, 0x41, 0xfe, 0xbb, 0xbe, 0xfe, 0x22, 0x58, 0x58, 0x14, 0x00, + 0x00, 0x01, 0x00, 0x3b, 0xff, 0xe9, 0x03, 0xd1, 0x05, 0x98, 0x00, 0x25, + 0x00, 0x4b, 0x40, 0x10, 0x13, 0x13, 0x11, 0x11, 0x15, 0x1f, 0x1f, 0x04, + 0x0a, 0x02, 0x02, 0x0a, 0x0a, 0x04, 0x04, 0x00, 0xb8, 0x02, 0x11, 0x40, + 0x13, 0x15, 0x1f, 0x22, 0xfb, 0x1e, 0x1b, 0x54, 0x03, 0x12, 0xfa, 0x00, + 0x15, 0x4f, 0x0a, 0x07, 0xff, 0x0b, 0x0e, 0x52, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x32, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x11, 0x33, + 0x2f, 0x33, 0x2f, 0x31, 0x30, 0x01, 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, + 0x21, 0x35, 0x21, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x02, 0x46, 0x01, 0x8b, 0xfe, 0x75, + 0x50, 0x5e, 0x3c, 0x71, 0x30, 0x42, 0x86, 0x3c, 0xc8, 0xb9, 0xfe, 0xef, + 0x01, 0x11, 0x28, 0x55, 0x83, 0x5b, 0x39, 0x6a, 0x28, 0x26, 0x50, 0x20, + 0x51, 0x45, 0x03, 0xf8, 0xbe, 0xfe, 0x22, 0x58, 0x58, 0x14, 0x0d, 0xc3, + 0x0f, 0x12, 0xaa, 0xb7, 0x01, 0xf0, 0xbe, 0x2a, 0x5b, 0x8c, 0x5e, 0x31, + 0x0c, 0x0c, 0xbf, 0x0c, 0x0c, 0x49, 0x55, 0x00, 0x00, 0x01, 0x00, 0x17, + 0xfe, 0x5c, 0x04, 0x84, 0x03, 0xff, 0x00, 0x28, 0x00, 0x42, 0x40, 0x0e, + 0x17, 0x28, 0x28, 0x1f, 0x11, 0x00, 0x15, 0x15, 0x12, 0x1f, 0x13, 0x08, + 0x12, 0x23, 0xb8, 0x01, 0x36, 0x40, 0x0a, 0x1c, 0x4f, 0x15, 0x11, 0x11, + 0x05, 0x12, 0x4f, 0x09, 0x0c, 0xb8, 0x01, 0x08, 0xb2, 0x08, 0x05, 0x56, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x2f, 0x33, 0x3f, 0xed, + 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x31, 0x30, 0x25, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x01, 0x21, 0x13, 0x17, 0x37, + 0x13, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x02, 0xee, 0x35, 0x73, 0x8a, 0xa8, 0x6a, 0x19, 0x3b, + 0x1f, 0x18, 0x48, 0x1f, 0x2a, 0x48, 0x3d, 0x32, 0x13, 0xfe, 0x6d, 0x01, + 0x10, 0xd3, 0x3f, 0x3e, 0x82, 0x19, 0x35, 0x42, 0x55, 0x38, 0x1b, 0x2e, + 0x25, 0x14, 0x22, 0x0e, 0x11, 0x1c, 0x17, 0x13, 0x08, 0x6f, 0x84, 0xc7, + 0x85, 0x43, 0x05, 0x05, 0xcf, 0x04, 0x08, 0x20, 0x39, 0x4f, 0x2f, 0x03, + 0xf8, 0xfd, 0xc0, 0xba, 0xb2, 0x01, 0x67, 0x46, 0x5a, 0x34, 0x14, 0x02, + 0x05, 0xd6, 0x03, 0x02, 0x06, 0x10, 0x1c, 0x16, 0x00, 0x01, 0x00, 0x96, + 0x00, 0x00, 0x03, 0xd1, 0x03, 0xf8, 0x00, 0x11, 0x00, 0x6a, 0x40, 0x2e, + 0x07, 0x0a, 0x0b, 0x06, 0x0b, 0x01, 0x10, 0x0f, 0x02, 0x0f, 0x02, 0x06, + 0x06, 0x0c, 0x09, 0x09, 0x0c, 0x0c, 0x0b, 0x0f, 0x11, 0x11, 0x0f, 0x03, + 0x03, 0x0f, 0x0a, 0x6f, 0x10, 0x7f, 0x10, 0x02, 0x10, 0xfa, 0x07, 0x9f, + 0x01, 0xaf, 0x01, 0x02, 0x01, 0x01, 0x05, 0x0f, 0x0f, 0x0b, 0xb8, 0x01, + 0x36, 0xb3, 0x0e, 0x51, 0x06, 0x02, 0xb8, 0x01, 0x31, 0xb1, 0x05, 0x4f, + 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x11, 0x12, 0x39, 0x2f, 0x5d, + 0x33, 0xed, 0x5d, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, + 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x10, 0x7d, 0x87, + 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0x31, 0x30, 0x13, 0x21, 0x37, 0x21, + 0x35, 0x21, 0x15, 0x07, 0x33, 0x15, 0x21, 0x07, 0x21, 0x15, 0x21, 0x35, + 0x37, 0x23, 0xc2, 0x01, 0x2a, 0x9b, 0xfe, 0x1b, 0x03, 0x27, 0xb6, 0x9f, + 0xfe, 0xce, 0x9d, 0x01, 0xee, 0xfc, 0xc5, 0xc2, 0x96, 0x02, 0x61, 0xc6, + 0xd1, 0xac, 0xeb, 0xbe, 0xcc, 0xd7, 0xaa, 0xf9, 0x00, 0x01, 0x00, 0x74, + 0xfe, 0xad, 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x24, 0x00, 0x4f, 0x40, 0x0d, + 0x0d, 0x14, 0x14, 0x24, 0x11, 0x11, 0x24, 0x24, 0x08, 0x12, 0x0e, 0x0e, + 0x1a, 0xb8, 0x02, 0x1c, 0x40, 0x0f, 0x08, 0x13, 0x0d, 0xce, 0x00, 0x15, + 0x60, 0x15, 0x80, 0x15, 0x03, 0x15, 0x15, 0x1f, 0x12, 0xb8, 0x01, 0x31, + 0xb3, 0x0f, 0x4f, 0x24, 0x1f, 0xb8, 0x01, 0x09, 0xb1, 0x00, 0x05, 0x00, + 0x2f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x33, 0x31, 0x30, 0x01, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x01, 0x35, 0x21, 0x15, 0x21, 0x01, 0x15, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x03, 0xf8, 0x31, 0x5e, 0x61, 0x67, 0x39, 0xf9, 0xfb, 0x28, 0x60, 0x9e, + 0x76, 0xfe, 0xa4, 0x03, 0x21, 0xfe, 0x22, 0x01, 0x33, 0x84, 0x5c, 0x74, + 0x42, 0x18, 0x2f, 0x4f, 0x68, 0x39, 0x30, 0x62, 0x5c, 0x51, 0x1e, 0xfe, + 0xe8, 0x0f, 0x16, 0x0f, 0x07, 0xd2, 0xd0, 0x41, 0x89, 0x75, 0x53, 0x0c, + 0x01, 0x49, 0xc2, 0xd1, 0xfe, 0xcb, 0xb5, 0x27, 0x40, 0x55, 0x2d, 0x3e, + 0x53, 0x33, 0x15, 0x0c, 0x14, 0x19, 0x0c, 0x00, 0x00, 0x01, 0x00, 0x83, + 0xfe, 0x1f, 0x04, 0x02, 0x03, 0xf8, 0x00, 0x3a, 0x00, 0x67, 0x40, 0x0a, + 0x19, 0x12, 0x12, 0x00, 0x14, 0x18, 0x18, 0x30, 0x30, 0x1e, 0xb8, 0x02, + 0x1c, 0xb2, 0x0c, 0x0c, 0x28, 0xb8, 0x02, 0x25, 0x40, 0x19, 0x00, 0x15, + 0x15, 0x00, 0x0b, 0x23, 0x01, 0x23, 0x36, 0x11, 0x6b, 0x07, 0x7b, 0x07, + 0x02, 0x07, 0x2b, 0x13, 0x19, 0xce, 0x11, 0x11, 0x16, 0x30, 0x2b, 0xb8, + 0x01, 0x0a, 0xb3, 0x31, 0x36, 0x18, 0x15, 0xb8, 0x01, 0x31, 0xb1, 0x16, + 0x4f, 0x00, 0x3f, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, + 0xed, 0x32, 0x11, 0x39, 0x5d, 0x11, 0x12, 0x39, 0x5d, 0x01, 0x2f, 0x33, + 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x11, + 0x33, 0x2f, 0x33, 0x31, 0x30, 0x17, 0x34, 0x3e, 0x04, 0x37, 0x3e, 0x03, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, + 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x0e, 0x03, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, + 0x2e, 0x02, 0x83, 0x1f, 0x36, 0x49, 0x55, 0x5d, 0x2e, 0x30, 0x59, 0x46, + 0x2a, 0x18, 0x41, 0x74, 0x5d, 0x84, 0x01, 0x33, 0xfe, 0x22, 0x03, 0x21, + 0xfe, 0xa4, 0x7d, 0xa0, 0x5c, 0x23, 0x3a, 0x5d, 0x75, 0x3b, 0x35, 0x6a, + 0x57, 0x36, 0x57, 0x49, 0x1d, 0x3f, 0x3a, 0x31, 0x0e, 0x0f, 0x34, 0x3f, + 0x44, 0x1f, 0x4b, 0x94, 0x75, 0x48, 0xd1, 0x35, 0x50, 0x3b, 0x2a, 0x1f, + 0x16, 0x0b, 0x0b, 0x17, 0x22, 0x2f, 0x23, 0x24, 0x31, 0x1e, 0x0d, 0xb5, + 0x01, 0x03, 0xd1, 0xc2, 0xfe, 0xe9, 0x30, 0x53, 0x6f, 0x3f, 0x54, 0x71, + 0x4a, 0x2c, 0x0e, 0x0c, 0x14, 0x18, 0x22, 0x1c, 0x26, 0x1b, 0x05, 0x07, + 0x07, 0x03, 0xd3, 0x02, 0x06, 0x06, 0x04, 0x15, 0x3c, 0x6a, 0x00, 0x01, + 0x00, 0x4d, 0xff, 0xec, 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x23, 0x00, 0x51, + 0x40, 0x0d, 0x06, 0x1e, 0x01, 0x1d, 0x1e, 0x1e, 0x18, 0x17, 0x17, 0x0b, + 0x1c, 0x1c, 0x00, 0xb8, 0x02, 0x17, 0x40, 0x1c, 0x11, 0x11, 0x0b, 0x19, + 0x19, 0x0b, 0x17, 0xcb, 0x60, 0x1e, 0x70, 0x1e, 0x80, 0x1e, 0x03, 0x1e, + 0x1e, 0x0e, 0x1d, 0x19, 0xfa, 0x1a, 0x4f, 0x0b, 0x0e, 0xfc, 0x05, 0x52, + 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x12, 0x39, 0x2f, 0x5d, 0xed, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, + 0x2f, 0x33, 0x33, 0x11, 0x33, 0x00, 0x5d, 0x31, 0x30, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x13, 0x23, 0x35, 0x21, 0x15, 0x21, + 0x07, 0x33, 0x32, 0x1e, 0x02, 0x03, 0xf8, 0x47, 0x86, 0xc3, 0x7c, 0x1f, + 0x4a, 0x4c, 0x48, 0x1d, 0x39, 0x93, 0x4e, 0x8b, 0x80, 0x20, 0x48, 0x75, + 0x55, 0xc1, 0x36, 0xed, 0x03, 0x67, 0xfe, 0x65, 0x16, 0x19, 0x69, 0xaf, + 0x7e, 0x46, 0x01, 0x70, 0x64, 0x92, 0x60, 0x2e, 0x04, 0x06, 0x09, 0x05, + 0xc7, 0x0e, 0x11, 0x5b, 0x58, 0x2e, 0x3c, 0x23, 0x0d, 0x01, 0x41, 0xbe, + 0xbe, 0x94, 0x1a, 0x45, 0x79, 0x00, 0x00, 0x04, 0x00, 0x2c, 0xff, 0xf5, + 0x04, 0x49, 0x05, 0x85, 0x00, 0x13, 0x00, 0x24, 0x00, 0x2b, 0x00, 0x35, + 0x00, 0x90, 0xb9, 0x00, 0x29, 0x01, 0xa3, 0xb3, 0x2a, 0x2a, 0x28, 0x27, + 0xb8, 0x01, 0xa3, 0x40, 0x11, 0x26, 0x26, 0x2b, 0x25, 0x28, 0x28, 0x31, + 0x32, 0x2c, 0x2c, 0x2e, 0x33, 0x33, 0x2d, 0x31, 0x31, 0x0b, 0xb8, 0x01, + 0x77, 0xb6, 0x0d, 0x08, 0x1c, 0x1c, 0x00, 0x2e, 0x14, 0xb8, 0x01, 0x8e, + 0x40, 0x17, 0x40, 0x00, 0x28, 0x29, 0x27, 0x40, 0x0e, 0x13, 0x48, 0x27, + 0x80, 0x25, 0x2c, 0x33, 0xfa, 0x34, 0x4f, 0x31, 0x2d, 0xf9, 0x30, 0x51, + 0x19, 0xb8, 0x01, 0x00, 0x40, 0x0b, 0x0d, 0x0f, 0x52, 0x09, 0x53, 0x1d, + 0x20, 0xf5, 0x08, 0x05, 0x4f, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, + 0x33, 0xed, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0xd6, 0x1a, 0xcd, 0x2b, + 0x32, 0x33, 0x01, 0x2f, 0x1a, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x33, + 0xed, 0x32, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x12, 0x39, + 0x19, 0x2f, 0x33, 0x33, 0x33, 0x18, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, + 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, + 0x11, 0x23, 0x27, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x01, + 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x13, 0x03, 0x33, 0x15, 0x21, 0x35, + 0x13, 0x23, 0x35, 0x21, 0x2c, 0x1d, 0x41, 0x69, 0x4d, 0x1c, 0x26, 0x10, + 0xbe, 0xa0, 0x0b, 0x28, 0x64, 0x3f, 0x59, 0x3a, 0x1b, 0xcb, 0x07, 0x13, + 0x23, 0x1d, 0x1a, 0x1d, 0x0a, 0x11, 0x1e, 0x0d, 0x23, 0x27, 0x12, 0x03, + 0x02, 0x08, 0x92, 0xc0, 0x30, 0x30, 0xbc, 0x92, 0x84, 0xe3, 0xf0, 0xfe, + 0x45, 0xe7, 0xc7, 0x01, 0x8e, 0x01, 0xe1, 0x80, 0xc7, 0x89, 0x47, 0x05, + 0x04, 0x01, 0x96, 0xfa, 0x7b, 0x41, 0x4c, 0x46, 0x80, 0xb6, 0x7b, 0x5b, + 0x77, 0x45, 0x1c, 0x18, 0x0e, 0x02, 0x56, 0x05, 0x05, 0x27, 0x53, 0x80, + 0x02, 0x3a, 0x01, 0x06, 0x85, 0x85, 0xfe, 0xfa, 0xfe, 0xca, 0xfd, 0x74, + 0xbd, 0xb2, 0x02, 0x88, 0xbe, 0x00, 0x00, 0x03, 0x00, 0x2a, 0xfe, 0x5c, + 0x04, 0x0f, 0x05, 0xae, 0x00, 0x09, 0x00, 0x21, 0x00, 0x35, 0x00, 0x69, + 0xb9, 0x00, 0x22, 0x02, 0x3c, 0x40, 0x09, 0x2c, 0x2c, 0x14, 0x14, 0x1f, + 0x09, 0x20, 0x20, 0x0a, 0xb8, 0x01, 0xae, 0xb5, 0x1f, 0x1f, 0x09, 0x05, + 0x05, 0x04, 0xb8, 0x01, 0xd7, 0xb7, 0x09, 0x08, 0x08, 0x09, 0x01, 0x01, + 0x09, 0x31, 0xb8, 0x01, 0x4b, 0x40, 0x15, 0x27, 0x27, 0x20, 0xfa, 0x21, + 0x4f, 0x14, 0x19, 0xff, 0x13, 0x10, 0x56, 0x04, 0x08, 0xfa, 0x07, 0x51, + 0x01, 0xfa, 0x02, 0x53, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, + 0x11, 0x12, 0x39, 0x2f, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x13, 0x23, 0x35, + 0x21, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x01, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x11, 0x23, 0x35, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0xe0, 0xb3, 0x01, 0x96, 0xb5, + 0xfd, 0xb2, 0xb6, 0x03, 0x21, 0x2c, 0x61, 0x9a, 0x6d, 0x4b, 0x5a, 0x14, + 0x0c, 0x23, 0x2c, 0x30, 0x19, 0x39, 0x4e, 0x31, 0x15, 0xf9, 0x01, 0xe3, + 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, 0x2b, 0x18, 0x18, 0x2b, 0x3a, 0x22, + 0x22, 0x3b, 0x2b, 0x18, 0x04, 0xc7, 0xbe, 0xfb, 0x39, 0xbe, 0xbe, 0x03, + 0x3a, 0xfc, 0x1a, 0x69, 0xa3, 0x70, 0x3a, 0x0a, 0x05, 0xd2, 0x05, 0x0b, + 0x09, 0x05, 0x24, 0x48, 0x6a, 0x46, 0x02, 0xff, 0xbe, 0x01, 0x16, 0x21, + 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, + 0x2c, 0x3a, 0x00, 0x03, 0x00, 0x32, 0xfe, 0x5c, 0x04, 0x37, 0x05, 0xae, + 0x00, 0x19, 0x00, 0x31, 0x00, 0x45, 0x00, 0x6f, 0xb9, 0x00, 0x0d, 0x01, + 0xa9, 0xb4, 0x0e, 0x0e, 0x2e, 0x46, 0x32, 0xb8, 0x02, 0x3c, 0x40, 0x09, + 0x3c, 0x3c, 0x24, 0x24, 0x2e, 0x19, 0x30, 0x30, 0x1b, 0xb8, 0x01, 0xae, + 0xb3, 0x2e, 0x2e, 0x02, 0x18, 0xbb, 0x01, 0xa9, 0x00, 0x19, 0x00, 0x41, + 0x01, 0x4b, 0x40, 0x12, 0x37, 0x37, 0x30, 0xfa, 0x31, 0x4f, 0x24, 0x29, + 0xff, 0x23, 0x20, 0x56, 0x18, 0x51, 0x0e, 0x51, 0x17, 0x14, 0xb8, 0x01, + 0x30, 0xb4, 0x02, 0x07, 0x50, 0x00, 0x4f, 0x00, 0x3f, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x33, 0x2f, 0xed, + 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x12, 0x39, + 0x2f, 0x32, 0x2f, 0xed, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x13, + 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x01, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x11, 0x23, 0x35, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x32, 0xc5, 0x07, + 0x0f, 0x21, 0x2c, 0x3b, 0x28, 0x45, 0x55, 0x30, 0x11, 0xd6, 0x06, 0x10, + 0x1f, 0x18, 0x29, 0x31, 0x13, 0xd6, 0x03, 0xf7, 0x20, 0x52, 0x8d, 0x6d, + 0x4b, 0x5a, 0x14, 0x0c, 0x23, 0x2c, 0x30, 0x19, 0x39, 0x42, 0x21, 0x09, + 0x92, 0x01, 0x7c, 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, 0x2b, 0x18, 0x18, + 0x2b, 0x3a, 0x22, 0x22, 0x3b, 0x2b, 0x18, 0x03, 0xf8, 0x66, 0x15, 0x2a, + 0x23, 0x16, 0x2c, 0x51, 0x71, 0x46, 0xfd, 0x2a, 0x02, 0xc3, 0x1a, 0x2c, + 0x1f, 0x12, 0x2f, 0x29, 0xfd, 0x1e, 0x03, 0xf8, 0xfc, 0x1a, 0x69, 0xa3, + 0x70, 0x3a, 0x0a, 0x05, 0xd2, 0x05, 0x0b, 0x09, 0x05, 0x24, 0x48, 0x6a, + 0x46, 0x02, 0xff, 0xbe, 0x01, 0x16, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, + 0x3a, 0x21, 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xee, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x97, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x08, 0x06, 0xcf, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x6d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xdb, 0x06, 0xcf, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x6f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, + 0x06, 0xcf, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x71, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, 0x04, 0x0e, + 0x00, 0x22, 0x00, 0x2b, 0x00, 0x33, 0xb9, 0x00, 0x19, 0x02, 0x13, 0xb2, + 0x2b, 0x2b, 0x23, 0xb8, 0x02, 0x09, 0x40, 0x11, 0x05, 0x0e, 0x0e, 0x05, + 0x23, 0xcd, 0x05, 0x05, 0x14, 0x28, 0xf3, 0x1e, 0x52, 0x0b, 0xff, 0x14, + 0x50, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, + 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x13, 0x34, 0x3e, + 0x02, 0x37, 0x21, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, + 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x37, 0x06, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x66, 0x01, 0x01, + 0x02, 0x02, 0x02, 0x9c, 0x29, 0x4b, 0x69, 0x40, 0x4b, 0xa8, 0x5b, 0x27, + 0x5c, 0x60, 0x62, 0x2e, 0x74, 0xb8, 0x80, 0x44, 0x44, 0x7c, 0xb1, 0x6d, + 0x6c, 0xa6, 0x70, 0x3a, 0xf8, 0x01, 0x1f, 0x38, 0x4a, 0x29, 0x5d, 0x75, + 0x0b, 0x01, 0xad, 0x0c, 0x22, 0x25, 0x27, 0x12, 0x43, 0x66, 0x45, 0x24, + 0x17, 0x1a, 0xc2, 0x0b, 0x13, 0x0d, 0x07, 0x42, 0x81, 0xbf, 0x7c, 0x7c, + 0xcb, 0x91, 0x4f, 0x43, 0x78, 0xa6, 0x40, 0x3c, 0x59, 0x3a, 0x1c, 0x7b, + 0x70, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x06, 0x8f, + 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6b, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x06, 0x8f, 0x02, 0x26, + 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x73, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4e, 0x05, 0x62, 0x02, 0x26, 0x00, 0xa7, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, 0x00, 0x04, 0xff, 0xec, + 0xfe, 0x5c, 0x04, 0x7a, 0x04, 0x0c, 0x00, 0x45, 0x00, 0x55, 0x00, 0x5f, + 0x00, 0x6a, 0x01, 0x0d, 0x40, 0x0c, 0x30, 0x68, 0x40, 0x68, 0x02, 0x4f, + 0x2f, 0x01, 0x38, 0x37, 0x37, 0x35, 0xb8, 0x02, 0x26, 0xb4, 0x5d, 0x69, + 0x69, 0x68, 0x5e, 0xb8, 0x02, 0x19, 0xb6, 0x44, 0x18, 0x1b, 0x1b, 0x1a, + 0x1a, 0x1e, 0xb8, 0x01, 0xd7, 0xb2, 0x4e, 0x4e, 0x46, 0xb8, 0x01, 0xd6, + 0x40, 0x0b, 0x10, 0x10, 0x44, 0x26, 0x0d, 0x0d, 0x08, 0x2e, 0x05, 0x05, + 0x29, 0xb8, 0x01, 0xae, 0x40, 0x15, 0x08, 0x08, 0x44, 0x45, 0x45, 0x01, + 0x44, 0x5e, 0xac, 0xb0, 0x68, 0xc0, 0x68, 0x02, 0xa0, 0x68, 0x01, 0xc0, + 0x68, 0x01, 0x68, 0xb8, 0xff, 0xc0, 0x40, 0x62, 0x1e, 0x21, 0x48, 0x68, + 0x68, 0x37, 0x44, 0xce, 0x35, 0xb0, 0x01, 0x01, 0x0f, 0x01, 0x1f, 0x01, + 0x4f, 0x01, 0x03, 0x01, 0x01, 0x58, 0x0f, 0x64, 0x1f, 0x64, 0x2f, 0x64, + 0x03, 0x3f, 0x64, 0x4f, 0x64, 0x02, 0x8f, 0x64, 0x9f, 0x64, 0xaf, 0x64, + 0x03, 0x64, 0xcf, 0x05, 0xbf, 0x2f, 0xcf, 0x2f, 0xdf, 0x2f, 0x03, 0x1f, + 0x2f, 0x2f, 0x2f, 0x3f, 0x2f, 0x03, 0x2f, 0x40, 0x29, 0x2c, 0x48, 0x2f, + 0x40, 0x1e, 0x25, 0x48, 0x2f, 0x40, 0x15, 0x1c, 0x48, 0x2f, 0x26, 0x0d, + 0x23, 0xc8, 0x49, 0x40, 0x0e, 0x17, 0x48, 0x49, 0x49, 0x15, 0x58, 0xca, + 0x3e, 0x56, 0x1b, 0xcf, 0x18, 0x4f, 0x51, 0xca, 0x15, 0x50, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x2b, 0xfd, 0x32, 0x32, + 0xd6, 0x2b, 0x2b, 0x2b, 0x5d, 0x72, 0x32, 0xed, 0x5d, 0x71, 0x72, 0x12, + 0x39, 0x2f, 0x5d, 0x5d, 0x33, 0xed, 0x32, 0x33, 0x2f, 0x2b, 0x5d, 0x71, + 0x72, 0xed, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x32, 0x2f, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x2f, 0x32, 0x00, 0x71, 0x71, 0x31, 0x30, 0x07, 0x33, 0x36, + 0x37, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x21, 0x15, 0x23, 0x16, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x15, + 0x14, 0x1e, 0x02, 0x17, 0x17, 0x1e, 0x02, 0x17, 0x16, 0x17, 0x33, 0x15, + 0x23, 0x06, 0x07, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x26, 0x27, 0x26, 0x27, + 0x23, 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x13, 0x16, 0x33, 0x32, 0x36, 0x37, 0x36, 0x37, 0x21, + 0x16, 0x25, 0x26, 0x26, 0x27, 0x27, 0x06, 0x07, 0x06, 0x07, 0x21, 0x26, + 0x14, 0x87, 0x11, 0x19, 0x1b, 0x25, 0x31, 0x33, 0x12, 0x1d, 0x26, 0x15, + 0x25, 0x31, 0x3d, 0x6c, 0x95, 0x58, 0x2d, 0x53, 0x22, 0x01, 0x60, 0xa0, + 0x1c, 0x17, 0x3b, 0x6b, 0x95, 0x5a, 0x35, 0x5a, 0x17, 0x11, 0x18, 0x10, + 0x1f, 0x2b, 0x1b, 0xf1, 0x51, 0x83, 0x5e, 0x19, 0x0f, 0x06, 0x60, 0x78, + 0x01, 0x02, 0x20, 0x81, 0xc0, 0x7f, 0x7b, 0xb1, 0x71, 0x1b, 0x10, 0x06, + 0x65, 0x01, 0x83, 0x5f, 0x55, 0x2d, 0x43, 0x2c, 0x16, 0x5f, 0x55, 0x2d, + 0x43, 0x2c, 0x16, 0x12, 0x3c, 0x6c, 0x45, 0x5f, 0x1e, 0x0b, 0x09, 0xfe, + 0x56, 0x0e, 0x01, 0x90, 0x16, 0x3d, 0x25, 0xd7, 0x1d, 0x13, 0x06, 0x05, + 0x01, 0xa2, 0x0a, 0x1a, 0x17, 0x17, 0x1a, 0x1a, 0x1c, 0x58, 0x32, 0x22, + 0x3b, 0x36, 0x32, 0x18, 0x25, 0x69, 0x4f, 0x55, 0x85, 0x5b, 0x2f, 0x09, + 0x0b, 0xb2, 0x23, 0x4d, 0x28, 0x55, 0x82, 0x58, 0x2d, 0x15, 0x0e, 0x11, + 0x29, 0x1a, 0x10, 0x20, 0x19, 0x10, 0x01, 0x09, 0x02, 0x25, 0x44, 0x31, + 0x1c, 0x20, 0xb1, 0x03, 0x04, 0x3f, 0x5d, 0x36, 0x27, 0x46, 0x31, 0x1c, + 0x1f, 0x03, 0x73, 0x51, 0x5f, 0x1e, 0x32, 0x42, 0x24, 0x55, 0x5f, 0x1e, + 0x33, 0x44, 0xfc, 0x55, 0x1c, 0x1a, 0x15, 0x08, 0x09, 0x16, 0xba, 0x0f, + 0x0d, 0x02, 0x04, 0x14, 0x15, 0x07, 0x06, 0x0a, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x5c, 0x04, 0x25, 0x05, 0x85, 0x02, 0x26, 0x00, 0x89, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, 0x00, 0x00, + 0x04, 0x3f, 0x06, 0xaf, 0x02, 0x26, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x43, 0x32, 0x28, 0xff, 0xff, 0x00, 0x48, 0xfe, 0x6a, 0x04, 0x1e, + 0x04, 0x0e, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x07, 0x01, 0x55, + 0xfe, 0xec, 0x00, 0x00, 0xff, 0xff, 0x00, 0x0c, 0xfe, 0x6a, 0x04, 0x1e, + 0x05, 0x62, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x27, 0x01, 0x55, + 0xfe, 0xec, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x0c, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xac, 0x03, 0xe9, 0x05, 0x85, 0x02, 0x26, 0x05, 0x5a, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x5c, 0x03, 0x85, 0x05, 0x85, 0x02, 0x26, 0x00, 0xcc, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x42, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, + 0x03, 0x85, 0x05, 0x85, 0x02, 0x26, 0x01, 0x20, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x42, 0x00, 0x00, 0x00, 0x03, 0x00, 0x2c, 0xff, 0xf5, 0x04, 0x48, + 0x05, 0x85, 0x00, 0x13, 0x00, 0x24, 0x00, 0x2e, 0x00, 0x5c, 0x40, 0x0a, + 0x2b, 0x25, 0x25, 0x27, 0x26, 0x2a, 0x2a, 0x2c, 0x2c, 0x0a, 0xb8, 0x01, + 0x77, 0xb6, 0x0d, 0x08, 0x1d, 0x1d, 0x00, 0x27, 0x14, 0xb8, 0x01, 0x8d, + 0xb6, 0x00, 0x25, 0x2c, 0xfa, 0x2d, 0x4f, 0x19, 0xb8, 0x01, 0x00, 0x40, + 0x10, 0x0d, 0x0f, 0x2a, 0x26, 0xf9, 0x29, 0x29, 0x0c, 0x51, 0x09, 0x53, + 0x20, 0xf5, 0x08, 0x05, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x3f, 0x3f, 0x33, + 0x10, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x33, + 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x17, 0x11, 0x33, 0x11, 0x23, 0x27, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x01, 0x03, 0x33, 0x15, 0x21, 0x35, 0x13, 0x23, 0x35, + 0x21, 0x2c, 0x1d, 0x41, 0x69, 0x4d, 0x1c, 0x26, 0x10, 0xbe, 0xa0, 0x0b, + 0x28, 0x64, 0x3f, 0x59, 0x3a, 0x1b, 0xc6, 0x08, 0x16, 0x24, 0x1d, 0x1a, + 0x1d, 0x0a, 0x11, 0x1e, 0x0d, 0x23, 0x28, 0x14, 0x05, 0x03, 0x49, 0xe3, + 0xf0, 0xfe, 0x45, 0xe7, 0xc7, 0x01, 0x8e, 0x01, 0xe1, 0x80, 0xc7, 0x89, + 0x47, 0x05, 0x04, 0x01, 0x96, 0xfa, 0x7b, 0x41, 0x4c, 0x46, 0x80, 0xb6, + 0x7b, 0x5b, 0x77, 0x45, 0x1c, 0x18, 0x0e, 0x02, 0x56, 0x05, 0x05, 0x27, + 0x53, 0x80, 0x01, 0x04, 0xfd, 0x74, 0xbd, 0xb2, 0x02, 0x88, 0xbe, 0x00, + 0xff, 0xff, 0x00, 0x02, 0xfe, 0x5c, 0x04, 0x25, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x02, 0x00, 0xff, 0xff, + 0x00, 0x34, 0x00, 0x00, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x90, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x3c, 0x34, 0x00, 0xff, 0xff, 0xff, 0xf3, + 0xff, 0xe9, 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x0e, 0xff, 0xe9, + 0x03, 0xd9, 0x05, 0x85, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, + 0x03, 0xc4, 0x0e, 0x00, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xe9, 0x04, 0x23, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, + 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xf3, 0xff, 0xe9, 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, + 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf3, + 0xff, 0xe9, 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, + 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, + 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xee, 0x05, 0x85, + 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xf3, 0xff, 0xe9, 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x85, 0x02, 0x26, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf3, + 0x00, 0x00, 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, + 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, + 0x04, 0x23, 0x05, 0x85, 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x06, + 0x03, 0xc0, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf3, 0x00, 0x00, 0x04, 0x23, + 0x05, 0x85, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xe9, 0x04, 0x23, 0x05, 0x85, + 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x11, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x94, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x05, 0x85, 0x02, 0x26, 0x01, 0x2e, + 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xfe, 0x05, 0x85, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, + 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x14, 0x05, 0x85, 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, 0x00, 0x06, + 0x03, 0xc4, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf3, 0xff, 0xe9, 0x04, 0x23, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc4, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x6e, 0xfe, 0xac, 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x28, + 0x00, 0x49, 0x40, 0x0b, 0x17, 0x11, 0x11, 0x0a, 0x13, 0x13, 0x00, 0x12, + 0x16, 0x16, 0x1e, 0xb8, 0x02, 0x16, 0x40, 0x0b, 0x0a, 0x0a, 0x00, 0x11, + 0x17, 0xce, 0x10, 0x10, 0x14, 0x00, 0x05, 0xb8, 0x01, 0x0a, 0xb3, 0x28, + 0x23, 0x16, 0x13, 0xb8, 0x01, 0x31, 0xb1, 0x14, 0x4f, 0x00, 0x3f, 0xed, + 0x32, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x2f, + 0x33, 0x30, 0x31, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x32, + 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x6e, + 0x19, 0x43, 0x4e, 0x56, 0x2b, 0x40, 0x79, 0x5e, 0x3a, 0x10, 0x3c, 0x77, + 0x67, 0x84, 0x01, 0x33, 0xfe, 0x22, 0x03, 0x21, 0xfe, 0xa4, 0x4e, 0x78, + 0x5a, 0x3d, 0x26, 0x10, 0x5d, 0x9c, 0xcd, 0x70, 0x27, 0x53, 0x54, 0x52, + 0x25, 0x5c, 0x07, 0x0f, 0x0c, 0x07, 0x17, 0x35, 0x56, 0x3e, 0x2a, 0x52, + 0x3f, 0x27, 0xb5, 0x01, 0x35, 0xd1, 0xc2, 0xfe, 0xb7, 0x21, 0x37, 0x4b, + 0x53, 0x59, 0x2a, 0x7f, 0xae, 0x6c, 0x2f, 0x05, 0x0a, 0x0d, 0x09, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xdd, 0x06, 0x87, 0x02, 0x26, + 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x43, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x4c, 0xfe, 0x3b, 0x05, 0x81, 0x05, 0x85, 0x00, 0x34, 0x00, 0x45, + 0x00, 0x53, 0x00, 0x77, 0xb3, 0x46, 0x14, 0x14, 0x17, 0xb8, 0x01, 0x81, + 0xb5, 0x1d, 0x18, 0x18, 0x33, 0x21, 0x00, 0xb8, 0x02, 0x0b, 0xb2, 0x3d, + 0x3d, 0x35, 0xbb, 0x02, 0x17, 0x00, 0x2b, 0x00, 0x4e, 0x01, 0x60, 0x40, + 0x19, 0x0c, 0x46, 0x14, 0x04, 0x1d, 0x1d, 0x11, 0xdf, 0x51, 0x01, 0x51, + 0xac, 0x07, 0x07, 0x54, 0x34, 0x53, 0x3e, 0x41, 0xfc, 0x33, 0x30, 0x50, + 0x3d, 0x3a, 0xb8, 0x01, 0x31, 0x40, 0x0c, 0x21, 0x26, 0x52, 0x17, 0x56, + 0xd0, 0x4b, 0x01, 0x4b, 0xac, 0x11, 0x56, 0x00, 0x3f, 0xed, 0x5d, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x11, 0x33, 0x2f, + 0xed, 0x5d, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x33, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x11, 0x14, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, + 0x15, 0x23, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x35, 0x0e, 0x03, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x11, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x01, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x03, 0xdd, 0x02, 0x04, 0x29, 0x63, 0x33, 0x30, + 0x52, 0x3c, 0x21, 0x22, 0x3d, 0x55, 0x32, 0x47, 0x6f, 0x27, 0x08, 0x0a, + 0xc3, 0x0a, 0x12, 0x17, 0x0c, 0x15, 0x0b, 0x20, 0x45, 0x4f, 0x5b, 0x36, + 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8c, 0xc0, 0x71, 0x26, 0x4d, 0x1e, 0xfe, + 0x63, 0x17, 0x2d, 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, + 0x5e, 0x43, 0x24, 0x02, 0xc8, 0x07, 0x18, 0x1e, 0x25, 0x15, 0x20, 0x30, + 0x2a, 0x26, 0x23, 0x3d, 0x05, 0x85, 0xfa, 0x53, 0x19, 0x1a, 0x0e, 0x2d, + 0x23, 0x1f, 0x37, 0x4f, 0x30, 0x30, 0x4f, 0x39, 0x1f, 0x2a, 0x24, 0x0e, + 0x22, 0x1b, 0x17, 0x38, 0x38, 0x34, 0x14, 0x2f, 0x5f, 0x3d, 0xbe, 0x27, + 0x40, 0x2d, 0x19, 0x48, 0x85, 0xbe, 0x75, 0x8c, 0xcd, 0x87, 0x41, 0x0a, + 0x08, 0x01, 0x8d, 0xfc, 0x6f, 0x54, 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, + 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0xfc, 0xce, 0x0c, 0x1b, 0x15, 0x0e, + 0x26, 0x23, 0x23, 0x25, 0x27, 0x00, 0x00, 0x02, 0x00, 0x5e, 0xff, 0xe8, + 0x04, 0x08, 0x05, 0x85, 0x00, 0x36, 0x00, 0x4a, 0x00, 0x62, 0x40, 0x09, + 0x3c, 0x1e, 0x08, 0x2e, 0x2e, 0x19, 0x0d, 0x36, 0x33, 0xb8, 0x02, 0x0b, + 0xb3, 0x00, 0x03, 0x03, 0x0d, 0xb8, 0x02, 0x10, 0xb4, 0x37, 0x37, 0x19, + 0x24, 0x29, 0xb8, 0x02, 0x0a, 0xb3, 0x23, 0x21, 0x21, 0x41, 0xb8, 0x02, + 0x0f, 0x40, 0x0a, 0x19, 0x1e, 0x08, 0x08, 0x3c, 0xf2, 0x2e, 0x2e, 0x00, + 0x46, 0xb8, 0x01, 0x04, 0xb4, 0x12, 0x52, 0x23, 0x00, 0x53, 0x00, 0x3f, + 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, 0x11, 0x33, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, + 0x33, 0xed, 0x32, 0x11, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, + 0x01, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, + 0x26, 0x35, 0x34, 0x37, 0x33, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x17, + 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, 0x13, 0x34, 0x2e, 0x02, 0x27, 0x0e, + 0x03, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x9d, 0x20, + 0x1f, 0x1c, 0x36, 0x51, 0x35, 0x3a, 0x5f, 0x45, 0x26, 0x27, 0x68, 0xb7, + 0x90, 0x60, 0x90, 0x68, 0x44, 0x28, 0x10, 0x25, 0x43, 0x5f, 0x3a, 0x6a, + 0x6b, 0x3f, 0xe6, 0x11, 0x14, 0x0a, 0x03, 0x1a, 0x30, 0x43, 0x28, 0x2b, + 0x43, 0x2f, 0x19, 0x10, 0x22, 0x59, 0x21, 0x3b, 0x51, 0x30, 0x32, 0x52, + 0x39, 0x1f, 0x19, 0x36, 0x53, 0x3a, 0x3a, 0x53, 0x36, 0x1a, 0x05, 0x85, + 0x32, 0x6a, 0x36, 0x32, 0x62, 0x5a, 0x50, 0x1f, 0x2a, 0x66, 0x77, 0x85, + 0x49, 0x46, 0x91, 0x77, 0x4b, 0x22, 0x3a, 0x4f, 0x5b, 0x63, 0x30, 0x46, + 0x85, 0x78, 0x68, 0x2a, 0x3f, 0xb8, 0x65, 0x6e, 0x65, 0x1c, 0x31, 0x2c, + 0x27, 0x11, 0x38, 0x56, 0x46, 0x3b, 0x1d, 0x1d, 0x3b, 0x46, 0x56, 0x38, + 0x22, 0x57, 0x38, 0xfc, 0x12, 0x2f, 0x64, 0x5d, 0x50, 0x1c, 0x1c, 0x51, + 0x5d, 0x63, 0x2f, 0x2f, 0x53, 0x3f, 0x25, 0x25, 0x3f, 0x53, 0x00, 0x01, + 0x00, 0x96, 0xfe, 0x5c, 0x03, 0xd1, 0x03, 0xf8, 0x00, 0x1b, 0x00, 0x42, + 0xb2, 0x12, 0x12, 0x1b, 0xb8, 0x01, 0xa8, 0x40, 0x11, 0x02, 0x06, 0x06, + 0x08, 0x07, 0x01, 0x03, 0x03, 0x01, 0x12, 0x15, 0xf7, 0x11, 0x0e, 0x56, + 0x06, 0x03, 0xb8, 0x01, 0x31, 0xb3, 0x04, 0x4f, 0x01, 0x07, 0xb8, 0x01, + 0x36, 0xb1, 0x00, 0x51, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x3f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x11, + 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x33, 0x35, 0x01, 0x21, 0x35, 0x21, + 0x15, 0x01, 0x21, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x96, 0x01, 0xf1, 0xfe, + 0x1b, 0x03, 0x27, 0xfe, 0x1a, 0x01, 0xee, 0x25, 0x43, 0x60, 0x3c, 0x21, + 0x51, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xaa, 0x02, 0x7d, + 0xd1, 0xac, 0xfd, 0x8b, 0xfe, 0xc8, 0x63, 0x7e, 0x48, 0x1a, 0x04, 0x04, + 0xc0, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x50, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xd9, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x66, 0xfe, 0xd9, + 0x04, 0x00, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x54, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, + 0x06, 0x8f, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x6b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x06, 0x8f, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x26, 0x01, 0x45, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0x01, 0x2d, 0x00, 0x29, 0x40, 0x1c, + 0x04, 0x5f, 0x3e, 0x01, 0x4f, 0x3e, 0x01, 0x3f, 0x3e, 0x01, 0x7f, 0x3e, + 0x01, 0x6f, 0x3e, 0x01, 0x5f, 0x3e, 0x01, 0x20, 0x3e, 0x01, 0x3e, 0x40, + 0x09, 0x10, 0x48, 0x3e, 0x00, 0x11, 0x2b, 0x5d, 0x5d, 0x5d, 0x5d, 0x71, + 0x71, 0x71, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, + 0x05, 0xa8, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x06, 0x8f, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x73, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, 0x05, 0x62, 0x02, 0x26, + 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, 0x00, 0x02, + 0x00, 0xb4, 0xfe, 0x39, 0x04, 0x8a, 0x05, 0x85, 0x00, 0x27, 0x00, 0x35, + 0x00, 0x5f, 0xb3, 0x28, 0x1b, 0x11, 0x1e, 0xb8, 0x01, 0x91, 0xb3, 0x1f, + 0x1f, 0x09, 0x04, 0xb8, 0x02, 0x11, 0xb6, 0x27, 0x24, 0x27, 0x01, 0x01, + 0x27, 0x30, 0xb8, 0x01, 0x75, 0x40, 0x1c, 0x11, 0x28, 0x09, 0x24, 0x24, + 0x16, 0xdf, 0x33, 0x01, 0x33, 0xac, 0x0c, 0x0c, 0x36, 0xd0, 0x2d, 0x01, + 0x2d, 0xac, 0x16, 0x1f, 0x1f, 0x16, 0x56, 0x01, 0xfa, 0x02, 0x53, 0x00, + 0x3f, 0xed, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x5d, 0x11, 0x33, 0x2f, 0xed, + 0x5d, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x10, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x39, 0x30, + 0x31, 0x01, 0x21, 0x35, 0x21, 0x11, 0x14, 0x14, 0x16, 0x16, 0x17, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x27, 0x06, 0x06, 0x15, 0x23, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, + 0x35, 0x05, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x01, 0xd3, 0xfe, 0xe1, 0x02, 0x19, 0x02, 0x03, 0x02, 0x2b, 0x69, + 0x36, 0x33, 0x56, 0x3f, 0x24, 0x24, 0x41, 0x5a, 0x35, 0x2f, 0x4c, 0x3e, + 0x2f, 0x13, 0x09, 0x12, 0xce, 0x0b, 0x13, 0x18, 0x0d, 0x17, 0x0b, 0x01, + 0x31, 0x07, 0x19, 0x1f, 0x27, 0x16, 0x22, 0x2f, 0x2a, 0x27, 0x26, 0x3e, + 0x04, 0xc7, 0xbe, 0xfa, 0x63, 0x12, 0x18, 0x12, 0x0e, 0x08, 0x2d, 0x24, + 0x1f, 0x38, 0x4f, 0x30, 0x30, 0x50, 0x39, 0x1f, 0x0e, 0x18, 0x20, 0x12, + 0x0e, 0x2c, 0x1b, 0x17, 0x38, 0x39, 0x34, 0x14, 0x2f, 0x5f, 0x3e, 0xc8, + 0x0c, 0x1b, 0x15, 0x0e, 0x26, 0x23, 0x23, 0x25, 0x27, 0x00, 0x00, 0x02, + 0x00, 0x8b, 0xfe, 0x39, 0x05, 0x9a, 0x04, 0x0e, 0x00, 0x38, 0x00, 0x46, + 0x00, 0x73, 0xb1, 0x2f, 0x2b, 0xb8, 0x02, 0x0b, 0xb2, 0x2c, 0x18, 0x1b, + 0xb8, 0x01, 0x8d, 0xb4, 0x1c, 0x1c, 0x39, 0x06, 0x01, 0xb8, 0x02, 0x0b, + 0xb4, 0x21, 0x24, 0x24, 0x2c, 0x41, 0xb8, 0x01, 0x75, 0x40, 0x10, 0x0e, + 0x39, 0x21, 0x21, 0x13, 0xdf, 0x44, 0x01, 0x44, 0xac, 0x06, 0x09, 0x09, + 0x47, 0x2a, 0x27, 0xb8, 0x01, 0x31, 0x40, 0x12, 0x2f, 0x34, 0x50, 0x2d, + 0x4f, 0x2c, 0x51, 0xd0, 0x3e, 0x01, 0x3e, 0xac, 0x13, 0x1c, 0x1c, 0x18, + 0x13, 0x56, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x5d, 0x3f, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x5d, 0x12, 0x39, + 0x11, 0x33, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, + 0x33, 0x2f, 0xed, 0x32, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x11, 0x14, + 0x14, 0x16, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x06, 0x06, 0x15, 0x23, 0x34, + 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, + 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x13, + 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x03, + 0xdd, 0x02, 0x03, 0x02, 0x2b, 0x69, 0x36, 0x33, 0x56, 0x3f, 0x24, 0x24, + 0x41, 0x5a, 0x35, 0x2f, 0x4c, 0x3e, 0x2f, 0x13, 0x09, 0x12, 0xc8, 0x0b, + 0x13, 0x18, 0x0d, 0x18, 0x0a, 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0xd3, 0x06, + 0x1f, 0x43, 0x4d, 0x5b, 0x38, 0x4e, 0x74, 0x4e, 0x27, 0x37, 0x07, 0x19, + 0x1f, 0x27, 0x16, 0x22, 0x2f, 0x2a, 0x27, 0x26, 0x3e, 0x02, 0xaa, 0xfd, + 0x3e, 0x12, 0x18, 0x12, 0x0e, 0x08, 0x2d, 0x24, 0x1f, 0x38, 0x4f, 0x30, + 0x30, 0x50, 0x39, 0x1f, 0x0e, 0x18, 0x20, 0x12, 0x0e, 0x2c, 0x1b, 0x17, + 0x38, 0x39, 0x34, 0x14, 0x32, 0x66, 0x44, 0x02, 0xae, 0xa7, 0x64, 0x56, + 0xfd, 0x7d, 0x03, 0xf8, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, + 0xfc, 0x15, 0x0c, 0x1b, 0x15, 0x0e, 0x26, 0x23, 0x23, 0x25, 0x27, 0x00, + 0x00, 0x02, 0x00, 0x3b, 0xfe, 0x39, 0x04, 0x03, 0x05, 0x3d, 0x00, 0x2d, + 0x00, 0x3b, 0x00, 0x78, 0xb9, 0x00, 0x1b, 0x01, 0x91, 0xb3, 0x1c, 0x1c, + 0x24, 0x36, 0xb8, 0x01, 0x75, 0x40, 0x0a, 0x0e, 0x0e, 0x24, 0x2e, 0x2d, + 0x2d, 0x2b, 0x18, 0x06, 0x01, 0xb8, 0x02, 0x11, 0x40, 0x28, 0x24, 0x28, + 0x24, 0x26, 0x26, 0x21, 0x24, 0x2e, 0x21, 0x21, 0x13, 0xdf, 0x39, 0x01, + 0x39, 0xac, 0x06, 0x09, 0x09, 0x3c, 0x29, 0x2a, 0x2a, 0x00, 0x25, 0xfa, + 0x2b, 0x28, 0x4f, 0xd0, 0x33, 0x01, 0x33, 0xac, 0x13, 0x1c, 0x1c, 0x18, + 0x13, 0x56, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x5d, 0x3f, 0x33, + 0xed, 0x32, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x5d, 0x12, + 0x39, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, + 0x32, 0x32, 0x32, 0x32, 0x2f, 0x32, 0x11, 0x33, 0x2f, 0xed, 0x11, 0x33, + 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, 0x14, 0x14, 0x16, 0x16, 0x17, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x27, 0x06, 0x06, 0x15, 0x23, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, + 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x37, 0x11, 0x21, 0x15, 0x01, 0x1e, + 0x03, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x02, 0x46, + 0x02, 0x03, 0x02, 0x2b, 0x69, 0x36, 0x33, 0x56, 0x3f, 0x24, 0x24, 0x41, + 0x5a, 0x35, 0x2f, 0x4c, 0x3e, 0x2f, 0x13, 0x09, 0x12, 0xce, 0x0b, 0x13, + 0x18, 0x0d, 0x18, 0x0a, 0xfe, 0xef, 0x01, 0x11, 0xfa, 0x01, 0x8b, 0xfe, + 0xac, 0x07, 0x19, 0x1f, 0x27, 0x16, 0x22, 0x2f, 0x2a, 0x27, 0x26, 0x3e, + 0x03, 0x3a, 0xfc, 0xae, 0x12, 0x18, 0x12, 0x0e, 0x08, 0x2d, 0x24, 0x1f, + 0x38, 0x4f, 0x30, 0x30, 0x50, 0x39, 0x1f, 0x0e, 0x18, 0x20, 0x12, 0x0e, + 0x2c, 0x1b, 0x17, 0x38, 0x39, 0x34, 0x14, 0x32, 0x66, 0x44, 0x03, 0x52, + 0xbe, 0x01, 0x04, 0x41, 0xfe, 0xbb, 0xbe, 0xfb, 0xd6, 0x0c, 0x1b, 0x15, + 0x0e, 0x26, 0x23, 0x23, 0x25, 0x27, 0x00, 0x03, 0x00, 0x32, 0xff, 0xf3, + 0x04, 0x34, 0x05, 0x85, 0x00, 0x29, 0x00, 0x3a, 0x00, 0x4d, 0x00, 0x5e, + 0xb2, 0x1d, 0x05, 0x3f, 0xb8, 0x01, 0x8f, 0xb5, 0x1a, 0x08, 0x37, 0x37, + 0x12, 0x25, 0xb8, 0x01, 0xa8, 0xb2, 0x49, 0x49, 0x2f, 0xb8, 0x01, 0xa8, + 0x40, 0x1d, 0x12, 0x1c, 0x53, 0x3e, 0x38, 0x38, 0x3b, 0x2a, 0xf7, 0x1d, + 0x1a, 0x1a, 0x20, 0x17, 0x50, 0x3f, 0x37, 0x37, 0x44, 0x34, 0xf8, 0x05, + 0x08, 0x08, 0x00, 0x0d, 0x52, 0x07, 0x51, 0x00, 0x3f, 0x3f, 0x33, 0x33, + 0x11, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x3f, 0x33, 0x33, 0x11, 0x33, + 0xe1, 0x32, 0x32, 0x11, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x30, 0x31, 0x05, 0x22, + 0x2e, 0x02, 0x27, 0x07, 0x23, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x01, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, + 0x21, 0x22, 0x06, 0x07, 0x11, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x03, 0x47, 0x25, 0x39, 0x2c, 0x22, 0x0e, 0x03, 0xae, + 0x03, 0x0c, 0x1f, 0x2b, 0x3a, 0x28, 0x45, 0x5c, 0x37, 0x17, 0x1e, 0x4a, + 0x7d, 0x5e, 0x1a, 0x2a, 0x14, 0xcc, 0x14, 0x2a, 0x1a, 0x5e, 0x7d, 0x4a, + 0x1e, 0x17, 0x37, 0x5b, 0xfe, 0x06, 0x2c, 0x37, 0x1e, 0x0b, 0x0e, 0x1b, + 0x26, 0x19, 0x1c, 0x2d, 0x17, 0x10, 0x18, 0x01, 0x30, 0x14, 0x18, 0x10, + 0x0c, 0x16, 0x16, 0x19, 0x0e, 0x19, 0x27, 0x1b, 0x0e, 0x0b, 0x1e, 0x37, + 0x0d, 0x0f, 0x1a, 0x1f, 0x11, 0x4c, 0x4c, 0x0f, 0x1f, 0x1a, 0x11, 0x46, + 0x81, 0xb7, 0x70, 0x80, 0xcd, 0x8f, 0x4d, 0x04, 0x04, 0x01, 0x83, 0xfe, + 0x7d, 0x04, 0x04, 0x4d, 0x8f, 0xcd, 0x80, 0x70, 0xb7, 0x81, 0x46, 0x03, + 0x5c, 0x2d, 0x59, 0x85, 0x58, 0x5b, 0x7a, 0x49, 0x1f, 0x13, 0x23, 0x02, + 0x5f, 0x05, 0x06, 0x06, 0x05, 0xfd, 0xa1, 0x12, 0x15, 0x0b, 0x04, 0x1f, + 0x49, 0x7a, 0x5b, 0x5a, 0x86, 0x58, 0x2b, 0x00, 0x00, 0x03, 0x00, 0x32, + 0xfe, 0x73, 0x04, 0x34, 0x04, 0x05, 0x00, 0x29, 0x00, 0x3c, 0x00, 0x4d, + 0x00, 0x37, 0x40, 0x1c, 0x3a, 0x40, 0x40, 0x2a, 0x3d, 0xf7, 0x1a, 0x1d, + 0x1d, 0x17, 0x20, 0x52, 0x1c, 0x55, 0x06, 0x4f, 0x39, 0x41, 0x41, 0x34, + 0x44, 0xf8, 0x08, 0x05, 0x05, 0x0d, 0x00, 0x50, 0x00, 0x3f, 0x32, 0x32, + 0x11, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x3f, 0x3f, 0x3f, 0x33, 0x33, + 0x11, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x30, 0x31, 0x01, 0x32, 0x1e, + 0x02, 0x17, 0x37, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x11, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x01, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x16, 0x16, + 0x21, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x01, 0x1f, 0x25, 0x39, 0x2c, 0x22, 0x0e, 0x03, 0xae, + 0x03, 0x0c, 0x1f, 0x2b, 0x3a, 0x28, 0x45, 0x5c, 0x37, 0x17, 0x1e, 0x4a, + 0x7d, 0x5e, 0x1a, 0x2a, 0x14, 0xcc, 0x14, 0x2a, 0x1a, 0x5e, 0x7d, 0x4a, + 0x1e, 0x17, 0x37, 0x5b, 0x01, 0xfa, 0x2c, 0x37, 0x1e, 0x0b, 0x0e, 0x1b, + 0x26, 0x19, 0x0e, 0x19, 0x17, 0x16, 0x0c, 0x10, 0x18, 0xfe, 0xd0, 0x14, + 0x18, 0x10, 0x17, 0x2c, 0x1c, 0x19, 0x27, 0x1b, 0x0e, 0x0b, 0x1e, 0x37, + 0x04, 0x05, 0x0f, 0x1a, 0x20, 0x10, 0x4c, 0x4c, 0x0f, 0x1f, 0x1a, 0x11, + 0x46, 0x81, 0xb7, 0x70, 0x80, 0xcd, 0x8f, 0x4d, 0x04, 0x04, 0xfe, 0x7d, + 0x01, 0x83, 0x04, 0x04, 0x4d, 0x8f, 0xcd, 0x80, 0x70, 0xb7, 0x81, 0x46, + 0xfc, 0xa4, 0x2d, 0x59, 0x85, 0x58, 0x5b, 0x7a, 0x49, 0x1f, 0x04, 0x0b, + 0x15, 0x12, 0xfd, 0xa1, 0x05, 0x06, 0x06, 0x05, 0x02, 0x5f, 0x23, 0x13, + 0x1f, 0x49, 0x7a, 0x5b, 0x5a, 0x86, 0x58, 0x2b, 0xff, 0xff, 0x00, 0x00, + 0xff, 0x54, 0x04, 0x64, 0x04, 0x28, 0x02, 0x26, 0x00, 0x85, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x9c, 0xfe, 0x69, + 0x03, 0xd1, 0x04, 0x0e, 0x00, 0x4a, 0x00, 0x4b, 0x40, 0x2f, 0x06, 0x46, + 0x01, 0x06, 0x46, 0x66, 0x46, 0x76, 0x46, 0xf6, 0x46, 0x04, 0x46, 0x37, + 0x25, 0x09, 0x2d, 0x01, 0x69, 0x2d, 0x79, 0x2d, 0xf9, 0x2d, 0x03, 0x2d, + 0x05, 0x3b, 0x3e, 0xf2, 0x3a, 0x37, 0x50, 0x10, 0x0d, 0xfe, 0x11, 0x14, + 0x57, 0x22, 0x25, 0xf4, 0x1e, 0x21, 0x21, 0x05, 0x52, 0x00, 0x3f, 0x33, + 0x12, 0x39, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x5d, 0x71, 0x11, 0x12, 0x39, 0x5d, 0x71, 0x30, 0x31, 0x01, + 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, + 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x27, + 0x26, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, + 0x03, 0x03, 0xd1, 0x3f, 0x6b, 0x8b, 0x4b, 0x23, 0x2d, 0x16, 0x0c, 0x19, + 0x1f, 0x26, 0x19, 0x23, 0x31, 0x0f, 0x21, 0x46, 0x1b, 0x4f, 0x6f, 0x4f, + 0x39, 0x19, 0x11, 0x22, 0x27, 0x2f, 0x1e, 0x1e, 0x3d, 0x1e, 0x5e, 0xba, + 0x54, 0x61, 0x5e, 0x14, 0x37, 0x64, 0x51, 0x4b, 0x71, 0x4a, 0x25, 0x38, + 0x6f, 0xa6, 0x6f, 0x61, 0x93, 0x39, 0x58, 0x98, 0x4b, 0x4b, 0x5b, 0x12, + 0x35, 0x5f, 0x4e, 0x58, 0x78, 0x49, 0x20, 0x01, 0x2b, 0x4f, 0x73, 0x4d, + 0x2a, 0x06, 0x17, 0x40, 0x1e, 0x10, 0x1b, 0x15, 0x0c, 0x09, 0x05, 0xc5, + 0x06, 0x05, 0x29, 0x42, 0x52, 0x29, 0x1c, 0x34, 0x2c, 0x22, 0x09, 0x09, + 0x0b, 0x08, 0xdc, 0x27, 0x23, 0x3d, 0x31, 0x17, 0x26, 0x23, 0x25, 0x17, + 0x15, 0x35, 0x48, 0x5f, 0x40, 0x3e, 0x6e, 0x53, 0x30, 0x14, 0x0c, 0xc7, + 0x1c, 0x17, 0x36, 0x30, 0x16, 0x25, 0x23, 0x24, 0x16, 0x19, 0x39, 0x48, + 0x5c, 0x00, 0x00, 0x01, 0x00, 0x96, 0xfe, 0x69, 0x04, 0x27, 0x03, 0xf8, + 0x00, 0x22, 0x00, 0x37, 0x40, 0x0a, 0x1f, 0x1f, 0x00, 0x1d, 0x1e, 0x22, + 0x22, 0x0d, 0x22, 0x1f, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x20, 0x4f, 0x1d, + 0x00, 0xf5, 0x1c, 0x51, 0x0d, 0x0a, 0xb8, 0x01, 0x32, 0xb2, 0x0e, 0x11, + 0x57, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x30, 0x31, 0x25, + 0x1e, 0x03, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x23, 0x23, 0x35, 0x01, 0x21, + 0x35, 0x21, 0x15, 0x01, 0xc8, 0x4a, 0x68, 0x4a, 0x34, 0x17, 0x12, 0x22, + 0x2a, 0x34, 0x23, 0x23, 0x31, 0x0f, 0x21, 0x46, 0x1b, 0x50, 0x6a, 0x4a, + 0x32, 0x18, 0x18, 0x36, 0x52, 0x78, 0x5a, 0x4f, 0x01, 0xf1, 0xfe, 0x1b, + 0x03, 0x27, 0xb9, 0x09, 0x31, 0x43, 0x4e, 0x25, 0x1d, 0x33, 0x26, 0x17, + 0x09, 0x05, 0xd6, 0x06, 0x05, 0x22, 0x38, 0x48, 0x26, 0x27, 0x4a, 0x3a, + 0x24, 0xaa, 0x02, 0x7d, 0xd1, 0xac, 0x00, 0x01, 0x01, 0x19, 0x00, 0x00, + 0x03, 0xc5, 0x03, 0xf8, 0x00, 0x1a, 0x00, 0x34, 0xb1, 0x06, 0x05, 0xb8, + 0x01, 0xe0, 0xb5, 0x07, 0x08, 0x08, 0x0e, 0x14, 0x00, 0xb8, 0x02, 0x26, + 0xb6, 0x0e, 0x05, 0xf8, 0x08, 0x08, 0x06, 0x14, 0xb8, 0x01, 0x3f, 0xb3, + 0x15, 0x4f, 0x06, 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x01, 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x23, 0x03, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x1e, 0x02, 0x03, + 0xc5, 0x33, 0x5f, 0x86, 0x53, 0x0a, 0xd1, 0x12, 0x91, 0x31, 0x47, 0x2d, + 0x15, 0x29, 0x57, 0x86, 0x5e, 0x3b, 0x45, 0x9a, 0xe6, 0x9a, 0x4d, 0x02, + 0x46, 0x54, 0x85, 0x61, 0x3c, 0x0b, 0xc5, 0x01, 0x81, 0x1c, 0x30, 0x3f, + 0x23, 0x30, 0x53, 0x3f, 0x24, 0xe3, 0x49, 0x79, 0x9c, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0x54, 0x04, 0x64, 0x04, 0x28, 0x02, 0x26, 0x00, 0x87, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x68, 0x00, 0x00, 0xff, 0xff, 0x00, 0x77, + 0xfe, 0x5c, 0x04, 0x3e, 0x05, 0xae, 0x02, 0x26, 0x00, 0x8c, 0x00, 0x00, + 0x01, 0x07, 0x0a, 0x66, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0c, 0xb6, 0x02, + 0x00, 0x2a, 0x70, 0x2a, 0x02, 0x2a, 0x00, 0x11, 0x5d, 0x35, 0xff, 0xff, + 0x00, 0x37, 0xfe, 0x5c, 0x04, 0x3e, 0x05, 0xae, 0x02, 0x26, 0x01, 0x1f, + 0x00, 0x00, 0x01, 0x07, 0x0a, 0x66, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x0c, + 0xb6, 0x02, 0x00, 0x38, 0x70, 0x38, 0x02, 0x38, 0x00, 0x11, 0x5d, 0x35, + 0xff, 0xff, 0x00, 0x77, 0xfe, 0x5c, 0x04, 0x3e, 0x03, 0xf8, 0x02, 0x26, + 0x00, 0xcc, 0x00, 0x00, 0x01, 0x07, 0x0a, 0x66, 0x00, 0xaa, 0x00, 0x00, + 0x00, 0x0c, 0xb6, 0x01, 0x00, 0x16, 0x70, 0x16, 0x02, 0x16, 0x00, 0x11, + 0x5d, 0x35, 0xff, 0xff, 0x00, 0x37, 0xfe, 0x5c, 0x04, 0x3e, 0x04, 0x0e, + 0x02, 0x26, 0x01, 0x20, 0x00, 0x00, 0x01, 0x07, 0x0a, 0x66, 0x00, 0xaa, + 0x00, 0x00, 0x00, 0x0c, 0xb6, 0x01, 0x00, 0x24, 0x70, 0x24, 0x02, 0x24, + 0x00, 0x11, 0x5d, 0x35, 0x00, 0x02, 0x00, 0x4c, 0xfe, 0x62, 0x04, 0xe2, + 0x04, 0x0c, 0x00, 0x29, 0x00, 0x3a, 0x00, 0x47, 0xb2, 0x1e, 0x1e, 0x16, + 0xb8, 0x02, 0x0b, 0xb4, 0x14, 0x00, 0x32, 0x32, 0x2a, 0xb8, 0x02, 0x17, + 0xb2, 0x0a, 0x1e, 0x1b, 0xb8, 0x01, 0x36, 0x40, 0x0d, 0x1f, 0x24, 0x56, + 0x15, 0x50, 0x33, 0x36, 0xfc, 0x14, 0x0f, 0x50, 0x32, 0x2f, 0xb8, 0x01, + 0x31, 0xb2, 0x00, 0x05, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0x33, 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x25, 0x0e, 0x03, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x37, + 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x02, 0xf4, 0x1c, 0x3f, 0x4b, + 0x57, 0x34, 0x5a, 0x8c, 0x5f, 0x32, 0x42, 0x83, 0xc4, 0x83, 0x19, 0x3c, + 0x3c, 0x37, 0x15, 0xa8, 0x09, 0x1e, 0x37, 0x2e, 0x24, 0x3a, 0x1b, 0x11, + 0x20, 0x26, 0x30, 0x21, 0x5a, 0x7d, 0x4d, 0x22, 0xfe, 0x58, 0x17, 0x2d, + 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, + 0x87, 0x23, 0x3a, 0x2a, 0x17, 0x48, 0x85, 0xbe, 0x75, 0x79, 0xc9, 0x90, + 0x4f, 0x06, 0x09, 0x0d, 0x07, 0x25, 0xfb, 0xfd, 0x2d, 0x4c, 0x37, 0x20, + 0x06, 0x06, 0xd2, 0x04, 0x06, 0x05, 0x02, 0x33, 0x60, 0x8b, 0x58, 0x02, + 0x1c, 0x54, 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, + 0x58, 0x7f, 0xff, 0xff, 0x00, 0x10, 0x00, 0x00, 0x04, 0x46, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x94, 0x35, 0x00, 0x01, 0x07, 0x0a, 0x66, 0xff, 0x3e, + 0xff, 0xed, 0x00, 0x15, 0x40, 0x0e, 0x01, 0x40, 0x18, 0x01, 0x00, 0x18, + 0x10, 0x18, 0x70, 0x18, 0xa0, 0x18, 0x04, 0x18, 0x00, 0x11, 0x5d, 0x71, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x89, 0x00, 0x00, 0x04, 0x49, 0x04, 0x0e, + 0x02, 0x26, 0x01, 0x2e, 0x35, 0x00, 0x01, 0x06, 0x0a, 0x66, 0xb9, 0xed, + 0x00, 0x1b, 0x40, 0x10, 0x70, 0x1b, 0x01, 0x1b, 0x70, 0x1a, 0x01, 0x1a, + 0x6f, 0x1c, 0x01, 0x1c, 0x6f, 0x1d, 0x01, 0x1d, 0x00, 0x11, 0x5d, 0x11, + 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x00, 0xff, 0xff, 0x00, 0x10, 0x00, 0x00, + 0x04, 0x33, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x32, 0x35, 0x00, 0x01, 0x07, + 0x0a, 0x66, 0xff, 0x3e, 0xff, 0xed, 0x00, 0x15, 0x40, 0x0e, 0x01, 0x40, + 0x18, 0x01, 0x00, 0x18, 0x10, 0x18, 0x70, 0x18, 0xa0, 0x18, 0x04, 0x18, + 0x00, 0x11, 0x5d, 0x71, 0x35, 0x00, 0xff, 0xff, 0x00, 0x87, 0xff, 0xe9, + 0x04, 0x49, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x36, 0x35, 0x00, 0x01, 0x06, + 0x0a, 0x66, 0xb5, 0xed, 0x00, 0x1f, 0x40, 0x16, 0x6f, 0x31, 0x7f, 0x31, + 0x02, 0x6f, 0x30, 0x7f, 0x30, 0x02, 0x01, 0x40, 0x2e, 0x01, 0x00, 0x2e, + 0x70, 0x2e, 0xa0, 0x2e, 0x03, 0x2e, 0x00, 0x11, 0x5d, 0x71, 0x35, 0x5d, + 0x5d, 0x00, 0x00, 0x02, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x65, 0x03, 0xf8, + 0x00, 0x1f, 0x00, 0x22, 0x00, 0x91, 0x40, 0x3b, 0x09, 0x01, 0x1e, 0x1d, + 0x02, 0x1d, 0x1d, 0x20, 0x08, 0x0b, 0x0c, 0x07, 0x0c, 0x0c, 0x05, 0x21, + 0x20, 0x06, 0x04, 0x22, 0x20, 0x03, 0x20, 0x20, 0x02, 0x06, 0x07, 0x03, + 0x02, 0x15, 0x15, 0x02, 0x00, 0x1d, 0x20, 0x22, 0x21, 0x1e, 0x0b, 0x1f, + 0xfa, 0x00, 0x08, 0x05, 0x04, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x40, + 0x20, 0x00, 0x20, 0x00, 0x02, 0x15, 0x18, 0xb8, 0x01, 0x08, 0x40, 0x0c, + 0x14, 0x11, 0x56, 0x0c, 0x51, 0x07, 0x4f, 0x03, 0x4f, 0x06, 0x02, 0x4f, + 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, + 0x39, 0x2f, 0x2f, 0x38, 0x5d, 0x11, 0x33, 0x33, 0x33, 0x33, 0x10, 0xed, + 0x32, 0x32, 0x32, 0x32, 0x11, 0x33, 0x01, 0x2f, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0x87, 0xc4, + 0xc4, 0x01, 0x33, 0x10, 0x87, 0xc4, 0xc4, 0x11, 0x01, 0x33, 0x10, 0x87, + 0xc4, 0xc4, 0x01, 0x18, 0x2f, 0x30, 0x31, 0x11, 0x33, 0x03, 0x21, 0x13, + 0x21, 0x13, 0x21, 0x03, 0x33, 0x15, 0x23, 0x03, 0x0e, 0x03, 0x23, 0x22, + 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x03, 0x23, + 0x05, 0x37, 0x23, 0xa4, 0x8d, 0x01, 0x10, 0x80, 0x01, 0x24, 0x81, 0x01, + 0x06, 0x8d, 0xa0, 0xea, 0x8d, 0x34, 0x73, 0x8b, 0xa8, 0x6a, 0x19, 0x3b, + 0x1f, 0x18, 0x48, 0x1f, 0x2a, 0x48, 0x3d, 0x32, 0x13, 0xba, 0xf0, 0x02, + 0x39, 0x4d, 0x9a, 0x02, 0x93, 0x01, 0x65, 0xfe, 0x9b, 0x01, 0x65, 0xfe, + 0x9b, 0xbe, 0xfe, 0x9a, 0x84, 0xc7, 0x85, 0x43, 0x05, 0x05, 0xcf, 0x04, + 0x08, 0x20, 0x39, 0x4f, 0x2f, 0x01, 0xd5, 0xd7, 0xd7, 0x00, 0x00, 0x02, + 0x00, 0x1c, 0xfe, 0x62, 0x03, 0xdc, 0x05, 0xf4, 0x00, 0x24, 0x00, 0x30, + 0x00, 0x36, 0xb4, 0x2b, 0x1c, 0x13, 0x13, 0x0b, 0xb8, 0x02, 0x11, 0xb2, + 0x1c, 0x1c, 0x25, 0xb8, 0x01, 0xa8, 0xb6, 0x00, 0x20, 0xf8, 0x28, 0x28, + 0x05, 0x10, 0xb8, 0x01, 0x36, 0xb4, 0x17, 0x56, 0x2e, 0xd0, 0x05, 0x00, + 0x2f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x31, 0x30, 0x13, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x1c, 0x2f, 0x54, 0x72, 0x43, 0x53, 0x82, 0x59, + 0x2e, 0x09, 0x1e, 0x37, 0x2e, 0x38, 0x4d, 0x1b, 0x23, 0x6a, 0x42, 0x5a, + 0x82, 0x54, 0x27, 0x20, 0x3e, 0x23, 0x39, 0x66, 0x4d, 0x2d, 0xd3, 0x33, + 0x33, 0x32, 0x34, 0x34, 0x32, 0x33, 0x33, 0x04, 0xce, 0x43, 0x6c, 0x4d, + 0x2a, 0x28, 0x54, 0x82, 0x5b, 0xfb, 0x6e, 0x2d, 0x4c, 0x37, 0x20, 0x0c, + 0x06, 0xd2, 0x08, 0x0f, 0x29, 0x54, 0x80, 0x58, 0x04, 0x08, 0x0c, 0x0c, + 0x23, 0x49, 0x6f, 0x50, 0x33, 0x3c, 0x3c, 0x33, 0x32, 0x3d, 0x3d, 0x00, + 0x00, 0x01, 0x00, 0x7b, 0x00, 0x00, 0x04, 0x20, 0x05, 0x31, 0x00, 0x28, + 0x00, 0x5d, 0xb3, 0x18, 0x1b, 0x1f, 0x15, 0xb8, 0x02, 0x05, 0x40, 0x1b, + 0x01, 0x27, 0x23, 0x04, 0x04, 0x20, 0x1a, 0x1a, 0x20, 0x20, 0x1f, 0x23, + 0x0c, 0x0d, 0x0d, 0x23, 0x28, 0x28, 0x23, 0x1b, 0x28, 0xda, 0x18, 0x00, + 0x00, 0x10, 0x1f, 0xb8, 0x01, 0x1a, 0xb5, 0x22, 0x43, 0x0d, 0x0c, 0x0c, + 0x09, 0xb8, 0x01, 0x12, 0xb1, 0x10, 0x42, 0x00, 0x3f, 0xed, 0x32, 0x2f, + 0x33, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x12, 0x39, 0x39, 0xed, 0x11, 0x39, 0x39, 0x31, 0x30, 0x13, + 0x21, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x33, 0x15, + 0x23, 0x06, 0x06, 0x07, 0x07, 0x21, 0x15, 0x21, 0x35, 0x01, 0x36, 0x36, + 0x37, 0x21, 0xbe, 0x01, 0xd9, 0x1a, 0x10, 0x18, 0x2e, 0x46, 0x2d, 0x4e, + 0x82, 0x3c, 0x81, 0x55, 0xd4, 0x7d, 0x60, 0x9c, 0x6f, 0x3d, 0x12, 0x11, + 0x7a, 0xf7, 0x20, 0x4d, 0x2d, 0xbe, 0x02, 0x27, 0xfc, 0x89, 0x01, 0x35, + 0x14, 0x25, 0x11, 0xfe, 0xbe, 0x02, 0xf8, 0x2f, 0x4f, 0x2c, 0x25, 0x43, + 0x31, 0x1d, 0x42, 0x39, 0xa6, 0x4f, 0x5f, 0x31, 0x60, 0x90, 0x5e, 0x33, + 0x5c, 0x2b, 0xc3, 0x26, 0x4f, 0x2a, 0xb5, 0xe1, 0xb4, 0x01, 0x35, 0x14, + 0x26, 0x12, 0x00, 0x01, 0x00, 0xe1, 0x00, 0x01, 0x03, 0xc5, 0x04, 0xbb, + 0x00, 0x20, 0x00, 0x88, 0x40, 0x16, 0x06, 0x09, 0x01, 0x05, 0x08, 0x09, + 0x04, 0x09, 0x04, 0x09, 0x09, 0x02, 0x20, 0x1f, 0x03, 0x03, 0x1f, 0x1f, + 0x13, 0x07, 0x07, 0x0c, 0xb8, 0x02, 0x26, 0x40, 0x09, 0x19, 0x19, 0x13, + 0x00, 0x00, 0x13, 0x1f, 0xf8, 0x09, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1f, + 0x48, 0x09, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x15, 0x48, 0x09, 0xb8, 0xff, + 0xc0, 0xb7, 0x0a, 0x0d, 0x48, 0x09, 0x09, 0x02, 0x13, 0x14, 0xb8, 0x01, + 0x3f, 0x40, 0x0e, 0x12, 0x11, 0x51, 0x08, 0x20, 0xc7, 0x02, 0x04, 0x04, + 0x03, 0x03, 0x05, 0x02, 0x4f, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0x2f, + 0x10, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x2b, 0x2b, + 0x2b, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, + 0x11, 0x33, 0x2f, 0x33, 0x7d, 0x87, 0xc4, 0xc4, 0x01, 0x33, 0x11, 0x33, + 0x10, 0x87, 0xc4, 0xc4, 0x00, 0x5d, 0x31, 0x30, 0x13, 0x35, 0x33, 0x37, + 0x33, 0x17, 0x33, 0x15, 0x23, 0x17, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x23, 0x37, 0xe1, 0x99, 0x07, 0xcb, 0x06, 0xbd, 0xb7, 0x02, 0xb2, 0xb9, + 0x4d, 0x9a, 0xe6, 0x9a, 0x45, 0x3b, 0x5e, 0x86, 0x57, 0x29, 0x15, 0x2d, + 0x47, 0x31, 0x91, 0x08, 0x03, 0x55, 0xa3, 0xc3, 0xc3, 0xa3, 0x41, 0x12, + 0xb8, 0xa9, 0x54, 0x97, 0x72, 0x43, 0xe3, 0x1f, 0x37, 0x4e, 0x30, 0x23, + 0x3b, 0x2a, 0x18, 0xfd, 0xff, 0xff, 0x01, 0xc3, 0xfe, 0x66, 0x02, 0xa4, + 0x06, 0x66, 0x02, 0x06, 0x01, 0x76, 0x00, 0x00, 0x00, 0x02, 0x00, 0xfb, + 0xfe, 0x66, 0x03, 0x6c, 0x06, 0x66, 0x00, 0x03, 0x00, 0x07, 0x00, 0x21, + 0xb9, 0x00, 0x07, 0x01, 0xd5, 0xb2, 0x04, 0x04, 0x03, 0xb8, 0x01, 0xd5, + 0xb6, 0x00, 0x04, 0x00, 0x57, 0x05, 0x01, 0x5d, 0x00, 0x3f, 0x33, 0x3f, + 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x13, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0xfb, 0xe1, 0xaf, 0xe1, 0xfe, 0x66, 0x08, + 0x00, 0xf8, 0x00, 0x08, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0xd1, + 0xfe, 0x66, 0x03, 0x95, 0x06, 0x66, 0x00, 0x13, 0x00, 0x4c, 0xb5, 0x0d, + 0x11, 0x11, 0x0f, 0x0a, 0x13, 0xb8, 0x01, 0xc3, 0x40, 0x1e, 0x00, 0x06, + 0x02, 0x02, 0x09, 0x04, 0x00, 0x12, 0x02, 0xe2, 0x03, 0x0f, 0x03, 0x0e, + 0x06, 0xe2, 0x07, 0x0b, 0x07, 0x6f, 0x07, 0x01, 0x03, 0x07, 0x03, 0x07, + 0x09, 0x5d, 0x00, 0x57, 0x00, 0x3f, 0x3f, 0x39, 0x39, 0x2f, 0x2f, 0x5d, + 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x33, 0x33, 0x2f, 0x32, 0x10, 0xed, 0x32, 0x32, 0x32, 0x2f, 0x33, + 0x31, 0x30, 0x01, 0x11, 0x23, 0x35, 0x33, 0x11, 0x23, 0x35, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x33, 0x15, 0x23, 0x11, 0x01, 0xc3, + 0xf2, 0xf2, 0xf2, 0xf2, 0xe1, 0xf1, 0xf1, 0xf1, 0xf1, 0xfe, 0x66, 0x02, + 0xb8, 0xcd, 0x01, 0x40, 0xcd, 0x02, 0x6e, 0xfd, 0x92, 0xcd, 0xfe, 0xc0, + 0xcd, 0xfd, 0x48, 0x00, 0xff, 0xff, 0x01, 0x98, 0xff, 0xe9, 0x02, 0xcf, + 0x05, 0x85, 0x02, 0x06, 0x01, 0x60, 0x00, 0x00, 0xff, 0xff, 0x00, 0x6d, + 0xfd, 0xf2, 0x03, 0xd9, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, + 0x00, 0x06, 0x03, 0xda, 0x00, 0x00, 0xff, 0xff, 0x00, 0x64, 0xff, 0xee, + 0x04, 0x1d, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x84, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x52, 0x64, 0x00, 0xff, 0xff, 0x00, 0x8b, 0xfe, 0x4d, 0x04, 0x1d, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x84, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x1d, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x84, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x02, 0x26, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x26, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x26, + 0x40, 0x10, 0x10, 0x48, 0x26, 0x40, 0x0d, 0x0d, 0x48, 0x26, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x26, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0xd9, 0x04, 0x08, 0x05, 0x85, + 0x02, 0x26, 0x00, 0xad, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x9d, 0xff, 0xe9, 0x03, 0xdd, 0x05, 0xa8, 0x02, 0x26, + 0x00, 0x86, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x9d, 0x00, 0xff, 0xff, + 0x00, 0x4c, 0xfe, 0x4d, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x86, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x86, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x02, + 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x29, 0xb8, 0xff, 0xc0, + 0x40, 0x0e, 0x11, 0x12, 0x48, 0x29, 0x40, 0x10, 0x10, 0x48, 0x29, 0x40, + 0x0d, 0x0d, 0x48, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x29, + 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x04, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x86, 0x00, 0x00, + 0x01, 0x07, 0x03, 0xc8, 0x00, 0x00, 0xfa, 0x0c, 0x00, 0x69, 0xb1, 0x02, + 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x1e, 0x1e, 0x48, 0x37, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x1a, 0x1a, 0x48, + 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x18, 0x18, 0x48, 0x37, 0xb8, 0xff, 0xc0, + 0xb3, 0x16, 0x16, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x14, 0x48, + 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x37, 0xb8, 0xff, 0x80, + 0xb3, 0x0e, 0x0e, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x0d, 0x0d, 0x48, + 0x37, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0c, 0x48, 0x37, 0xb8, 0xff, 0xc0, + 0xb3, 0x09, 0x09, 0x48, 0x37, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x86, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x4e, 0xb1, 0x02, + 0x28, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x28, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x28, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, + 0x28, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x28, 0xb8, 0xff, 0x80, + 0xb3, 0x0e, 0x0e, 0x48, 0x28, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, + 0x28, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x28, 0xb8, 0xff, 0xc0, + 0xb3, 0x09, 0x09, 0x48, 0x28, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, + 0x06, 0x96, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x58, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x06, 0x96, + 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x57, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x28, 0xfe, 0x1d, 0x04, 0x00, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x28, 0xfa, 0x25, + 0x00, 0x4e, 0xb1, 0x02, 0x30, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, + 0x30, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x30, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x30, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, + 0x30, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x30, 0xb8, 0xff, 0xc0, + 0xb3, 0x0c, 0x0c, 0x48, 0x30, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, + 0x30, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x30, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x25, + 0xfe, 0x1d, 0x04, 0x00, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x87, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x45, 0x00, 0x25, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x02, + 0x39, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x39, 0xb8, 0xff, 0xc0, + 0xb3, 0x20, 0x20, 0x48, 0x39, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, + 0x39, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x39, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x39, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, + 0x39, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x39, 0xb8, 0xff, 0xc0, + 0xb3, 0x0c, 0x0c, 0x48, 0x39, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, + 0x39, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x39, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0xd9, 0x04, 0x00, 0x05, 0x85, 0x02, 0x26, 0x00, 0x87, + 0x00, 0x00, 0x00, 0x26, 0x01, 0x54, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x1b, 0x07, 0x1e, + 0x02, 0x26, 0x00, 0x88, 0x00, 0x00, 0x01, 0x07, 0x01, 0x52, 0x00, 0xb0, + 0x01, 0x76, 0x00, 0x09, 0xb3, 0x02, 0x31, 0x53, 0x31, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x48, 0x00, 0x00, 0x04, 0x25, 0x07, 0x1e, + 0x02, 0x26, 0x01, 0x09, 0x00, 0x00, 0x01, 0x07, 0x01, 0x52, 0x00, 0xb0, + 0x01, 0x76, 0x00, 0x09, 0xb3, 0x01, 0x36, 0x53, 0x36, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x44, 0x07, 0x1e, + 0x02, 0x26, 0x01, 0x0a, 0x00, 0x00, 0x01, 0x07, 0x01, 0x52, 0x00, 0xb0, + 0x01, 0x76, 0x00, 0x09, 0xb3, 0x01, 0x3c, 0x53, 0x3c, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x25, 0x05, 0x62, + 0x02, 0x26, 0x00, 0x89, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x61, 0x00, 0x00, 0x03, 0xdd, 0x05, 0xa8, 0x02, 0x26, + 0x00, 0x8a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x61, 0x00, 0xff, 0xff, + 0x00, 0x8b, 0xfe, 0x4d, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8a, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xdd, 0x06, 0xea, 0x02, 0x26, 0x00, 0x8a, 0x00, 0x00, + 0x01, 0x06, 0x01, 0x48, 0x00, 0x50, 0x00, 0x0b, 0xb4, 0x02, 0x01, 0x40, + 0x53, 0x40, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x51, + 0xfe, 0xd9, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8a, 0x00, 0x00, + 0x00, 0x07, 0x01, 0x54, 0xfe, 0xad, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x27, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8a, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x4b, 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x5e, 0xb1, 0x01, + 0x22, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x22, 0xb8, 0xff, 0xc0, + 0xb3, 0x20, 0x20, 0x48, 0x22, 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x1c, 0x1e, + 0x48, 0x22, 0x40, 0x17, 0x17, 0x48, 0x22, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x22, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x22, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x22, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0d, 0x48, 0x22, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x22, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x22, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xf2, 0x05, 0xae, 0x02, 0x26, 0x00, 0x8b, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x02, + 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x2d, 0xb8, 0xff, 0xc0, + 0xb3, 0x20, 0x20, 0x48, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, + 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x2d, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, + 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x2d, 0xb8, 0xff, 0xc0, + 0xb3, 0x0c, 0x0c, 0x48, 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, + 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x2d, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xec, 0x05, 0xae, 0x02, 0x26, 0x01, 0x0b, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, + 0xb1, 0x02, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x2d, 0xb8, + 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, + 0x1e, 0x48, 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x2d, 0xb8, + 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, + 0x0f, 0x48, 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x2d, 0xb8, + 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x0a, + 0x0b, 0x48, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x2d, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xee, 0x05, 0xae, 0x02, 0x26, + 0x01, 0x15, 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, + 0x00, 0x60, 0xb1, 0x02, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, + 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, 0x2d, 0xb8, 0xff, 0xc0, + 0xb3, 0x1d, 0x1e, 0x48, 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, + 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x2d, 0xb8, 0xff, 0xc0, + 0xb3, 0x0f, 0x0f, 0x48, 0x2d, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, + 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x2d, 0xb8, 0xff, 0x80, + 0xb3, 0x0a, 0x0b, 0x48, 0x2d, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, + 0x2d, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xf2, 0x03, 0xf8, + 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x24, + 0x24, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, 0x19, 0xb8, + 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, 0x19, 0xb8, 0xff, 0x80, 0xb3, 0x1c, + 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x19, 0xb8, + 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x19, 0xb8, 0xff, 0x80, 0xb3, 0x0e, + 0x0e, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x19, 0xb8, + 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x09, + 0x09, 0x48, 0x19, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xec, + 0x03, 0xf8, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, + 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, 0x19, 0xb8, 0xff, 0xc0, + 0xb3, 0x24, 0x24, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x20, 0x20, 0x48, + 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, 0x19, 0xb8, 0xff, 0x80, + 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, + 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x19, 0xb8, 0xff, 0x80, + 0xb3, 0x0e, 0x0e, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, + 0x19, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0xb8, 0xff, 0xc0, + 0xb3, 0x09, 0x09, 0x48, 0x19, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, + 0x03, 0xee, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, 0x19, 0xb8, + 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x20, + 0x20, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, 0x19, 0xb8, + 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x19, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0c, 0x48, 0x19, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x19, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x08, 0x06, 0xcf, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, + 0x00, 0x06, 0x0a, 0x6d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x3f, 0x06, 0x87, 0x02, 0x26, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x95, 0xfe, 0x4d, 0x04, 0x3f, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x3f, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x8d, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x0c, + 0x40, 0x10, 0x10, 0x48, 0x0c, 0x40, 0x0d, 0x0d, 0x48, 0x0c, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x0c, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x91, 0xfe, 0x4d, 0x03, 0xf2, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x1c, 0x00, + 0xff, 0xff, 0x01, 0x17, 0xfe, 0x4d, 0x03, 0xee, 0x05, 0x85, 0x02, 0x26, + 0x01, 0x22, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x1c, 0x00, 0xff, 0xff, + 0x00, 0x79, 0xfe, 0x4d, 0x03, 0xee, 0x05, 0x9a, 0x02, 0x26, 0x01, 0x28, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x1c, 0x00, 0xff, 0xff, 0xff, 0xe4, + 0xfe, 0x4d, 0x03, 0xf2, 0x06, 0xd8, 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, + 0x00, 0x27, 0x01, 0x49, 0xff, 0xe4, 0x01, 0x76, 0x01, 0x06, 0x02, 0xd7, + 0x1c, 0x00, 0x00, 0x09, 0xb3, 0x01, 0x0e, 0x53, 0x0e, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0xff, 0x62, 0xfe, 0x4d, 0x03, 0xee, 0x06, 0xd8, + 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, 0x00, 0x27, 0x01, 0x49, 0xff, 0x62, + 0x01, 0x76, 0x01, 0x06, 0x02, 0xd7, 0x1c, 0x00, 0x00, 0x09, 0xb3, 0x01, + 0x1a, 0x53, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xff, 0xe4, + 0xfe, 0x4d, 0x03, 0xee, 0x06, 0xd8, 0x02, 0x26, 0x01, 0x28, 0x00, 0x00, + 0x00, 0x27, 0x01, 0x49, 0xff, 0xe4, 0x01, 0x76, 0x01, 0x06, 0x02, 0xd7, + 0x1c, 0x00, 0x00, 0x09, 0xb3, 0x01, 0x24, 0x53, 0x24, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x19, 0xfe, 0x1d, 0x03, 0xf2, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x19, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x0c, + 0x40, 0x10, 0x10, 0x48, 0x0c, 0x40, 0x0d, 0x0d, 0x48, 0x0c, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x0c, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x19, 0xfe, 0x1d, 0x03, 0xee, 0x05, 0x85, + 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x19, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x17, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x17, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x17, + 0x40, 0x10, 0x10, 0x48, 0x17, 0x40, 0x0d, 0x0d, 0x48, 0x17, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x17, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x79, 0xfe, 0x1d, 0x03, 0xee, 0x05, 0x9a, + 0x02, 0x26, 0x01, 0x28, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x9b, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x21, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x21, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x21, + 0x40, 0x10, 0x10, 0x48, 0x21, 0x40, 0x0d, 0x0d, 0x48, 0x21, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x21, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x16, 0xfe, 0x1d, 0x03, 0xf2, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x16, + 0xfa, 0x25, 0x00, 0x4e, 0xb1, 0x01, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x24, + 0x24, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0c, 0xb8, + 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, + 0x0f, 0x48, 0x0c, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x0c, 0xb8, + 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x0c, 0xb8, 0xff, 0x80, 0xb3, 0x0a, + 0x0b, 0x48, 0x0c, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x0c, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x3e, 0xfe, 0x1d, 0x03, 0xee, 0x05, 0x85, 0x02, 0x26, 0x01, 0x22, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x3e, 0xfa, 0x25, 0x00, 0x4e, + 0xb1, 0x01, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x1b, 0xb8, + 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x1b, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0c, 0x48, 0x1b, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x1b, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x1b, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x79, 0xfe, 0x1d, + 0x04, 0x20, 0x05, 0x9a, 0x02, 0x26, 0x01, 0x28, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x40, 0x00, 0x99, 0xfa, 0x25, 0x00, 0x4e, 0xb1, 0x01, 0x25, 0xb8, + 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x25, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x25, 0xb8, 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x25, 0xb8, + 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x25, 0xb8, 0xff, 0x80, 0xb3, 0x0e, + 0x0e, 0x48, 0x25, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x25, 0xb8, + 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x25, 0xb8, 0xff, 0xc0, 0xb3, 0x09, + 0x09, 0x48, 0x25, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2b, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2b, 0x05, 0xa8, 0x02, 0x26, + 0x00, 0x8f, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x3b, 0xfe, 0x4d, 0x04, 0x2b, 0x04, 0x0c, 0x02, 0x26, 0x00, 0x8f, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xdd, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x8b, 0xfe, 0x4d, + 0x03, 0xdd, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xdd, + 0x04, 0x0e, 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, + 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x19, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, + 0x48, 0x19, 0x40, 0x10, 0x10, 0x48, 0x19, 0x40, 0x0d, 0x0d, 0x48, 0x19, + 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0x00, 0x11, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x27, 0x03, 0xdd, + 0x04, 0x0e, 0x02, 0x26, 0x00, 0x90, 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, + 0x00, 0x00, 0xfa, 0x2f, 0x00, 0x45, 0xb1, 0x01, 0x1d, 0xb8, 0xff, 0xc0, + 0xb3, 0x24, 0x24, 0x48, 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, + 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x18, 0x18, 0x48, 0x1d, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, + 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x1d, 0xb8, 0xff, 0xc0, + 0xb3, 0x09, 0x0f, 0x48, 0x1d, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, + 0x06, 0x96, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x55, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x07, 0x08, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x5a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x06, 0x96, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x58, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x06, 0x96, 0x02, 0x26, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x57, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x73, 0x04, 0x1d, 0x05, 0x85, 0x02, 0x26, 0x00, 0x92, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, + 0x04, 0x1d, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x92, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x11, + 0x05, 0xa8, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x14, 0x05, 0xa8, + 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0x05, 0xa8, 0x02, 0x26, + 0x01, 0x32, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x14, 0x05, 0xa8, 0x02, 0x26, 0x01, 0x36, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x94, + 0xfe, 0x4d, 0x04, 0x11, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, + 0x00, 0x07, 0x02, 0xd7, 0xfe, 0xfc, 0x00, 0x00, 0xff, 0xff, 0x00, 0x54, + 0xfe, 0x4d, 0x04, 0x14, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, + 0x00, 0x07, 0x02, 0xd7, 0xff, 0x59, 0x00, 0x00, 0xff, 0xff, 0x00, 0x82, + 0xfe, 0x4d, 0x03, 0xfe, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, + 0x00, 0x07, 0x02, 0xd7, 0xfe, 0xea, 0x00, 0x00, 0xff, 0xff, 0x00, 0x52, + 0xfe, 0x4d, 0x04, 0x14, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, + 0x04, 0x11, 0x05, 0x62, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, 0x00, 0x26, + 0x01, 0x49, 0x00, 0x00, 0x00, 0x07, 0x02, 0xd7, 0xfe, 0xfc, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x04, 0x14, 0x05, 0x62, 0x02, 0x26, + 0x01, 0x2e, 0x00, 0x00, 0x00, 0x26, 0x01, 0x49, 0x00, 0x00, 0x00, 0x07, + 0x02, 0xd7, 0xff, 0x59, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, + 0x03, 0xfe, 0x05, 0x62, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, 0x00, 0x26, + 0x01, 0x49, 0x00, 0x00, 0x00, 0x07, 0x02, 0xd7, 0xfe, 0xea, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x4d, 0x04, 0x14, 0x05, 0x62, 0x02, 0x26, + 0x01, 0x36, 0x00, 0x00, 0x00, 0x26, 0x01, 0x49, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0xfe, 0x1d, 0x04, 0x11, + 0x04, 0x0e, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, + 0xff, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x19, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, + 0x48, 0x19, 0x40, 0x10, 0x10, 0x48, 0x19, 0x40, 0x0d, 0x0d, 0x48, 0x19, + 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0x00, 0x11, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0xff, 0x77, 0xfe, 0x1d, 0x04, 0x14, + 0x04, 0x0e, 0x02, 0x26, 0x01, 0x2e, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, + 0xff, 0x77, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x1b, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x1b, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, + 0x48, 0x1b, 0x40, 0x10, 0x10, 0x48, 0x1b, 0x40, 0x0d, 0x0d, 0x48, 0x1b, + 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x1b, 0x00, 0x11, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0xfe, 0xec, 0xfe, 0x1d, 0x03, 0xfe, + 0x04, 0x0e, 0x02, 0x26, 0x01, 0x32, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, + 0xfe, 0xec, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x19, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, + 0x48, 0x19, 0x40, 0x10, 0x10, 0x48, 0x19, 0x40, 0x0d, 0x0d, 0x48, 0x19, + 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x19, 0x00, 0x11, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x04, 0x14, + 0x04, 0x0e, 0x02, 0x26, 0x01, 0x36, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, + 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x2f, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1c, 0x48, 0x2f, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, + 0x48, 0x2f, 0x40, 0x10, 0x10, 0x48, 0x2f, 0x40, 0x0d, 0x0d, 0x48, 0x2f, + 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x2f, 0x00, 0x11, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd1, + 0x05, 0xa8, 0x02, 0x26, 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x9c, 0xfe, 0x4d, 0x03, 0xd1, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x08, 0x06, 0x45, 0x02, 0x26, + 0x00, 0x95, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x5d, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd1, 0x06, 0xf2, 0x02, 0x26, 0x00, 0x95, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x5e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x4d, 0x03, 0xd1, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x95, 0x00, 0x00, + 0x00, 0x26, 0x02, 0xd7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, + 0xff, 0xff, 0xff, 0x9c, 0xff, 0xe9, 0x03, 0xd1, 0x06, 0xc6, 0x02, 0x26, + 0x00, 0x96, 0x00, 0x00, 0x01, 0x07, 0x01, 0x52, 0xff, 0x9c, 0x01, 0x1e, + 0x00, 0x19, 0x40, 0x11, 0x01, 0x29, 0x40, 0x17, 0x17, 0x48, 0x29, 0x40, + 0x10, 0x11, 0x48, 0x29, 0x40, 0x0a, 0x0a, 0x48, 0x29, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x3b, 0xfe, 0x4d, 0x03, 0xd1, + 0x05, 0x3d, 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xd1, 0x05, 0x3d, + 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x1d, 0xb8, 0xff, 0xc0, 0x40, 0x0e, 0x11, 0x12, 0x48, 0x1d, + 0x40, 0x10, 0x10, 0x48, 0x1d, 0x40, 0x0d, 0x0d, 0x48, 0x1d, 0xb8, 0xff, + 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x1d, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xd1, 0x05, 0x3d, + 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, + 0xfa, 0x25, 0x00, 0x4e, 0xb1, 0x01, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x24, + 0x24, 0x48, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x20, 0xb8, + 0xff, 0xc0, 0xb3, 0x11, 0x12, 0x48, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, + 0x0f, 0x48, 0x20, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x20, 0xb8, + 0xff, 0xc0, 0xb3, 0x0c, 0x0c, 0x48, 0x20, 0xb8, 0xff, 0x80, 0xb3, 0x0a, + 0x0b, 0x48, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x20, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x89, 0xfe, 0x9c, 0x03, 0xdb, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x97, + 0x00, 0x00, 0x00, 0x06, 0x03, 0xd9, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xdb, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x45, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x60, 0xb1, 0x01, + 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x27, 0xb8, 0xff, 0xc0, + 0xb3, 0x20, 0x20, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x1e, 0x48, + 0x27, 0xb8, 0xff, 0x80, 0xb3, 0x1c, 0x1c, 0x48, 0x27, 0xb8, 0xff, 0xc0, + 0xb3, 0x11, 0x12, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, + 0x27, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x27, 0xb8, 0xff, 0xc0, + 0xb3, 0x0c, 0x0c, 0x48, 0x27, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, + 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x27, 0x00, 0x11, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x1d, 0x03, 0xdb, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x97, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x40, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x4e, + 0xb1, 0x01, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x24, 0x24, 0x48, 0x1e, 0xb8, + 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x11, + 0x12, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x1e, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x1e, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0c, 0x48, 0x1e, 0xb8, 0xff, 0x80, 0xb3, 0x0a, 0x0b, 0x48, 0x1e, 0xb8, + 0xff, 0xc0, 0xb3, 0x09, 0x09, 0x48, 0x1e, 0x00, 0x11, 0x2b, 0x2b, 0x2b, + 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xdb, 0x06, 0x96, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xdb, + 0x07, 0x08, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x5b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x52, 0x05, 0x99, + 0x02, 0x26, 0x00, 0x98, 0x00, 0x00, 0x00, 0x06, 0x01, 0x45, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x17, 0xfe, 0x4d, 0x04, 0x52, 0x03, 0xf8, 0x02, 0x26, + 0x00, 0x98, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x5c, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x99, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x08, + 0xfe, 0x4d, 0x04, 0x5c, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x99, 0x00, 0x00, + 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x48, 0x05, 0xa8, 0x02, 0x26, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x52, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x48, + 0x05, 0x96, 0x02, 0x26, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, 0x05, 0xa8, + 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x52, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x9c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x96, 0xfe, 0x4d, 0x03, 0xd1, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x9c, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xd1, 0x03, 0xf8, 0x02, 0x26, 0x00, 0x9c, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, + 0x0b, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x0b, 0xb8, 0xff, 0xc0, + 0x40, 0x0e, 0x11, 0x12, 0x48, 0x0b, 0x40, 0x10, 0x10, 0x48, 0x0b, 0x40, + 0x0d, 0x0d, 0x48, 0x0b, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x0b, + 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x1d, 0x03, 0xdd, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8a, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, 0xfa, 0x25, 0x00, 0x2e, 0xb1, 0x01, + 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1c, 0x48, 0x19, 0xb8, 0xff, 0xc0, + 0x40, 0x0e, 0x11, 0x12, 0x48, 0x19, 0x40, 0x10, 0x10, 0x48, 0x19, 0x40, + 0x0d, 0x0d, 0x48, 0x19, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x19, + 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xd1, 0x06, 0x8d, 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x47, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x1b, 0x40, 0x12, + 0x02, 0x01, 0x1f, 0x40, 0x23, 0x24, 0x48, 0x1f, 0x40, 0x10, 0x14, 0x48, + 0x1f, 0x40, 0x0a, 0x0c, 0x48, 0x1f, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x35, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5c, 0x06, 0x10, + 0x02, 0x26, 0x00, 0x99, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4d, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, 0x06, 0x10, 0x02, 0x26, + 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4d, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x19, 0xff, 0xe9, 0x03, 0xd9, 0x06, 0x10, 0x02, 0x26, 0x00, 0x83, + 0x00, 0x00, 0x00, 0x06, 0x04, 0x16, 0x19, 0x00, 0xff, 0xff, 0x00, 0x50, + 0x00, 0x00, 0x04, 0x17, 0x07, 0x28, 0x02, 0x26, 0x00, 0xf0, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x53, 0x00, 0x50, 0x00, 0x82, 0x00, 0x09, 0xb3, 0x01, + 0x2a, 0x53, 0x2a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0x00, 0x91, + 0x00, 0x00, 0x03, 0xf2, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, + 0x00, 0x26, 0x0a, 0x66, 0x14, 0x4b, 0x01, 0x07, 0x0a, 0x66, 0x00, 0x14, + 0x01, 0x4b, 0x00, 0x79, 0xb9, 0x00, 0x0f, 0xff, 0xc0, 0xb4, 0x10, 0x10, + 0x48, 0x0f, 0x0e, 0xb8, 0xff, 0xc0, 0xb4, 0x10, 0x10, 0x48, 0x0e, 0x0b, + 0xb8, 0xff, 0xc0, 0xb4, 0x0f, 0x10, 0x48, 0x0b, 0x0a, 0xb8, 0xff, 0xc0, + 0x40, 0x12, 0x0f, 0x10, 0x48, 0x0a, 0x10, 0x40, 0x0f, 0x0f, 0x48, 0x10, + 0x11, 0x40, 0x0f, 0x0f, 0x48, 0x11, 0x01, 0x0a, 0xb8, 0xff, 0xc0, 0xb3, + 0x13, 0x15, 0x48, 0x0a, 0xb8, 0xff, 0xc0, 0x40, 0x1f, 0x11, 0x11, 0x48, + 0x0a, 0x02, 0x0e, 0x40, 0x2e, 0x2e, 0x48, 0x0e, 0x40, 0x18, 0x1b, 0x48, + 0x0e, 0x40, 0x12, 0x12, 0x48, 0x0e, 0x40, 0x0e, 0x0e, 0x48, 0x0e, 0x40, + 0x09, 0x09, 0x48, 0x0e, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0x11, 0x2b, 0x2b, 0x35, 0x00, 0x11, 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x11, + 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x00, 0xff, 0xff, 0x00, 0x33, 0xff, 0xe9, + 0x03, 0xee, 0x05, 0x85, 0x02, 0x26, 0x01, 0x22, 0x00, 0x00, 0x00, 0x27, + 0x0a, 0x66, 0xff, 0x61, 0x00, 0x4b, 0x01, 0x07, 0x0a, 0x66, 0xff, 0x61, + 0x01, 0x4b, 0x00, 0x79, 0xb9, 0x00, 0x1b, 0xff, 0xc0, 0xb4, 0x10, 0x10, + 0x48, 0x1b, 0x1a, 0xb8, 0xff, 0xc0, 0xb4, 0x10, 0x10, 0x48, 0x1a, 0x17, + 0xb8, 0xff, 0xc0, 0xb4, 0x0f, 0x10, 0x48, 0x17, 0x16, 0xb8, 0xff, 0xc0, + 0x40, 0x12, 0x0f, 0x10, 0x48, 0x16, 0x1c, 0x40, 0x0f, 0x0f, 0x48, 0x1c, + 0x1d, 0x40, 0x0f, 0x0f, 0x48, 0x1d, 0x01, 0x16, 0xb8, 0xff, 0xc0, 0xb3, + 0x13, 0x15, 0x48, 0x16, 0xb8, 0xff, 0xc0, 0x40, 0x1f, 0x11, 0x11, 0x48, + 0x16, 0x02, 0x1a, 0x40, 0x2e, 0x2e, 0x48, 0x1a, 0x40, 0x18, 0x1b, 0x48, + 0x1a, 0x40, 0x12, 0x12, 0x48, 0x1a, 0x40, 0x0e, 0x0e, 0x48, 0x1a, 0x40, + 0x09, 0x09, 0x48, 0x1a, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0x11, 0x2b, 0x2b, 0x35, 0x00, 0x11, 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x11, + 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x00, 0xff, 0xff, 0x00, 0x79, 0xff, 0xe9, + 0x03, 0xee, 0x05, 0x9a, 0x02, 0x26, 0x01, 0x28, 0x00, 0x00, 0x00, 0x26, + 0x0a, 0x66, 0xfa, 0x4b, 0x01, 0x07, 0x0a, 0x66, 0xff, 0xfa, 0x01, 0x4b, + 0x00, 0x79, 0xb9, 0x00, 0x25, 0xff, 0xc0, 0xb4, 0x10, 0x10, 0x48, 0x25, + 0x24, 0xb8, 0xff, 0xc0, 0xb4, 0x10, 0x10, 0x48, 0x24, 0x21, 0xb8, 0xff, + 0xc0, 0xb4, 0x0f, 0x10, 0x48, 0x21, 0x20, 0xb8, 0xff, 0xc0, 0x40, 0x12, + 0x0f, 0x10, 0x48, 0x20, 0x26, 0x40, 0x0f, 0x0f, 0x48, 0x26, 0x27, 0x40, + 0x0f, 0x0f, 0x48, 0x27, 0x01, 0x20, 0xb8, 0xff, 0xc0, 0xb3, 0x13, 0x15, + 0x48, 0x20, 0xb8, 0xff, 0xc0, 0x40, 0x1f, 0x11, 0x11, 0x48, 0x20, 0x02, + 0x24, 0x40, 0x2e, 0x2e, 0x48, 0x24, 0x40, 0x18, 0x1b, 0x48, 0x24, 0x40, + 0x12, 0x12, 0x48, 0x24, 0x40, 0x0e, 0x0e, 0x48, 0x24, 0x40, 0x09, 0x09, + 0x48, 0x24, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x11, 0x2b, + 0x2b, 0x35, 0x00, 0x11, 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x11, + 0x2b, 0x11, 0x2b, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x54, 0x04, 0x64, + 0x04, 0x28, 0x02, 0x26, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x68, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x54, 0x04, 0x64, 0x05, 0x3d, + 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x68, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x8b, 0xff, 0x00, 0x04, 0x48, 0x05, 0x85, 0x00, 0x1b, + 0x00, 0x46, 0xb1, 0x0b, 0x08, 0xbb, 0x02, 0x0b, 0x00, 0x09, 0x00, 0x19, + 0x01, 0xe1, 0xb2, 0x1b, 0x1b, 0x18, 0xb8, 0x02, 0x0b, 0xb4, 0x01, 0x01, + 0x09, 0x07, 0x04, 0xb8, 0x01, 0x31, 0x40, 0x0a, 0x0d, 0x12, 0x50, 0x0a, + 0x53, 0x09, 0x51, 0x1b, 0x1b, 0x18, 0xb8, 0x01, 0x08, 0xb1, 0x01, 0x51, + 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x30, 0x31, + 0x21, 0x23, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x33, + 0x11, 0x07, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x33, 0x03, + 0x23, 0x03, 0x5a, 0x71, 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0xf4, 0x0c, 0x1f, + 0x40, 0x4a, 0x56, 0x34, 0x4e, 0x74, 0x4e, 0x27, 0x6b, 0x0c, 0xe2, 0x02, + 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x7d, 0x05, 0x85, 0xfe, 0xa4, 0xb8, 0x25, + 0x3b, 0x28, 0x15, 0x33, 0x5d, 0x83, 0x51, 0xfe, 0x23, 0xfe, 0x33, 0x00, + 0x00, 0x01, 0x00, 0x95, 0xff, 0x00, 0x04, 0x48, 0x05, 0x85, 0x00, 0x0e, + 0x00, 0x4a, 0xb2, 0x0a, 0x03, 0x06, 0xb8, 0x02, 0x0b, 0xb6, 0x05, 0x08, + 0x09, 0x09, 0x0b, 0x0b, 0x0c, 0xb8, 0x01, 0xe1, 0x40, 0x12, 0x01, 0x00, + 0x00, 0x05, 0x07, 0x02, 0x0a, 0x0a, 0x03, 0x08, 0x4f, 0x05, 0x53, 0x03, + 0x51, 0x0e, 0x0e, 0x0b, 0xb8, 0x01, 0x08, 0xb1, 0x01, 0x51, 0x00, 0x3f, + 0xed, 0x33, 0x2f, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0x10, 0xed, + 0x32, 0x32, 0x30, 0x31, 0x21, 0x23, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x01, 0x21, 0x01, 0x01, 0x33, 0x03, 0x23, 0x03, 0x5a, 0x5a, 0xfe, 0x89, + 0xf4, 0xf4, 0x01, 0x63, 0x01, 0x31, 0xfe, 0x64, 0x01, 0x18, 0xaf, 0x0c, + 0xe2, 0x01, 0xfc, 0xfe, 0x04, 0x05, 0x85, 0xfc, 0xc5, 0x01, 0xae, 0xfe, + 0x31, 0xfe, 0xa4, 0xfe, 0x33, 0x00, 0x00, 0x01, 0x00, 0x96, 0xff, 0x00, + 0x03, 0xdb, 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x3a, 0x40, 0x09, 0x0b, 0x05, + 0x07, 0x07, 0x05, 0x06, 0x0a, 0x0a, 0x03, 0xb8, 0x01, 0xe1, 0xb2, 0x00, + 0x0a, 0x06, 0xb8, 0x01, 0x31, 0xb3, 0x08, 0x4f, 0x05, 0x0b, 0xb8, 0x01, + 0x36, 0xb4, 0x04, 0x02, 0x02, 0x04, 0x51, 0x00, 0x3f, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x30, 0x31, 0x25, 0x03, 0x23, 0x11, 0x21, 0x35, + 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x03, 0xdb, 0x0c, 0xe2, 0xfd, 0xa9, + 0x01, 0xf1, 0xfe, 0x1b, 0x03, 0x27, 0xfe, 0x1a, 0xd7, 0xfe, 0x29, 0x01, + 0x00, 0xaa, 0x02, 0x7d, 0xd1, 0xac, 0xfd, 0x8b, 0x00, 0x02, 0x00, 0x48, + 0x00, 0x00, 0x04, 0x52, 0x04, 0x12, 0x00, 0x23, 0x00, 0x2f, 0x00, 0x67, + 0xb3, 0x24, 0x1e, 0x1f, 0x2d, 0xb8, 0x01, 0xd3, 0x40, 0x09, 0x0f, 0x0b, + 0x00, 0x0f, 0x23, 0x23, 0x22, 0x1f, 0x19, 0xb8, 0x01, 0x8b, 0xb5, 0x1f, + 0x20, 0x27, 0x27, 0x0f, 0x21, 0xb8, 0x02, 0x1b, 0x40, 0x19, 0x20, 0x20, + 0x0f, 0x05, 0x06, 0x06, 0x0f, 0x24, 0x0b, 0x14, 0x06, 0x06, 0x1e, 0x00, + 0x05, 0x05, 0x1f, 0x23, 0x51, 0x20, 0x4f, 0x2a, 0xae, 0x14, 0x50, 0x00, + 0x3f, 0xed, 0x3f, 0x3f, 0x33, 0x39, 0x2f, 0x39, 0x39, 0x33, 0x11, 0x12, + 0x39, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0x12, 0x39, 0xed, 0x11, 0x33, 0x33, 0x11, 0x12, 0x39, 0x39, + 0x10, 0xed, 0x11, 0x39, 0x39, 0x30, 0x31, 0x01, 0x0e, 0x03, 0x07, 0x27, + 0x3e, 0x03, 0x37, 0x27, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x17, 0x01, 0x21, 0x01, 0x21, + 0x03, 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, + 0x01, 0x0c, 0x08, 0x17, 0x1a, 0x1c, 0x0c, 0x63, 0x06, 0x20, 0x25, 0x20, + 0x05, 0x1e, 0x13, 0x1b, 0x19, 0x3e, 0x67, 0x4d, 0x47, 0x63, 0x3e, 0x1c, + 0x18, 0x2b, 0x3c, 0x24, 0x64, 0x01, 0x10, 0x01, 0x06, 0xfe, 0x73, 0xfe, + 0xe8, 0x2f, 0x1d, 0x1c, 0x1a, 0x1f, 0x1d, 0x17, 0x1f, 0x01, 0x74, 0x09, + 0x15, 0x17, 0x16, 0x09, 0xb8, 0x04, 0x1a, 0x1e, 0x1c, 0x07, 0x42, 0x2a, + 0x53, 0x32, 0x2f, 0x55, 0x40, 0x26, 0x21, 0x3b, 0x53, 0x33, 0x27, 0x53, + 0x53, 0x4f, 0x23, 0xf2, 0x02, 0xf9, 0xfc, 0x08, 0x02, 0xa1, 0x1c, 0x40, + 0x2c, 0x21, 0x2e, 0x26, 0x1a, 0x20, 0x4b, 0x00, 0xff, 0xff, 0x00, 0xa5, + 0xff, 0xee, 0x03, 0xe1, 0x04, 0x08, 0x02, 0x06, 0x05, 0xfb, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xb1, 0x00, 0x00, 0x03, 0xa6, 0x03, 0xf8, 0x00, 0x09, + 0x00, 0x38, 0xb4, 0x06, 0x06, 0x02, 0x08, 0x01, 0xb8, 0x01, 0xdb, 0x40, + 0x19, 0x04, 0x02, 0x06, 0xf7, 0x0f, 0x07, 0x01, 0x0f, 0x07, 0x6f, 0x07, + 0x7f, 0x07, 0xff, 0x07, 0x04, 0x07, 0x07, 0x00, 0x03, 0xfd, 0x02, 0x51, + 0x00, 0x4f, 0x00, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x5d, 0x71, 0xed, + 0x01, 0x2f, 0x2f, 0xed, 0x33, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x11, + 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, 0x11, 0x03, 0xa6, 0xfd, 0x0b, + 0x02, 0x0d, 0xfe, 0x22, 0x01, 0xde, 0x03, 0xf8, 0xfc, 0x08, 0xc1, 0xd1, + 0xbb, 0x01, 0xab, 0x00, 0x00, 0x01, 0x00, 0xb6, 0x00, 0x00, 0x03, 0xdb, + 0x03, 0xf8, 0x00, 0x07, 0x00, 0x23, 0xb1, 0x06, 0x02, 0xb8, 0x02, 0x0b, + 0xb2, 0x03, 0x00, 0x01, 0xb8, 0x01, 0x09, 0xb6, 0x06, 0x06, 0x02, 0x04, + 0x4f, 0x02, 0x51, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, + 0x2f, 0xed, 0x32, 0x30, 0x31, 0x01, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x21, 0x03, 0xdb, 0xfd, 0xcf, 0xf4, 0xf4, 0x02, 0x31, 0x01, 0x9c, 0xfe, + 0x64, 0x03, 0xf8, 0xfe, 0x72, 0x00, 0x00, 0x02, 0x00, 0x19, 0xff, 0xe9, + 0x04, 0x4d, 0x04, 0x0e, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x42, 0xb3, 0x20, + 0x00, 0x00, 0x2c, 0xb8, 0x01, 0xdc, 0xb3, 0x09, 0x09, 0x1b, 0x13, 0xb8, + 0x01, 0xe0, 0xb2, 0x24, 0x24, 0x03, 0xb8, 0x01, 0xe0, 0xb5, 0x1b, 0x00, + 0x20, 0x50, 0x21, 0x08, 0xb8, 0x01, 0x34, 0xb2, 0x18, 0x52, 0x29, 0xb8, + 0x01, 0x32, 0xb1, 0x0e, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x3f, + 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x33, + 0x2f, 0x33, 0x30, 0x31, 0x01, 0x06, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, + 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x20, 0x00, 0x11, 0x34, 0x3e, 0x02, 0x37, 0x01, 0x36, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x01, 0xac, 0x55, 0x51, 0x1e, + 0x33, 0x44, 0x26, 0x27, 0x48, 0x68, 0x41, 0x56, 0x8a, 0x60, 0x34, 0x42, + 0x84, 0xc8, 0x87, 0xfe, 0xed, 0xfe, 0xf4, 0x27, 0x46, 0x63, 0x3c, 0x01, + 0x85, 0x52, 0x64, 0x15, 0x24, 0x30, 0x1c, 0x1c, 0x15, 0x03, 0x75, 0x42, + 0xc1, 0x70, 0x50, 0x72, 0x4d, 0x2c, 0x09, 0x01, 0xfe, 0x4f, 0x7e, 0x57, + 0x2e, 0x4c, 0x88, 0xba, 0x6e, 0x76, 0xca, 0x95, 0x54, 0x01, 0x06, 0x01, + 0x0d, 0x55, 0x9c, 0x88, 0x70, 0x29, 0xfc, 0xb0, 0x1c, 0xa4, 0x88, 0x46, + 0x72, 0x51, 0x2c, 0x47, 0x36, 0x00, 0x00, 0x02, 0x00, 0x8b, 0xff, 0xea, + 0x03, 0xf7, 0x04, 0x0e, 0x00, 0x22, 0x00, 0x2f, 0x00, 0x4a, 0xb2, 0x1a, + 0x1a, 0x0b, 0xb8, 0x02, 0x17, 0xb3, 0x29, 0x11, 0x01, 0x23, 0xb8, 0x02, + 0x0b, 0x40, 0x1f, 0x22, 0x01, 0x22, 0x4f, 0x1a, 0x17, 0xf4, 0x1e, 0x23, + 0xcc, 0x0f, 0x11, 0x01, 0x0f, 0x11, 0x6f, 0x11, 0x7f, 0x11, 0xff, 0x11, + 0x04, 0x11, 0x11, 0x1b, 0x1e, 0x52, 0x2c, 0xfd, 0x06, 0x50, 0x00, 0x3f, + 0xed, 0x3f, 0x33, 0x39, 0x2f, 0x5d, 0x71, 0xed, 0x10, 0xed, 0x32, 0x3f, + 0x33, 0x01, 0x2f, 0xed, 0x32, 0x32, 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, + 0x01, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x23, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, + 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x13, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x01, 0x5c, 0x06, 0x20, 0x47, 0x53, + 0x62, 0x3c, 0x4e, 0x76, 0x50, 0x29, 0x3d, 0x7d, 0xbb, 0x7e, 0x85, 0x16, + 0x31, 0x4e, 0x39, 0x5b, 0xae, 0x52, 0x49, 0xbf, 0x67, 0xe1, 0xcd, 0xf4, + 0x95, 0x3d, 0x57, 0x36, 0x19, 0x50, 0x45, 0x33, 0x6e, 0x42, 0x03, 0xf8, + 0x85, 0x22, 0x39, 0x29, 0x17, 0x2e, 0x52, 0x74, 0x46, 0x48, 0x79, 0x59, + 0x31, 0x3d, 0x27, 0x3f, 0x2c, 0x18, 0x29, 0x25, 0xc3, 0x1d, 0x26, 0xac, + 0xac, 0x02, 0xb6, 0xfe, 0x3f, 0x18, 0x29, 0x37, 0x1f, 0x3f, 0x40, 0x49, + 0x45, 0x00, 0x00, 0x02, 0x00, 0x4c, 0xff, 0xe9, 0x03, 0xdd, 0x04, 0x0c, + 0x00, 0x17, 0x00, 0x28, 0x00, 0x3c, 0xb9, 0x00, 0x17, 0x02, 0x0b, 0xb6, + 0x15, 0x01, 0x20, 0x20, 0x0b, 0x16, 0x18, 0xb8, 0x02, 0x17, 0x40, 0x0a, + 0x0b, 0x21, 0x24, 0xfc, 0x16, 0x15, 0x10, 0x50, 0x20, 0x1d, 0xb8, 0x01, + 0x31, 0xb4, 0x01, 0x06, 0x52, 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x12, 0x39, + 0x2f, 0x33, 0x33, 0xed, 0x30, 0x31, 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x37, + 0x11, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x02, 0xfd, 0x09, 0x1c, 0x3f, 0x4b, 0x57, 0x34, + 0x5a, 0x8c, 0x5f, 0x32, 0x42, 0x83, 0xc4, 0x83, 0x19, 0x3c, 0x3c, 0x37, + 0x15, 0xa8, 0xfd, 0x6f, 0x17, 0x2d, 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, + 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, 0x87, 0x23, 0x3a, 0x2a, 0x17, 0x48, + 0x85, 0xbe, 0x75, 0x79, 0xc9, 0x90, 0x4f, 0x06, 0x09, 0x0d, 0x07, 0x25, + 0xfb, 0xf4, 0x01, 0xf4, 0x54, 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, + 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x00, 0x02, 0x00, 0x8b, 0xff, 0xee, + 0x04, 0x1d, 0x04, 0x0e, 0x00, 0x12, 0x00, 0x23, 0x00, 0x32, 0xb9, 0x00, + 0x00, 0x02, 0x17, 0xb2, 0x13, 0x0b, 0x1c, 0xb8, 0x02, 0x0b, 0xb2, 0x08, + 0x1b, 0x18, 0xb8, 0x01, 0x31, 0x40, 0x0b, 0x0b, 0x0e, 0x50, 0x09, 0x4f, + 0x1c, 0x1f, 0xfc, 0x08, 0x05, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x17, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x8d, + 0xc0, 0x71, 0x70, 0xbd, 0x58, 0xe4, 0x06, 0x37, 0x93, 0x67, 0x5a, 0x8c, + 0x5f, 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, + 0x54, 0x2d, 0x3a, 0x5f, 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, 0x41, + 0x21, 0x1c, 0x03, 0xcd, 0x87, 0x48, 0x55, 0x48, 0x85, 0xbd, 0x80, 0x54, + 0x76, 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, 0x58, 0x7f, + 0x00, 0x02, 0x00, 0x8b, 0xff, 0xee, 0x04, 0x1d, 0x05, 0x98, 0x00, 0x21, + 0x00, 0x32, 0x00, 0x43, 0xb1, 0x1a, 0x2b, 0xb8, 0x02, 0x0b, 0xb4, 0x08, + 0x11, 0x11, 0x08, 0x00, 0xb8, 0x02, 0x17, 0xb4, 0x22, 0x22, 0x08, 0x2a, + 0x27, 0xb8, 0x01, 0x31, 0x40, 0x0f, 0x1a, 0x1d, 0x50, 0x11, 0x14, 0xfb, + 0x10, 0x0e, 0x54, 0x2b, 0x2e, 0xfc, 0x08, 0x05, 0x52, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x11, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x8d, + 0xc0, 0x71, 0x70, 0xbd, 0x58, 0x2d, 0x5a, 0x86, 0x58, 0x71, 0x50, 0x26, + 0x50, 0x20, 0x28, 0x3b, 0x26, 0x13, 0x36, 0x8e, 0x63, 0x5a, 0x8c, 0x5f, + 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, 0x54, + 0x2d, 0x3a, 0x5f, 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, 0x41, 0x21, + 0x1c, 0x03, 0xcd, 0x77, 0xa0, 0x60, 0x29, 0x18, 0xbf, 0x0c, 0x0c, 0x14, + 0x2f, 0x4f, 0x3b, 0x8f, 0x42, 0x4f, 0x48, 0x85, 0xbd, 0x80, 0x54, 0x76, + 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, + 0x00, 0x01, 0x00, 0xa5, 0xff, 0xee, 0x03, 0xe1, 0x04, 0x08, 0x00, 0x23, + 0x00, 0x31, 0xb9, 0x00, 0x08, 0x02, 0x1b, 0xb7, 0x19, 0x19, 0x11, 0x23, + 0x23, 0x11, 0x11, 0x14, 0xb8, 0x01, 0x31, 0xb4, 0x10, 0x0d, 0x52, 0x23, + 0x1e, 0xb8, 0x01, 0x34, 0xb2, 0x00, 0x03, 0x50, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x13, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0xa5, 0x48, + 0x99, 0x55, 0x79, 0xc0, 0x86, 0x47, 0x4d, 0x8c, 0xc5, 0x79, 0x63, 0x87, + 0x36, 0x3f, 0x8f, 0x42, 0x44, 0x6c, 0x4a, 0x27, 0x2a, 0x4d, 0x6c, 0x42, + 0x20, 0x47, 0x47, 0x45, 0x1e, 0x03, 0xcf, 0x1d, 0x1c, 0x42, 0x82, 0xc0, + 0x7e, 0x7a, 0xc6, 0x8c, 0x4c, 0x15, 0x10, 0xed, 0x1f, 0x22, 0x2e, 0x52, + 0x74, 0x47, 0x49, 0x74, 0x51, 0x2b, 0x09, 0x11, 0x16, 0x0d, 0x00, 0x02, + 0x00, 0x85, 0xff, 0x4a, 0x04, 0x3a, 0x04, 0x08, 0x00, 0x2c, 0x00, 0x37, + 0x00, 0x62, 0xb2, 0x2d, 0x08, 0x0d, 0xb8, 0x01, 0xd4, 0x40, 0x09, 0x28, + 0x11, 0x0e, 0x0e, 0x32, 0x14, 0x1d, 0x1d, 0x03, 0xb8, 0x01, 0x73, 0xb2, + 0x32, 0x32, 0x25, 0xb8, 0x02, 0x1b, 0xb2, 0x14, 0x1d, 0x20, 0xb8, 0x01, + 0x31, 0x40, 0x0d, 0x19, 0x35, 0xc6, 0x8f, 0x00, 0x01, 0x00, 0x00, 0x1c, + 0x19, 0x50, 0x28, 0x2d, 0xb8, 0x01, 0x01, 0xb6, 0x08, 0x11, 0x08, 0x0d, + 0x0d, 0x08, 0x52, 0x00, 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, + 0x3f, 0x33, 0x39, 0x2f, 0x5d, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, + 0x32, 0x32, 0x30, 0x31, 0x01, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x0e, 0x03, 0x15, 0x23, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x16, 0x17, 0x3e, 0x03, 0x03, 0x3e, 0x03, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x03, 0x4f, 0x6e, 0x7d, 0x29, 0x5c, 0x93, 0x69, 0x01, + 0x02, 0x01, 0x01, 0xdf, 0x01, 0x03, 0xa3, 0xb1, 0x4d, 0x8c, 0xc5, 0x79, + 0x63, 0x87, 0x36, 0x3f, 0x8f, 0x42, 0x44, 0x6c, 0x4a, 0x27, 0x3a, 0x36, + 0x10, 0x36, 0x51, 0x71, 0x3d, 0x2b, 0x47, 0x33, 0x1c, 0x1a, 0x22, 0x3a, + 0x40, 0x02, 0x11, 0x6e, 0x6d, 0x3a, 0x73, 0x5c, 0x3b, 0x02, 0x0f, 0x30, + 0x32, 0x2c, 0x09, 0x2d, 0x5c, 0x30, 0x2a, 0xf8, 0xcb, 0x7a, 0xc6, 0x8c, + 0x4c, 0x15, 0x10, 0xed, 0x1f, 0x22, 0x2e, 0x52, 0x75, 0x46, 0x58, 0x8b, + 0x2a, 0x40, 0x6b, 0x4d, 0x2a, 0xfe, 0xa5, 0x01, 0x13, 0x22, 0x30, 0x1d, + 0x13, 0x27, 0x63, 0x00, 0x00, 0x02, 0x00, 0x4c, 0xfe, 0x62, 0x04, 0xe2, + 0x05, 0x85, 0x00, 0x28, 0x00, 0x39, 0x00, 0x47, 0xb2, 0x09, 0x09, 0x01, + 0xb8, 0x02, 0x0b, 0xb4, 0x27, 0x15, 0x31, 0x31, 0x29, 0xb8, 0x02, 0x17, + 0x40, 0x0b, 0x1f, 0x28, 0x53, 0x32, 0x35, 0xfc, 0x27, 0x24, 0x50, 0x31, + 0x2e, 0xb8, 0x01, 0x31, 0xb4, 0x15, 0x1a, 0x52, 0x09, 0x06, 0xb8, 0x01, + 0x36, 0xb2, 0x0a, 0x0f, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0x33, 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x11, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x35, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x17, 0x11, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, 0xdd, 0x0a, 0x1e, 0x37, + 0x2d, 0x24, 0x3a, 0x1b, 0x11, 0x20, 0x26, 0x30, 0x21, 0x5a, 0x7d, 0x4d, + 0x22, 0x1e, 0x42, 0x4a, 0x55, 0x32, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8c, + 0xc0, 0x71, 0x26, 0x4d, 0x1e, 0xfe, 0x63, 0x17, 0x2d, 0x42, 0x2a, 0x3e, + 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, 0x05, 0x85, 0xfa, + 0x7b, 0x2b, 0x49, 0x35, 0x1e, 0x06, 0x06, 0xd2, 0x04, 0x06, 0x05, 0x02, + 0x33, 0x60, 0x8b, 0x58, 0xab, 0x23, 0x39, 0x28, 0x16, 0x48, 0x85, 0xbe, + 0x75, 0x8c, 0xcd, 0x87, 0x41, 0x0a, 0x08, 0x01, 0x8d, 0xfc, 0x6f, 0x54, + 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, + 0x00, 0x02, 0x00, 0x4c, 0xff, 0xe9, 0x04, 0xf3, 0x05, 0x98, 0x00, 0x25, + 0x00, 0x36, 0x00, 0x44, 0xb3, 0x1c, 0x1c, 0x38, 0x25, 0xb8, 0x02, 0x0b, + 0xb3, 0x13, 0x01, 0x2e, 0x26, 0xb8, 0x02, 0x17, 0x40, 0x0f, 0x0b, 0x1c, + 0x1f, 0xfb, 0x1b, 0x18, 0x54, 0x2f, 0x32, 0xfc, 0x13, 0x10, 0x50, 0x2e, + 0x2b, 0xb8, 0x01, 0x31, 0xb4, 0x01, 0x06, 0x52, 0x00, 0x51, 0x00, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x33, 0xed, 0x11, 0x33, 0x2f, 0x30, 0x31, + 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x01, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, + 0x0a, 0x06, 0x20, 0x44, 0x4e, 0x59, 0x36, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, + 0x8c, 0xc0, 0x71, 0x26, 0x50, 0x1e, 0x2d, 0x58, 0x85, 0x58, 0x2a, 0x57, + 0x24, 0x26, 0x3d, 0x1e, 0x26, 0x37, 0x26, 0x12, 0xfd, 0x6f, 0x17, 0x2d, + 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, + 0x96, 0x27, 0x40, 0x2d, 0x19, 0x48, 0x85, 0xbe, 0x75, 0x8c, 0xcd, 0x87, + 0x41, 0x0a, 0x08, 0x77, 0xa0, 0x60, 0x29, 0x08, 0x0b, 0xbf, 0x0c, 0x07, + 0x13, 0x2c, 0x47, 0x33, 0xfb, 0xe0, 0x01, 0xf4, 0x54, 0x77, 0x4c, 0x23, + 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x00, 0x02, + 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, 0x04, 0x0e, 0x00, 0x22, 0x00, 0x2b, + 0x00, 0x47, 0xb1, 0x1d, 0x0a, 0xb8, 0x02, 0x13, 0xb2, 0x23, 0x23, 0x2b, + 0xb8, 0x02, 0x0f, 0x40, 0x21, 0x15, 0x00, 0x1d, 0xcd, 0x00, 0x23, 0xa0, + 0x23, 0xd0, 0x23, 0xe0, 0x23, 0x04, 0x60, 0x23, 0x70, 0x23, 0xf0, 0x23, + 0x03, 0x23, 0x23, 0x05, 0x15, 0x18, 0xff, 0x14, 0x0f, 0x52, 0x26, 0xf3, + 0x05, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, + 0x5d, 0x71, 0xed, 0x01, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, + 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x21, 0x2e, 0x03, 0x25, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x17, 0x66, 0x3a, 0x70, 0xa6, 0x6c, 0x6d, 0xb1, 0x7c, 0x44, 0x44, 0x80, + 0xb8, 0x74, 0x2e, 0x62, 0x60, 0x5c, 0x27, 0x5b, 0xa8, 0x4b, 0x40, 0x69, + 0x4b, 0x29, 0xfd, 0x64, 0x02, 0x02, 0x01, 0x01, 0x02, 0x9e, 0x0b, 0x75, + 0x5d, 0x29, 0x4a, 0x38, 0x1f, 0x01, 0x02, 0x4a, 0x63, 0xa6, 0x78, 0x43, + 0x4f, 0x91, 0xcb, 0x7c, 0x7d, 0xbe, 0x81, 0x42, 0x07, 0x0d, 0x13, 0x0b, + 0xc2, 0x1a, 0x17, 0x24, 0x45, 0x66, 0x43, 0x12, 0x26, 0x26, 0x22, 0x2f, + 0x70, 0x7b, 0x1c, 0x3a, 0x59, 0x3c, 0x00, 0x02, 0x00, 0x66, 0xff, 0xe9, + 0x04, 0x00, 0x04, 0x0e, 0x00, 0x22, 0x00, 0x2b, 0x00, 0x39, 0xb1, 0x2b, + 0x19, 0xb8, 0x02, 0x0f, 0xb2, 0x06, 0x06, 0x23, 0xb8, 0x02, 0x0f, 0x40, + 0x13, 0x00, 0x0e, 0x0e, 0x00, 0x23, 0xcd, 0x05, 0x05, 0x14, 0x28, 0xf3, + 0x1e, 0x52, 0x0e, 0x0b, 0xff, 0x0f, 0x14, 0x50, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, + 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x37, + 0x21, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, + 0x06, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x66, 0x01, 0x01, 0x02, 0x02, + 0x02, 0x9c, 0x29, 0x4b, 0x69, 0x40, 0x4b, 0xa8, 0x5b, 0x27, 0x5c, 0x60, + 0x62, 0x2e, 0x74, 0xb8, 0x80, 0x44, 0x44, 0x7c, 0xb1, 0x6d, 0x6c, 0xa6, + 0x70, 0x3a, 0xf8, 0x01, 0x1f, 0x38, 0x4a, 0x29, 0x5d, 0x75, 0x0b, 0x01, + 0xad, 0x0c, 0x22, 0x25, 0x27, 0x12, 0x43, 0x66, 0x45, 0x24, 0x17, 0x1a, + 0xc2, 0x0b, 0x13, 0x0d, 0x07, 0x42, 0x81, 0xbf, 0x7c, 0x7c, 0xcb, 0x91, + 0x4f, 0x43, 0x78, 0xa6, 0x40, 0x3c, 0x59, 0x3a, 0x1c, 0x7b, 0x70, 0x00, + 0x00, 0x02, 0x00, 0x3e, 0xff, 0xe9, 0x04, 0x66, 0x04, 0x0e, 0x00, 0x2e, + 0x00, 0x39, 0x00, 0x76, 0x40, 0x12, 0x24, 0x2f, 0x23, 0x2f, 0x04, 0x14, + 0x15, 0x03, 0x15, 0x23, 0x15, 0x25, 0x1c, 0x1c, 0x14, 0x25, 0x03, 0x24, + 0xb8, 0x02, 0x12, 0xb3, 0x04, 0x39, 0x39, 0x2f, 0xb8, 0x02, 0x0f, 0x40, + 0x21, 0x01, 0x0a, 0x0a, 0x01, 0x23, 0x15, 0x1c, 0x1f, 0xae, 0x1b, 0x19, + 0x19, 0x15, 0x2f, 0x03, 0x06, 0x15, 0x01, 0x15, 0x03, 0x15, 0x03, 0x10, + 0x34, 0xf3, 0x2a, 0x52, 0x0a, 0x07, 0xff, 0x0b, 0x10, 0x50, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x11, + 0x33, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x01, 0x2f, 0x33, + 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x2f, 0x2f, 0x33, 0x33, 0x2f, + 0x12, 0x39, 0x39, 0x10, 0x7d, 0x87, 0x04, 0xc4, 0xc4, 0x10, 0x87, 0xc4, + 0x30, 0x31, 0x13, 0x35, 0x34, 0x37, 0x25, 0x26, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x17, 0x16, 0x17, 0x37, 0x17, 0x16, + 0x16, 0x33, 0x32, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x27, + 0x07, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x27, 0x3e, 0x01, 0x02, 0x00, 0x0f, 0x7d, + 0x6d, 0x29, 0x64, 0x44, 0x27, 0x3d, 0x38, 0x37, 0x23, 0xe8, 0x74, 0x48, + 0x1c, 0x97, 0x19, 0x0d, 0x1a, 0x2c, 0x18, 0x20, 0x1c, 0x2e, 0x26, 0x35, + 0x44, 0x1a, 0x0b, 0x1c, 0x2a, 0x5f, 0x97, 0x6d, 0x6c, 0x8e, 0x55, 0x22, + 0xf8, 0x09, 0x1b, 0x32, 0x28, 0x34, 0x3e, 0x1e, 0x03, 0x06, 0x01, 0xad, + 0x1c, 0x10, 0x12, 0x9a, 0x61, 0x65, 0x0b, 0x1b, 0xc2, 0x0b, 0x0f, 0x09, + 0x04, 0x83, 0x50, 0x7f, 0x2f, 0x5c, 0x32, 0x21, 0x0c, 0x94, 0x09, 0x09, + 0x30, 0x36, 0x16, 0x0b, 0x03, 0x7c, 0xcb, 0x91, 0x4f, 0x43, 0x78, 0xa6, + 0x31, 0x39, 0x53, 0x36, 0x1a, 0x36, 0x57, 0x70, 0x39, 0x00, 0xff, 0xff, + 0x00, 0x64, 0xff, 0xe9, 0x03, 0xf2, 0x04, 0x0e, 0x02, 0x06, 0x01, 0xb6, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x69, 0xff, 0xe9, 0x03, 0xfc, 0x04, 0x0e, + 0x02, 0x06, 0x02, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x69, 0xff, 0xe9, + 0x04, 0x66, 0x04, 0x0e, 0x00, 0x46, 0x00, 0x7d, 0xb4, 0x0e, 0x00, 0x00, + 0x06, 0x43, 0xb8, 0x02, 0x13, 0xb2, 0x32, 0x32, 0x14, 0xb8, 0x02, 0x19, + 0x40, 0x17, 0x0f, 0x25, 0x25, 0x1d, 0x3a, 0x3a, 0x1d, 0x2b, 0x2b, 0x1d, + 0x06, 0x3a, 0x37, 0xf3, 0x40, 0x07, 0x0a, 0xc6, 0x06, 0x04, 0x04, 0x46, + 0x0e, 0xb8, 0x01, 0x00, 0x40, 0x1e, 0x00, 0x0f, 0x2b, 0xcc, 0x2c, 0x00, + 0x2c, 0xa0, 0x2c, 0x02, 0x60, 0x2c, 0x70, 0x2c, 0xf0, 0x2c, 0x03, 0x00, + 0x2c, 0x00, 0x2c, 0x3b, 0x40, 0x50, 0x1d, 0x20, 0xf5, 0x1c, 0x17, 0x52, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x39, 0x39, 0x2f, 0x2f, 0x5d, + 0x71, 0x10, 0xed, 0x39, 0x10, 0xed, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, + 0x10, 0xed, 0x32, 0x01, 0x2f, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x11, 0x33, 0x30, + 0x31, 0x01, 0x17, 0x16, 0x16, 0x33, 0x32, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x27, 0x27, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x21, 0x22, + 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x15, + 0x14, 0x06, 0x07, 0x03, 0xc5, 0x16, 0x0d, 0x29, 0x1d, 0x18, 0x20, 0x1c, + 0x2e, 0x17, 0x35, 0x54, 0x17, 0x0b, 0xa4, 0x31, 0x54, 0x3e, 0x23, 0xfa, + 0xfe, 0xf4, 0x2b, 0x45, 0x43, 0x4a, 0x30, 0x54, 0x96, 0x53, 0x27, 0x56, + 0x47, 0x2e, 0x14, 0x37, 0x61, 0x4d, 0xc6, 0xb8, 0x25, 0x4e, 0x41, 0x2a, + 0x0d, 0x2e, 0x58, 0x4b, 0x4b, 0x7e, 0x43, 0x2a, 0x44, 0x44, 0x48, 0x2f, + 0xe5, 0xd8, 0x01, 0x01, 0x02, 0xff, 0x52, 0x32, 0x21, 0x0c, 0x98, 0x09, + 0x09, 0x2e, 0x37, 0x1a, 0x1c, 0x07, 0x26, 0x3d, 0x53, 0x33, 0xa1, 0xa5, + 0x04, 0x09, 0x0d, 0x09, 0xc8, 0x17, 0x1b, 0x09, 0x1f, 0x39, 0x30, 0x1f, + 0x30, 0x22, 0x12, 0xae, 0x07, 0x1a, 0x35, 0x2d, 0x1a, 0x2a, 0x1d, 0x10, + 0x1a, 0x11, 0xbf, 0x07, 0x0d, 0x09, 0x05, 0x88, 0x82, 0x08, 0x0d, 0x07, + 0x00, 0x02, 0x00, 0x55, 0xff, 0xea, 0x04, 0x11, 0x04, 0x0e, 0x00, 0x1b, + 0x00, 0x39, 0x00, 0x4b, 0x40, 0x09, 0x60, 0x28, 0x70, 0x28, 0x02, 0x28, + 0x28, 0x21, 0x35, 0xbb, 0x02, 0x17, 0x00, 0x05, 0x00, 0x0f, 0x01, 0xdb, + 0xb2, 0x2e, 0x2e, 0x17, 0xb8, 0x01, 0xe3, 0x40, 0x12, 0x12, 0x21, 0x21, + 0x05, 0x12, 0x27, 0xfd, 0x28, 0x28, 0x1c, 0x30, 0xf7, 0x0a, 0x50, 0x1c, + 0xfa, 0x00, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x10, 0xed, + 0x11, 0x39, 0x2f, 0x00, 0x5d, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x1e, + 0x03, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x02, 0x5f, 0x7c, 0xc2, 0x86, 0x46, + 0x44, 0x81, 0xbd, 0x7a, 0x5d, 0x98, 0x6e, 0x3c, 0x5e, 0x4b, 0x28, 0x49, + 0x38, 0x21, 0x3d, 0x71, 0xa0, 0x64, 0x2c, 0x48, 0x33, 0x1b, 0x1f, 0x34, + 0x47, 0x27, 0x48, 0x47, 0x20, 0x3d, 0x2f, 0x1d, 0xb0, 0x30, 0x5c, 0x4a, + 0x2d, 0x25, 0x45, 0x62, 0x16, 0x40, 0x80, 0xc1, 0x81, 0x7f, 0xcb, 0x8d, + 0x4b, 0x22, 0x47, 0x6c, 0x4b, 0x4f, 0x71, 0x1a, 0x09, 0x24, 0x39, 0x4e, + 0x33, 0x51, 0x79, 0x51, 0x28, 0xbe, 0x0f, 0x20, 0x34, 0x24, 0x25, 0x30, + 0x1a, 0x0a, 0xc1, 0x06, 0x17, 0x30, 0x2a, 0x73, 0x20, 0x50, 0x85, 0x64, + 0x5a, 0x80, 0x52, 0x26, 0xff, 0xff, 0x00, 0x77, 0xfe, 0x5c, 0x04, 0x57, + 0x03, 0xf8, 0x02, 0x26, 0x00, 0xcc, 0x00, 0x00, 0x01, 0x07, 0x0a, 0x66, + 0x00, 0xc3, 0x00, 0x00, 0x00, 0x0c, 0xb6, 0x01, 0x00, 0x16, 0x70, 0x16, + 0x02, 0x16, 0x00, 0x11, 0x5d, 0x35, 0x00, 0x02, 0x00, 0x4c, 0xfe, 0x5a, + 0x04, 0xf3, 0x05, 0x98, 0x00, 0x38, 0x00, 0x49, 0x00, 0x52, 0xb2, 0x1d, + 0x1d, 0x26, 0xb8, 0x02, 0x0b, 0xb3, 0x13, 0x01, 0x41, 0x39, 0xb8, 0x02, + 0x17, 0xb5, 0x0b, 0x2f, 0x2f, 0x0b, 0x2f, 0x34, 0xb8, 0x01, 0x07, 0x40, + 0x11, 0x2e, 0x2b, 0x56, 0x1d, 0x20, 0xfb, 0x1c, 0x19, 0x54, 0x42, 0x45, + 0xfc, 0x13, 0x10, 0x50, 0x41, 0x3e, 0xb8, 0x01, 0x04, 0xb2, 0x01, 0x06, + 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x2f, 0x33, 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x21, 0x35, 0x0e, 0x03, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x02, 0xf1, + 0x20, 0x3e, 0x47, 0x53, 0x36, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8c, 0xc0, + 0x71, 0x26, 0x56, 0x1e, 0x2c, 0x57, 0x83, 0x56, 0x2a, 0x57, 0x24, 0x26, + 0x3d, 0x1e, 0x26, 0x37, 0x26, 0x12, 0x3d, 0x73, 0xa6, 0x69, 0x67, 0xc4, + 0x52, 0x2f, 0x56, 0x58, 0x5f, 0x38, 0x4a, 0x58, 0x2d, 0x0d, 0xfe, 0x5b, + 0x17, 0x2d, 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, + 0x43, 0x24, 0x96, 0x27, 0x3d, 0x2b, 0x16, 0x45, 0x83, 0xbb, 0x75, 0x8c, + 0xcd, 0x87, 0x41, 0x0a, 0x08, 0x12, 0x72, 0x99, 0x5c, 0x27, 0x08, 0x0b, + 0xbf, 0x0c, 0x07, 0x13, 0x2c, 0x47, 0x33, 0xfb, 0x86, 0x4f, 0x7c, 0x55, + 0x2c, 0x1c, 0x14, 0xd9, 0x0f, 0x17, 0x0f, 0x08, 0x1a, 0x35, 0x52, 0x02, + 0x2d, 0x54, 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, + 0x58, 0x7f, 0x00, 0x02, 0x00, 0x4c, 0xfe, 0x5a, 0x03, 0xdd, 0x04, 0x0c, + 0x00, 0x29, 0x00, 0x3a, 0x00, 0x49, 0xb2, 0x15, 0x33, 0x16, 0xb8, 0x02, + 0x0b, 0xb2, 0x01, 0x32, 0x2a, 0xb8, 0x02, 0x17, 0xb5, 0x0b, 0x20, 0x20, + 0x0b, 0x20, 0x25, 0xb8, 0x01, 0x07, 0x40, 0x0d, 0x1f, 0x1c, 0x56, 0x16, + 0x50, 0x33, 0x36, 0xfc, 0x15, 0x10, 0x50, 0x32, 0x2f, 0xb8, 0x01, 0x04, + 0xb2, 0x01, 0x06, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x2f, 0x33, 0xed, 0x2f, 0x33, 0x30, 0x31, 0x21, 0x35, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, + 0x37, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, + 0x33, 0x32, 0x3e, 0x02, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x02, 0xf1, 0x20, 0x3e, 0x47, + 0x53, 0x36, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8c, 0xc0, 0x71, 0x1c, 0x40, + 0x3c, 0x34, 0x11, 0xa8, 0x3d, 0x73, 0xa6, 0x69, 0x67, 0xc4, 0x52, 0x2f, + 0x55, 0x58, 0x5f, 0x38, 0x4a, 0x58, 0x2e, 0x0d, 0xfe, 0x5b, 0x17, 0x2d, + 0x42, 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, + 0x96, 0x27, 0x3d, 0x2b, 0x16, 0x45, 0x83, 0xbb, 0x75, 0x8c, 0xcd, 0x87, + 0x41, 0x06, 0x0b, 0x0c, 0x06, 0x25, 0xfb, 0x9a, 0x4f, 0x7c, 0x55, 0x2c, + 0x1c, 0x14, 0xd9, 0x0f, 0x17, 0x0f, 0x08, 0x1a, 0x35, 0x52, 0x02, 0x2d, + 0x54, 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, + 0x7f, 0x00, 0x00, 0x01, 0x00, 0x85, 0xff, 0xee, 0x03, 0xea, 0x04, 0x0e, + 0x00, 0x26, 0x00, 0x49, 0xb2, 0x16, 0x16, 0x03, 0xb8, 0x01, 0xd9, 0xb4, + 0x25, 0x00, 0x00, 0x25, 0x1e, 0xb8, 0x02, 0x18, 0xb2, 0x0b, 0x16, 0x19, + 0xb8, 0x01, 0x36, 0x40, 0x0f, 0x10, 0x6f, 0x00, 0x7f, 0x00, 0x02, 0x00, + 0xfe, 0x01, 0x01, 0x15, 0x10, 0x50, 0x25, 0x23, 0xb8, 0x01, 0x07, 0xb2, + 0x03, 0x06, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x39, 0x2f, + 0xed, 0x5d, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x39, 0x2f, 0x10, + 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x35, 0x21, 0x11, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x37, 0x35, 0x02, 0x53, 0x01, 0x97, 0x4c, 0xb7, 0x61, 0x72, 0xbd, + 0x87, 0x4b, 0x51, 0x8f, 0xc4, 0x74, 0x26, 0x56, 0x57, 0x53, 0x24, 0x3b, + 0xa6, 0x57, 0x48, 0x6f, 0x4b, 0x26, 0x28, 0x4a, 0x69, 0x41, 0x2e, 0x33, + 0x01, 0x8a, 0xc2, 0xfd, 0xd6, 0x1d, 0x17, 0x40, 0x80, 0xc0, 0x7f, 0x81, + 0xca, 0x8c, 0x4a, 0x07, 0x0c, 0x11, 0x0a, 0xea, 0x1b, 0x26, 0x2c, 0x53, + 0x77, 0x4a, 0x53, 0x78, 0x4d, 0x25, 0x09, 0xc7, 0x00, 0x02, 0x00, 0x1c, + 0xfe, 0x62, 0x04, 0x4c, 0x03, 0xf8, 0x00, 0x19, 0x00, 0x25, 0x00, 0x46, + 0xb6, 0x1a, 0x14, 0x00, 0x17, 0x17, 0x0f, 0x23, 0xb8, 0x01, 0xaf, 0xb4, + 0x05, 0x05, 0x18, 0x19, 0x1d, 0xb8, 0x01, 0xae, 0x40, 0x12, 0x0f, 0x0f, + 0x16, 0x15, 0x1a, 0x17, 0x00, 0x14, 0x14, 0x26, 0x18, 0x4f, 0x15, 0x4f, + 0x20, 0xcd, 0x0a, 0x56, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x11, 0x33, 0x11, + 0x33, 0x33, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x2f, 0x33, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, 0x25, 0x1e, + 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x37, 0x01, 0x21, 0x01, 0x01, 0x21, 0x01, 0x06, 0x06, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x02, 0xca, 0x1b, 0x33, 0x27, + 0x18, 0x23, 0x48, 0x6c, 0x49, 0x48, 0x6d, 0x48, 0x24, 0x18, 0x28, 0x33, + 0x1b, 0xfe, 0x78, 0x01, 0x0b, 0x01, 0x12, 0x01, 0x13, 0x01, 0x00, 0xfd, + 0xeb, 0x23, 0x23, 0x25, 0x21, 0x23, 0x20, 0x26, 0x91, 0x27, 0x4f, 0x4e, + 0x4d, 0x26, 0x37, 0x5b, 0x42, 0x24, 0x25, 0x42, 0x5b, 0x36, 0x28, 0x4d, + 0x4c, 0x4d, 0x27, 0x03, 0x69, 0xfd, 0x62, 0x02, 0x9e, 0xfc, 0x0d, 0x32, + 0x54, 0x18, 0x2b, 0x2b, 0x2a, 0x2c, 0x1e, 0x54, 0x00, 0x02, 0x00, 0x66, + 0xff, 0xee, 0x04, 0x00, 0x04, 0x0a, 0x00, 0x0b, 0x00, 0x45, 0x00, 0x66, + 0xb4, 0x16, 0x29, 0x29, 0x11, 0x03, 0xb8, 0x01, 0xab, 0xb3, 0x41, 0x41, + 0x36, 0x09, 0xb8, 0x01, 0xab, 0x40, 0x2e, 0x11, 0x11, 0x1c, 0x3c, 0x06, + 0x36, 0x38, 0xfd, 0x35, 0x32, 0x50, 0x3c, 0x29, 0x06, 0x16, 0x89, 0x16, + 0xa9, 0x16, 0x02, 0x6b, 0x16, 0x7b, 0x16, 0x02, 0x09, 0x16, 0x39, 0x16, + 0x49, 0x16, 0x59, 0x16, 0x04, 0x16, 0x00, 0x1c, 0x1a, 0xfd, 0x1d, 0x20, + 0x50, 0x00, 0xcd, 0x0c, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x5d, 0x5d, 0x5d, 0x11, 0x33, 0x33, 0x33, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x2f, 0x33, 0x2f, 0xed, + 0x12, 0x39, 0x11, 0x33, 0x30, 0x31, 0x25, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x27, 0x06, 0x06, 0x15, 0x14, 0x16, 0x17, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x37, 0x03, 0x26, 0x26, 0x23, 0x22, 0x07, 0x35, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x17, 0x17, 0x16, 0x16, 0x17, 0x36, 0x36, 0x37, + 0x37, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x03, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x02, 0x33, 0x23, 0x25, + 0x29, 0x1f, 0x1f, 0x29, 0x25, 0x23, 0x49, 0x6c, 0x48, 0x23, 0x17, 0x27, + 0x33, 0x1c, 0x9f, 0x11, 0x32, 0x1e, 0x1b, 0x1f, 0x20, 0x4a, 0x21, 0x26, + 0x39, 0x2d, 0x23, 0x10, 0x4f, 0x0b, 0x1f, 0x0a, 0x0a, 0x1f, 0x0b, 0x4f, + 0x10, 0x23, 0x2d, 0x39, 0x26, 0x21, 0x4a, 0x20, 0x20, 0x1a, 0x1e, 0x32, + 0x11, 0x9f, 0x1c, 0x33, 0x27, 0x17, 0x23, 0x48, 0x6c, 0x9d, 0x2d, 0x24, + 0x1e, 0x47, 0x2a, 0x2a, 0x47, 0x1e, 0x24, 0x2d, 0xaf, 0x24, 0x42, 0x5b, + 0x37, 0x26, 0x48, 0x45, 0x44, 0x22, 0x01, 0x0f, 0x1c, 0x1f, 0x09, 0xbb, + 0x07, 0x08, 0x10, 0x20, 0x30, 0x1f, 0x9a, 0x16, 0x3a, 0x1a, 0x1a, 0x3a, + 0x16, 0x9a, 0x1f, 0x30, 0x20, 0x10, 0x08, 0x07, 0xbb, 0x09, 0x1f, 0x1c, + 0xfe, 0xf1, 0x22, 0x44, 0x45, 0x48, 0x26, 0x37, 0x5b, 0x42, 0x24, 0x00, + 0x00, 0x01, 0x00, 0x89, 0xfe, 0x73, 0x03, 0xdb, 0x03, 0xf8, 0x00, 0x16, + 0x00, 0x2f, 0xb1, 0x0a, 0x08, 0xb8, 0x02, 0x0b, 0xb2, 0x07, 0x07, 0x00, + 0xb8, 0x02, 0x0b, 0xb4, 0x16, 0x16, 0x4f, 0x06, 0x03, 0xb8, 0x01, 0x31, + 0xb6, 0x0b, 0x10, 0x52, 0x0a, 0x55, 0x07, 0x4f, 0x00, 0x3f, 0x3f, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, + 0x31, 0x01, 0x11, 0x14, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x23, + 0x11, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x01, 0x7d, 0x7d, + 0x3d, 0x71, 0x3f, 0xf4, 0xf4, 0x1c, 0x3d, 0x48, 0x54, 0x31, 0x4e, 0x75, + 0x4e, 0x27, 0x03, 0xf8, 0xfd, 0x6a, 0xa8, 0x64, 0x57, 0x02, 0x83, 0xfa, + 0x7b, 0x02, 0x04, 0x20, 0x34, 0x26, 0x14, 0x33, 0x5e, 0x83, 0x51, 0x02, + 0xaa, 0x00, 0x00, 0x01, 0x00, 0x8b, 0x00, 0x00, 0x03, 0xdd, 0x05, 0x98, + 0x00, 0x26, 0x00, 0x3f, 0xb1, 0x00, 0x13, 0xb8, 0x02, 0x0b, 0xb4, 0x14, + 0x1e, 0x1e, 0x14, 0x0b, 0xb8, 0x02, 0x0b, 0x40, 0x0f, 0x0c, 0x0c, 0x14, + 0x1e, 0x21, 0xfb, 0x1d, 0x1a, 0x54, 0x14, 0x51, 0x0c, 0x51, 0x12, 0x0f, + 0xb8, 0x01, 0x31, 0xb2, 0x00, 0x05, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x3e, 0x03, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, + 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x01, 0x7a, 0x1f, 0x40, 0x48, 0x53, 0x32, + 0x4e, 0x74, 0x4e, 0x27, 0xf4, 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0x2e, 0x59, + 0x84, 0x56, 0x2a, 0x5a, 0x24, 0x26, 0x3d, 0x1e, 0x26, 0x39, 0x26, 0x14, + 0x03, 0x78, 0x25, 0x38, 0x26, 0x13, 0x33, 0x5d, 0x83, 0x51, 0xfd, 0x56, + 0x02, 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x7d, 0x04, 0x0a, 0x72, 0x99, 0x5c, + 0x27, 0x08, 0x0b, 0xbf, 0x0c, 0x07, 0x13, 0x2c, 0x47, 0x33, 0x00, 0x01, + 0x00, 0x8b, 0xfe, 0x62, 0x03, 0xdd, 0x05, 0x98, 0x00, 0x38, 0x00, 0x4d, + 0xb1, 0x00, 0x25, 0xb8, 0x02, 0x0b, 0xb6, 0x26, 0x30, 0x16, 0x30, 0x16, + 0x26, 0x0b, 0xb8, 0x02, 0x0b, 0x40, 0x0d, 0x1e, 0x1e, 0x26, 0x30, 0x33, + 0xfb, 0x2f, 0x2c, 0x54, 0x26, 0x51, 0x16, 0x19, 0xb8, 0x01, 0x36, 0xb4, + 0x15, 0x10, 0x56, 0x24, 0x21, 0xb8, 0x01, 0x31, 0xb2, 0x00, 0x05, 0x50, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, + 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, + 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x01, 0x7a, 0x1f, 0x40, 0x48, 0x53, + 0x32, 0x4e, 0x74, 0x4e, 0x27, 0x22, 0x4d, 0x7d, 0x5a, 0x21, 0x30, 0x26, + 0x20, 0x11, 0x1b, 0x3a, 0x24, 0x2d, 0x34, 0x19, 0x07, 0x7c, 0x3e, 0x71, + 0x3f, 0xf4, 0x2e, 0x59, 0x84, 0x56, 0x2a, 0x5a, 0x24, 0x26, 0x3d, 0x1e, + 0x26, 0x39, 0x26, 0x14, 0x03, 0x78, 0x25, 0x38, 0x26, 0x13, 0x33, 0x5d, + 0x83, 0x51, 0xfd, 0x2e, 0x58, 0x8b, 0x60, 0x33, 0x02, 0x05, 0x06, 0x04, + 0xd2, 0x06, 0x06, 0x1e, 0x35, 0x49, 0x2b, 0x02, 0x96, 0xa7, 0x64, 0x56, + 0xfd, 0x7d, 0x04, 0x0a, 0x72, 0x99, 0x5c, 0x27, 0x08, 0x0b, 0xbf, 0x0c, + 0x07, 0x13, 0x2c, 0x47, 0x33, 0x00, 0xff, 0xff, 0x00, 0x91, 0x00, 0x00, + 0x03, 0xf2, 0x05, 0xae, 0x02, 0x26, 0x00, 0x8b, 0x00, 0x00, 0x01, 0x06, + 0x0a, 0x66, 0x17, 0x00, 0x00, 0x1b, 0x40, 0x10, 0x6f, 0x21, 0x01, 0x21, + 0x6f, 0x20, 0x01, 0x20, 0x70, 0x1f, 0x01, 0x1f, 0x70, 0x1e, 0x01, 0x1e, + 0x00, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x00, 0xff, 0xff, + 0x00, 0x7b, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xae, 0x02, 0x26, 0x01, 0x0b, + 0x00, 0x00, 0x01, 0x06, 0x0a, 0x66, 0x00, 0x00, 0x00, 0x1b, 0x40, 0x10, + 0x6f, 0x2b, 0x01, 0x2b, 0x6f, 0x2a, 0x01, 0x2a, 0x70, 0x29, 0x01, 0x29, + 0x70, 0x28, 0x01, 0x28, 0x00, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x11, + 0x5d, 0x00, 0xff, 0xff, 0x00, 0x79, 0xff, 0xe9, 0x03, 0xee, 0x05, 0xae, + 0x02, 0x26, 0x01, 0x15, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x66, 0x00, 0x00, + 0x00, 0x1b, 0x40, 0x10, 0x6f, 0x37, 0x01, 0x37, 0x6f, 0x36, 0x01, 0x36, + 0x70, 0x35, 0x01, 0x35, 0x70, 0x34, 0x01, 0x34, 0x00, 0x11, 0x5d, 0x11, + 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x00, 0xff, 0xff, 0x00, 0x91, 0x00, 0x00, + 0x03, 0xf2, 0x03, 0xf8, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x01, 0x06, + 0x0a, 0x66, 0x17, 0x00, 0x00, 0x1b, 0x40, 0x10, 0x6f, 0x0d, 0x01, 0x0d, + 0x6f, 0x0c, 0x01, 0x0c, 0x70, 0x0b, 0x01, 0x0b, 0x70, 0x0a, 0x01, 0x0a, + 0x00, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x00, 0xff, 0xff, + 0x00, 0x7b, 0xff, 0xe9, 0x03, 0xec, 0x03, 0xf8, 0x02, 0x26, 0x01, 0x14, + 0x00, 0x00, 0x01, 0x06, 0x0a, 0x66, 0x00, 0x00, 0x00, 0x1b, 0x40, 0x10, + 0x6f, 0x17, 0x01, 0x17, 0x6f, 0x16, 0x01, 0x16, 0x70, 0x15, 0x01, 0x15, + 0x70, 0x14, 0x01, 0x14, 0x00, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x11, + 0x5d, 0x00, 0xff, 0xff, 0x00, 0x79, 0xff, 0xe9, 0x03, 0xee, 0x04, 0x0e, + 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x66, 0x00, 0x00, + 0x00, 0x1b, 0x40, 0x10, 0x6f, 0x23, 0x01, 0x23, 0x6f, 0x22, 0x01, 0x22, + 0x70, 0x21, 0x01, 0x21, 0x70, 0x20, 0x01, 0x20, 0x00, 0x11, 0x5d, 0x11, + 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x00, 0xff, 0xff, 0x00, 0x7b, 0xff, 0xe9, + 0x03, 0xec, 0x03, 0xf8, 0x02, 0x06, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x9b, 0x00, 0x00, 0x03, 0xe8, 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x36, + 0xb4, 0x09, 0x09, 0x00, 0x00, 0x0b, 0xb8, 0x02, 0x11, 0x40, 0x13, 0x04, + 0x06, 0x06, 0x03, 0x03, 0x04, 0x04, 0x0c, 0x0d, 0x0a, 0x06, 0xfa, 0x07, + 0x4f, 0x0b, 0x03, 0xfa, 0x02, 0x51, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, + 0x32, 0x11, 0x12, 0x01, 0x39, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x25, 0x15, 0x21, 0x35, 0x21, 0x11, + 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x03, 0xe8, 0xfc, 0xb3, 0x01, 0x29, + 0xfe, 0xd7, 0x03, 0x4d, 0xfe, 0xd6, 0xbe, 0xbe, 0xbe, 0x02, 0x7c, 0xbe, + 0xbe, 0xfd, 0x84, 0x00, 0xff, 0xff, 0x00, 0x17, 0x00, 0x00, 0x03, 0xf2, + 0x05, 0x85, 0x02, 0x26, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x07, 0x01, 0x45, + 0x00, 0x17, 0xfd, 0xa9, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x03, 0xf2, + 0x05, 0x85, 0x00, 0x20, 0x00, 0x2c, 0x00, 0x5d, 0xb4, 0x28, 0x1b, 0x1b, + 0x08, 0x24, 0xb8, 0x01, 0x5e, 0x40, 0x0c, 0x0f, 0x0f, 0x07, 0x1d, 0x1d, + 0x07, 0x07, 0x08, 0x20, 0x04, 0x04, 0x03, 0xb8, 0x02, 0x11, 0x40, 0x19, + 0x08, 0x08, 0x2d, 0x2e, 0x21, 0x9a, 0x14, 0x14, 0x28, 0x28, 0x0a, 0x02, + 0xca, 0x1b, 0x20, 0x20, 0x07, 0x1d, 0xfa, 0x1e, 0x53, 0x07, 0xfa, 0x06, + 0x51, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x33, 0x11, 0x33, 0x2f, 0xed, 0x11, 0x12, 0x01, 0x39, 0x2f, 0xed, 0x32, + 0x2f, 0x32, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x11, + 0x33, 0x11, 0x33, 0x30, 0x31, 0x01, 0x15, 0x23, 0x11, 0x21, 0x15, 0x21, + 0x35, 0x21, 0x11, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x04, 0x17, 0x11, 0x21, 0x35, 0x21, 0x11, 0x25, 0x22, 0x06, + 0x15, 0x14, 0x16, 0x33, 0x33, 0x2e, 0x03, 0x03, 0xc6, 0xf9, 0x01, 0x25, + 0xfc, 0x9f, 0x01, 0x42, 0xd0, 0x42, 0x5b, 0x39, 0x19, 0x22, 0x38, 0x44, + 0x23, 0x2d, 0x44, 0x34, 0x25, 0x1b, 0x12, 0x07, 0xfe, 0xe1, 0x02, 0x19, + 0xfe, 0x09, 0x14, 0x1d, 0x24, 0x28, 0x33, 0x03, 0x0c, 0x12, 0x1b, 0x02, + 0xc1, 0xab, 0xfe, 0xa8, 0xbe, 0xbe, 0x01, 0x58, 0x20, 0x36, 0x49, 0x29, + 0x37, 0x4b, 0x2f, 0x14, 0x17, 0x25, 0x30, 0x32, 0x30, 0x13, 0x02, 0x05, + 0xbe, 0xfd, 0x3c, 0x5a, 0x15, 0x17, 0x1d, 0x1a, 0x0f, 0x22, 0x1e, 0x14, + 0x00, 0x01, 0x00, 0x97, 0xfe, 0x62, 0x03, 0xdc, 0x05, 0x85, 0x00, 0x15, + 0x00, 0x2a, 0xb2, 0x0c, 0x0c, 0x04, 0xb8, 0x02, 0x11, 0xb5, 0x15, 0x01, + 0x01, 0x15, 0x0c, 0x09, 0xb8, 0x01, 0x36, 0xb6, 0x0d, 0x10, 0x56, 0x01, + 0xfa, 0x02, 0x53, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x21, 0x35, 0x21, + 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x01, 0xb6, 0xfe, 0xe1, 0x02, 0x19, 0x09, 0x1e, + 0x37, 0x2e, 0x38, 0x4d, 0x1b, 0x23, 0x6a, 0x42, 0x5a, 0x82, 0x54, 0x27, + 0x04, 0xc7, 0xbe, 0xfa, 0x84, 0x2d, 0x4c, 0x37, 0x20, 0x0c, 0x06, 0xd2, + 0x08, 0x0f, 0x29, 0x54, 0x80, 0x58, 0x00, 0x01, 0x00, 0x00, 0xfe, 0xac, + 0x04, 0x2f, 0x05, 0x85, 0x00, 0x28, 0x00, 0x64, 0xb6, 0x15, 0x1b, 0x0e, + 0x0e, 0x08, 0x18, 0x12, 0xb8, 0x01, 0xe0, 0xb4, 0x13, 0x10, 0x1a, 0x1a, + 0x20, 0xb8, 0x02, 0x0f, 0x40, 0x13, 0x08, 0x08, 0x13, 0x00, 0x00, 0x13, + 0x0f, 0x0e, 0xc9, 0x60, 0x1b, 0x70, 0x1b, 0x02, 0x1b, 0x1b, 0x18, 0x00, + 0x03, 0xb8, 0x01, 0x09, 0xb4, 0x28, 0x25, 0x58, 0x1a, 0x10, 0xb8, 0x01, + 0x31, 0xb7, 0x18, 0x4f, 0x14, 0xfa, 0x16, 0x53, 0x13, 0x51, 0x00, 0x3f, + 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, + 0x5d, 0xed, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0x33, 0x10, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x33, 0x2f, 0x30, 0x31, + 0x05, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x23, 0x35, 0x13, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x11, 0x21, + 0x15, 0x03, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x01, 0x42, 0x3b, 0x7a, 0x3a, 0x36, 0x5f, 0x48, 0x29, 0x17, 0x31, 0x4c, + 0x34, 0x59, 0xcd, 0xfe, 0xb0, 0xed, 0xa6, 0x01, 0x93, 0x02, 0x57, 0xeb, + 0x58, 0x76, 0x45, 0x1d, 0x48, 0x7b, 0xa5, 0x5d, 0x48, 0x95, 0x4b, 0x5e, + 0x12, 0x16, 0x18, 0x39, 0x5f, 0x46, 0x2a, 0x4b, 0x38, 0x20, 0xb5, 0x01, + 0x35, 0xfc, 0xd9, 0x04, 0xc7, 0xbe, 0xfe, 0x73, 0xcf, 0xfe, 0xbc, 0x10, + 0x4e, 0x67, 0x75, 0x37, 0x80, 0xaf, 0x6b, 0x2e, 0x14, 0x11, 0x00, 0x01, + 0x00, 0x3b, 0xff, 0xec, 0x04, 0x2b, 0x03, 0xf8, 0x00, 0x26, 0x00, 0x4e, + 0xb1, 0x1d, 0x09, 0xb8, 0x01, 0xa7, 0xb4, 0x08, 0x08, 0x26, 0x15, 0x12, + 0xb8, 0x01, 0xa8, 0xb2, 0x11, 0x11, 0x00, 0xb8, 0x01, 0xa8, 0x40, 0x18, + 0x26, 0x26, 0x4f, 0x15, 0x1d, 0x1d, 0x22, 0x10, 0x07, 0x07, 0x04, 0xfc, + 0x22, 0x52, 0x0d, 0xfc, 0x1a, 0x52, 0x14, 0x51, 0x11, 0x4f, 0x08, 0x4f, + 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x12, + 0x39, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x11, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, + 0x33, 0x11, 0x23, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x0e, 0x03, + 0x23, 0x22, 0x26, 0x35, 0x11, 0x01, 0x0e, 0x14, 0x27, 0x1f, 0x3c, 0x26, + 0xd1, 0x14, 0x28, 0x1a, 0x40, 0x27, 0xd3, 0xb5, 0x04, 0x16, 0x2c, 0x32, + 0x39, 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, 0x33, 0x3b, 0x24, 0x70, 0x69, + 0x03, 0xf8, 0xfd, 0x4c, 0x4c, 0x4c, 0x54, 0x65, 0x02, 0x93, 0xfd, 0x4c, + 0x4c, 0x4c, 0x54, 0x65, 0x02, 0x93, 0xfc, 0x08, 0x94, 0x2d, 0x40, 0x29, + 0x12, 0x59, 0x4f, 0x2d, 0x40, 0x29, 0x12, 0x9a, 0x99, 0x02, 0xd9, 0x00, + 0x00, 0x01, 0x00, 0x3b, 0xfe, 0x73, 0x04, 0x2b, 0x03, 0xf8, 0x00, 0x26, + 0x00, 0x4c, 0xb1, 0x1d, 0x0a, 0xb8, 0x01, 0xa7, 0xb3, 0x07, 0x07, 0x10, + 0x01, 0xb8, 0x01, 0xa8, 0xb2, 0x25, 0x15, 0x13, 0xb8, 0x01, 0xa8, 0x40, + 0x18, 0x10, 0x26, 0x4f, 0x15, 0x1d, 0x1d, 0x22, 0x10, 0x07, 0x07, 0x04, + 0xfc, 0x22, 0x52, 0x0d, 0xfc, 0x1a, 0x52, 0x14, 0x55, 0x11, 0x4f, 0x08, + 0x4f, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x11, 0x14, 0x16, 0x33, 0x32, + 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, + 0x33, 0x11, 0x23, 0x11, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x0e, 0x03, + 0x23, 0x22, 0x26, 0x35, 0x11, 0x01, 0x0e, 0x14, 0x27, 0x1f, 0x3c, 0x26, + 0xd1, 0x14, 0x28, 0x1a, 0x40, 0x27, 0xd3, 0xca, 0x14, 0x26, 0x2c, 0x36, + 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, 0x33, 0x3b, 0x24, 0x70, 0x69, 0x03, + 0xf8, 0xfd, 0x4c, 0x4c, 0x4c, 0x54, 0x65, 0x02, 0x93, 0xfd, 0x4c, 0x4c, + 0x4c, 0x54, 0x65, 0x02, 0x93, 0xfa, 0x7b, 0x02, 0x03, 0x23, 0x33, 0x23, + 0x11, 0x59, 0x4f, 0x2d, 0x40, 0x29, 0x12, 0x9a, 0x99, 0x02, 0xd9, 0x00, + 0x00, 0x01, 0x00, 0x3b, 0xfe, 0x5c, 0x04, 0x2b, 0x04, 0x0c, 0x00, 0x36, + 0x00, 0x55, 0xb1, 0x1c, 0x07, 0xb8, 0x01, 0xa7, 0xb3, 0x08, 0x08, 0x11, + 0x25, 0xb8, 0x01, 0xa8, 0xb3, 0x36, 0x36, 0x14, 0x10, 0xb8, 0x01, 0xa8, + 0x40, 0x1c, 0x11, 0x2e, 0x31, 0xfb, 0x2d, 0x2a, 0x56, 0x03, 0xfc, 0x21, + 0x50, 0x1c, 0x14, 0x14, 0x19, 0x06, 0x0f, 0x0f, 0x0c, 0xfc, 0x19, 0x50, + 0x12, 0x4f, 0x11, 0x51, 0x08, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xed, + 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x3f, 0xed, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x32, 0x30, 0x31, 0x01, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, + 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, + 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x15, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x03, 0x58, 0x14, 0x27, 0x1f, 0x3c, 0x26, 0xd1, + 0x14, 0x28, 0x1a, 0x40, 0x27, 0xd3, 0xb5, 0x04, 0x16, 0x2c, 0x32, 0x39, + 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, 0x33, 0x3b, 0x24, 0x70, 0x69, 0x1c, + 0x46, 0x76, 0x59, 0x35, 0x5d, 0x20, 0x26, 0x3e, 0x29, 0x21, 0x31, 0x21, + 0x10, 0x02, 0xb4, 0x4c, 0x4c, 0x54, 0x65, 0xfd, 0x6d, 0x02, 0xb4, 0x4c, + 0x4c, 0x54, 0x65, 0xfd, 0x6d, 0x03, 0xf8, 0x94, 0x2d, 0x40, 0x29, 0x12, + 0x59, 0x4f, 0x2d, 0x40, 0x29, 0x12, 0x9a, 0x99, 0xfc, 0xff, 0x61, 0x8f, + 0x5e, 0x2e, 0x0d, 0x09, 0xbe, 0x0c, 0x09, 0x11, 0x2c, 0x4d, 0x3c, 0x00, + 0x00, 0x01, 0xff, 0xa1, 0xfe, 0x5c, 0x03, 0xdd, 0x04, 0x0e, 0x00, 0x26, + 0x00, 0x3d, 0xb9, 0x00, 0x16, 0x02, 0x0b, 0xb2, 0x17, 0x0b, 0x1e, 0xb8, + 0x02, 0x0b, 0xb5, 0x08, 0x00, 0x00, 0x08, 0x00, 0x03, 0xb8, 0x01, 0x01, + 0xb6, 0x26, 0x23, 0x56, 0x17, 0x51, 0x1d, 0x1a, 0xb8, 0x01, 0x31, 0xb4, + 0x0b, 0x10, 0x50, 0x09, 0x4f, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, + 0xed, 0x30, 0x31, 0x07, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, + 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, + 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x27, 0x5e, 0x1c, 0x36, 0x19, 0x21, 0x30, 0x1f, 0x0e, 0xd3, 0x06, 0x1f, + 0x43, 0x4d, 0x5b, 0x38, 0x4e, 0x74, 0x4e, 0x27, 0xf4, 0x7c, 0x3e, 0x71, + 0x3f, 0x24, 0x50, 0x7d, 0x5a, 0x2b, 0x48, 0x20, 0xcf, 0x07, 0x09, 0x10, + 0x2f, 0x57, 0x47, 0x03, 0xfa, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, + 0x83, 0x51, 0xfd, 0x56, 0x02, 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x91, 0x71, + 0xa5, 0x6d, 0x35, 0x09, 0x08, 0x00, 0x00, 0x01, 0x00, 0x8b, 0xfe, 0x5c, + 0x04, 0xcf, 0x04, 0x0e, 0x00, 0x26, 0x00, 0x3c, 0xb1, 0x1c, 0x18, 0xb8, + 0x02, 0x0b, 0xb3, 0x19, 0x08, 0x08, 0x00, 0xb8, 0x02, 0x0b, 0xb2, 0x11, + 0x17, 0x14, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x1c, 0x21, 0x50, 0x1a, 0x4f, + 0x19, 0x51, 0x08, 0x05, 0xb8, 0x01, 0x01, 0xb2, 0x09, 0x0c, 0x56, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0xed, 0x32, 0x2f, 0x2f, 0xed, 0x32, 0x30, 0x31, 0x05, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, + 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x03, 0xdd, 0x11, 0x22, 0x33, 0x21, + 0x19, 0x36, 0x1c, 0x20, 0x47, 0x2b, 0x5a, 0x80, 0x53, 0x27, 0x7c, 0x3e, + 0x71, 0x3f, 0xf4, 0xd3, 0x06, 0x1f, 0x43, 0x4d, 0x5b, 0x38, 0x4e, 0x74, + 0x4e, 0x27, 0x05, 0x47, 0x56, 0x2e, 0x0f, 0x09, 0x07, 0xc4, 0x08, 0x09, + 0x2f, 0x65, 0x9f, 0x71, 0x02, 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x7d, 0x03, + 0xf8, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, 0x51, 0x00, 0x01, + 0x00, 0x72, 0x00, 0x00, 0x03, 0xfc, 0x03, 0xf8, 0x00, 0x09, 0x00, 0x2a, + 0xb9, 0x00, 0x09, 0x01, 0xd4, 0xb4, 0x00, 0x06, 0x06, 0x05, 0x02, 0xb8, + 0x01, 0xd4, 0x40, 0x09, 0x03, 0x07, 0x01, 0x04, 0x4f, 0x06, 0x03, 0x00, + 0x51, 0x00, 0x3f, 0x32, 0x32, 0x3f, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x32, + 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, 0x21, 0x01, 0x11, 0x23, 0x11, 0x21, + 0x01, 0x11, 0x33, 0x11, 0x02, 0xda, 0xfe, 0x78, 0xe0, 0x01, 0x24, 0x01, + 0x86, 0xe0, 0x02, 0xc3, 0xfd, 0x3d, 0x03, 0xf8, 0xfd, 0x44, 0x02, 0xbc, + 0xfc, 0x08, 0x00, 0x03, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x04, 0x0e, + 0x00, 0x13, 0x00, 0x1c, 0x00, 0x23, 0x00, 0x4d, 0xb1, 0x21, 0x00, 0xb8, + 0x02, 0x0f, 0xb2, 0x17, 0x20, 0x18, 0xb8, 0x02, 0x0e, 0x40, 0x19, 0x0a, + 0x7f, 0x18, 0x8f, 0x18, 0x02, 0x1a, 0x18, 0x01, 0x09, 0x18, 0x01, 0x18, + 0xfa, 0x19, 0x20, 0x01, 0x0a, 0x20, 0x01, 0x08, 0x20, 0x20, 0x14, 0x1d, + 0xb8, 0x01, 0x32, 0xb2, 0x0f, 0x50, 0x14, 0xb8, 0x01, 0x32, 0xb1, 0x05, + 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5e, 0x5d, 0x5d, + 0xed, 0x5d, 0x5d, 0x5d, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x33, 0x30, + 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x32, 0x36, 0x37, 0x21, 0x1e, 0x03, + 0x13, 0x22, 0x06, 0x07, 0x21, 0x26, 0x26, 0x04, 0x1e, 0x44, 0x80, 0xbb, + 0x76, 0x71, 0xb2, 0x7c, 0x42, 0x45, 0x81, 0xba, 0x75, 0x72, 0xb2, 0x7c, + 0x41, 0xfe, 0x17, 0x66, 0x7b, 0x10, 0xfe, 0x19, 0x08, 0x2c, 0x40, 0x53, + 0x2f, 0x67, 0x7c, 0x11, 0x01, 0xe5, 0x11, 0x80, 0x02, 0x04, 0x78, 0xc7, + 0x8e, 0x4e, 0x42, 0x83, 0xc5, 0x83, 0x79, 0xc6, 0x8c, 0x4d, 0x43, 0x84, + 0xc3, 0xfe, 0x38, 0x79, 0x6e, 0x3e, 0x57, 0x38, 0x1a, 0x02, 0x7f, 0x73, + 0x67, 0x74, 0x66, 0x00, 0x00, 0x02, 0x00, 0x5c, 0x00, 0x00, 0x04, 0x0b, + 0x03, 0xf8, 0x00, 0x14, 0x00, 0x25, 0x00, 0x52, 0x40, 0x0a, 0x60, 0x02, + 0x70, 0x02, 0x02, 0x06, 0x02, 0x01, 0x02, 0x06, 0xb8, 0x01, 0xe1, 0x40, + 0x0c, 0x1d, 0x1d, 0x07, 0x0e, 0x04, 0x04, 0x07, 0x00, 0x00, 0x07, 0x07, + 0x15, 0xb8, 0x02, 0x10, 0x40, 0x10, 0x0e, 0x01, 0x21, 0xfc, 0x13, 0x05, + 0xf5, 0x02, 0x02, 0x13, 0x4f, 0x06, 0x1a, 0xff, 0x09, 0x51, 0x00, 0x3f, + 0xed, 0x32, 0x3f, 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, + 0x32, 0x00, 0x5d, 0x5d, 0x30, 0x31, 0x01, 0x23, 0x15, 0x33, 0x15, 0x23, + 0x15, 0x33, 0x15, 0x21, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x21, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x04, 0x0b, 0xed, 0xed, 0xed, 0xed, 0xfd, 0xf3, + 0x70, 0x9e, 0x65, 0x2f, 0x2d, 0x65, 0xa2, 0x75, 0x02, 0x06, 0xfd, 0x4a, + 0x12, 0x25, 0x3b, 0x2a, 0x0e, 0x20, 0x11, 0x0e, 0x19, 0x0b, 0x35, 0x42, + 0x25, 0x0d, 0x03, 0x35, 0xc8, 0xb9, 0xeb, 0xc9, 0x3d, 0x7c, 0xba, 0x7d, + 0x75, 0xbf, 0x89, 0x4b, 0xfd, 0xfe, 0x58, 0x76, 0x47, 0x1e, 0x03, 0x02, + 0x02, 0x6c, 0x02, 0x02, 0x2c, 0x54, 0x77, 0x00, 0x00, 0x02, 0x00, 0x32, + 0xff, 0xf6, 0x04, 0x34, 0x04, 0x0e, 0x00, 0x1d, 0x00, 0x3a, 0x00, 0x43, + 0xb1, 0x00, 0x1e, 0xb8, 0x01, 0xae, 0xb3, 0x3a, 0x3a, 0x0a, 0x14, 0xb8, + 0x01, 0xde, 0xb2, 0x29, 0x29, 0x2f, 0xb8, 0x01, 0xde, 0xb4, 0x0a, 0x3a, + 0x3a, 0x34, 0x2c, 0xb8, 0x01, 0x32, 0xb3, 0x0f, 0x50, 0x24, 0x34, 0xb8, + 0x01, 0x09, 0xb3, 0x19, 0x00, 0x05, 0x51, 0x00, 0x3f, 0x33, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x39, 0x30, 0x31, 0x25, 0x0e, 0x03, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x13, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x02, 0x32, 0x09, 0x1f, 0x33, + 0x49, 0x32, 0x4b, 0x6f, 0x4b, 0x25, 0x49, 0x85, 0xbd, 0x75, 0x75, 0xbe, + 0x86, 0x49, 0x25, 0x4b, 0x6f, 0x4b, 0x32, 0x49, 0x34, 0x20, 0x66, 0x03, + 0x0e, 0x1d, 0x19, 0x1f, 0x26, 0x15, 0x07, 0x8a, 0x8c, 0x8c, 0x8a, 0x07, + 0x15, 0x26, 0x1f, 0x19, 0x1d, 0x0e, 0x03, 0xb0, 0x28, 0x44, 0x32, 0x1c, + 0x47, 0x7d, 0xab, 0x64, 0x8d, 0xd9, 0x93, 0x4c, 0x4c, 0x93, 0xd9, 0x8d, + 0x64, 0xab, 0x7d, 0x47, 0x1c, 0x32, 0x44, 0x01, 0x61, 0x6a, 0x27, 0x45, + 0x32, 0x1d, 0x31, 0x4c, 0x5d, 0x2c, 0xb5, 0xbc, 0xbc, 0xb5, 0x2c, 0x5d, + 0x4c, 0x31, 0x1d, 0x32, 0x45, 0x27, 0x6a, 0x00, 0xff, 0xff, 0x00, 0x19, + 0xfe, 0x73, 0x04, 0x4d, 0x05, 0x85, 0x02, 0x06, 0x01, 0xc8, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x52, 0xff, 0xea, 0x03, 0xb2, 0x03, 0xf8, 0x00, 0x11, + 0x00, 0x32, 0xb9, 0x00, 0x0f, 0x02, 0x0c, 0xb3, 0x0e, 0x0e, 0x08, 0x05, + 0xb8, 0x02, 0x11, 0xb5, 0x04, 0x0e, 0x0e, 0x04, 0x03, 0x00, 0xb8, 0x01, + 0x07, 0xb6, 0x08, 0x0b, 0x52, 0x07, 0x51, 0x04, 0x4f, 0x00, 0x3f, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x33, + 0x2f, 0xed, 0x30, 0x31, 0x25, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x23, + 0x27, 0x06, 0x06, 0x23, 0x22, 0x26, 0x37, 0x33, 0x06, 0x16, 0x01, 0xca, + 0x36, 0x73, 0x45, 0xfa, 0xdd, 0x09, 0x32, 0x99, 0x70, 0x9a, 0xa5, 0x06, + 0xf5, 0x04, 0x43, 0xb6, 0x59, 0x66, 0x02, 0x83, 0xfc, 0x08, 0x94, 0x4e, + 0x5c, 0xd2, 0xcf, 0x71, 0x64, 0x00, 0x00, 0x01, 0x00, 0x52, 0xff, 0xea, + 0x03, 0xb2, 0x05, 0x85, 0x00, 0x11, 0x00, 0x32, 0xb1, 0x0b, 0x08, 0xb8, + 0x02, 0x11, 0xb2, 0x07, 0x07, 0x00, 0xb8, 0x02, 0x0c, 0xb5, 0x11, 0x11, + 0x11, 0x07, 0x06, 0x03, 0xb8, 0x01, 0x07, 0xb6, 0x0b, 0x0e, 0x52, 0x0a, + 0x51, 0x07, 0x53, 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, + 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x06, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x23, 0x27, 0x06, 0x06, + 0x23, 0x22, 0x26, 0x37, 0x01, 0x4d, 0x04, 0x43, 0x3e, 0x36, 0x73, 0x45, + 0xfa, 0xdd, 0x09, 0x32, 0x99, 0x70, 0x9a, 0xa5, 0x06, 0x01, 0x8b, 0x71, + 0x64, 0x59, 0x66, 0x04, 0x10, 0xfa, 0x7b, 0x94, 0x4e, 0x5c, 0xd2, 0xcf, + 0x00, 0x01, 0x00, 0x52, 0xfe, 0x5c, 0x04, 0xa4, 0x03, 0xf8, 0x00, 0x21, + 0x00, 0x3f, 0xb2, 0x18, 0x18, 0x0f, 0xb8, 0x02, 0x11, 0xb3, 0x00, 0x0e, + 0x0e, 0x07, 0xb8, 0x02, 0x0c, 0xb2, 0x06, 0x18, 0x15, 0xb8, 0x01, 0x01, + 0x40, 0x09, 0x19, 0x1c, 0x56, 0x06, 0x06, 0x0e, 0x4f, 0x0d, 0x0a, 0xb8, + 0x01, 0x07, 0xb2, 0x00, 0x03, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x39, 0x2f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x2f, 0x30, 0x31, 0x25, 0x06, 0x06, 0x23, 0x22, 0x26, 0x37, + 0x33, 0x06, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x27, 0x02, 0xbd, 0x31, 0x9b, 0x60, 0x9a, 0xa5, 0x06, 0xf5, 0x04, 0x43, + 0x3e, 0x36, 0x73, 0x45, 0xfa, 0x11, 0x22, 0x33, 0x21, 0x19, 0x36, 0x1c, + 0x20, 0x47, 0x2b, 0x5a, 0x80, 0x52, 0x27, 0x01, 0x81, 0x49, 0x4e, 0xd2, + 0xcf, 0x71, 0x64, 0x59, 0x66, 0x02, 0x83, 0xfc, 0x03, 0x47, 0x56, 0x2e, + 0x0f, 0x09, 0x07, 0xc4, 0x08, 0x09, 0x2f, 0x65, 0x9f, 0x71, 0x00, 0x01, + 0x00, 0xb4, 0xfe, 0x6f, 0x04, 0x14, 0x04, 0x0e, 0x00, 0x11, 0x00, 0x33, + 0xb1, 0x0b, 0x07, 0xbb, 0x02, 0x11, 0x00, 0x08, 0x00, 0x11, 0x02, 0x0c, + 0xb2, 0x00, 0x06, 0x03, 0xb8, 0x01, 0x07, 0x40, 0x0b, 0x0e, 0x00, 0x00, + 0x08, 0x0b, 0x0e, 0x50, 0x09, 0x4f, 0x08, 0x55, 0x00, 0x3f, 0x3f, 0x3f, + 0x33, 0x12, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, + 0x32, 0x30, 0x31, 0x01, 0x36, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, + 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x03, 0x19, 0x04, + 0x43, 0x3e, 0x36, 0x73, 0x45, 0xfa, 0xdd, 0x09, 0x32, 0x99, 0x70, 0x9a, + 0xa5, 0x06, 0x02, 0x6d, 0x71, 0x64, 0x59, 0x66, 0xfb, 0xec, 0x05, 0x89, + 0x94, 0x4e, 0x5c, 0xd2, 0xcf, 0x00, 0x00, 0x01, 0x00, 0xb4, 0xfe, 0x5c, + 0x04, 0x14, 0x04, 0x0e, 0x00, 0x21, 0x00, 0x40, 0xb1, 0x02, 0x0f, 0xb8, + 0x02, 0x11, 0xb4, 0x00, 0x18, 0x18, 0x00, 0x08, 0xb8, 0x02, 0x0c, 0xb7, + 0x09, 0x09, 0x00, 0x09, 0x09, 0x05, 0x18, 0x15, 0xb8, 0x01, 0x01, 0xb3, + 0x19, 0x1c, 0x56, 0x0c, 0xb8, 0x01, 0x07, 0xb3, 0x05, 0x50, 0x00, 0x4f, + 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, + 0x13, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x23, 0x36, 0x26, + 0x23, 0x22, 0x06, 0x07, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0xb4, 0xdd, 0x09, 0x32, + 0x99, 0x70, 0x9a, 0xa5, 0x06, 0xf5, 0x04, 0x43, 0x3e, 0x36, 0x73, 0x45, + 0x11, 0x22, 0x33, 0x21, 0x19, 0x36, 0x1c, 0x20, 0x47, 0x2b, 0x5a, 0x82, + 0x55, 0x29, 0x03, 0xf8, 0x94, 0x4e, 0x5c, 0xd2, 0xcf, 0x71, 0x64, 0x59, + 0x66, 0xfd, 0x78, 0x47, 0x56, 0x2e, 0x0f, 0x09, 0x07, 0xc4, 0x08, 0x09, + 0x24, 0x57, 0x94, 0x71, 0x00, 0x01, 0x00, 0xb4, 0x00, 0x00, 0x04, 0x0e, + 0x04, 0x0e, 0x00, 0x15, 0x00, 0x29, 0xb9, 0x00, 0x15, 0x02, 0x0c, 0xb2, + 0x00, 0x00, 0x0b, 0xb8, 0x02, 0x11, 0xb4, 0x0c, 0x00, 0x00, 0x0b, 0x05, + 0xb8, 0x01, 0x07, 0xb3, 0x10, 0x50, 0x0b, 0x51, 0x00, 0x3f, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x34, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x03, 0x19, 0x19, 0x2e, 0x44, 0x2a, + 0x2f, 0x45, 0x2d, 0x15, 0xfa, 0xd3, 0xdd, 0x6f, 0xa0, 0x69, 0x32, 0x02, + 0x6d, 0x3c, 0x51, 0x32, 0x16, 0x18, 0x35, 0x56, 0x3d, 0xfd, 0x9e, 0x02, + 0x6c, 0xd2, 0xd0, 0x31, 0x66, 0x9d, 0x6d, 0x00, 0x00, 0x01, 0x00, 0x58, + 0x00, 0x00, 0x03, 0xb2, 0x04, 0x0e, 0x00, 0x15, 0x00, 0x29, 0xb9, 0x00, + 0x09, 0x02, 0x11, 0xb2, 0x0a, 0x0a, 0x15, 0xb8, 0x02, 0x0c, 0xb6, 0x00, + 0x00, 0x00, 0x05, 0x09, 0x51, 0x10, 0xb8, 0x01, 0x07, 0xb1, 0x05, 0x50, + 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x39, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x11, + 0x23, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x58, 0x32, + 0x69, 0xa0, 0x6f, 0xdd, 0xd3, 0xfa, 0x15, 0x2d, 0x45, 0x2f, 0x2a, 0x44, + 0x2e, 0x19, 0x02, 0x6d, 0x6d, 0x9d, 0x66, 0x31, 0xd0, 0xd2, 0xfd, 0x94, + 0x02, 0x62, 0x3d, 0x56, 0x35, 0x18, 0x16, 0x32, 0x51, 0x3c, 0x00, 0x02, + 0x00, 0xb4, 0x00, 0x00, 0x04, 0x34, 0x03, 0xf8, 0x00, 0x17, 0x00, 0x24, + 0x00, 0x39, 0xb3, 0x00, 0x17, 0x17, 0x0e, 0xb8, 0x02, 0x15, 0xb4, 0x13, + 0x18, 0x18, 0x1f, 0x06, 0xb8, 0x02, 0x09, 0x40, 0x0f, 0x07, 0x13, 0x05, + 0xf4, 0x1f, 0x1f, 0x00, 0x1e, 0xfb, 0x08, 0x4f, 0x07, 0x51, 0x00, 0x51, + 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x21, + 0x27, 0x26, 0x26, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x13, 0x01, 0x34, 0x2e, + 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x13, 0x85, 0x22, + 0x51, 0x3f, 0x36, 0xf2, 0x01, 0x68, 0x6c, 0xb0, 0x7c, 0x43, 0x2e, 0x4b, + 0x5f, 0x32, 0x30, 0x51, 0x23, 0xa3, 0xfe, 0xc5, 0x1e, 0x3d, 0x5c, 0x3d, + 0x5f, 0x57, 0x39, 0x5d, 0x42, 0x24, 0xf4, 0x3e, 0x34, 0xfe, 0x9a, 0x03, + 0xf8, 0x18, 0x43, 0x75, 0x5d, 0x50, 0x63, 0x3e, 0x20, 0x0c, 0x0a, 0x4f, + 0x3d, 0xfe, 0xe8, 0x02, 0xad, 0x30, 0x38, 0x1c, 0x08, 0xfe, 0xe5, 0x0a, + 0x1e, 0x38, 0x00, 0x02, 0x00, 0xb4, 0x00, 0x00, 0x04, 0x34, 0x03, 0xf8, + 0x00, 0x17, 0x00, 0x24, 0x00, 0x4d, 0xb3, 0x17, 0x00, 0x00, 0x09, 0xb8, + 0x02, 0x15, 0xb4, 0x04, 0x18, 0x18, 0x1f, 0x11, 0xb8, 0x02, 0x09, 0x40, + 0x21, 0x10, 0x10, 0x4f, 0x04, 0x1e, 0xf4, 0x0f, 0x12, 0x3f, 0x12, 0x4f, + 0x12, 0xaf, 0x12, 0xdf, 0x12, 0xef, 0x12, 0x06, 0x8f, 0x12, 0xff, 0x12, + 0x02, 0x12, 0x12, 0x00, 0x1f, 0xfb, 0x0f, 0x51, 0x00, 0x4f, 0x00, 0x3f, + 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x5d, 0x71, 0xed, 0x39, 0x3f, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x03, 0x06, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x21, + 0x11, 0x33, 0x11, 0x33, 0x32, 0x36, 0x37, 0x37, 0x03, 0x34, 0x2e, 0x02, + 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x34, 0xa3, 0x23, 0x51, + 0x30, 0x32, 0x5f, 0x4b, 0x2e, 0x43, 0x7c, 0xb0, 0x6c, 0xfe, 0x98, 0xf2, + 0x36, 0x3f, 0x51, 0x22, 0x85, 0x1a, 0x24, 0x42, 0x5d, 0x39, 0x57, 0x5f, + 0x3d, 0x5c, 0x3d, 0x1e, 0x03, 0xf8, 0xfe, 0xe8, 0x3d, 0x4f, 0x0a, 0x0c, + 0x20, 0x3e, 0x64, 0x4f, 0x5d, 0x75, 0x43, 0x18, 0x03, 0xf8, 0xfe, 0x9a, + 0x34, 0x3e, 0xf4, 0xfd, 0x53, 0x2e, 0x39, 0x1e, 0x0a, 0xfe, 0xe5, 0x08, + 0x1c, 0x38, 0x00, 0x01, 0x00, 0x9c, 0xfe, 0x5c, 0x03, 0xd1, 0x04, 0x0e, + 0x00, 0x42, 0x00, 0x82, 0xb6, 0x10, 0x10, 0x20, 0x2a, 0x33, 0x33, 0x00, + 0xb8, 0x02, 0x24, 0xb2, 0x20, 0x20, 0x39, 0xbb, 0x02, 0x1c, 0x00, 0x2a, + 0x00, 0x07, 0x01, 0xa8, 0x40, 0x3f, 0x1a, 0x27, 0x3e, 0x01, 0x06, 0x3e, + 0x01, 0x66, 0x3e, 0x76, 0x3e, 0x96, 0x3e, 0xa6, 0x3e, 0xf6, 0x3e, 0x05, + 0x57, 0x3e, 0x01, 0x06, 0x3e, 0x01, 0x3e, 0x2f, 0x1d, 0x08, 0x25, 0x18, + 0x25, 0x02, 0x08, 0x25, 0x38, 0x25, 0x68, 0x25, 0x78, 0x25, 0xf8, 0x25, + 0x05, 0x25, 0x05, 0x33, 0x36, 0xf2, 0x32, 0x2f, 0x50, 0x10, 0x0d, 0xf7, + 0x11, 0x14, 0x56, 0x1a, 0x1d, 0xf7, 0x07, 0x05, 0x52, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, + 0x5d, 0x71, 0x11, 0x12, 0x39, 0x5d, 0x5d, 0x5d, 0x71, 0x71, 0x01, 0x2f, + 0xed, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x12, 0x39, 0x2f, + 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x27, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x11, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, + 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, + 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x03, + 0xd1, 0x4d, 0x7f, 0xa1, 0x54, 0x58, 0x49, 0x0d, 0x1a, 0x26, 0x19, 0x1a, + 0x34, 0x16, 0x27, 0x51, 0x21, 0x3c, 0x60, 0x43, 0x25, 0x5e, 0xba, 0x54, + 0x61, 0x5e, 0x14, 0x37, 0x64, 0x51, 0x4b, 0x71, 0x4a, 0x25, 0x38, 0x6f, + 0xa6, 0x6f, 0x61, 0x93, 0x39, 0x58, 0x98, 0x4b, 0x4b, 0x5b, 0x12, 0x35, + 0x5f, 0x4e, 0x58, 0x78, 0x49, 0x20, 0x01, 0x2b, 0x57, 0x7b, 0x4d, 0x23, + 0x06, 0x3f, 0x30, 0x3b, 0x22, 0x0c, 0x08, 0x05, 0xbd, 0x05, 0x06, 0x1a, + 0x48, 0x7e, 0x63, 0x01, 0x4f, 0x27, 0x23, 0x3d, 0x31, 0x17, 0x26, 0x23, + 0x25, 0x17, 0x15, 0x35, 0x48, 0x5f, 0x40, 0x3e, 0x6e, 0x53, 0x30, 0x14, + 0x0c, 0xc7, 0x1c, 0x17, 0x36, 0x30, 0x16, 0x25, 0x23, 0x24, 0x16, 0x19, + 0x39, 0x48, 0x5c, 0x00, 0x00, 0x01, 0x00, 0x7b, 0xfe, 0x5c, 0x03, 0xe9, + 0x05, 0x98, 0x00, 0x27, 0x00, 0x31, 0xb2, 0x1d, 0x1d, 0x00, 0xb8, 0x02, + 0x11, 0xb5, 0x13, 0x09, 0x09, 0x13, 0x1d, 0x22, 0xb8, 0x01, 0x36, 0xb4, + 0x1c, 0x19, 0x54, 0x09, 0x0e, 0xb8, 0x01, 0x31, 0xb2, 0x08, 0x05, 0x56, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x25, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x02, 0xb0, 0x31, 0x63, 0x94, 0x63, 0x26, 0x5c, 0x28, + 0x13, 0x2b, 0x2b, 0x28, 0x0f, 0x26, 0x3a, 0x27, 0x14, 0x30, 0x62, 0x94, + 0x63, 0x27, 0x5b, 0x28, 0x13, 0x2b, 0x2a, 0x27, 0x10, 0x27, 0x39, 0x27, + 0x13, 0x2d, 0x84, 0xb2, 0x6d, 0x2e, 0x10, 0x0d, 0xd1, 0x06, 0x0a, 0x08, + 0x04, 0x13, 0x36, 0x60, 0x4d, 0x03, 0xa3, 0x84, 0xb2, 0x6d, 0x2e, 0x11, + 0x0c, 0xd7, 0x06, 0x0b, 0x07, 0x05, 0x13, 0x36, 0x60, 0x4d, 0x00, 0x01, + 0x00, 0x7b, 0xfe, 0x5c, 0x03, 0xe9, 0x05, 0x98, 0x00, 0x2d, 0x00, 0x46, + 0xb7, 0x17, 0x17, 0x16, 0x0b, 0x0b, 0x16, 0x16, 0x19, 0xb8, 0x02, 0x11, + 0x40, 0x0f, 0x2c, 0x2d, 0x2d, 0x2c, 0x22, 0x22, 0x01, 0x2c, 0x16, 0x01, + 0xfa, 0x19, 0x2c, 0x51, 0x27, 0xb8, 0x01, 0x31, 0xb2, 0x1e, 0x56, 0x10, + 0xb8, 0x01, 0x36, 0xb1, 0x07, 0x54, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x30, 0x31, 0x37, 0x33, + 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x11, 0x33, 0x15, 0x23, 0x0e, 0x03, 0x23, 0x22, + 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x23, 0xd2, + 0xe4, 0x30, 0x62, 0x94, 0x63, 0x27, 0x5b, 0x28, 0x13, 0x2b, 0x2a, 0x27, + 0x10, 0x27, 0x39, 0x27, 0x13, 0xe4, 0xe5, 0x04, 0x35, 0x63, 0x90, 0x5e, + 0x26, 0x5c, 0x28, 0x13, 0x2b, 0x2b, 0x28, 0x0f, 0x24, 0x37, 0x27, 0x16, + 0x02, 0xe3, 0xbe, 0x03, 0x09, 0x84, 0xb2, 0x6d, 0x2e, 0x11, 0x0c, 0xd7, + 0x06, 0x0b, 0x07, 0x05, 0x13, 0x36, 0x60, 0x4d, 0xfc, 0xf3, 0xbe, 0x77, + 0xa0, 0x63, 0x2a, 0x10, 0x0d, 0xd1, 0x06, 0x0a, 0x08, 0x04, 0x11, 0x2e, + 0x52, 0x41, 0x00, 0x01, 0x00, 0x7b, 0xfe, 0x5c, 0x03, 0xe9, 0x05, 0x98, + 0x00, 0x27, 0x00, 0x31, 0xb2, 0x1e, 0x1e, 0x14, 0xb8, 0x02, 0x11, 0xb5, + 0x27, 0x0a, 0x0a, 0x27, 0x1e, 0x19, 0xb8, 0x01, 0x31, 0xb4, 0x1f, 0x22, + 0x56, 0x0a, 0x05, 0xb8, 0x01, 0x36, 0xb2, 0x0b, 0x0e, 0x54, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x01, 0xb4, 0x13, 0x27, 0x39, 0x27, 0x10, 0x27, 0x2a, + 0x2b, 0x13, 0x28, 0x5b, 0x27, 0x63, 0x94, 0x62, 0x30, 0x14, 0x27, 0x3a, + 0x26, 0x0f, 0x28, 0x2b, 0x2b, 0x13, 0x28, 0x5c, 0x26, 0x63, 0x94, 0x63, + 0x31, 0x03, 0xcb, 0x4d, 0x60, 0x36, 0x13, 0x05, 0x07, 0x0b, 0x06, 0xd7, + 0x0c, 0x11, 0x2e, 0x6d, 0xb2, 0x84, 0xfc, 0x5d, 0x4d, 0x60, 0x36, 0x13, + 0x04, 0x08, 0x0a, 0x06, 0xd1, 0x0d, 0x10, 0x2e, 0x6d, 0xb2, 0x84, 0x00, + 0x00, 0x02, 0x00, 0x06, 0xfe, 0x61, 0x03, 0xe9, 0x05, 0x98, 0x00, 0x35, + 0x00, 0x43, 0x00, 0x59, 0xb7, 0x1f, 0x36, 0x36, 0x22, 0x2c, 0x2c, 0x04, + 0x01, 0xb8, 0x02, 0x11, 0xb2, 0x22, 0x22, 0x3c, 0xb8, 0x01, 0x75, 0xb2, + 0x17, 0x0d, 0x09, 0xb8, 0x01, 0x91, 0xb2, 0x0a, 0x2c, 0x31, 0xb8, 0x01, + 0x36, 0x40, 0x13, 0x2b, 0x28, 0x54, 0x36, 0x04, 0x04, 0x12, 0x39, 0xae, + 0x1f, 0x1c, 0x1c, 0x3f, 0xad, 0x0d, 0x12, 0x56, 0x0a, 0x57, 0x00, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x12, 0x39, 0x11, 0x33, 0x3f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x32, 0x2f, 0x11, 0x33, 0x12, 0x39, 0x30, 0x31, 0x01, 0x11, 0x14, + 0x06, 0x07, 0x1e, 0x03, 0x15, 0x23, 0x34, 0x26, 0x27, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x36, + 0x36, 0x35, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, + 0x03, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x02, 0xb0, 0x0a, 0x18, 0x0d, 0x14, + 0x0d, 0x07, 0xce, 0x12, 0x09, 0x13, 0x27, 0x33, 0x44, 0x2f, 0x35, 0x5a, + 0x41, 0x24, 0x20, 0x3b, 0x53, 0x33, 0x35, 0x64, 0x2f, 0x05, 0x02, 0x30, + 0x62, 0x94, 0x63, 0x27, 0x5b, 0x28, 0x13, 0x2b, 0x2a, 0x27, 0x10, 0x27, + 0x39, 0x27, 0x13, 0xfe, 0xdc, 0x18, 0x3e, 0x26, 0x27, 0x2a, 0x2f, 0x22, + 0x16, 0x27, 0x1f, 0x18, 0x03, 0xcb, 0xfc, 0x5e, 0x44, 0x7e, 0x33, 0x14, + 0x34, 0x39, 0x38, 0x17, 0x1b, 0x30, 0x0a, 0x12, 0x20, 0x18, 0x0e, 0x1f, + 0x39, 0x50, 0x30, 0x34, 0x57, 0x3d, 0x22, 0x1f, 0x2c, 0x10, 0x1e, 0x1d, + 0x03, 0xa4, 0x84, 0xb2, 0x6d, 0x2e, 0x11, 0x0c, 0xd7, 0x06, 0x0b, 0x07, + 0x05, 0x13, 0x36, 0x60, 0xfb, 0x2a, 0x20, 0x27, 0x25, 0x23, 0x23, 0x26, + 0x0e, 0x15, 0x1b, 0x00, 0x00, 0x01, 0x00, 0x95, 0x00, 0x00, 0x04, 0x2b, + 0x05, 0x2d, 0x00, 0x17, 0x00, 0x3c, 0xb3, 0x09, 0x09, 0x07, 0x0b, 0xb8, + 0x02, 0x11, 0x40, 0x17, 0x10, 0x0c, 0x0c, 0x0e, 0x17, 0x17, 0x0e, 0x17, + 0x14, 0xff, 0x00, 0x03, 0x03, 0x18, 0x4f, 0x07, 0x0f, 0xfa, 0x0a, 0x0e, + 0x0e, 0x0c, 0x51, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x32, 0x2f, 0x30, 0x31, 0x13, 0x36, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x11, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x95, 0x42, 0x86, 0x3c, 0xc8, 0xb9, + 0x01, 0x11, 0xfe, 0xef, 0xfa, 0xfe, 0x75, 0x01, 0x8b, 0x50, 0x5e, 0x3c, + 0x71, 0x30, 0x05, 0x0c, 0x0f, 0x12, 0xaa, 0xb7, 0xfe, 0x10, 0xbe, 0xfe, + 0xe2, 0x01, 0x1e, 0xbe, 0x01, 0xde, 0x58, 0x58, 0x14, 0x0d, 0x00, 0x01, + 0x00, 0x3b, 0xfe, 0x5e, 0x03, 0xd1, 0x05, 0x3d, 0x00, 0x17, 0x00, 0x3a, + 0xb5, 0x17, 0x17, 0x0f, 0x0f, 0x0c, 0x10, 0xb8, 0x02, 0x11, 0x40, 0x14, + 0x07, 0x0b, 0x08, 0x08, 0x07, 0x0b, 0x0c, 0x0c, 0x10, 0x07, 0xfa, 0x0d, + 0x0a, 0x4f, 0x17, 0x14, 0xff, 0x00, 0x03, 0x56, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x32, 0x2f, + 0x32, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x06, + 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x37, 0x11, + 0x21, 0x15, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x03, 0xd1, + 0x42, 0x86, 0x3c, 0xc8, 0xb9, 0xfe, 0xef, 0x01, 0x11, 0xfa, 0x01, 0x8b, + 0xfe, 0x75, 0x50, 0x5e, 0x3c, 0x71, 0x30, 0xfe, 0x7f, 0x0f, 0x12, 0xaa, + 0xb7, 0x03, 0x7b, 0xbe, 0x01, 0x04, 0x41, 0xfe, 0xbb, 0xbe, 0xfc, 0x97, + 0x58, 0x58, 0x14, 0x0d, 0x00, 0x02, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x66, + 0x03, 0xf8, 0x00, 0x1a, 0x00, 0x22, 0x00, 0x4a, 0xb1, 0x08, 0x0b, 0xb8, + 0x02, 0x0b, 0xb4, 0x0e, 0x05, 0x1f, 0x04, 0x20, 0xb8, 0x02, 0x0b, 0x40, + 0x0f, 0x19, 0x1a, 0x1a, 0x01, 0x20, 0x0b, 0x1a, 0xfa, 0x08, 0x04, 0x00, + 0x00, 0x02, 0x1e, 0x1b, 0xb8, 0x01, 0x31, 0xb7, 0x0e, 0x13, 0x52, 0x0d, + 0x51, 0x06, 0x02, 0x4f, 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x2f, + 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x30, 0x31, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x11, 0x23, + 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x35, 0x23, 0x01, 0x32, + 0x36, 0x37, 0x35, 0x21, 0x15, 0x14, 0x89, 0xf4, 0x01, 0x6a, 0xf4, 0x8b, + 0x8b, 0xd3, 0x06, 0x20, 0x43, 0x4c, 0x5b, 0x37, 0x4e, 0x75, 0x4e, 0x27, + 0x89, 0x01, 0xfa, 0x3d, 0x71, 0x3f, 0xfe, 0x96, 0x02, 0xc1, 0x01, 0x37, + 0xfe, 0xc9, 0x01, 0x37, 0xfe, 0xc9, 0xbe, 0xfd, 0xfd, 0x96, 0x27, 0x40, + 0x2d, 0x19, 0x33, 0x5e, 0x83, 0x51, 0xb5, 0xfe, 0xb7, 0x64, 0x57, 0x8e, + 0xa1, 0xa8, 0x00, 0x01, 0x00, 0x2f, 0xff, 0xe9, 0x04, 0x37, 0x03, 0xf8, + 0x00, 0x2f, 0x00, 0x48, 0xb2, 0x25, 0x25, 0x2b, 0xb8, 0x02, 0x12, 0x40, + 0x09, 0x1d, 0x26, 0x22, 0x22, 0x1d, 0x0a, 0x0e, 0x0e, 0x13, 0xb8, 0x02, + 0x12, 0x40, 0x0e, 0x05, 0x0b, 0x0b, 0x05, 0x22, 0x0e, 0x0e, 0x26, 0x0b, + 0xf2, 0x23, 0x0c, 0x4f, 0x18, 0xb8, 0x01, 0x32, 0xb1, 0x00, 0x52, 0x00, + 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x01, 0x2f, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x10, 0xed, + 0x32, 0x2f, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x37, 0x23, 0x35, 0x21, 0x15, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x35, 0x21, 0x15, 0x23, + 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x02, 0x32, 0x79, 0xb3, 0x75, 0x39, + 0x18, 0x2e, 0x42, 0x2a, 0xdb, 0x01, 0xbf, 0x32, 0x3d, 0x21, 0x0b, 0x16, + 0x34, 0x56, 0x3f, 0x3f, 0x57, 0x34, 0x17, 0x0b, 0x21, 0x3d, 0x32, 0x01, + 0xbf, 0xdb, 0x2a, 0x42, 0x2e, 0x18, 0x3a, 0x76, 0xb3, 0x17, 0x49, 0x7e, + 0xaa, 0x61, 0x39, 0x71, 0x67, 0x58, 0x20, 0xb4, 0xaa, 0x25, 0x52, 0x5d, + 0x68, 0x3b, 0x36, 0x66, 0x4f, 0x30, 0x30, 0x4f, 0x66, 0x36, 0x3b, 0x68, + 0x5d, 0x52, 0x25, 0xaa, 0xb4, 0x20, 0x58, 0x67, 0x71, 0x39, 0x61, 0xaa, + 0x7e, 0x49, 0x00, 0x01, 0x00, 0x7b, 0xff, 0xe9, 0x03, 0xee, 0x04, 0x0e, + 0x00, 0x2e, 0x00, 0x39, 0xb3, 0x2e, 0x2e, 0x1d, 0x08, 0xb8, 0x02, 0x09, + 0xb3, 0x27, 0x1a, 0x17, 0x1d, 0xb8, 0x01, 0xe3, 0xb5, 0x16, 0x13, 0x10, + 0x16, 0x4f, 0x22, 0xb8, 0x01, 0x08, 0xb7, 0x0d, 0x52, 0x2e, 0x2c, 0xfb, + 0x00, 0x03, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x3f, 0x01, + 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x30, + 0x31, 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x35, 0x34, 0x26, 0x27, 0x33, 0x16, + 0x16, 0x15, 0x14, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x07, 0x02, 0x31, 0x1d, 0x3b, 0x23, + 0x57, 0x7b, 0x4d, 0x23, 0x41, 0x7c, 0xb5, 0x75, 0xc3, 0xb5, 0x05, 0x0b, + 0x0e, 0xf0, 0x0d, 0x0c, 0x05, 0x11, 0x27, 0x3d, 0x2d, 0x2f, 0x50, 0x3b, + 0x21, 0x05, 0x19, 0x37, 0x31, 0x22, 0x22, 0x04, 0x05, 0x05, 0x04, 0x38, + 0x6b, 0x9b, 0x62, 0x9e, 0xf0, 0xa4, 0x53, 0xb9, 0xc9, 0x3f, 0x76, 0x3f, + 0x66, 0xcd, 0x66, 0x61, 0xc6, 0x61, 0x3f, 0x76, 0x39, 0x36, 0x4e, 0x31, + 0x17, 0x28, 0x60, 0x9f, 0x76, 0x27, 0x59, 0x4b, 0x31, 0x07, 0x00, 0x01, + 0x00, 0x16, 0x00, 0x00, 0x04, 0x51, 0x03, 0xf8, 0x00, 0x08, 0x00, 0x22, + 0x40, 0x0f, 0x01, 0x00, 0x05, 0x05, 0x02, 0x07, 0x08, 0x03, 0x02, 0x08, + 0x02, 0x51, 0x05, 0x00, 0x4f, 0x00, 0x3f, 0x32, 0x3f, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x01, 0x21, + 0x01, 0x21, 0x03, 0x27, 0x07, 0x03, 0x21, 0x01, 0xa5, 0x01, 0x19, 0x01, + 0x93, 0xfe, 0xf0, 0xd3, 0x3f, 0x3e, 0xd5, 0xfe, 0xfa, 0x03, 0xf8, 0xfc, + 0x08, 0x02, 0x40, 0xba, 0xb2, 0xfd, 0xb8, 0x00, 0x00, 0x01, 0x00, 0x2d, + 0x00, 0x00, 0x04, 0x39, 0x03, 0xf8, 0x00, 0x0c, 0x00, 0x51, 0x40, 0x0b, + 0x08, 0x07, 0x07, 0x06, 0x03, 0x02, 0x09, 0x09, 0x00, 0x04, 0x05, 0xb8, + 0x01, 0xa7, 0xb4, 0x06, 0x0a, 0x0b, 0x0b, 0x0c, 0xb8, 0x01, 0xac, 0x40, + 0x12, 0x01, 0x00, 0x00, 0x06, 0x09, 0x03, 0x01, 0x04, 0x03, 0x04, 0x03, + 0x04, 0x0a, 0x07, 0x4f, 0x06, 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0x33, + 0x39, 0x39, 0x2f, 0x2f, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, + 0x32, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x11, 0x39, 0x11, 0x33, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x30, 0x31, 0x21, 0x03, 0x03, 0x23, 0x03, + 0x03, 0x23, 0x13, 0x21, 0x13, 0x13, 0x21, 0x13, 0x03, 0x60, 0x21, 0xd0, + 0x9a, 0xba, 0x1d, 0xd1, 0x40, 0x01, 0x16, 0xaa, 0xb0, 0x01, 0x1b, 0x41, + 0x02, 0xe7, 0xfd, 0xa3, 0x02, 0x5d, 0xfd, 0x19, 0x03, 0xf8, 0xfd, 0xc6, + 0x02, 0x3a, 0xfc, 0x08, 0x00, 0x01, 0x00, 0x17, 0x00, 0x00, 0x04, 0x52, + 0x05, 0x9c, 0x00, 0x18, 0x00, 0x38, 0x40, 0x15, 0x11, 0x15, 0x15, 0x12, + 0x17, 0x18, 0x13, 0x12, 0x09, 0x09, 0x12, 0x15, 0x11, 0x11, 0x05, 0x19, + 0x18, 0x12, 0x51, 0x09, 0x0c, 0xb8, 0x01, 0x08, 0xb2, 0x08, 0x05, 0x54, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x11, 0x12, 0x39, 0x11, 0x33, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, + 0x30, 0x31, 0x01, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x07, 0x01, 0x21, 0x03, 0x27, 0x07, 0x03, 0x21, + 0x01, 0x7b, 0x35, 0x73, 0x8a, 0xa8, 0x6a, 0x19, 0x3b, 0x1f, 0x18, 0x48, + 0x1f, 0x2a, 0x48, 0x3d, 0x32, 0x13, 0x01, 0x93, 0xfe, 0xf0, 0xd3, 0x3f, + 0x3e, 0xd5, 0xfe, 0xfa, 0x03, 0x89, 0x84, 0xc7, 0x85, 0x43, 0x05, 0x05, + 0xcf, 0x04, 0x08, 0x20, 0x39, 0x4f, 0x2f, 0xfc, 0x08, 0x02, 0x40, 0xba, + 0xb2, 0xfd, 0xb8, 0x00, 0x00, 0x01, 0x00, 0x32, 0x00, 0x00, 0x04, 0x32, + 0x03, 0xf8, 0x00, 0x08, 0x00, 0x2e, 0xb1, 0x06, 0x01, 0xb8, 0x02, 0x11, + 0x40, 0x11, 0x02, 0x02, 0x04, 0x07, 0x08, 0x05, 0x04, 0x06, 0x00, 0x03, + 0x03, 0x01, 0x07, 0x04, 0x4f, 0x01, 0x51, 0x00, 0x3f, 0x3f, 0x33, 0x12, + 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, + 0xed, 0x39, 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x01, 0x21, 0x13, 0x13, + 0x21, 0x02, 0xad, 0xfa, 0xfe, 0x7f, 0x01, 0x14, 0xed, 0xf7, 0x01, 0x08, + 0x01, 0x75, 0xfe, 0x8b, 0x01, 0x73, 0x02, 0x85, 0xfe, 0x5b, 0x01, 0xa5, + 0x00, 0x01, 0x00, 0x96, 0xfe, 0x5e, 0x04, 0x9b, 0x03, 0xf8, 0x00, 0x1b, + 0x00, 0x44, 0xb5, 0x16, 0x1a, 0x1a, 0x09, 0x09, 0x00, 0xb8, 0x01, 0xa8, + 0x40, 0x09, 0x13, 0x13, 0x1b, 0x15, 0x17, 0x17, 0x15, 0x1a, 0x17, 0xb8, + 0x01, 0x31, 0xb3, 0x18, 0x4f, 0x15, 0x1b, 0xb8, 0x01, 0x36, 0xb7, 0x14, + 0x51, 0x09, 0x06, 0xf7, 0x0a, 0x0d, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x25, 0x11, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x35, 0x21, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, + 0x03, 0xd1, 0x0d, 0x1a, 0x26, 0x19, 0x1a, 0x34, 0x16, 0x27, 0x51, 0x21, + 0x3c, 0x60, 0x43, 0x25, 0xfd, 0x98, 0x01, 0xf1, 0xfe, 0x1b, 0x03, 0x27, + 0xfe, 0x1a, 0xd7, 0xfe, 0xdb, 0x30, 0x3b, 0x22, 0x0c, 0x08, 0x05, 0xbd, + 0x05, 0x06, 0x1a, 0x48, 0x7e, 0x63, 0x5f, 0xaa, 0x02, 0x7d, 0xd1, 0xac, + 0xfd, 0x8b, 0x00, 0x02, 0x00, 0x6e, 0xff, 0x5a, 0x04, 0x6f, 0x03, 0xf8, + 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x5f, 0xb6, 0x1b, 0x1f, 0x1f, 0x23, 0x2d, + 0x11, 0x14, 0xb8, 0x01, 0xd7, 0xb5, 0x18, 0x01, 0x15, 0x15, 0x1a, 0x0b, + 0xb8, 0x01, 0x75, 0xb6, 0x23, 0x1c, 0x1c, 0x00, 0x1a, 0x1f, 0x1c, 0xb8, + 0x01, 0x31, 0x40, 0x0d, 0x1d, 0x4f, 0x8f, 0x28, 0x01, 0x28, 0xc7, 0x06, + 0x06, 0x2d, 0x2d, 0x1a, 0x00, 0xb8, 0x01, 0x03, 0xb5, 0x19, 0x15, 0x15, + 0x10, 0x19, 0x51, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x32, + 0x2f, 0x32, 0x2f, 0xed, 0x5d, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x11, + 0x33, 0x11, 0x33, 0x30, 0x31, 0x25, 0x33, 0x3e, 0x03, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x06, 0x06, 0x07, 0x23, 0x36, + 0x36, 0x37, 0x21, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x03, 0x32, 0x36, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x01, 0xaf, 0x92, + 0x10, 0x2f, 0x48, 0x6a, 0x4d, 0x2b, 0x55, 0x45, 0x2b, 0x34, 0x50, 0x61, + 0x2d, 0x71, 0x0d, 0x0f, 0x02, 0xe3, 0x03, 0x11, 0x0e, 0xfe, 0x61, 0x01, + 0xf1, 0xfe, 0x1b, 0x03, 0x27, 0x5c, 0x36, 0x3c, 0x0b, 0x10, 0x15, 0x0a, + 0x17, 0x22, 0x18, 0x12, 0x08, 0xc8, 0x29, 0x66, 0x5a, 0x3d, 0x12, 0x32, + 0x5a, 0x49, 0x50, 0x67, 0x3a, 0x16, 0x23, 0x52, 0x31, 0x2d, 0x53, 0x26, + 0xaa, 0x02, 0x7d, 0xd1, 0xac, 0xfd, 0x73, 0x27, 0x2e, 0x10, 0x15, 0x0d, + 0x05, 0x16, 0x25, 0x33, 0x1e, 0x00, 0x00, 0x01, 0x00, 0x6e, 0xfe, 0xac, + 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x28, 0x00, 0x54, 0xb3, 0x12, 0x16, 0x16, + 0x1e, 0xb8, 0x02, 0x16, 0x40, 0x1c, 0x0a, 0x17, 0x10, 0x10, 0x00, 0x0a, + 0x0a, 0x00, 0x13, 0x13, 0x00, 0x11, 0x17, 0xce, 0x60, 0x10, 0x80, 0x10, + 0x90, 0x10, 0xa0, 0x10, 0x04, 0x10, 0x10, 0x14, 0x00, 0x05, 0xb8, 0x01, + 0x0a, 0xb3, 0x28, 0x23, 0x16, 0x13, 0xb8, 0x01, 0x31, 0xb1, 0x14, 0x4f, + 0x00, 0x3f, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x5d, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x2f, + 0x33, 0x10, 0xed, 0x32, 0x11, 0x33, 0x30, 0x31, 0x17, 0x1e, 0x03, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x21, + 0x35, 0x21, 0x15, 0x01, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x27, 0x6e, 0x19, 0x43, 0x4e, 0x56, 0x2b, 0x40, 0x79, + 0x5e, 0x3a, 0x10, 0x3c, 0x77, 0x67, 0x84, 0x01, 0x33, 0xfe, 0x22, 0x03, + 0x21, 0xfe, 0xa4, 0x4e, 0x78, 0x5a, 0x3d, 0x26, 0x10, 0x5d, 0x9c, 0xcd, + 0x70, 0x27, 0x53, 0x54, 0x52, 0x25, 0x5c, 0x07, 0x0f, 0x0c, 0x07, 0x17, + 0x35, 0x56, 0x3e, 0x2a, 0x52, 0x3f, 0x27, 0xb5, 0x01, 0x35, 0xd1, 0xc2, + 0xfe, 0xb7, 0x21, 0x37, 0x4b, 0x53, 0x59, 0x2a, 0x7f, 0xae, 0x6c, 0x2f, + 0x05, 0x0a, 0x0d, 0x09, 0x00, 0x02, 0x00, 0x4b, 0xfe, 0x4a, 0x03, 0xe9, + 0x03, 0xf8, 0x00, 0x31, 0x00, 0x3d, 0x00, 0xa2, 0xb6, 0x84, 0x0d, 0x01, + 0x1d, 0x21, 0x21, 0x29, 0xb8, 0x02, 0x16, 0xb2, 0x15, 0x12, 0x31, 0xb8, + 0x01, 0xd4, 0x40, 0x0c, 0x32, 0x00, 0x22, 0x1b, 0x00, 0x1b, 0x00, 0x1b, + 0x08, 0x15, 0x15, 0x39, 0xb8, 0x01, 0x73, 0x40, 0x17, 0x08, 0x1e, 0x1e, + 0x08, 0x06, 0x1c, 0x01, 0x1c, 0x22, 0xce, 0x6b, 0x1b, 0x7b, 0x1b, 0x02, + 0x09, 0x1b, 0x01, 0x1b, 0x1b, 0x03, 0x21, 0x1e, 0xb8, 0x01, 0x31, 0x40, + 0x2a, 0x1f, 0x4f, 0x34, 0xcb, 0x04, 0x0d, 0x24, 0x0d, 0x34, 0x0d, 0x44, + 0x0d, 0xa4, 0x0d, 0xd4, 0x0d, 0x06, 0x14, 0x0d, 0x64, 0x0d, 0x74, 0x0d, + 0xf4, 0x0d, 0x04, 0x03, 0x0d, 0x01, 0x02, 0x0d, 0x0d, 0x12, 0x32, 0xfb, + 0x03, 0x2e, 0x03, 0x00, 0x00, 0x03, 0x58, 0x00, 0x3f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x5f, 0x5d, 0x5d, 0x71, 0xed, 0x3f, + 0xed, 0x32, 0x11, 0x39, 0x2f, 0x5d, 0x5d, 0xed, 0x32, 0x5d, 0x01, 0x2f, + 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x11, + 0x33, 0x11, 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x00, 0x5d, + 0x30, 0x31, 0x01, 0x26, 0x26, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x17, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x23, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x32, 0x1e, 0x04, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x15, 0x03, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x01, 0xd0, 0x01, 0x01, 0x02, 0x69, 0x93, + 0x5c, 0x29, 0x20, 0x3d, 0x57, 0x37, 0x4c, 0x70, 0x52, 0x39, 0x15, 0x29, + 0x2f, 0x10, 0x3c, 0x77, 0x67, 0x84, 0x01, 0x33, 0xfe, 0x22, 0x03, 0x21, + 0xfe, 0xa4, 0x4e, 0x78, 0x5a, 0x3d, 0x26, 0x10, 0x2d, 0x52, 0x75, 0x49, + 0x02, 0x02, 0xf1, 0x12, 0x73, 0x11, 0x17, 0x0e, 0x06, 0x1c, 0x33, 0x47, + 0xfe, 0x4a, 0x1e, 0x44, 0x13, 0x02, 0x35, 0x55, 0x6b, 0x39, 0x33, 0x57, + 0x40, 0x24, 0x29, 0x4f, 0x73, 0x4a, 0x22, 0x5e, 0x33, 0x2a, 0x52, 0x3f, + 0x27, 0xb5, 0x01, 0x35, 0xd1, 0xc2, 0xfe, 0xb7, 0x21, 0x37, 0x4b, 0x53, + 0x59, 0x2a, 0x51, 0x88, 0x6a, 0x4b, 0x14, 0x23, 0x44, 0x21, 0x01, 0x34, + 0xb3, 0x0c, 0x12, 0x15, 0x09, 0x1d, 0x2c, 0x1e, 0x0f, 0x00, 0x00, 0x01, + 0x01, 0x15, 0x00, 0x00, 0x03, 0xcf, 0x05, 0x85, 0x00, 0x1a, 0x00, 0x35, + 0xb9, 0x00, 0x06, 0x02, 0x27, 0xb5, 0x14, 0x14, 0x0e, 0x1a, 0x1a, 0x0b, + 0xbb, 0x02, 0x08, 0x00, 0x0e, 0x00, 0x0b, 0x01, 0x05, 0xb5, 0x0e, 0x0e, + 0x00, 0x0c, 0x51, 0x1a, 0xb8, 0x01, 0x3f, 0xb1, 0x00, 0x53, 0x00, 0x3f, + 0xed, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x01, 0x15, 0x45, 0x9a, 0xeb, 0x9f, 0x51, 0x2f, + 0x5e, 0x8c, 0x5c, 0xf1, 0x6c, 0x42, 0x59, 0x36, 0x18, 0x2c, 0x5a, 0x8a, + 0x5e, 0x3b, 0x05, 0x85, 0x52, 0x8f, 0xc0, 0x6d, 0x7a, 0xa9, 0x72, 0x46, + 0x17, 0xfe, 0x7b, 0x02, 0x4f, 0x2b, 0x4a, 0x63, 0x38, 0x3c, 0x74, 0x5b, + 0x38, 0x00, 0x00, 0x01, 0x00, 0x97, 0x00, 0x00, 0x03, 0x51, 0x05, 0x85, + 0x00, 0x1a, 0x00, 0x33, 0xb2, 0x00, 0x00, 0x0c, 0xb8, 0x02, 0x08, 0xb2, + 0x0f, 0x0f, 0x06, 0xbb, 0x02, 0x27, 0x00, 0x14, 0x00, 0x0f, 0x01, 0x05, + 0xb3, 0x0b, 0x0b, 0x0d, 0x01, 0xb8, 0x01, 0x3f, 0xb3, 0x19, 0x53, 0x0d, + 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x11, 0x23, 0x11, 0x2e, 0x03, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x33, 0x03, 0x51, 0x3b, 0x5e, 0x8a, 0x5a, 0x2c, + 0x18, 0x36, 0x59, 0x42, 0x6c, 0xf1, 0x5c, 0x8c, 0x5e, 0x2f, 0x51, 0x9f, + 0xeb, 0x9a, 0x45, 0x04, 0xa2, 0x38, 0x5b, 0x74, 0x3c, 0x38, 0x63, 0x4a, + 0x2b, 0xfd, 0xb1, 0x01, 0x85, 0x17, 0x46, 0x72, 0xa9, 0x7a, 0x6d, 0xc0, + 0x8f, 0x52, 0x00, 0x01, 0x01, 0x15, 0x00, 0x00, 0x03, 0xcf, 0x05, 0x85, + 0x00, 0x1a, 0x00, 0x33, 0xb9, 0x00, 0x14, 0x02, 0x27, 0xb2, 0x06, 0x06, + 0x0f, 0xb8, 0x02, 0x08, 0xb3, 0x0c, 0x0c, 0x00, 0x0f, 0xb8, 0x01, 0x05, + 0xb3, 0x0c, 0x0c, 0x0d, 0x00, 0xb8, 0x01, 0x3f, 0xb3, 0x1a, 0x51, 0x0d, + 0x53, 0x00, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x33, 0x11, 0x1e, 0x03, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x23, 0x01, 0x15, 0x3b, 0x5e, 0x8a, 0x5a, 0x2c, + 0x18, 0x36, 0x59, 0x42, 0x6c, 0xf1, 0x5c, 0x8c, 0x5e, 0x2f, 0x51, 0x9f, + 0xeb, 0x9a, 0x45, 0xe3, 0x38, 0x5b, 0x74, 0x3c, 0x38, 0x63, 0x4a, 0x2b, + 0x02, 0x4f, 0xfe, 0x7b, 0x17, 0x46, 0x72, 0xa9, 0x7a, 0x6e, 0xbf, 0x8f, + 0x52, 0x00, 0x00, 0x01, 0x00, 0x85, 0xfe, 0x5e, 0x03, 0xc1, 0x04, 0x07, + 0x00, 0x21, 0x00, 0x2d, 0xb3, 0x11, 0x11, 0x21, 0x19, 0xb8, 0x02, 0x1b, + 0xb2, 0x08, 0x11, 0x14, 0xb8, 0x01, 0x30, 0xb4, 0x10, 0x0d, 0x50, 0x21, + 0x1e, 0xb8, 0x01, 0x34, 0xb2, 0x00, 0x03, 0x56, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x2f, 0x30, + 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x26, 0x26, 0x02, 0x35, 0x34, 0x12, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0xc1, 0x48, + 0x8d, 0x54, 0x80, 0xc6, 0x87, 0x46, 0x53, 0x97, 0xd3, 0x80, 0x3b, 0x7d, + 0x42, 0x49, 0x80, 0x32, 0x4c, 0x74, 0x4e, 0x28, 0x2a, 0x4f, 0x70, 0x46, + 0x3a, 0x84, 0x49, 0xfe, 0x91, 0x1b, 0x18, 0x4d, 0xaa, 0x01, 0x0e, 0xc1, + 0xc7, 0x01, 0x19, 0xb1, 0x52, 0x10, 0x0f, 0xed, 0x20, 0x1c, 0x39, 0x7c, + 0xc4, 0x8b, 0x8d, 0xc4, 0x79, 0x36, 0x1a, 0x1d, 0x00, 0x03, 0x00, 0x25, + 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x00, 0x0f, 0x00, 0x1f, 0x00, 0x33, + 0x00, 0x5e, 0xb9, 0x00, 0x25, 0x02, 0x35, 0xb3, 0x2f, 0x2f, 0x08, 0x00, + 0xb8, 0x02, 0x02, 0xb2, 0x10, 0x10, 0x18, 0xbb, 0x02, 0x02, 0x00, 0x08, + 0x00, 0x2a, 0x01, 0x44, 0x40, 0x1d, 0x30, 0x20, 0x50, 0x20, 0x70, 0x20, + 0x80, 0x20, 0x04, 0x10, 0x20, 0x60, 0x20, 0x70, 0x20, 0xb0, 0x20, 0x04, + 0x60, 0x20, 0x70, 0x20, 0xf0, 0x20, 0x03, 0x20, 0x20, 0x1b, 0x13, 0xb8, + 0x01, 0x17, 0xb2, 0x0d, 0x42, 0x1b, 0xb8, 0x01, 0x17, 0xb1, 0x05, 0x44, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0x71, 0x72, 0xed, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x14, 0x02, 0x06, 0x06, 0x23, 0x20, 0x00, 0x11, 0x34, 0x12, 0x36, + 0x36, 0x33, 0x20, 0x00, 0x01, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x04, 0x41, + 0x53, 0x91, 0xc3, 0x6f, 0xfe, 0xfe, 0xfe, 0xfc, 0x53, 0x91, 0xc3, 0x6f, + 0x01, 0x02, 0x01, 0x04, 0xfe, 0xfc, 0x7c, 0x8e, 0x47, 0x64, 0x41, 0x1e, + 0x7d, 0x8d, 0x47, 0x65, 0x40, 0x1e, 0xfe, 0xf6, 0x28, 0x44, 0x33, 0x1c, + 0x1c, 0x33, 0x44, 0x28, 0x26, 0x42, 0x32, 0x1c, 0x1c, 0x32, 0x42, 0x02, + 0x93, 0xb2, 0xfe, 0xfe, 0xa6, 0x50, 0x01, 0x57, 0x01, 0x47, 0xb2, 0x01, + 0x02, 0xa6, 0x50, 0xfe, 0xaa, 0xfe, 0xac, 0xe8, 0xe4, 0x3b, 0x72, 0xa7, + 0x6c, 0xe8, 0xe4, 0x3b, 0x72, 0xa7, 0x01, 0x2b, 0x1d, 0x33, 0x44, 0x27, + 0x26, 0x42, 0x33, 0x1d, 0x1d, 0x33, 0x42, 0x26, 0x27, 0x44, 0x33, 0x1d, + 0x00, 0x03, 0x00, 0x9f, 0x00, 0x00, 0x03, 0xf3, 0x03, 0xf8, 0x00, 0x14, + 0x00, 0x1d, 0x00, 0x28, 0x00, 0x54, 0xb7, 0x0d, 0x27, 0x01, 0x0b, 0x1a, + 0x01, 0x1a, 0x28, 0xbb, 0x01, 0xdc, 0x00, 0x00, 0x00, 0x05, 0x02, 0x0c, + 0xb2, 0x15, 0x15, 0x0f, 0xb8, 0x02, 0x14, 0x40, 0x1c, 0x0a, 0x21, 0x21, + 0x00, 0x0a, 0x27, 0xd0, 0x3f, 0x1a, 0x4f, 0x1a, 0x02, 0x9f, 0x1a, 0xaf, + 0x1a, 0x02, 0x1a, 0x1a, 0x00, 0x19, 0xf7, 0x01, 0x4f, 0x28, 0xfb, 0x00, + 0x51, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0x71, 0xed, + 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x10, 0xed, + 0x32, 0x00, 0x5d, 0x5d, 0x30, 0x31, 0x33, 0x11, 0x21, 0x32, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x13, + 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x32, 0x36, 0x03, 0x32, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x23, 0x23, 0x15, 0x9f, 0x01, 0xc7, 0xae, 0xb6, 0x13, + 0x27, 0x39, 0x27, 0x27, 0x46, 0x36, 0x20, 0x38, 0x6b, 0x9a, 0x62, 0x81, + 0x4f, 0x5b, 0xa3, 0xbb, 0x4b, 0x47, 0x87, 0x4e, 0x5a, 0x17, 0x2c, 0x3f, + 0x27, 0xc5, 0x03, 0xf8, 0x78, 0x7c, 0x27, 0x48, 0x3c, 0x2f, 0x0d, 0x06, + 0x25, 0x3a, 0x4f, 0x31, 0x4e, 0x75, 0x4e, 0x27, 0x02, 0xd5, 0x3a, 0x2e, + 0xda, 0x37, 0xfe, 0x25, 0x42, 0x41, 0x21, 0x2a, 0x19, 0x0a, 0xf1, 0x00, + 0x00, 0x02, 0x00, 0x55, 0xff, 0xea, 0x04, 0x11, 0x04, 0x0e, 0x00, 0x1b, + 0x00, 0x39, 0x00, 0x4f, 0x40, 0x0b, 0x60, 0x2d, 0x70, 0x2d, 0x02, 0x0a, + 0x05, 0x2f, 0x2f, 0x21, 0x35, 0xbb, 0x01, 0xe3, 0x00, 0x05, 0x00, 0x17, + 0x02, 0x17, 0xb3, 0x21, 0x21, 0x05, 0x28, 0xb8, 0x01, 0xdb, 0x40, 0x11, + 0x0d, 0x0d, 0x05, 0x0a, 0x30, 0xfd, 0x2d, 0x2d, 0x1c, 0x26, 0xf7, 0x12, + 0x50, 0x1c, 0xfa, 0x00, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, + 0x10, 0xed, 0x11, 0x39, 0x2f, 0x12, 0x39, 0x00, 0x5d, 0x30, 0x31, 0x05, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x27, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x02, + 0x07, 0x64, 0xa0, 0x71, 0x3d, 0x21, 0x38, 0x49, 0x28, 0x4b, 0x5e, 0x3c, + 0x6e, 0x98, 0x5d, 0x79, 0xbe, 0x81, 0x44, 0x46, 0x86, 0xc2, 0x7c, 0x3e, + 0x62, 0x45, 0x25, 0x2d, 0x4a, 0x5c, 0x30, 0xb0, 0x1d, 0x2f, 0x3d, 0x20, + 0x47, 0x48, 0x27, 0x47, 0x34, 0x1f, 0x1b, 0x33, 0x48, 0x16, 0x28, 0x51, + 0x79, 0x51, 0x33, 0x4e, 0x39, 0x24, 0x09, 0x1a, 0x71, 0x4f, 0x4b, 0x6c, + 0x47, 0x22, 0x4b, 0x8d, 0xcb, 0x7f, 0x81, 0xc1, 0x80, 0x40, 0xbe, 0x26, + 0x52, 0x80, 0x5a, 0x64, 0x85, 0x50, 0x20, 0x73, 0x2a, 0x30, 0x17, 0x06, + 0xc1, 0x0a, 0x1a, 0x30, 0x25, 0x24, 0x34, 0x20, 0x0f, 0x00, 0x00, 0x01, + 0x00, 0x85, 0xff, 0xee, 0x04, 0xb1, 0x05, 0x24, 0x00, 0x35, 0x00, 0x58, + 0xb1, 0x1c, 0x13, 0xb8, 0x01, 0xa7, 0xb2, 0x25, 0x25, 0x03, 0xb8, 0x01, + 0xd9, 0xb4, 0x34, 0x00, 0x00, 0x34, 0x2d, 0xb8, 0x02, 0x18, 0xb2, 0x0b, + 0x25, 0x28, 0xb8, 0x01, 0x36, 0x40, 0x13, 0x10, 0x1f, 0xf7, 0x18, 0x18, + 0x10, 0x6f, 0x00, 0x7f, 0x00, 0x02, 0x00, 0xfe, 0x01, 0x01, 0x10, 0x50, + 0x34, 0x32, 0xb8, 0x01, 0x07, 0xb2, 0x03, 0x06, 0x52, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x39, 0x2f, 0xed, 0x5d, 0x11, 0x33, 0x2f, 0xed, 0x10, + 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x2f, + 0xed, 0xc6, 0x31, 0x30, 0x01, 0x35, 0x21, 0x11, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x3e, 0x03, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x37, 0x35, 0x02, 0x53, 0x01, 0x97, 0x4c, 0xb7, 0x61, 0x72, 0xbd, + 0x87, 0x4b, 0x51, 0x8f, 0xc5, 0x73, 0x1c, 0x3c, 0x20, 0x03, 0x28, 0x43, + 0x5c, 0x39, 0x21, 0x51, 0x27, 0x16, 0x34, 0x1a, 0x18, 0x25, 0x1b, 0x0e, + 0x3c, 0xa4, 0x58, 0x48, 0x6f, 0x4b, 0x26, 0x28, 0x4a, 0x69, 0x41, 0x2e, + 0x33, 0x01, 0x8a, 0xc2, 0xfd, 0xd6, 0x1d, 0x17, 0x40, 0x80, 0xc0, 0x7f, + 0x81, 0xca, 0x8c, 0x4a, 0x04, 0x03, 0x57, 0x6f, 0x3f, 0x18, 0x06, 0x05, + 0xbd, 0x05, 0x08, 0x0c, 0x1f, 0x38, 0x2d, 0xe3, 0x1b, 0x26, 0x2c, 0x53, + 0x77, 0x4a, 0x53, 0x78, 0x4d, 0x25, 0x09, 0xc7, 0x00, 0x01, 0x00, 0x8b, + 0x00, 0x00, 0x03, 0xdb, 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x42, 0xb1, 0x07, + 0x03, 0xbb, 0x01, 0xdf, 0x00, 0x04, 0x00, 0x0b, 0x01, 0xe0, 0xb4, 0x08, + 0x00, 0x00, 0x04, 0x02, 0xb8, 0x01, 0x34, 0x40, 0x16, 0x0f, 0x07, 0xaf, + 0x07, 0x02, 0x0f, 0x07, 0x6f, 0x07, 0x7f, 0x07, 0xff, 0x07, 0x04, 0x07, + 0x07, 0x09, 0x05, 0x4f, 0x04, 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0x33, + 0x39, 0x2f, 0x5d, 0x71, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x10, + 0xed, 0x32, 0x30, 0x31, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x21, 0x11, 0x33, 0x11, 0x02, 0xee, 0xfe, 0x89, 0xec, 0xec, 0x01, 0x77, + 0xed, 0x01, 0x98, 0xfe, 0x68, 0x03, 0xf8, 0xfe, 0x75, 0x01, 0x8b, 0xfc, + 0x08, 0x00, 0x00, 0x03, 0x00, 0x23, 0xfe, 0x5a, 0x03, 0xb9, 0x05, 0xae, + 0x00, 0x24, 0x00, 0x38, 0x00, 0x44, 0x00, 0x5f, 0xb9, 0x00, 0x25, 0x02, + 0x3c, 0xb5, 0x2f, 0x2f, 0x1b, 0x16, 0x00, 0x03, 0xb8, 0x01, 0xd4, 0xb5, + 0x39, 0x07, 0x04, 0x04, 0x0c, 0x20, 0xb8, 0x02, 0x0f, 0xb2, 0x1b, 0x1b, + 0x40, 0xb8, 0x01, 0x73, 0xb2, 0x1d, 0x0c, 0x34, 0xb8, 0x01, 0x4b, 0x40, + 0x12, 0x2a, 0x2a, 0x1d, 0xfa, 0x1e, 0x4f, 0x3b, 0xcb, 0x11, 0x11, 0x16, + 0x39, 0xfb, 0x00, 0x07, 0x07, 0x04, 0x56, 0x00, 0x3f, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x32, 0x2f, 0xed, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x01, 0x2f, + 0x33, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, + 0x32, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x16, 0x16, 0x15, 0x23, + 0x26, 0x26, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x17, 0x3e, 0x03, 0x35, 0x11, 0x21, 0x35, 0x21, 0x11, 0x14, 0x0e, + 0x02, 0x13, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x02, 0x84, 0x02, 0x02, 0xe0, 0x01, 0x01, 0x02, 0x69, + 0x93, 0x5c, 0x29, 0x20, 0x3d, 0x57, 0x37, 0x4c, 0x70, 0x52, 0x39, 0x15, + 0x15, 0x1a, 0x0f, 0x05, 0xfe, 0x1d, 0x02, 0xdb, 0x1c, 0x43, 0x6f, 0xe2, + 0x18, 0x2b, 0x3b, 0x22, 0x22, 0x3a, 0x2b, 0x18, 0x18, 0x2b, 0x3a, 0x22, + 0x22, 0x3b, 0x2b, 0x18, 0xfd, 0xde, 0x12, 0x73, 0x11, 0x17, 0x0e, 0x06, + 0x1c, 0x33, 0x47, 0xfe, 0xe2, 0x23, 0x44, 0x21, 0x1e, 0x44, 0x13, 0x02, + 0x35, 0x55, 0x6b, 0x39, 0x33, 0x57, 0x40, 0x24, 0x29, 0x4f, 0x73, 0x4a, + 0x12, 0x30, 0x34, 0x37, 0x1a, 0x02, 0xbb, 0xbe, 0xfc, 0x89, 0x4a, 0x80, + 0x6a, 0x51, 0x06, 0x12, 0x21, 0x3a, 0x2b, 0x19, 0x19, 0x2b, 0x3a, 0x21, + 0x21, 0x3a, 0x2c, 0x19, 0x19, 0x2c, 0x3a, 0xfa, 0x5f, 0xb3, 0x0c, 0x12, + 0x15, 0x09, 0x1d, 0x2c, 0x1e, 0x0f, 0x00, 0x01, 0x00, 0x27, 0xfe, 0x6f, + 0x03, 0xd1, 0x03, 0xf8, 0x00, 0x0a, 0x00, 0x36, 0xb5, 0x00, 0x0a, 0x0a, + 0x08, 0x09, 0x04, 0xb8, 0x02, 0x0b, 0x40, 0x12, 0x01, 0x05, 0x05, 0x07, + 0x08, 0x06, 0x01, 0x09, 0x09, 0x08, 0x0a, 0x4f, 0x08, 0x51, 0x05, 0x55, + 0x02, 0x4f, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, + 0x01, 0x2f, 0x32, 0x32, 0x2f, 0x33, 0xed, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x30, 0x31, 0x01, 0x01, 0x11, 0x33, 0x11, 0x23, 0x11, 0x01, 0x21, 0x01, + 0x01, 0x01, 0x66, 0x01, 0x77, 0xf4, 0xf4, 0xfe, 0x9d, 0xfe, 0xcf, 0x01, + 0x9c, 0xfe, 0x42, 0x03, 0xf8, 0xfe, 0x04, 0x01, 0xfc, 0xfa, 0x77, 0x03, + 0x3f, 0xfe, 0x52, 0x01, 0xcf, 0x02, 0x29, 0x00, 0x00, 0x01, 0x00, 0xef, + 0x00, 0x00, 0x03, 0xa8, 0x03, 0xf8, 0x00, 0x05, 0x00, 0x1b, 0xb9, 0x00, + 0x03, 0x01, 0xe1, 0xb2, 0x00, 0x04, 0x03, 0xb8, 0x01, 0x35, 0xb3, 0x00, + 0x51, 0x01, 0x4f, 0x00, 0x3f, 0x3f, 0xed, 0x01, 0x2f, 0x2f, 0xed, 0x30, + 0x31, 0x33, 0x11, 0x33, 0x11, 0x21, 0x15, 0xef, 0xee, 0x01, 0xcb, 0x03, + 0xf8, 0xfc, 0xde, 0xd6, 0x00, 0x02, 0x00, 0x4c, 0xfe, 0x73, 0x04, 0xf3, + 0x05, 0x98, 0x00, 0x10, 0x00, 0x37, 0x00, 0x47, 0xb2, 0x1a, 0x1a, 0x23, + 0xb8, 0x02, 0x0b, 0xb5, 0x26, 0x11, 0x08, 0x24, 0x24, 0x00, 0xb8, 0x02, + 0x17, 0x40, 0x09, 0x30, 0x09, 0x0c, 0xfc, 0x11, 0x35, 0x50, 0x08, 0x05, + 0xb8, 0x01, 0x31, 0x40, 0x0b, 0x26, 0x2b, 0x52, 0x24, 0x55, 0x1a, 0x1d, + 0xfb, 0x19, 0x16, 0x54, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, + 0x33, 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x11, 0x23, 0x11, 0x37, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x01, 0x4c, 0x17, 0x2d, 0x42, + 0x2a, 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, 0x01, + 0xa0, 0x2d, 0x58, 0x85, 0x58, 0x2a, 0x57, 0x24, 0x26, 0x3d, 0x1e, 0x26, + 0x37, 0x26, 0x12, 0xf4, 0x0b, 0x1c, 0x3f, 0x4b, 0x57, 0x34, 0x5a, 0x8c, + 0x5f, 0x32, 0x42, 0x83, 0xc4, 0x83, 0x21, 0x4d, 0x01, 0xf4, 0x54, 0x77, + 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x01, + 0xb5, 0x77, 0xa0, 0x60, 0x29, 0x08, 0x0b, 0xbf, 0x0c, 0x07, 0x13, 0x2c, + 0x47, 0x33, 0xfa, 0x53, 0x01, 0x4e, 0xc6, 0x23, 0x3a, 0x2a, 0x17, 0x48, + 0x85, 0xbe, 0x75, 0x79, 0xc9, 0x90, 0x4f, 0x0a, 0xff, 0xff, 0x00, 0x83, + 0x00, 0x00, 0x03, 0xcf, 0x05, 0x85, 0x02, 0x26, 0x06, 0x40, 0x00, 0x00, + 0x01, 0x07, 0x0a, 0x66, 0xff, 0xb1, 0xfe, 0xf8, 0x00, 0x27, 0x40, 0x18, + 0x70, 0x1c, 0x01, 0x1c, 0x70, 0x1b, 0x01, 0x1b, 0x6f, 0x1d, 0x01, 0x1d, + 0x6f, 0x1e, 0x01, 0x1e, 0x01, 0xaf, 0x1b, 0x01, 0xa0, 0x1b, 0x01, 0x1b, + 0x00, 0x11, 0x5d, 0x71, 0x35, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x11, + 0x5d, 0x00, 0xff, 0xff, 0x00, 0x97, 0x00, 0x00, 0x03, 0xe8, 0x05, 0x85, + 0x02, 0x26, 0x06, 0x41, 0x00, 0x00, 0x01, 0x07, 0x0a, 0x66, 0x00, 0x54, + 0xfe, 0xf8, 0x00, 0x27, 0x40, 0x18, 0x70, 0x1c, 0x01, 0x1c, 0x70, 0x1b, + 0x01, 0x1b, 0x6f, 0x1d, 0x01, 0x1d, 0x6f, 0x1e, 0x01, 0x1e, 0x01, 0xaf, + 0x1b, 0x01, 0xa0, 0x1b, 0x01, 0x1b, 0x00, 0x11, 0x5d, 0x71, 0x35, 0x11, + 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x11, 0x5d, 0x00, 0x00, 0x03, 0x00, 0x2c, + 0xff, 0xf5, 0x04, 0x48, 0x05, 0x85, 0x00, 0x19, 0x00, 0x2a, 0x00, 0x2d, + 0x00, 0x55, 0xb2, 0x18, 0x01, 0x2c, 0xb8, 0x01, 0x77, 0xb5, 0x15, 0x05, + 0x23, 0x23, 0x02, 0x1a, 0xb8, 0x01, 0x8e, 0x40, 0x0e, 0x0d, 0x2b, 0x00, + 0x00, 0x02, 0x00, 0x2c, 0xfa, 0x18, 0x4f, 0x16, 0x53, 0x23, 0x26, 0xb8, + 0x01, 0x00, 0x40, 0x0e, 0x15, 0x12, 0x4f, 0x22, 0x1f, 0xfd, 0x05, 0x08, + 0x52, 0x2d, 0x01, 0xf9, 0x04, 0x51, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, + 0x32, 0x30, 0x31, 0x01, 0x01, 0x21, 0x15, 0x21, 0x27, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, + 0x33, 0x11, 0x21, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x25, 0x21, 0x11, 0x04, 0x3b, 0xfe, + 0xde, 0x01, 0x2f, 0xfd, 0x7c, 0x0b, 0x14, 0x50, 0x32, 0x3f, 0x5c, 0x3e, + 0x1e, 0x1e, 0x43, 0x6b, 0x4d, 0x1c, 0x35, 0x10, 0xbe, 0x01, 0xd7, 0xfc, + 0xbc, 0x0a, 0x16, 0x26, 0x1d, 0x1a, 0x28, 0x0a, 0x11, 0x29, 0x0d, 0x23, + 0x2a, 0x15, 0x06, 0x02, 0x7d, 0xfe, 0xf0, 0x03, 0x49, 0xfd, 0x74, 0xbd, + 0x41, 0x25, 0x27, 0x46, 0x80, 0xb6, 0x70, 0x80, 0xca, 0x8d, 0x4b, 0x05, + 0x04, 0x01, 0x8b, 0xfe, 0x73, 0xfd, 0xf4, 0x5f, 0x78, 0x45, 0x1a, 0x1b, + 0x0e, 0x02, 0x56, 0x05, 0x05, 0x25, 0x51, 0x81, 0xf2, 0xfd, 0x9a, 0x00, + 0x00, 0x02, 0x00, 0x2c, 0xfe, 0xbd, 0x04, 0x3b, 0x05, 0x85, 0x00, 0x37, + 0x00, 0x48, 0x00, 0x72, 0xb6, 0x0e, 0x2b, 0x2b, 0x1c, 0x1c, 0x0b, 0x2d, + 0xb8, 0x01, 0x77, 0x40, 0x0a, 0x30, 0x08, 0x41, 0x41, 0x24, 0x00, 0x2c, + 0x0d, 0x0d, 0x13, 0xbb, 0x01, 0x8d, 0x00, 0x24, 0x00, 0x38, 0x01, 0x8e, + 0x40, 0x1c, 0x00, 0x40, 0x3d, 0xfd, 0x30, 0x33, 0x52, 0x2a, 0xc6, 0x0e, + 0x2b, 0x2b, 0x0b, 0x1c, 0x1f, 0xce, 0x1b, 0x18, 0x58, 0x0d, 0x2d, 0xfa, + 0x0b, 0x4f, 0x09, 0x53, 0x41, 0x44, 0xb8, 0x01, 0x00, 0xb2, 0x08, 0x05, + 0x4f, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x11, 0x39, 0x2f, 0x33, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x01, + 0x2f, 0xed, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x12, 0x39, 0x2f, 0x33, + 0x33, 0xed, 0x32, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x13, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x21, 0x15, 0x03, + 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, + 0x13, 0x23, 0x11, 0x23, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x37, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x2c, 0x1e, 0x43, 0x6b, 0x4d, 0x1c, 0x35, 0x10, 0xbe, 0x01, + 0xd6, 0xd0, 0x27, 0x4b, 0x3b, 0x24, 0x27, 0x54, 0x85, 0x5e, 0x2b, 0x52, + 0x1f, 0x23, 0x45, 0x29, 0x2a, 0x3d, 0x27, 0x13, 0x11, 0x27, 0x40, 0x2f, + 0x24, 0xb9, 0xfd, 0xa0, 0x0b, 0x14, 0x50, 0x32, 0x3f, 0x5c, 0x3e, 0x1e, + 0xcb, 0x0a, 0x16, 0x26, 0x1d, 0x1a, 0x28, 0x0a, 0x11, 0x29, 0x0d, 0x23, + 0x2a, 0x15, 0x06, 0x01, 0xe1, 0x80, 0xca, 0x8d, 0x4b, 0x05, 0x04, 0x01, + 0x8b, 0xfe, 0x73, 0xb8, 0xfe, 0xa8, 0x0f, 0x38, 0x5c, 0x89, 0x60, 0x5d, + 0x98, 0x6e, 0x3c, 0x0a, 0x08, 0xb5, 0x0b, 0x0c, 0x18, 0x36, 0x58, 0x3f, + 0x3d, 0x62, 0x44, 0x24, 0x9f, 0x01, 0x42, 0xfc, 0xc6, 0x41, 0x25, 0x27, + 0x46, 0x80, 0xb6, 0x7b, 0x5f, 0x78, 0x45, 0x1a, 0x1b, 0x0e, 0x02, 0x56, + 0x05, 0x05, 0x25, 0x51, 0x81, 0x00, 0x00, 0x04, 0x00, 0x2c, 0xff, 0x7b, + 0x04, 0x8a, 0x05, 0x85, 0x00, 0x30, 0x00, 0x41, 0x00, 0x45, 0x00, 0x51, + 0x00, 0x87, 0xb2, 0x0e, 0x0b, 0x43, 0xb8, 0x01, 0x75, 0x40, 0x09, 0x27, + 0x08, 0x3a, 0x3a, 0x00, 0x4b, 0x51, 0x1f, 0x21, 0xb8, 0x01, 0x5f, 0x40, + 0x09, 0x25, 0x0f, 0x22, 0x22, 0x4b, 0x42, 0x0d, 0x0d, 0x19, 0xbb, 0x01, + 0x5e, 0x00, 0x4b, 0x00, 0x31, 0x01, 0x8e, 0x40, 0x21, 0x00, 0x39, 0x36, + 0xfd, 0x27, 0x2c, 0x52, 0x4e, 0x99, 0x14, 0x14, 0x46, 0xc7, 0x1e, 0x1e, + 0x26, 0x22, 0x22, 0x0e, 0xf9, 0x26, 0x51, 0x1f, 0x51, 0x0d, 0x43, 0xf9, + 0x0b, 0x4f, 0x09, 0x53, 0x3a, 0x3d, 0xb8, 0x01, 0x00, 0xb2, 0x08, 0x05, + 0x4f, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0xed, 0x32, 0x3f, 0x3f, + 0xed, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x2f, 0xed, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x11, 0x12, 0x39, 0x2f, 0x33, 0x33, + 0xed, 0x32, 0x32, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x11, 0x33, 0x11, 0x21, 0x15, 0x01, 0x33, 0x3e, 0x03, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x06, 0x07, 0x23, 0x36, + 0x36, 0x37, 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x25, 0x21, 0x11, 0x33, 0x05, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x07, 0x2c, 0x1e, 0x43, 0x6b, 0x4d, 0x1c, 0x35, 0x10, + 0xbe, 0x01, 0xd7, 0xfe, 0x79, 0x74, 0x10, 0x27, 0x31, 0x3c, 0x25, 0x1b, + 0x36, 0x2c, 0x1c, 0x27, 0x3d, 0x49, 0x22, 0x0e, 0x0b, 0x01, 0xa1, 0x02, + 0x07, 0x05, 0xfe, 0xce, 0x0b, 0x0a, 0x1e, 0x2a, 0x38, 0x24, 0x3f, 0x5c, + 0x3e, 0x1e, 0xcb, 0x0a, 0x16, 0x26, 0x1d, 0x1a, 0x28, 0x0a, 0x11, 0x29, + 0x0d, 0x23, 0x2a, 0x15, 0x06, 0x02, 0x7d, 0xfe, 0xea, 0x05, 0x01, 0x66, + 0x0d, 0x18, 0x13, 0x0b, 0x14, 0x0b, 0x17, 0x23, 0x06, 0x01, 0xe1, 0x80, + 0xca, 0x8d, 0x4b, 0x05, 0x04, 0x01, 0x8b, 0xfe, 0x72, 0xb5, 0xfd, 0x7b, + 0x3a, 0x4f, 0x2e, 0x14, 0x12, 0x27, 0x41, 0x2e, 0x3d, 0x55, 0x36, 0x18, + 0x38, 0x4d, 0x24, 0x43, 0x1e, 0x5f, 0x12, 0x26, 0x1f, 0x13, 0x46, 0x80, + 0xb6, 0x7b, 0x5f, 0x78, 0x45, 0x1a, 0x1b, 0x0e, 0x02, 0x56, 0x05, 0x05, + 0x25, 0x51, 0x81, 0xf2, 0xfe, 0x34, 0xcc, 0x06, 0x0f, 0x18, 0x13, 0x16, + 0x13, 0x2e, 0x3b, 0x00, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x04, 0x32, + 0x05, 0x2d, 0x00, 0x2a, 0x00, 0x42, 0x00, 0x64, 0xb1, 0x11, 0x21, 0xb8, + 0x01, 0x90, 0xb5, 0x41, 0x3e, 0x3e, 0x34, 0x10, 0x42, 0xb8, 0x01, 0xaa, + 0xb3, 0x0a, 0x19, 0x19, 0x00, 0xb8, 0x01, 0xaf, 0x40, 0x20, 0x34, 0x34, + 0x0d, 0x0a, 0x0b, 0x0b, 0x0a, 0x26, 0x13, 0x30, 0x39, 0x06, 0x19, 0x1e, + 0xf8, 0x18, 0x13, 0x50, 0x42, 0x0a, 0xfa, 0x0d, 0x10, 0x0d, 0x0f, 0x0f, + 0x0d, 0x4f, 0x30, 0xf9, 0x06, 0x51, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x2f, + 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x11, + 0x12, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0x10, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, + 0x33, 0x11, 0x37, 0x11, 0x21, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, + 0x2e, 0x03, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, + 0x25, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, + 0x27, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, 0x23, 0x04, 0x32, 0x32, 0x58, + 0x78, 0x46, 0xd4, 0xb5, 0xb2, 0x96, 0x96, 0xd7, 0x01, 0x3f, 0x36, 0x4a, + 0x1e, 0x2d, 0x2a, 0x2e, 0x1e, 0x1f, 0x2d, 0x27, 0x27, 0x19, 0x41, 0x33, + 0x17, 0x28, 0x35, 0x1e, 0x24, 0x45, 0x36, 0x22, 0xfd, 0x54, 0x12, 0x28, + 0x40, 0x2e, 0x82, 0x53, 0x52, 0x1a, 0x2b, 0x38, 0x1e, 0x24, 0x3e, 0x2d, + 0x19, 0x06, 0x08, 0x9a, 0x01, 0x1a, 0x4d, 0x6c, 0x43, 0x1e, 0xb2, 0xa6, + 0x01, 0xe2, 0xbe, 0x01, 0x08, 0x2d, 0xfe, 0xcb, 0x11, 0x04, 0x07, 0x0a, + 0x06, 0xc6, 0x0b, 0x0e, 0x09, 0x03, 0x33, 0x2d, 0x1b, 0x2f, 0x2b, 0x29, + 0x15, 0x19, 0x37, 0x44, 0x55, 0x15, 0x36, 0x42, 0x25, 0x0c, 0x29, 0x3f, + 0x1d, 0x2c, 0x26, 0x24, 0x15, 0x19, 0x3d, 0x45, 0x4e, 0x2b, 0x15, 0x2d, + 0x17, 0x00, 0x00, 0x02, 0x00, 0x19, 0xfe, 0x5c, 0x04, 0x63, 0x05, 0x99, + 0x00, 0x35, 0x00, 0x3d, 0x00, 0x60, 0xb2, 0x2b, 0x2b, 0x35, 0xb8, 0x01, + 0xa9, 0xb4, 0x21, 0x10, 0x3c, 0x20, 0x3d, 0xb8, 0x01, 0xaa, 0x40, 0x0b, + 0x1a, 0x1d, 0x1a, 0x1b, 0x1b, 0x1a, 0x09, 0x09, 0x1a, 0x2b, 0x30, 0xb8, + 0x01, 0x09, 0x40, 0x17, 0x2a, 0x27, 0x54, 0x3d, 0x1a, 0xfa, 0x1d, 0x20, + 0x1d, 0x1f, 0x1f, 0x1d, 0x4f, 0x39, 0xfb, 0x14, 0x51, 0x09, 0x0b, 0xfe, + 0x08, 0x03, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x3f, 0x33, + 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x2f, 0x33, + 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x05, 0x14, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x27, 0x35, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x37, 0x11, + 0x21, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x01, 0x14, 0x16, 0x33, 0x32, 0x37, 0x11, + 0x21, 0x03, 0x71, 0xa1, 0xb4, 0x15, 0x35, 0x36, 0x31, 0x12, 0x61, 0x4f, + 0x2c, 0x38, 0x21, 0x0d, 0x14, 0x29, 0x13, 0x59, 0x97, 0x6e, 0x3e, 0x96, + 0x96, 0xd7, 0x01, 0x15, 0x23, 0x4a, 0x74, 0x50, 0x32, 0x41, 0x24, 0x18, + 0x24, 0x1d, 0x1b, 0x0f, 0x26, 0x2c, 0x16, 0x07, 0xfe, 0x15, 0x66, 0x5c, + 0x25, 0x2e, 0xfe, 0xeb, 0x2d, 0xb7, 0xc0, 0x03, 0x05, 0x08, 0x05, 0xc5, + 0x18, 0x1d, 0x37, 0x4d, 0x30, 0x0d, 0x02, 0x01, 0x27, 0x53, 0x81, 0x5a, + 0x01, 0xec, 0xbe, 0x01, 0x08, 0x2d, 0xfe, 0xcb, 0x24, 0x5b, 0x8e, 0x61, + 0x33, 0x0b, 0x09, 0xce, 0x06, 0x08, 0x05, 0x01, 0x1d, 0x36, 0x4d, 0x30, + 0xfd, 0x64, 0x4e, 0x59, 0x08, 0x02, 0x7a, 0x00, 0x00, 0x03, 0x00, 0x00, + 0xff, 0x68, 0x04, 0x66, 0x05, 0x2d, 0x00, 0x3c, 0x00, 0x49, 0x00, 0x52, + 0x00, 0x8a, 0xb5, 0x2a, 0x3d, 0x30, 0x3d, 0x00, 0x38, 0xb8, 0x01, 0xaa, + 0xb7, 0x44, 0x47, 0x47, 0x4d, 0x23, 0x30, 0x30, 0x08, 0xb8, 0x01, 0x5e, + 0xb2, 0x4d, 0x29, 0x3e, 0xb8, 0x01, 0xa9, 0x40, 0x09, 0x23, 0x26, 0x23, + 0x24, 0x24, 0x23, 0x4a, 0x0d, 0x12, 0xb8, 0x01, 0x73, 0x40, 0x23, 0x18, + 0x13, 0x30, 0x33, 0xf4, 0x2f, 0x2c, 0x50, 0x3e, 0x23, 0xfa, 0x26, 0x29, + 0x26, 0x28, 0x28, 0x26, 0x4f, 0x50, 0xac, 0x03, 0x03, 0x4a, 0x4a, 0x00, + 0x44, 0xfa, 0x1d, 0x18, 0x1d, 0x13, 0x13, 0x0d, 0x1d, 0x52, 0x00, 0x3f, + 0x33, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x11, 0x33, 0x2f, + 0xed, 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x10, 0xed, 0x32, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x33, + 0xed, 0x32, 0x33, 0x11, 0x12, 0x39, 0x30, 0x31, 0x25, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x06, 0x06, 0x14, 0x06, + 0x15, 0x23, 0x3c, 0x02, 0x36, 0x37, 0x0e, 0x02, 0x22, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x37, 0x11, 0x21, 0x36, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x03, 0x23, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x26, 0x26, 0x35, + 0x34, 0x36, 0x01, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x02, + 0xe5, 0x0b, 0x6d, 0x55, 0x27, 0x42, 0x30, 0x1b, 0x1c, 0x38, 0x53, 0x37, + 0x01, 0x01, 0x01, 0xb4, 0x01, 0x01, 0x17, 0x2d, 0x34, 0x41, 0x2a, 0x5f, + 0x8e, 0x5f, 0x30, 0x74, 0x74, 0xd6, 0x01, 0xc1, 0x2b, 0x31, 0x26, 0x50, + 0x2b, 0x2d, 0x4d, 0x2a, 0x33, 0x46, 0x2c, 0x13, 0x07, 0x0e, 0x15, 0xb2, + 0xda, 0x0b, 0x2a, 0x53, 0x47, 0x20, 0x24, 0x24, 0x01, 0x6f, 0x3e, 0x33, + 0x16, 0x14, 0x23, 0x20, 0xc8, 0x79, 0x7d, 0x16, 0x2c, 0x44, 0x2e, 0x31, + 0x59, 0x46, 0x2e, 0x06, 0x0c, 0x2f, 0x31, 0x2b, 0x07, 0x0c, 0x25, 0x28, + 0x27, 0x0f, 0x02, 0x01, 0x01, 0x38, 0x67, 0x90, 0x59, 0x01, 0xbf, 0xbe, + 0x01, 0x08, 0x2d, 0xfe, 0xcb, 0x0c, 0x0b, 0x10, 0xc5, 0x1a, 0x0e, 0x3b, + 0x61, 0x7d, 0x41, 0x2b, 0x55, 0x4d, 0x44, 0x02, 0x59, 0xfe, 0x7d, 0x3d, + 0x61, 0x44, 0x24, 0x44, 0xa9, 0x52, 0x5b, 0xaa, 0xfd, 0xb8, 0x2b, 0x29, + 0x15, 0x1a, 0x41, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x00, 0x04, 0x15, + 0x05, 0x91, 0x00, 0x33, 0x00, 0x64, 0xb1, 0x32, 0x19, 0xb8, 0x01, 0xa9, + 0xb4, 0x1c, 0x27, 0x27, 0x02, 0x16, 0xb8, 0x01, 0xa8, 0xb4, 0x00, 0x17, + 0x17, 0x1c, 0x0b, 0xb8, 0x01, 0xa8, 0x40, 0x0c, 0x0c, 0x0c, 0x1f, 0x1c, + 0x27, 0x2c, 0xfb, 0x26, 0x23, 0x54, 0x19, 0x1c, 0xb8, 0x01, 0x30, 0x40, + 0x0b, 0x32, 0x1f, 0x1f, 0x00, 0x1b, 0x51, 0x17, 0x51, 0x0c, 0x51, 0x12, + 0xb8, 0x01, 0x30, 0xb4, 0x02, 0x05, 0x50, 0x00, 0x4f, 0x00, 0x3f, 0x3f, + 0x33, 0xed, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x3f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, + 0x33, 0xed, 0x32, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x33, + 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x23, 0x11, 0x23, + 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x33, 0x01, 0xd4, 0xc1, + 0x0a, 0x1f, 0x54, 0x39, 0x39, 0x4d, 0x30, 0x14, 0xd4, 0x04, 0x0e, 0x1c, + 0x18, 0x25, 0x26, 0x08, 0xd4, 0x8b, 0xd6, 0x67, 0x67, 0xc7, 0xd1, 0x26, + 0x48, 0x1d, 0x21, 0x2e, 0x22, 0x17, 0x09, 0x3b, 0x49, 0x29, 0x0f, 0x8b, + 0x03, 0xf8, 0x70, 0x3c, 0x46, 0x22, 0x44, 0x68, 0x46, 0xfd, 0x0a, 0x02, + 0x89, 0x28, 0x41, 0x2f, 0x19, 0x3d, 0x35, 0xfd, 0x38, 0x02, 0x8a, 0xfd, + 0x76, 0x02, 0x8a, 0xd0, 0xa6, 0xc8, 0xc9, 0x07, 0x05, 0xc4, 0x06, 0x06, + 0x04, 0x01, 0x1f, 0x3d, 0x5d, 0x3d, 0x82, 0x00, 0x00, 0x01, 0x00, 0x19, + 0x00, 0x00, 0x04, 0x32, 0x05, 0x85, 0x00, 0x3f, 0x00, 0x46, 0xb2, 0x1a, + 0x1a, 0x2c, 0xbb, 0x01, 0xaf, 0x00, 0x03, 0x00, 0x22, 0x01, 0x90, 0xb5, + 0x0d, 0x0d, 0x38, 0x03, 0x03, 0x3b, 0xb8, 0x01, 0xaa, 0x40, 0x12, 0x38, + 0x39, 0xfa, 0x3a, 0x53, 0x27, 0x14, 0x3f, 0xf9, 0x08, 0x32, 0x51, 0x1a, + 0x1f, 0xf8, 0x19, 0x14, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x39, + 0xed, 0x11, 0x39, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x12, 0x39, + 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x25, 0x32, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x04, 0x33, 0x32, + 0x1e, 0x02, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x23, 0x35, 0x21, 0x11, 0x14, 0x16, 0x33, 0x02, 0xb0, + 0x53, 0x52, 0x1a, 0x2b, 0x38, 0x1e, 0x24, 0x3e, 0x2d, 0x19, 0x08, 0x17, + 0x2a, 0x44, 0x62, 0x44, 0x1e, 0x2d, 0x2a, 0x2e, 0x1e, 0x1f, 0x2d, 0x27, + 0x27, 0x19, 0x41, 0x33, 0x17, 0x28, 0x35, 0x1e, 0x24, 0x45, 0x36, 0x22, + 0x32, 0x58, 0x78, 0x46, 0xdc, 0x46, 0x7f, 0x61, 0x39, 0x96, 0x01, 0x6d, + 0x45, 0x54, 0xbd, 0x29, 0x3f, 0x1d, 0x2c, 0x26, 0x24, 0x15, 0x19, 0x3d, + 0x45, 0x4e, 0x2b, 0x21, 0x46, 0x41, 0x3b, 0x2b, 0x1a, 0x04, 0x07, 0x0a, + 0x06, 0xc6, 0x0b, 0x0e, 0x09, 0x03, 0x33, 0x2d, 0x1b, 0x2f, 0x2b, 0x29, + 0x15, 0x19, 0x37, 0x44, 0x55, 0x37, 0x4d, 0x6c, 0x43, 0x1e, 0x1e, 0x43, + 0x6c, 0x4d, 0x03, 0xad, 0xbe, 0xfb, 0xb8, 0x3f, 0x41, 0x00, 0x00, 0x02, + 0x00, 0x2a, 0x00, 0x00, 0x04, 0x07, 0x05, 0x85, 0x00, 0x0a, 0x00, 0x0d, + 0x00, 0x36, 0xb6, 0x0c, 0x08, 0x08, 0x0a, 0x0d, 0x09, 0x05, 0xb8, 0x01, + 0xaa, 0x40, 0x12, 0x02, 0x03, 0x03, 0x02, 0x08, 0x0d, 0xfa, 0x06, 0x4f, + 0x02, 0xfa, 0x04, 0x53, 0x0b, 0x09, 0xf9, 0x01, 0x51, 0x00, 0x3f, 0xed, + 0x32, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x21, 0x21, 0x11, 0x23, + 0x35, 0x21, 0x11, 0x21, 0x15, 0x01, 0x21, 0x25, 0x01, 0x21, 0x04, 0x07, + 0xfc, 0xcc, 0xa9, 0x01, 0x80, 0x02, 0x50, 0xfe, 0x84, 0x01, 0x89, 0xfd, + 0xa3, 0x01, 0x6b, 0xfe, 0x95, 0x04, 0xc7, 0xbe, 0xfe, 0x73, 0xaf, 0xfd, + 0x74, 0x17, 0x02, 0x66, 0x00, 0x02, 0x00, 0x93, 0x00, 0x00, 0x03, 0xc5, + 0x05, 0x1b, 0x00, 0x0e, 0x00, 0x1d, 0x00, 0x4b, 0x40, 0x28, 0x1a, 0x17, + 0x17, 0x03, 0x09, 0x12, 0x2f, 0x18, 0x01, 0x18, 0x18, 0x14, 0x1d, 0x00, + 0x15, 0x01, 0x15, 0x15, 0x05, 0x0b, 0x08, 0x08, 0x02, 0x05, 0x2f, 0x09, + 0x01, 0x09, 0x05, 0x09, 0x05, 0x06, 0x14, 0x43, 0x11, 0x43, 0x0e, 0x41, + 0x06, 0x41, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, + 0x5d, 0x11, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x5d, 0x33, 0x12, + 0x39, 0x2f, 0x5d, 0x33, 0x11, 0x33, 0x32, 0x11, 0x33, 0x30, 0x31, 0x01, + 0x03, 0x23, 0x03, 0x03, 0x23, 0x03, 0x33, 0x13, 0x13, 0x33, 0x13, 0x36, + 0x36, 0x37, 0x13, 0x03, 0x23, 0x03, 0x03, 0x23, 0x03, 0x33, 0x13, 0x13, + 0x33, 0x13, 0x36, 0x36, 0x37, 0x03, 0xc5, 0x47, 0xd0, 0x87, 0x83, 0xc9, + 0x48, 0xa9, 0x28, 0x7d, 0x92, 0x89, 0x09, 0x14, 0x09, 0xa3, 0x47, 0xd0, + 0x87, 0x83, 0xc9, 0x48, 0xa9, 0x28, 0x7d, 0x92, 0x89, 0x09, 0x14, 0x09, + 0x05, 0x1b, 0xfd, 0xa9, 0x01, 0x2e, 0xfe, 0xd2, 0x02, 0x57, 0xfe, 0x5f, + 0x01, 0x33, 0xfe, 0xc9, 0x6a, 0xd4, 0x67, 0xfd, 0x3c, 0xfd, 0xa9, 0x01, + 0x2e, 0xfe, 0xd2, 0x02, 0x57, 0xfe, 0x5f, 0x01, 0x32, 0xfe, 0xca, 0x69, + 0xd5, 0x67, 0x00, 0x02, 0x00, 0x95, 0x00, 0x00, 0x03, 0xc4, 0x05, 0x1b, + 0x00, 0x07, 0x00, 0x0f, 0x00, 0x37, 0xb1, 0x0a, 0x03, 0xb8, 0x01, 0x6e, + 0xb3, 0x0d, 0x04, 0x0e, 0x07, 0xb8, 0x01, 0x6e, 0x40, 0x11, 0x09, 0x00, + 0x0c, 0x43, 0x0e, 0xd1, 0x09, 0x09, 0x08, 0x43, 0x04, 0x00, 0x00, 0x06, + 0xd1, 0x01, 0x41, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x33, 0x3f, 0x33, 0x2f, + 0xed, 0x3f, 0x01, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x32, 0x30, + 0x31, 0x13, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x11, 0x03, 0x11, 0x21, + 0x11, 0x23, 0x11, 0x21, 0x11, 0x95, 0x03, 0x2f, 0xb1, 0xfe, 0x33, 0xb1, + 0x03, 0x2f, 0xb1, 0xfe, 0x33, 0x03, 0x1c, 0x01, 0xff, 0xfe, 0x01, 0x01, + 0x4b, 0xfe, 0xb5, 0xfc, 0xe4, 0x01, 0xff, 0xfe, 0x01, 0x01, 0x4b, 0xfe, + 0xb5, 0x00, 0x00, 0x01, 0xff, 0x91, 0xfe, 0x6f, 0x03, 0xdd, 0x05, 0x98, + 0x00, 0x28, 0x00, 0x3f, 0xb9, 0x00, 0x27, 0x02, 0x0b, 0xb3, 0x01, 0x26, + 0x26, 0x20, 0xb8, 0x02, 0x0b, 0xb7, 0x0c, 0x14, 0x14, 0x0c, 0x26, 0x4f, + 0x14, 0x11, 0xb8, 0x01, 0x36, 0xb4, 0x15, 0x1a, 0x54, 0x25, 0x22, 0xb8, + 0x01, 0x31, 0xb4, 0x01, 0x06, 0x52, 0x00, 0x55, 0x00, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0x33, 0x2f, 0x10, + 0xed, 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, 0x01, 0x11, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, 0x33, 0x32, + 0x36, 0x37, 0x11, 0x33, 0x11, 0x02, 0xee, 0x1f, 0x40, 0x48, 0x53, 0x32, + 0x4e, 0x74, 0x4e, 0x27, 0x07, 0x19, 0x34, 0x2d, 0x24, 0x3a, 0x1b, 0x11, + 0x20, 0x26, 0x30, 0x21, 0x5a, 0x7d, 0x4d, 0x22, 0x7c, 0x3e, 0x71, 0x3f, + 0xf4, 0xfe, 0x70, 0x02, 0x12, 0x25, 0x38, 0x26, 0x13, 0x33, 0x5d, 0x83, + 0x51, 0x02, 0xaa, 0x2b, 0x49, 0x35, 0x1e, 0x06, 0x06, 0xd2, 0x04, 0x06, + 0x04, 0x03, 0x33, 0x60, 0x8b, 0x58, 0xfd, 0x42, 0xa7, 0x64, 0x56, 0x02, + 0x83, 0xfa, 0x75, 0x00, 0x00, 0x01, 0xff, 0x91, 0xfe, 0x62, 0x04, 0xf7, + 0x05, 0x98, 0x00, 0x38, 0x00, 0x49, 0xb2, 0x30, 0x30, 0x27, 0xb8, 0x02, + 0x0b, 0xb5, 0x25, 0x14, 0x14, 0x01, 0x25, 0x1f, 0xb8, 0x02, 0x0b, 0x40, + 0x0b, 0x0c, 0x30, 0x2d, 0xfb, 0x31, 0x34, 0x56, 0x26, 0x4f, 0x14, 0x11, + 0xb8, 0x01, 0x36, 0xb4, 0x15, 0x1a, 0x54, 0x25, 0x22, 0xb8, 0x01, 0x31, + 0xb2, 0x01, 0x06, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x05, 0x35, 0x0e, 0x03, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x14, 0x33, 0x32, + 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x02, 0xee, 0x1f, 0x40, 0x48, + 0x53, 0x32, 0x4e, 0x74, 0x4e, 0x27, 0x07, 0x19, 0x34, 0x2d, 0x24, 0x3a, + 0x1b, 0x11, 0x20, 0x26, 0x30, 0x21, 0x5a, 0x7d, 0x4d, 0x22, 0x7c, 0x3e, + 0x71, 0x3f, 0xf4, 0x14, 0x26, 0x39, 0x26, 0x1e, 0x3d, 0x26, 0x24, 0x5a, + 0x2a, 0x56, 0x84, 0x59, 0x2e, 0x10, 0x92, 0x25, 0x38, 0x26, 0x13, 0x33, + 0x5d, 0x83, 0x51, 0x02, 0xaa, 0x2b, 0x49, 0x35, 0x1e, 0x06, 0x06, 0xd2, + 0x04, 0x06, 0x04, 0x03, 0x33, 0x60, 0x8b, 0x58, 0xfd, 0x42, 0xa7, 0x64, + 0x56, 0x02, 0x83, 0xfb, 0xe0, 0x33, 0x47, 0x2c, 0x13, 0x07, 0x0c, 0xbf, + 0x0b, 0x08, 0x27, 0x5c, 0x99, 0x00, 0x00, 0x02, 0x00, 0x24, 0x00, 0x00, + 0x04, 0x42, 0x03, 0xf8, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x43, 0x40, 0x0c, + 0x0a, 0x03, 0x04, 0x08, 0x02, 0x01, 0x07, 0x06, 0x09, 0x09, 0x00, 0x04, + 0xbb, 0x01, 0xe3, 0x00, 0x05, 0x00, 0x01, 0x02, 0x0f, 0xb6, 0x00, 0x03, + 0xf5, 0x0a, 0x0a, 0x00, 0x09, 0xb8, 0x01, 0x40, 0xb4, 0x06, 0x4f, 0x05, + 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x12, 0x39, 0x39, + 0x12, 0x39, 0x39, 0x30, 0x31, 0x21, 0x23, 0x27, 0x21, 0x07, 0x23, 0x01, + 0x21, 0x13, 0x03, 0x03, 0x04, 0x42, 0xf8, 0x50, 0xfe, 0x6d, 0x53, 0xf0, + 0x01, 0x8f, 0x01, 0x05, 0x04, 0x8c, 0x8b, 0xd2, 0xd2, 0x03, 0xf8, 0xfd, + 0x93, 0x01, 0x81, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, + 0x04, 0x2c, 0x03, 0xf8, 0x00, 0x0f, 0x00, 0x12, 0x00, 0x5c, 0x40, 0x0d, + 0x60, 0x0a, 0x70, 0x0a, 0x02, 0x12, 0x03, 0x10, 0x04, 0x13, 0x10, 0x0a, + 0x0e, 0xb8, 0x01, 0xa7, 0x40, 0x20, 0x02, 0x02, 0x13, 0x0f, 0x0b, 0x0b, + 0x0f, 0x08, 0x08, 0x0f, 0x03, 0xf5, 0x12, 0x0d, 0xf6, 0x0a, 0x12, 0x0a, + 0x12, 0x0a, 0x0e, 0x11, 0x09, 0xf6, 0x06, 0x4f, 0x0e, 0xf3, 0x01, 0x01, + 0x05, 0x51, 0x00, 0x3f, 0x33, 0x10, 0xed, 0x3f, 0xed, 0x32, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x33, 0x10, 0xc4, 0x11, + 0x39, 0x39, 0x00, 0x5d, 0x30, 0x31, 0x21, 0x21, 0x35, 0x23, 0x07, 0x23, + 0x01, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x25, 0x11, + 0x03, 0x04, 0x2c, 0xfe, 0x07, 0xec, 0x59, 0xea, 0x01, 0xe6, 0x02, 0x35, + 0xfe, 0xe6, 0x01, 0x0e, 0xfe, 0xf2, 0x01, 0x27, 0xfe, 0x07, 0x9e, 0xd2, + 0xd2, 0x03, 0xf8, 0xba, 0xcf, 0xba, 0xfe, 0xd4, 0x01, 0x80, 0xfe, 0x80, + 0x00, 0x03, 0x00, 0x1f, 0xff, 0xef, 0x04, 0x4c, 0x04, 0x09, 0x00, 0x37, + 0x00, 0x42, 0x00, 0x4d, 0x00, 0x73, 0xb3, 0x03, 0x42, 0x1f, 0x2b, 0xb8, + 0x01, 0xa8, 0xb7, 0x0f, 0x48, 0x48, 0x3b, 0x0b, 0x32, 0x32, 0x25, 0xb8, + 0x01, 0xaf, 0xb2, 0x3b, 0x3b, 0x49, 0xb8, 0x01, 0xa7, 0x40, 0x26, 0x0b, + 0x17, 0x17, 0x0b, 0x41, 0x3e, 0x3e, 0x1f, 0x17, 0x12, 0xfb, 0x1d, 0x0f, + 0x2b, 0x01, 0x2b, 0x49, 0xce, 0x0f, 0x42, 0x01, 0x42, 0x0e, 0x0e, 0x22, + 0x18, 0x1d, 0x50, 0x32, 0x2f, 0x2f, 0x03, 0x43, 0xf7, 0x33, 0x00, 0x06, + 0x52, 0x00, 0x3f, 0x33, 0x32, 0xed, 0x32, 0x32, 0x11, 0x33, 0x3f, 0x33, + 0x33, 0x39, 0x2f, 0x33, 0x5d, 0xed, 0x32, 0x5d, 0x10, 0xed, 0x32, 0x32, + 0x32, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x39, 0x30, + 0x31, 0x05, 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x36, 0x37, 0x21, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x35, + 0x3e, 0x03, 0x33, 0x32, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x23, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, + 0x0e, 0x03, 0x03, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, + 0x15, 0x01, 0x32, 0x3e, 0x02, 0x37, 0x23, 0x14, 0x1e, 0x02, 0x03, 0x04, + 0x51, 0x75, 0x22, 0x26, 0x6d, 0x3d, 0x53, 0x73, 0x47, 0x20, 0x03, 0x04, + 0x01, 0xa0, 0x02, 0x4b, 0x54, 0x1a, 0x3a, 0x3c, 0x3d, 0x1c, 0x1c, 0x43, + 0x48, 0x46, 0x1f, 0xb3, 0x53, 0x32, 0x7b, 0x47, 0x83, 0x87, 0x29, 0x55, + 0x85, 0x5d, 0x53, 0x47, 0x40, 0x33, 0x75, 0x4f, 0x1b, 0x44, 0x48, 0x4a, + 0x35, 0x43, 0x3b, 0x21, 0x1e, 0x1f, 0x4a, 0x2e, 0xfe, 0xba, 0x1b, 0x2a, + 0x1d, 0x10, 0x01, 0xd6, 0x0a, 0x18, 0x26, 0x11, 0x2a, 0x2e, 0x25, 0x33, + 0x41, 0x76, 0xa6, 0x65, 0x35, 0x40, 0x1b, 0x88, 0x81, 0x09, 0x0f, 0x14, + 0x0b, 0xc1, 0x0c, 0x14, 0x0d, 0x08, 0x87, 0x3f, 0x48, 0x99, 0x94, 0x4e, + 0x7c, 0x55, 0x2d, 0x35, 0x5b, 0x54, 0x31, 0x2d, 0xd2, 0x0e, 0x1a, 0x15, + 0x0c, 0x02, 0x52, 0x51, 0x44, 0x3b, 0x39, 0x3a, 0x47, 0x88, 0xfe, 0x69, + 0x22, 0x3e, 0x54, 0x32, 0x33, 0x55, 0x3c, 0x22, 0x00, 0x03, 0x00, 0x33, + 0x00, 0x00, 0x03, 0xf2, 0x03, 0xf8, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x29, + 0x00, 0x57, 0xb1, 0x1b, 0x26, 0xbb, 0x01, 0xdc, 0x00, 0x0a, 0x00, 0x0f, + 0x02, 0x0a, 0xb3, 0x1f, 0x1f, 0x12, 0x00, 0xb8, 0x02, 0x12, 0x40, 0x21, + 0x17, 0x17, 0x0a, 0x09, 0x09, 0x07, 0x0a, 0x12, 0x1b, 0x26, 0x00, 0x09, + 0x01, 0x60, 0x09, 0x70, 0x09, 0xf0, 0x09, 0x03, 0x08, 0xf6, 0x09, 0x09, + 0x1c, 0x25, 0xfc, 0x0b, 0x4f, 0x1c, 0xfb, 0x06, 0x51, 0x00, 0x3f, 0xed, + 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x5d, 0x71, 0x33, 0x32, 0x39, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x33, 0x2f, 0xed, + 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x21, 0x11, + 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x1e, + 0x03, 0x07, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x32, 0x03, 0x34, 0x2e, + 0x02, 0x23, 0x23, 0x15, 0x33, 0x32, 0x36, 0x03, 0xf2, 0x3a, 0x6c, 0x98, + 0x5e, 0xfe, 0x5a, 0x7d, 0x7d, 0x01, 0xd1, 0xb1, 0xb1, 0x45, 0x3d, 0x1f, + 0x35, 0x27, 0x16, 0xfb, 0x59, 0x51, 0xb4, 0xb7, 0xa7, 0x07, 0x0f, 0x24, + 0x3e, 0x30, 0xb6, 0xb0, 0x4b, 0x5c, 0x01, 0x38, 0x4c, 0x74, 0x4f, 0x29, + 0x01, 0xab, 0xba, 0x01, 0x93, 0x89, 0x83, 0x46, 0x6c, 0x23, 0x0f, 0x29, + 0x37, 0x46, 0x21, 0x3a, 0x30, 0xec, 0x02, 0x12, 0x17, 0x26, 0x1b, 0x0f, + 0xd3, 0x31, 0xff, 0xff, 0x00, 0x85, 0xff, 0xee, 0x03, 0xc1, 0x04, 0x08, + 0x02, 0x06, 0x00, 0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x94, 0x00, 0x00, + 0x04, 0x0b, 0x03, 0xf8, 0x00, 0x0c, 0x00, 0x19, 0x00, 0x24, 0xb9, 0x00, + 0x07, 0x02, 0x09, 0xb2, 0x0d, 0x0d, 0x14, 0xb8, 0x01, 0xdc, 0x40, 0x09, + 0x00, 0x13, 0xff, 0x01, 0x4f, 0x14, 0xfc, 0x00, 0x51, 0x00, 0x3f, 0xed, + 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x33, 0x11, + 0x21, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x01, 0x34, 0x2e, + 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x3e, 0x02, 0x94, 0x01, 0x5f, 0x8a, + 0xca, 0x84, 0x40, 0x41, 0x88, 0xd3, 0x93, 0x01, 0x3d, 0x1b, 0x48, 0x7e, + 0x63, 0x58, 0x5a, 0x5a, 0x7c, 0x4b, 0x21, 0x03, 0xf8, 0x3c, 0x7c, 0xbc, + 0x7f, 0x89, 0xc4, 0x7d, 0x3b, 0x02, 0x04, 0x4c, 0x72, 0x4c, 0x27, 0xfd, + 0x8b, 0x24, 0x4e, 0x7b, 0x00, 0x02, 0x00, 0x34, 0x00, 0x00, 0x04, 0x0a, + 0x03, 0xf8, 0x00, 0x10, 0x00, 0x21, 0x00, 0x49, 0xb4, 0x19, 0x19, 0x11, + 0x1b, 0x18, 0xbb, 0x01, 0xdc, 0x00, 0x01, 0x00, 0x08, 0x02, 0x09, 0x40, + 0x1b, 0x11, 0x11, 0x0f, 0x01, 0x00, 0x00, 0x01, 0x1b, 0x18, 0x60, 0x00, + 0x70, 0x00, 0x02, 0x10, 0xfa, 0x00, 0x00, 0x02, 0x1c, 0xfc, 0x0e, 0x51, + 0x17, 0xff, 0x02, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, + 0xed, 0x5d, 0x33, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, 0x2f, + 0xed, 0x10, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x30, 0x31, 0x13, 0x33, 0x11, + 0x21, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x21, 0x11, 0x23, + 0x25, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, + 0x32, 0x3e, 0x02, 0x34, 0x7e, 0x01, 0x40, 0x8a, 0xca, 0x84, 0x40, 0x41, + 0x88, 0xd4, 0x93, 0xfe, 0xd8, 0x7e, 0x02, 0xe4, 0x1b, 0x48, 0x7e, 0x63, + 0x39, 0xdc, 0xdc, 0x3b, 0x5a, 0x7b, 0x4c, 0x21, 0x02, 0x65, 0x01, 0x93, + 0x3c, 0x7c, 0xbc, 0x7f, 0x89, 0xc4, 0x7d, 0x3b, 0x01, 0xa7, 0x5d, 0x4c, + 0x72, 0x4c, 0x27, 0xd0, 0xbe, 0xe7, 0x24, 0x4e, 0x7b, 0x00, 0x00, 0x01, + 0x00, 0xb9, 0x00, 0x00, 0x03, 0xae, 0x03, 0xf8, 0x00, 0x0b, 0x00, 0x38, + 0xb6, 0x60, 0x06, 0x70, 0x06, 0x02, 0x06, 0x0a, 0xb8, 0x01, 0xdb, 0x40, + 0x14, 0x01, 0x08, 0x08, 0x00, 0x01, 0x04, 0x00, 0x09, 0xf7, 0x06, 0x06, + 0x0a, 0x05, 0xfd, 0x02, 0x4f, 0x0a, 0xfb, 0x01, 0x51, 0x00, 0x3f, 0xed, + 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, + 0x2f, 0x10, 0xed, 0x32, 0x00, 0x5d, 0x30, 0x31, 0x21, 0x21, 0x11, 0x21, + 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x03, 0xae, 0xfd, 0x0b, + 0x02, 0xf5, 0xfd, 0xf3, 0x01, 0xde, 0xfe, 0x22, 0x02, 0x0d, 0x03, 0xf8, + 0xc1, 0xd1, 0xbb, 0xec, 0x00, 0x01, 0x00, 0x8c, 0xff, 0xef, 0x03, 0xe1, + 0x04, 0x09, 0x00, 0x34, 0x00, 0x4f, 0xb1, 0x0b, 0x08, 0xb8, 0x02, 0x13, + 0xb2, 0x2c, 0x2c, 0x0e, 0xb8, 0x02, 0x0b, 0x40, 0x13, 0x1f, 0x1f, 0x17, + 0x34, 0x34, 0x17, 0x0b, 0x6f, 0x25, 0x7f, 0x25, 0x02, 0x25, 0xfc, 0x26, + 0x26, 0x03, 0x17, 0x1a, 0xb8, 0x01, 0x02, 0xb4, 0x16, 0x13, 0x52, 0x34, + 0x31, 0xb8, 0x01, 0x03, 0xb2, 0x00, 0x03, 0x50, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x5d, 0x39, 0x01, + 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, + 0x31, 0x13, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, + 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x8c, 0x5b, 0xb3, 0x47, 0x8d, 0xc3, 0x7a, 0x36, 0x5c, 0x51, 0x43, 0x3c, + 0x2b, 0x65, 0xa5, 0x7a, 0x56, 0xb7, 0x5e, 0x6a, 0xa5, 0x4a, 0x3b, 0x4f, + 0x2f, 0x14, 0x10, 0x2d, 0x50, 0x3f, 0xed, 0xee, 0x4a, 0x5e, 0x35, 0x14, + 0x17, 0x37, 0x5f, 0x48, 0x43, 0xbc, 0x65, 0x03, 0xe0, 0x15, 0x14, 0x30, + 0x55, 0x75, 0x45, 0x5f, 0x72, 0x1d, 0x20, 0x72, 0x45, 0x3c, 0x66, 0x4a, + 0x2a, 0x1a, 0x14, 0xc9, 0x17, 0x19, 0x0d, 0x1b, 0x27, 0x1a, 0x1b, 0x28, + 0x1c, 0x0e, 0xc0, 0x12, 0x21, 0x2f, 0x1c, 0x1d, 0x2c, 0x1e, 0x10, 0x1f, + 0x1c, 0x00, 0x00, 0x02, 0x00, 0x95, 0xfe, 0x6d, 0x03, 0xd7, 0x03, 0xf8, + 0x00, 0x09, 0x00, 0x1d, 0x00, 0x39, 0xb3, 0x01, 0x01, 0x08, 0x19, 0xb8, + 0x02, 0x41, 0xb5, 0x0f, 0x0f, 0x03, 0x05, 0x05, 0x00, 0xb8, 0x01, 0xda, + 0xb6, 0x03, 0x09, 0x04, 0xfd, 0x06, 0x4f, 0x0a, 0xb8, 0x01, 0x4a, 0xb4, + 0x14, 0x00, 0xfc, 0x03, 0x51, 0x00, 0x3f, 0xed, 0xd6, 0xed, 0x3f, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x2f, 0x33, + 0x2f, 0x30, 0x31, 0x25, 0x21, 0x15, 0x21, 0x11, 0x21, 0x35, 0x21, 0x15, + 0x21, 0x03, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x02, 0x9a, 0x01, 0x1d, 0xfd, 0xfc, 0xfe, + 0xe2, 0x03, 0x42, 0xfe, 0xc3, 0x5a, 0x23, 0x3b, 0x2c, 0x19, 0x19, 0x2c, + 0x3b, 0x23, 0x22, 0x3c, 0x2c, 0x19, 0x19, 0x2c, 0x3c, 0xc0, 0xc0, 0x03, + 0x37, 0xc1, 0xc1, 0xfb, 0x36, 0x18, 0x2b, 0x39, 0x21, 0x21, 0x3a, 0x2b, + 0x19, 0x19, 0x2b, 0x3a, 0x21, 0x21, 0x39, 0x2b, 0x18, 0x00, 0x00, 0x01, + 0x00, 0xdc, 0xff, 0xf6, 0x03, 0x8b, 0x03, 0xf8, 0x00, 0x15, 0x00, 0x22, + 0xb9, 0x00, 0x01, 0x01, 0xdd, 0x40, 0x0d, 0x12, 0x14, 0x0b, 0x14, 0xfc, + 0x15, 0x4f, 0x0c, 0x0f, 0xfa, 0x0b, 0x06, 0x51, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x11, 0x21, 0x35, 0x03, 0x8b, 0x29, 0x5f, 0x9b, 0x71, + 0x24, 0x4d, 0x4b, 0x44, 0x1b, 0x4a, 0x96, 0x3c, 0x52, 0x57, 0xfe, 0x4b, + 0x03, 0xf8, 0xfd, 0x48, 0x43, 0x78, 0x5a, 0x35, 0x0a, 0x11, 0x19, 0x0f, + 0xdc, 0x2d, 0x34, 0x4e, 0x55, 0x01, 0xe1, 0xc0, 0x00, 0x01, 0x00, 0xa9, + 0x00, 0x00, 0x04, 0x37, 0x03, 0xf8, 0x00, 0x0a, 0x00, 0x30, 0xb2, 0x0a, + 0x07, 0x03, 0xb8, 0x01, 0xd9, 0x40, 0x11, 0x04, 0x08, 0x09, 0x09, 0x01, + 0x00, 0x07, 0x02, 0x0a, 0x0a, 0x04, 0x08, 0x05, 0x4f, 0x04, 0x00, 0x51, + 0x00, 0x3f, 0x32, 0x3f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, + 0x33, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x32, 0x30, 0x31, 0x21, 0x21, + 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, 0x21, 0x01, 0x04, 0x37, 0xfe, + 0xca, 0xfe, 0x8e, 0xe6, 0xe6, 0x01, 0x64, 0x01, 0x2f, 0xfe, 0x3e, 0x01, + 0xc8, 0xfe, 0x38, 0x03, 0xf8, 0xfe, 0x7b, 0x01, 0x85, 0xfe, 0x28, 0x00, + 0x00, 0x01, 0x00, 0x60, 0x00, 0x00, 0x03, 0xe5, 0x03, 0xf8, 0x00, 0x0d, + 0x00, 0x43, 0xb3, 0x0c, 0x0c, 0x0a, 0x00, 0xb8, 0x01, 0xda, 0x40, 0x1a, + 0x03, 0x07, 0x03, 0x05, 0x05, 0x03, 0x01, 0x0d, 0x04, 0x0c, 0x05, 0x0c, + 0x0a, 0x07, 0x06, 0x0b, 0x0b, 0x08, 0x4f, 0x06, 0x05, 0x05, 0x00, 0xfb, + 0x03, 0x51, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x33, 0x3f, 0x33, 0x2f, 0x12, + 0x39, 0x39, 0x33, 0x11, 0x12, 0x39, 0x39, 0x01, 0x2f, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x30, 0x31, 0x25, 0x21, 0x15, + 0x21, 0x11, 0x07, 0x35, 0x37, 0x11, 0x33, 0x11, 0x25, 0x15, 0x05, 0x02, + 0x00, 0x01, 0xe5, 0xfd, 0x34, 0xb9, 0xb9, 0xe7, 0x01, 0x3e, 0xfe, 0xc2, + 0xbf, 0xbf, 0x01, 0x5c, 0x64, 0xe1, 0x64, 0x01, 0xbb, 0xfe, 0xb7, 0xae, + 0xe2, 0xab, 0xff, 0xff, 0x00, 0x2d, 0x00, 0x00, 0x04, 0x39, 0x03, 0xf8, + 0x02, 0x06, 0x02, 0x20, 0x00, 0x00, 0xff, 0xff, 0x00, 0x7e, 0x00, 0x00, + 0x03, 0xe8, 0x03, 0xf8, 0x02, 0x06, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x04, 0x0e, 0x00, 0x13, 0x00, 0x23, + 0x00, 0x27, 0xbf, 0x00, 0x00, 0x02, 0x10, 0x00, 0x14, 0x00, 0x1c, 0x02, + 0x10, 0x00, 0x0a, 0x00, 0x17, 0x01, 0x32, 0xb2, 0x0f, 0x50, 0x1f, 0xb8, + 0x01, 0x32, 0xb1, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, + 0xed, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, + 0x1e, 0x44, 0x80, 0xbb, 0x76, 0x71, 0xb2, 0x7c, 0x42, 0x45, 0x81, 0xba, + 0x75, 0x72, 0xb2, 0x7c, 0x41, 0xf9, 0x7b, 0x75, 0x40, 0x5c, 0x3c, 0x1c, + 0x85, 0x6f, 0x3d, 0x5b, 0x3b, 0x1d, 0x02, 0x04, 0x78, 0xc7, 0x8e, 0x4e, + 0x42, 0x83, 0xc5, 0x83, 0x79, 0xc6, 0x8c, 0x4d, 0x43, 0x84, 0xc3, 0x86, + 0x9f, 0x9e, 0x32, 0x57, 0x74, 0x42, 0x9f, 0xa1, 0x31, 0x57, 0x76, 0x00, + 0x00, 0x01, 0x00, 0x8b, 0xff, 0xee, 0x03, 0xda, 0x04, 0x08, 0x00, 0x25, + 0x00, 0x2b, 0xb9, 0x00, 0x08, 0x02, 0x1b, 0xb4, 0x1b, 0x10, 0x00, 0x11, + 0x16, 0xb8, 0x01, 0x31, 0xb4, 0x10, 0x0d, 0x52, 0x25, 0x20, 0xb8, 0x01, + 0x34, 0xb2, 0x00, 0x03, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x13, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x8b, 0x48, 0xac, 0x55, 0x79, 0xc0, 0x86, 0x47, + 0x4d, 0x8c, 0xc5, 0x79, 0x64, 0x99, 0x36, 0x1f, 0x4a, 0x4e, 0x4b, 0x21, + 0x44, 0x6c, 0x4a, 0x27, 0x2a, 0x4d, 0x6c, 0x42, 0x20, 0x4d, 0x4e, 0x4b, + 0x1e, 0x03, 0xcf, 0x1d, 0x1c, 0x42, 0x82, 0xc0, 0x7e, 0x7a, 0xc6, 0x8c, + 0x4c, 0x15, 0x10, 0xed, 0x0f, 0x19, 0x10, 0x09, 0x2e, 0x52, 0x74, 0x47, + 0x49, 0x74, 0x51, 0x2b, 0x09, 0x11, 0x16, 0x0d, 0x00, 0x02, 0x00, 0x20, + 0x00, 0x10, 0x04, 0x45, 0x03, 0xe6, 0x00, 0x13, 0x00, 0x23, 0x00, 0x27, + 0xbf, 0x00, 0x05, 0x01, 0xa8, 0x00, 0x1f, 0x00, 0x17, 0x01, 0xa8, 0x00, + 0x0f, 0x00, 0x1c, 0x01, 0x40, 0xb2, 0x0a, 0x51, 0x14, 0xb8, 0x01, 0x40, + 0xb1, 0x00, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x2f, + 0xed, 0x30, 0x31, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x17, 0x22, 0x06, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x02, 0x2a, 0x78, + 0xc7, 0x8e, 0x4e, 0x42, 0x83, 0xc5, 0x83, 0x79, 0xc6, 0x8c, 0x4d, 0x43, + 0x84, 0xc3, 0x86, 0x9f, 0x9e, 0x32, 0x57, 0x74, 0x42, 0x9f, 0xa1, 0x31, + 0x57, 0x76, 0x03, 0xe6, 0x44, 0x80, 0xbb, 0x76, 0x71, 0xb2, 0x7c, 0x42, + 0x45, 0x82, 0xb9, 0x75, 0x72, 0xb2, 0x7c, 0x41, 0xf9, 0x7b, 0x75, 0x40, + 0x5c, 0x3c, 0x1c, 0x85, 0x6f, 0x3d, 0x5b, 0x3b, 0x1d, 0x00, 0x00, 0x01, + 0x00, 0x27, 0x00, 0x4a, 0x04, 0x41, 0x03, 0xbd, 0x00, 0x1f, 0x00, 0x32, + 0xb1, 0x17, 0x14, 0xb8, 0x01, 0x8d, 0xb3, 0x18, 0x1b, 0x08, 0x05, 0xb8, + 0x01, 0x8d, 0xb6, 0x09, 0x0c, 0x18, 0x09, 0x09, 0x21, 0x00, 0xb8, 0x01, + 0x40, 0xb3, 0x0f, 0x0f, 0x20, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0xed, 0x11, + 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x32, + 0x30, 0x31, 0x01, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x23, 0x26, + 0x26, 0x35, 0x10, 0x00, 0x21, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, + 0x07, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x02, 0x31, 0x59, 0x7a, 0x4d, + 0x22, 0x28, 0x27, 0xdd, 0x1e, 0x1c, 0x01, 0x02, 0x01, 0x01, 0x84, 0xc9, + 0x86, 0x44, 0x19, 0x1d, 0xe4, 0x2a, 0x28, 0x25, 0x4f, 0x7c, 0x02, 0xca, + 0x27, 0x4e, 0x76, 0x4f, 0x49, 0xaa, 0x53, 0x53, 0xb2, 0x51, 0x01, 0x15, + 0x01, 0x08, 0x4c, 0x8e, 0xcb, 0x7f, 0x57, 0xaa, 0x4d, 0x01, 0x58, 0xac, + 0x4e, 0x42, 0x6f, 0x50, 0x2d, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x10, + 0x04, 0x66, 0x03, 0xe9, 0x00, 0x19, 0x00, 0x24, 0x00, 0x2f, 0x00, 0x61, + 0xb7, 0x15, 0x22, 0x28, 0x21, 0x29, 0x04, 0x2b, 0x1a, 0xb8, 0x01, 0xa8, + 0x40, 0x09, 0x07, 0x0a, 0x17, 0x14, 0x04, 0x05, 0x12, 0x08, 0x2b, 0xb8, + 0x01, 0xa8, 0x40, 0x10, 0x05, 0x07, 0x29, 0x28, 0x17, 0x04, 0x16, 0x08, + 0x31, 0x0a, 0x21, 0x22, 0x14, 0x04, 0x09, 0x15, 0xb8, 0x01, 0x40, 0xb2, + 0x16, 0x4f, 0x1f, 0xb8, 0x01, 0x3f, 0xb4, 0x0d, 0x51, 0x09, 0x51, 0x25, + 0xb8, 0x01, 0x3f, 0xb1, 0x00, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, + 0x3f, 0xed, 0x11, 0x17, 0x39, 0x10, 0xcd, 0x11, 0x17, 0x39, 0x01, 0x2f, + 0xed, 0x2f, 0x2f, 0x12, 0x17, 0x39, 0xed, 0x11, 0x17, 0x39, 0x2f, 0x30, + 0x31, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x07, 0x17, 0x15, 0x27, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x37, 0x27, 0x35, 0x17, 0x36, + 0x36, 0x03, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x37, 0x01, 0x06, 0x06, 0x25, + 0x22, 0x06, 0x07, 0x01, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x02, 0x2a, 0x71, + 0xbe, 0x8a, 0x4e, 0x1d, 0x52, 0xba, 0x40, 0xba, 0x7a, 0x72, 0xbd, 0x89, + 0x4c, 0x1e, 0x52, 0xbc, 0x40, 0xb8, 0xad, 0x2c, 0x4f, 0x6e, 0x42, 0x65, + 0x44, 0xfe, 0x34, 0x05, 0x03, 0x01, 0x29, 0x33, 0x52, 0x20, 0x01, 0xca, + 0x09, 0x2b, 0x4f, 0x70, 0x03, 0xe6, 0x44, 0x80, 0xbb, 0x76, 0x68, 0x55, + 0x36, 0xec, 0x7b, 0x3d, 0x40, 0x45, 0x82, 0xb9, 0x75, 0x6b, 0x56, 0x37, + 0xec, 0x7d, 0x3c, 0x3e, 0xfe, 0x17, 0x40, 0x62, 0x43, 0x23, 0x22, 0x01, + 0x32, 0x12, 0x26, 0xf0, 0x10, 0x0f, 0xfe, 0xd0, 0x24, 0x27, 0x3d, 0x61, + 0x43, 0x23, 0x00, 0x03, 0x00, 0x15, 0xff, 0xe9, 0x04, 0x42, 0x04, 0x0e, + 0x00, 0x30, 0x00, 0x44, 0x00, 0x4b, 0x00, 0x59, 0xb3, 0x12, 0x00, 0x00, + 0x31, 0xb8, 0x01, 0x90, 0xb4, 0x4b, 0x20, 0x20, 0x1a, 0x0a, 0xb8, 0x01, + 0x8b, 0xb2, 0x3b, 0x3b, 0x45, 0xb8, 0x01, 0x81, 0x40, 0x1a, 0x1a, 0x28, + 0x28, 0x1a, 0x00, 0x40, 0x40, 0x28, 0x25, 0xcb, 0x2c, 0x45, 0xaf, 0x1f, + 0x1f, 0x05, 0x2c, 0x50, 0x12, 0x36, 0x36, 0x48, 0xcb, 0x0f, 0x15, 0x52, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x3f, 0x33, 0x39, 0x2f, 0xed, + 0x10, 0xed, 0x32, 0x32, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x39, 0x11, 0x33, 0x30, + 0x31, 0x01, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x37, 0x21, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x13, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x05, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x02, 0x2a, 0x0d, 0x2e, 0x3c, 0x48, 0x28, + 0x4f, 0x73, 0x4b, 0x24, 0x26, 0x4f, 0x79, 0x53, 0x4e, 0x78, 0x20, 0x20, + 0x72, 0x4b, 0x4e, 0x71, 0x48, 0x22, 0x01, 0x01, 0x01, 0x01, 0x01, 0xa8, + 0x1a, 0x2e, 0x42, 0x28, 0x2e, 0x6f, 0x38, 0x35, 0x83, 0x3e, 0x29, 0x4d, + 0x42, 0x33, 0x73, 0x0e, 0x1d, 0x2d, 0x1f, 0x1d, 0x2c, 0x20, 0x10, 0x0e, + 0x1d, 0x2e, 0x20, 0x1c, 0x2c, 0x1f, 0x10, 0xfe, 0x4a, 0x38, 0x32, 0x3b, + 0x3e, 0x06, 0x03, 0x6e, 0x23, 0x3b, 0x2a, 0x18, 0x39, 0x7c, 0xc7, 0x8d, + 0x78, 0xc7, 0x8f, 0x4e, 0x4b, 0x50, 0x4a, 0x51, 0x41, 0x78, 0xa7, 0x66, + 0x0c, 0x22, 0x24, 0x24, 0x0d, 0x47, 0x70, 0x4f, 0x2a, 0x17, 0x17, 0xac, + 0x16, 0x18, 0x14, 0x27, 0x3c, 0xfe, 0x62, 0x61, 0x88, 0x55, 0x26, 0x28, + 0x56, 0x88, 0x60, 0x63, 0x89, 0x55, 0x26, 0x27, 0x57, 0x89, 0xc4, 0x89, + 0x79, 0x85, 0x7d, 0x00, 0x00, 0x02, 0x00, 0x74, 0xff, 0xe9, 0x03, 0xe0, + 0x03, 0xf8, 0x00, 0x35, 0x00, 0x45, 0x00, 0x56, 0xb4, 0x6b, 0x0a, 0x01, + 0x26, 0x29, 0xb8, 0x01, 0xe1, 0xb3, 0x25, 0x20, 0x20, 0x31, 0xb8, 0x01, + 0xde, 0xb4, 0x2c, 0x41, 0x41, 0x0a, 0x3b, 0xb8, 0x01, 0xde, 0xb2, 0x05, + 0x13, 0x18, 0xb8, 0x01, 0xe1, 0x40, 0x11, 0x12, 0x0f, 0x0f, 0x05, 0x36, + 0x2c, 0x1d, 0x0a, 0x0a, 0x00, 0x25, 0x12, 0x4f, 0x3e, 0xf4, 0x00, 0x52, + 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, + 0xed, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x00, 0x5d, 0x05, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, + 0x37, 0x33, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x36, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x27, 0x33, 0x16, 0x16, 0x15, 0x14, 0x06, 0x07, 0x1e, + 0x03, 0x15, 0x14, 0x0e, 0x02, 0x03, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x02, 0x2a, 0x82, 0xa9, 0x63, 0x28, + 0x1f, 0x38, 0x4f, 0x30, 0x29, 0x40, 0x2d, 0x18, 0x1a, 0x17, 0xfb, 0x14, + 0x18, 0x0d, 0x05, 0x16, 0x2c, 0x3f, 0x29, 0x51, 0x46, 0x02, 0x0d, 0x1a, + 0x18, 0xfb, 0x20, 0x14, 0x5a, 0x57, 0x30, 0x4f, 0x39, 0x20, 0x28, 0x63, + 0xa9, 0x8d, 0x32, 0x48, 0x2f, 0x17, 0x62, 0x69, 0x6a, 0x61, 0x1d, 0x37, + 0x50, 0x17, 0x36, 0x5b, 0x78, 0x43, 0x3b, 0x5e, 0x4a, 0x39, 0x16, 0x14, + 0x2f, 0x3b, 0x4a, 0x2f, 0x2b, 0x46, 0x29, 0x1f, 0x2d, 0x23, 0x1b, 0x0c, + 0x1b, 0x2b, 0x25, 0x22, 0x12, 0x24, 0x4a, 0x30, 0x0c, 0x19, 0x22, 0x2e, + 0x22, 0x30, 0x47, 0x24, 0x57, 0x76, 0x30, 0x15, 0x37, 0x49, 0x5c, 0x3a, + 0x43, 0x78, 0x5b, 0x36, 0x02, 0x0a, 0x0f, 0x21, 0x2a, 0x37, 0x25, 0x4b, + 0x51, 0x54, 0x48, 0x25, 0x37, 0x2a, 0x21, 0x00, 0x00, 0x01, 0x00, 0x2b, + 0x01, 0xd5, 0x04, 0x2a, 0x04, 0x0b, 0x00, 0x13, 0x00, 0x24, 0xbc, 0x00, + 0x0b, 0x02, 0x14, 0x00, 0x0a, 0x00, 0x13, 0x02, 0x12, 0xb4, 0x00, 0x0b, + 0x00, 0x00, 0x0e, 0xb8, 0x01, 0x38, 0xb1, 0x05, 0x50, 0x00, 0x3f, 0xed, + 0x32, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x30, 0x31, 0x13, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x23, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x2b, 0x3e, 0x7d, 0xbd, 0x80, 0x75, 0xbd, 0x86, 0x4b, + 0x04, 0xfd, 0x03, 0x82, 0x7e, 0x4d, 0x64, 0x3a, 0x18, 0x01, 0x01, 0xd5, + 0x7e, 0xd0, 0x96, 0x52, 0x52, 0x95, 0xd1, 0x7e, 0xa7, 0xb5, 0x36, 0x5d, + 0x80, 0x49, 0x00, 0x01, 0x00, 0x2b, 0xff, 0xea, 0x04, 0x2a, 0x02, 0x20, + 0x00, 0x13, 0x00, 0x24, 0xbc, 0x00, 0x00, 0x02, 0x12, 0x00, 0x13, 0x00, + 0x08, 0x02, 0x14, 0xb4, 0x09, 0x08, 0x00, 0x00, 0x05, 0xb8, 0x01, 0x38, + 0xb1, 0x0e, 0x52, 0x00, 0x3f, 0xed, 0x32, 0x2f, 0x33, 0x01, 0x2f, 0xed, + 0x2f, 0xed, 0x30, 0x31, 0x01, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x33, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0x26, 0x01, 0x18, 0x3a, + 0x64, 0x4d, 0x7e, 0x82, 0x03, 0xfd, 0x04, 0x4b, 0x86, 0xbd, 0x75, 0x80, + 0xbd, 0x7d, 0x3e, 0x02, 0x20, 0x4a, 0x7f, 0x5d, 0x36, 0xb4, 0xa8, 0x7f, + 0xd0, 0x95, 0x52, 0x52, 0x95, 0xd1, 0x7e, 0x00, 0x00, 0x02, 0x00, 0xa9, + 0x00, 0x00, 0x03, 0xea, 0x03, 0xf8, 0x00, 0x0e, 0x00, 0x19, 0x00, 0x2f, + 0xb9, 0x00, 0x00, 0x01, 0xd7, 0xb3, 0x0f, 0x0f, 0x16, 0x07, 0xbb, 0x01, + 0xdb, 0x00, 0x08, 0x00, 0x06, 0x01, 0x00, 0x40, 0x09, 0x16, 0x16, 0x07, + 0x15, 0xfc, 0x09, 0x4f, 0x07, 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x1e, 0x02, + 0x07, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x36, 0x03, 0xea, + 0x33, 0x6c, 0xa9, 0x77, 0x9a, 0xe8, 0x01, 0x7a, 0x5d, 0xa6, 0x7c, 0x48, + 0xe3, 0x1d, 0x34, 0x49, 0x2c, 0xb0, 0xa8, 0x69, 0x65, 0x02, 0xa2, 0x57, + 0x86, 0x5b, 0x2f, 0xfe, 0xc5, 0x03, 0xf8, 0x15, 0x47, 0x87, 0x75, 0x2d, + 0x3a, 0x23, 0x0e, 0xfe, 0xc7, 0x53, 0x00, 0x02, 0x00, 0x42, 0x00, 0x00, + 0x03, 0xb5, 0x03, 0xf8, 0x00, 0x16, 0x00, 0x1e, 0x00, 0x3e, 0xb9, 0x00, + 0x0b, 0x01, 0xdb, 0xb5, 0x08, 0x1b, 0x1b, 0x00, 0x14, 0x17, 0xb8, 0x01, + 0xe2, 0xb2, 0x11, 0x11, 0x01, 0xb8, 0x02, 0x19, 0x40, 0x0e, 0x00, 0x14, + 0x1d, 0xf4, 0x07, 0x07, 0x00, 0x1a, 0xf3, 0x0c, 0x51, 0x09, 0x00, 0x4f, + 0x00, 0x3f, 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, + 0x13, 0x21, 0x13, 0x1e, 0x03, 0x33, 0x33, 0x11, 0x33, 0x11, 0x21, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x26, 0x27, 0x13, 0x14, 0x16, 0x33, + 0x33, 0x35, 0x23, 0x22, 0x42, 0x01, 0x04, 0xa8, 0x12, 0x21, 0x22, 0x26, + 0x17, 0x4d, 0xe8, 0xfe, 0x75, 0x62, 0x8f, 0x5f, 0x2e, 0x5d, 0x61, 0x33, + 0x35, 0x99, 0x59, 0x5a, 0x7f, 0x73, 0xbf, 0x03, 0xf8, 0xfe, 0xd8, 0x20, + 0x29, 0x18, 0x0a, 0x01, 0x93, 0xfc, 0x08, 0x29, 0x4a, 0x69, 0x41, 0x52, + 0x8d, 0x25, 0x2d, 0x5e, 0xfe, 0x7c, 0x3f, 0x32, 0xf6, 0x00, 0x00, 0x02, + 0x00, 0xac, 0x00, 0x00, 0x04, 0x20, 0x03, 0xf8, 0x00, 0x19, 0x00, 0x22, + 0x00, 0x3e, 0xb1, 0x08, 0x1e, 0xb8, 0x01, 0xdb, 0xb2, 0x0b, 0x16, 0x11, + 0xb8, 0x01, 0xe2, 0xb2, 0x1a, 0x1a, 0x00, 0xb8, 0x02, 0x19, 0x40, 0x10, + 0x01, 0x01, 0x0b, 0x16, 0x08, 0xf4, 0x1f, 0x1f, 0x00, 0x1e, 0xf3, 0x0b, + 0x4f, 0x0a, 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x10, + 0xed, 0x32, 0x30, 0x31, 0x21, 0x21, 0x03, 0x2e, 0x03, 0x23, 0x23, 0x11, + 0x23, 0x11, 0x21, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, + 0x16, 0x17, 0x03, 0x34, 0x26, 0x23, 0x23, 0x15, 0x33, 0x32, 0x36, 0x04, + 0x20, 0xfe, 0xfc, 0xa9, 0x12, 0x20, 0x22, 0x26, 0x18, 0x4d, 0xe8, 0x01, + 0x8c, 0x61, 0x90, 0x5e, 0x2f, 0x17, 0x2f, 0x48, 0x31, 0x1b, 0x33, 0x1a, + 0x98, 0x5a, 0x59, 0x80, 0x74, 0x5e, 0x61, 0x01, 0x28, 0x1f, 0x29, 0x19, + 0x0a, 0xfe, 0x6d, 0x03, 0xf8, 0x29, 0x4b, 0x69, 0x41, 0x29, 0x4d, 0x44, + 0x37, 0x13, 0x17, 0x44, 0x2f, 0x01, 0x84, 0x3f, 0x32, 0xf6, 0x43, 0x00, + 0x00, 0x01, 0x00, 0x61, 0x00, 0x00, 0x03, 0xf3, 0x03, 0xf8, 0x00, 0x07, + 0x00, 0x25, 0xb2, 0x00, 0x00, 0x01, 0xb8, 0x01, 0xda, 0xb5, 0x04, 0x05, + 0x05, 0x04, 0x01, 0x05, 0xb8, 0x01, 0x01, 0xb3, 0x06, 0x4f, 0x02, 0x51, + 0x00, 0x3f, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x2f, 0x30, 0x31, 0x01, 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x03, + 0xf3, 0xfe, 0xab, 0xe7, 0xfe, 0xaa, 0x03, 0x92, 0x03, 0x32, 0xfc, 0xce, + 0x03, 0x32, 0xc6, 0x00, 0x00, 0x01, 0x00, 0x7f, 0xff, 0xe9, 0x03, 0xe7, + 0x03, 0xf8, 0x00, 0x19, 0x00, 0x25, 0xb9, 0x00, 0x19, 0x02, 0x08, 0xb2, + 0x18, 0x18, 0x0c, 0xb8, 0x02, 0x09, 0xb4, 0x0b, 0x18, 0x0b, 0x4f, 0x12, + 0xb8, 0x01, 0x06, 0xb1, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x11, 0x33, 0x03, 0xe7, 0x3d, 0x72, 0xa6, 0x69, 0x74, + 0xa2, 0x66, 0x2e, 0xf2, 0x10, 0x2a, 0x49, 0x3a, 0x36, 0x4c, 0x30, 0x16, + 0xf1, 0x01, 0x7c, 0x55, 0x93, 0x6d, 0x3e, 0x3c, 0x69, 0x8b, 0x50, 0x02, + 0x8f, 0xfd, 0xa1, 0x32, 0x54, 0x3d, 0x22, 0x24, 0x3e, 0x55, 0x31, 0x02, + 0x5c, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x52, 0x04, 0x33, 0x03, 0xa4, + 0x00, 0x17, 0x00, 0x44, 0xb3, 0x0c, 0x0b, 0x0b, 0x11, 0xb8, 0x01, 0xae, + 0xb5, 0x07, 0x04, 0x08, 0x08, 0x00, 0x00, 0xb8, 0x01, 0x3f, 0x40, 0x09, + 0x2f, 0x17, 0x3f, 0x17, 0x02, 0x17, 0x19, 0x0c, 0x08, 0xb8, 0x01, 0x40, + 0x40, 0x0c, 0x4f, 0x09, 0x6f, 0x09, 0x7f, 0x09, 0x8f, 0x09, 0x04, 0x09, + 0x18, 0x4f, 0x00, 0x3f, 0xd6, 0x5d, 0xed, 0x32, 0x10, 0xd6, 0x5d, 0xed, + 0x01, 0x2f, 0x32, 0x2f, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, + 0x13, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x21, 0x35, 0x21, 0x15, + 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x21, 0x42, 0x02, 0x6e, + 0x54, 0x54, 0x64, 0x57, 0xfd, 0xa5, 0x03, 0xda, 0x96, 0x27, 0x40, 0x2d, + 0x19, 0x33, 0x5e, 0x83, 0x51, 0xfd, 0x74, 0x01, 0x39, 0x4b, 0x3f, 0x3d, + 0x7b, 0x3f, 0xea, 0xd3, 0x06, 0x20, 0x43, 0x4c, 0x5a, 0x37, 0x4e, 0x75, + 0x4f, 0x27, 0x00, 0x03, 0x00, 0x19, 0x00, 0x58, 0x04, 0x45, 0x03, 0xa0, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x3f, 0x00, 0x7a, 0xb3, 0x34, 0x32, 0x32, + 0x39, 0xb8, 0x01, 0xa7, 0xb7, 0x2f, 0x2c, 0x2c, 0x0f, 0x30, 0x28, 0x19, + 0x05, 0xb8, 0x02, 0x28, 0xb2, 0x23, 0x0f, 0x00, 0xb8, 0x01, 0x42, 0x40, + 0x0a, 0x40, 0x0a, 0x50, 0x0a, 0xa0, 0x0a, 0x03, 0x0a, 0x0a, 0x28, 0xb8, + 0x01, 0x40, 0xb6, 0x2f, 0x3f, 0x01, 0x3f, 0x41, 0x34, 0x30, 0xbb, 0x01, + 0x40, 0x00, 0x31, 0x00, 0x1e, 0x01, 0x42, 0x40, 0x19, 0x7f, 0x14, 0xaf, + 0x14, 0xbf, 0x14, 0xcf, 0x14, 0x04, 0x14, 0x14, 0x3f, 0x31, 0x4f, 0x31, + 0x6f, 0x31, 0x7f, 0x31, 0x8f, 0x31, 0x05, 0x31, 0x40, 0x4f, 0x00, 0x3f, + 0xc6, 0x5d, 0x32, 0x2f, 0x5d, 0xed, 0x10, 0xed, 0x32, 0x10, 0xd6, 0x5d, + 0xed, 0x33, 0x2f, 0x5d, 0xed, 0x01, 0x2f, 0x33, 0xfd, 0x32, 0xc6, 0x32, + 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, 0x13, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x13, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x13, 0x21, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x27, 0x21, 0x35, 0x21, 0x15, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x21, 0xa3, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, + 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, + 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xf9, + 0x01, 0x4c, 0x56, 0x52, 0x65, 0x56, 0xfe, 0xc7, 0x02, 0xae, 0x96, 0x27, + 0x40, 0x2d, 0x19, 0x33, 0x5e, 0x83, 0x51, 0xfe, 0xa0, 0x01, 0xba, 0x16, + 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x24, 0x16, 0x01, 0xa2, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, + 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0xfd, 0xe5, 0x49, + 0x3f, 0x3d, 0x71, 0x3f, 0xea, 0xc9, 0x06, 0x20, 0x42, 0x4d, 0x5b, 0x37, + 0x4e, 0x75, 0x4e, 0x27, 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, 0x04, 0x1b, + 0x03, 0xf0, 0x00, 0x2a, 0x00, 0x64, 0xb5, 0x21, 0x19, 0x19, 0x18, 0x18, + 0x1e, 0xb8, 0x01, 0xa8, 0xb5, 0x11, 0x09, 0x14, 0x14, 0x11, 0x26, 0xb8, + 0x01, 0xa8, 0x40, 0x12, 0x06, 0x06, 0x11, 0x11, 0x15, 0x0b, 0x0b, 0x15, + 0x00, 0x00, 0x15, 0x21, 0x6f, 0x0a, 0x7f, 0x0a, 0x02, 0x0a, 0xb8, 0x01, + 0x31, 0xb3, 0x0b, 0x0b, 0x16, 0x00, 0xb8, 0x01, 0x32, 0xb3, 0x2a, 0x51, + 0x19, 0x15, 0xb8, 0x01, 0x32, 0xb1, 0x16, 0x4f, 0x00, 0x3f, 0xed, 0x32, + 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x5d, 0x39, 0x01, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x11, 0x33, 0x30, 0x31, 0x37, 0x21, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, 0x21, 0x35, 0x21, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x26, 0x27, 0x21, 0x35, 0x21, 0x15, 0x07, 0x1e, 0x03, + 0x15, 0x14, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x23, 0x21, 0x4b, + 0x02, 0x64, 0x26, 0x39, 0x26, 0x13, 0x54, 0x65, 0xfd, 0xbd, 0x02, 0x64, + 0x26, 0x39, 0x26, 0x13, 0x54, 0x65, 0xfd, 0xbd, 0x03, 0xbc, 0x94, 0x2d, + 0x40, 0x29, 0x12, 0x59, 0x4f, 0x2d, 0x40, 0x29, 0x12, 0x9b, 0x98, 0xfd, + 0x63, 0xd3, 0x04, 0x0c, 0x17, 0x14, 0x1f, 0x3c, 0x26, 0xd1, 0x04, 0x0c, + 0x18, 0x14, 0x1a, 0x40, 0x27, 0xd3, 0xb5, 0x04, 0x16, 0x2c, 0x32, 0x39, + 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, 0x33, 0x3b, 0x24, 0x6f, 0x6a, 0x00, + 0x00, 0x01, 0x00, 0x22, 0x00, 0x00, 0x04, 0x2c, 0x03, 0xf8, 0x00, 0x06, + 0x00, 0x20, 0x40, 0x0e, 0x06, 0x05, 0x02, 0x02, 0x03, 0x04, 0x01, 0x00, + 0x02, 0x05, 0x51, 0x03, 0x00, 0x4f, 0x00, 0x3f, 0x32, 0x3f, 0x33, 0x01, + 0x2f, 0x32, 0x2f, 0x33, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x13, 0x21, + 0x01, 0x01, 0x33, 0x01, 0x23, 0x22, 0x01, 0x01, 0x01, 0x07, 0x01, 0x08, + 0xfa, 0xfe, 0x71, 0xed, 0x03, 0xf8, 0xfd, 0x10, 0x02, 0xf0, 0xfc, 0x08, + 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x04, 0x48, 0x03, 0xf8, 0x00, 0x0e, + 0x00, 0x50, 0x40, 0x0d, 0x0d, 0x01, 0x09, 0x05, 0x06, 0x06, 0x07, 0x0c, + 0x0b, 0x03, 0x03, 0x00, 0x08, 0xb8, 0x01, 0xd8, 0xb4, 0x07, 0x02, 0x01, + 0x01, 0x0e, 0xb8, 0x01, 0xda, 0x40, 0x10, 0x00, 0x03, 0x0b, 0x0b, 0x07, + 0x06, 0x0e, 0x0e, 0x07, 0x4f, 0x09, 0x06, 0x51, 0x0d, 0x02, 0x51, 0x00, + 0x3f, 0x33, 0x3f, 0x33, 0x3f, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x33, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, + 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x30, 0x31, 0x01, 0x03, + 0x23, 0x03, 0x15, 0x03, 0x23, 0x03, 0x33, 0x13, 0x15, 0x13, 0x33, 0x13, + 0x13, 0x04, 0x48, 0x94, 0xf3, 0x9c, 0x96, 0xee, 0x93, 0xe4, 0x54, 0x8e, + 0xa7, 0x9a, 0x4c, 0x03, 0xf8, 0xfc, 0x08, 0x01, 0xbf, 0x02, 0xfe, 0x43, + 0x03, 0xf8, 0xfd, 0x5b, 0x04, 0x01, 0xb9, 0xfe, 0x4c, 0x02, 0xa4, 0x00, + 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xd1, 0x03, 0xf8, 0x00, 0x09, + 0x00, 0x2e, 0x40, 0x0b, 0x02, 0x06, 0x06, 0x08, 0x07, 0x00, 0x03, 0x03, + 0x00, 0x06, 0x03, 0xb8, 0x01, 0x31, 0xb3, 0x04, 0x4f, 0x01, 0x07, 0xb8, + 0x01, 0x36, 0xb1, 0x00, 0x51, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x30, 0x31, + 0x33, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x15, 0x96, 0x01, + 0xf1, 0xfe, 0x1b, 0x03, 0x27, 0xfe, 0x1a, 0x01, 0xee, 0xaa, 0x02, 0x7d, + 0xd1, 0xac, 0xfd, 0x8b, 0xd7, 0x00, 0x00, 0x01, 0x00, 0x6e, 0xff, 0xe9, + 0x03, 0xdb, 0x03, 0xf8, 0x00, 0x26, 0x00, 0x5b, 0xb7, 0x06, 0x26, 0x26, + 0x16, 0x01, 0x05, 0x05, 0x0b, 0xb8, 0x02, 0x09, 0x40, 0x16, 0x20, 0x20, + 0x16, 0x02, 0x02, 0x16, 0x00, 0x06, 0xcf, 0x00, 0x26, 0x30, 0x26, 0x40, + 0x26, 0xa0, 0x26, 0x04, 0xf0, 0x26, 0x01, 0x26, 0xb8, 0xff, 0xc0, 0x40, + 0x11, 0x0f, 0x15, 0x48, 0x26, 0x26, 0x03, 0x16, 0x1b, 0xfa, 0x15, 0x10, + 0x52, 0x05, 0x02, 0xfe, 0x03, 0x4f, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x11, 0x39, 0x2f, 0x2b, 0x5d, 0x71, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x11, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x25, 0x21, 0x35, 0x21, 0x15, 0x05, 0x1e, 0x03, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x1e, 0x03, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x01, 0x0f, + 0x01, 0x24, 0xfe, 0x49, 0x03, 0x14, 0xfe, 0xb9, 0x74, 0x9a, 0x5d, 0x27, + 0x34, 0x77, 0xc2, 0x8e, 0x23, 0x5b, 0x62, 0x65, 0x2d, 0x33, 0x6c, 0x66, + 0x5b, 0x21, 0x48, 0x61, 0x39, 0x18, 0x1b, 0x3e, 0x66, 0x4a, 0xd1, 0x02, + 0x77, 0xbf, 0xc2, 0xb3, 0xc6, 0x0b, 0x3d, 0x59, 0x6b, 0x38, 0x45, 0x7b, + 0x5c, 0x36, 0x05, 0x0a, 0x0f, 0x0b, 0xd0, 0x0e, 0x16, 0x0f, 0x08, 0x18, + 0x29, 0x35, 0x1e, 0x1d, 0x35, 0x28, 0x18, 0x00, 0x00, 0x01, 0x00, 0x99, + 0xff, 0xe9, 0x03, 0xce, 0x04, 0x0e, 0x00, 0x3b, 0x00, 0x5f, 0xb2, 0x0f, + 0x0f, 0x36, 0xb8, 0x02, 0x24, 0x40, 0x0c, 0x23, 0x3b, 0x3b, 0x1e, 0x1e, + 0x18, 0x23, 0x23, 0x18, 0x2d, 0x2d, 0x05, 0xb8, 0x02, 0x1c, 0x40, 0x1e, + 0x18, 0x2d, 0x28, 0xf2, 0x31, 0x40, 0x00, 0x01, 0x00, 0x00, 0xa0, 0x3b, + 0xb0, 0x3b, 0x02, 0x3b, 0x1e, 0x1d, 0x1d, 0x1e, 0x1e, 0x2e, 0x31, 0x50, + 0x0f, 0x0a, 0xf8, 0x10, 0x13, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x33, 0x39, 0x2f, 0x33, 0x2f, 0x10, 0xcd, 0x5d, 0x32, 0x2f, 0x71, 0x10, + 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x12, 0x39, + 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x0e, 0x03, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x3e, 0x03, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x35, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x02, 0x77, 0x4a, + 0x55, 0x2b, 0x0b, 0x16, 0x30, 0x4a, 0x34, 0x34, 0x5c, 0x57, 0x54, 0x2d, + 0x5e, 0xbb, 0x5e, 0x52, 0xa0, 0x7e, 0x4e, 0x20, 0x49, 0x75, 0x54, 0x52, + 0x61, 0x33, 0x10, 0x1b, 0x2e, 0x3d, 0x23, 0x29, 0x59, 0x53, 0x47, 0x17, + 0x5a, 0x93, 0x45, 0x84, 0xa9, 0x62, 0x26, 0x32, 0x5a, 0x7e, 0x4b, 0x01, + 0x8c, 0x0e, 0x20, 0x21, 0x21, 0x0f, 0x14, 0x25, 0x1d, 0x12, 0x0a, 0x13, + 0x1a, 0x11, 0xdb, 0x17, 0x12, 0x1f, 0x45, 0x6d, 0x4f, 0x33, 0x58, 0x47, + 0x34, 0x11, 0x6b, 0x13, 0x20, 0x1d, 0x1c, 0x10, 0x14, 0x1f, 0x15, 0x0b, + 0x0a, 0x0f, 0x12, 0x09, 0xc8, 0x11, 0x0f, 0x39, 0x54, 0x60, 0x28, 0x39, + 0x54, 0x3d, 0x2b, 0x10, 0x00, 0x01, 0x00, 0x46, 0xff, 0xfd, 0x04, 0x0f, + 0x04, 0x08, 0x00, 0x35, 0x00, 0x3b, 0x40, 0x1d, 0x25, 0x11, 0x00, 0x00, + 0x16, 0x20, 0x20, 0x2e, 0x16, 0x16, 0x08, 0x11, 0x00, 0x25, 0x25, 0x2e, + 0x2b, 0xfe, 0x2f, 0x32, 0x51, 0x1b, 0x50, 0x08, 0x0b, 0xfe, 0x07, 0x04, + 0x51, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x32, + 0x11, 0x33, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x2f, 0x33, 0x2f, 0x12, 0x39, + 0x11, 0x33, 0x33, 0x30, 0x31, 0x25, 0x07, 0x06, 0x06, 0x23, 0x22, 0x26, + 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x37, 0x2e, 0x03, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x27, 0x02, 0x2b, 0x63, 0x3f, 0x8b, 0x53, 0x14, 0x33, 0x1e, + 0x21, 0x2d, 0x0b, 0x18, 0x23, 0x20, 0x1e, 0x12, 0x4e, 0x2a, 0x42, 0x2e, + 0x18, 0x1e, 0x50, 0x8a, 0x6c, 0x6c, 0x8b, 0x50, 0x1e, 0x18, 0x2e, 0x42, + 0x2a, 0x4d, 0x12, 0x1e, 0x20, 0x24, 0x18, 0x0a, 0x2c, 0x23, 0x1d, 0x35, + 0x14, 0x53, 0x8c, 0x3d, 0xdf, 0x6c, 0x44, 0x32, 0x05, 0x05, 0xc4, 0x07, + 0x05, 0x09, 0x13, 0x1c, 0x13, 0x52, 0x24, 0x56, 0x5d, 0x61, 0x2e, 0x38, + 0x74, 0x5e, 0x3c, 0x3c, 0x5e, 0x74, 0x38, 0x2e, 0x61, 0x5d, 0x56, 0x24, + 0x52, 0x13, 0x1c, 0x13, 0x09, 0x05, 0x07, 0xc4, 0x05, 0x05, 0x32, 0x44, + 0x00, 0x01, 0x00, 0xcc, 0x00, 0x00, 0x03, 0xab, 0x03, 0xf8, 0x00, 0x05, + 0x00, 0x18, 0xb9, 0x00, 0x01, 0x01, 0xdb, 0xb7, 0x02, 0x04, 0x01, 0x51, + 0x00, 0xfe, 0x03, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0x01, 0x2f, 0x2f, 0xed, + 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x21, 0x15, 0x01, 0xb4, 0xe8, 0x02, + 0xdf, 0x03, 0x36, 0xfc, 0xca, 0x03, 0xf8, 0xc2, 0x00, 0x01, 0x00, 0x11, + 0x00, 0x00, 0x04, 0x43, 0x03, 0xf8, 0x00, 0x06, 0x00, 0x20, 0x40, 0x0e, + 0x02, 0x01, 0x05, 0x05, 0x04, 0x03, 0x06, 0x00, 0x05, 0x01, 0x4f, 0x04, + 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0x33, 0x01, 0x2f, 0x32, 0x2f, 0x33, + 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x33, 0x01, 0x21, 0x01, 0x21, 0x01, + 0x01, 0x11, 0x01, 0x9e, 0x01, 0x00, 0x01, 0x94, 0xff, 0x00, 0xfe, 0xe3, + 0xfe, 0xe3, 0x03, 0xf8, 0xfc, 0x08, 0x02, 0xf2, 0xfd, 0x0e, 0x00, 0x01, + 0x00, 0x86, 0x00, 0x00, 0x03, 0xe0, 0x03, 0xf8, 0x00, 0x07, 0x00, 0x23, + 0xbc, 0x00, 0x04, 0x01, 0xdf, 0x00, 0x05, 0x00, 0x00, 0x01, 0xde, 0xb4, + 0x01, 0x05, 0x00, 0x51, 0x03, 0xb8, 0x01, 0x05, 0xb1, 0x06, 0x4f, 0x00, + 0x3f, 0xed, 0x3f, 0x33, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x30, 0x31, 0x21, + 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x21, 0x03, 0xe0, 0xeb, 0xfe, 0x7d, + 0xec, 0x03, 0x5a, 0x03, 0x2e, 0xfc, 0xd2, 0x03, 0xf8, 0x00, 0x00, 0x02, + 0x00, 0xb9, 0x00, 0x00, 0x03, 0xd5, 0x03, 0xf8, 0x00, 0x0e, 0x00, 0x19, + 0x00, 0x2a, 0xb9, 0x00, 0x00, 0x01, 0xd7, 0xb2, 0x0f, 0x16, 0x07, 0xb8, + 0x01, 0xdc, 0x40, 0x0c, 0x08, 0x06, 0xfc, 0x16, 0x16, 0x07, 0x15, 0xfc, + 0x09, 0x4f, 0x07, 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, + 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, + 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x36, 0x03, 0xd5, 0x26, 0x60, 0xa3, + 0x7d, 0x8d, 0xe9, 0x01, 0x76, 0x5d, 0x9b, 0x70, 0x3e, 0xe3, 0x19, 0x35, + 0x52, 0x39, 0x77, 0x69, 0x7b, 0x6c, 0x02, 0xb7, 0x47, 0x88, 0x69, 0x40, + 0xfe, 0xc1, 0x03, 0xf8, 0x23, 0x4d, 0x7a, 0x5f, 0x27, 0x35, 0x20, 0x0d, + 0xfe, 0xc7, 0x57, 0x00, 0x00, 0x01, 0x00, 0x52, 0x00, 0x00, 0x04, 0x03, + 0x03, 0xf8, 0x00, 0x18, 0x00, 0x48, 0xb1, 0x18, 0x10, 0xb8, 0x01, 0xad, + 0xb4, 0x02, 0x0d, 0x0d, 0x08, 0x14, 0xb8, 0x01, 0xae, 0xb2, 0x13, 0x13, + 0x09, 0xb8, 0x01, 0xae, 0xb2, 0x08, 0x18, 0x02, 0xb8, 0x01, 0x00, 0x40, + 0x10, 0x10, 0x1f, 0x0d, 0x6f, 0x0d, 0x7f, 0x0d, 0x03, 0x0d, 0x0d, 0x13, + 0x0e, 0x08, 0x4f, 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x33, 0x33, 0x39, 0x2f, + 0x5d, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x21, 0x23, 0x11, 0x2e, 0x03, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x16, 0x17, 0x11, 0x33, 0x11, 0x36, 0x35, 0x11, + 0x33, 0x11, 0x14, 0x06, 0x07, 0x02, 0x97, 0xda, 0x60, 0x89, 0x59, 0x29, + 0xdc, 0x42, 0x4d, 0xda, 0x90, 0xdc, 0xc0, 0xac, 0x01, 0x1f, 0x0a, 0x37, + 0x58, 0x79, 0x4b, 0x01, 0x7c, 0xfe, 0xa2, 0x50, 0x58, 0x0f, 0x02, 0x15, + 0xfd, 0xed, 0x24, 0x92, 0x01, 0x5d, 0xfe, 0x98, 0x9b, 0xba, 0x19, 0x00, + 0x00, 0x01, 0xff, 0xf9, 0xff, 0xfa, 0x03, 0xc2, 0x03, 0xf8, 0x00, 0x18, + 0x00, 0x34, 0xb9, 0x00, 0x03, 0x01, 0xaf, 0xb4, 0x17, 0x17, 0x02, 0x0c, + 0x18, 0xbb, 0x01, 0xd9, 0x00, 0x02, 0x00, 0x03, 0x01, 0x01, 0xb3, 0x17, + 0x4f, 0x0d, 0x10, 0xb8, 0x01, 0x06, 0xb4, 0x0c, 0x0a, 0x51, 0x01, 0x51, + 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x2f, + 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x21, 0x23, 0x11, 0x23, 0x0e, 0x05, + 0x23, 0x22, 0x27, 0x37, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x03, 0x12, 0x37, + 0x21, 0x03, 0xc2, 0xe6, 0xe0, 0x0b, 0x26, 0x35, 0x43, 0x4e, 0x58, 0x2f, + 0x37, 0x4e, 0x09, 0x12, 0x21, 0x08, 0x1d, 0x34, 0x2d, 0x26, 0x1f, 0x17, + 0x08, 0x02, 0xa3, 0x03, 0x32, 0xa9, 0xfe, 0xb7, 0x77, 0x47, 0x1c, 0x14, + 0xbc, 0x02, 0x03, 0x19, 0x42, 0x74, 0xb6, 0x01, 0x00, 0xae, 0x00, 0x02, + 0x00, 0xb8, 0x02, 0xce, 0x03, 0xad, 0x05, 0xf7, 0x00, 0x07, 0x00, 0x0a, + 0x00, 0x3c, 0x40, 0x16, 0x0a, 0x03, 0x04, 0x08, 0x02, 0x01, 0x07, 0x06, + 0x09, 0x09, 0x00, 0x04, 0x05, 0x00, 0x01, 0x03, 0x96, 0x0a, 0x0a, 0x05, + 0x09, 0x06, 0xbb, 0x02, 0x7a, 0x00, 0x01, 0x00, 0x05, 0x02, 0x7f, 0x00, + 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, + 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x12, 0x39, 0x39, 0x12, 0x39, 0x39, + 0x31, 0x30, 0x01, 0x23, 0x27, 0x21, 0x07, 0x23, 0x01, 0x33, 0x0b, 0x02, + 0x03, 0xad, 0xb7, 0x39, 0xfe, 0xe4, 0x39, 0xb0, 0x01, 0x10, 0xd8, 0x14, + 0x5c, 0x5d, 0x02, 0xce, 0xa9, 0xa9, 0x03, 0x29, 0xfe, 0x14, 0x01, 0x32, + 0xfe, 0xce, 0x00, 0x02, 0x00, 0x79, 0x02, 0xcd, 0x03, 0xa4, 0x05, 0xf6, + 0x00, 0x0f, 0x00, 0x12, 0x00, 0x59, 0xb6, 0x12, 0x03, 0x11, 0x04, 0x11, + 0x0a, 0x0d, 0xb8, 0x01, 0x66, 0x40, 0x1b, 0x02, 0x02, 0x0f, 0x05, 0x0c, + 0x0c, 0x0f, 0x08, 0x08, 0x0f, 0x04, 0x05, 0x0d, 0x95, 0x0a, 0x03, 0x95, + 0x12, 0x0a, 0x12, 0x0a, 0x12, 0x0e, 0x11, 0x09, 0x95, 0x06, 0xb8, 0x02, + 0x7a, 0xb3, 0x0e, 0x96, 0x05, 0x01, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0x33, + 0xed, 0x3f, 0xed, 0x32, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, + 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x33, 0x11, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, + 0x21, 0x35, 0x23, 0x07, 0x23, 0x01, 0x21, 0x15, 0x23, 0x15, 0x33, 0x15, + 0x23, 0x15, 0x33, 0x25, 0x11, 0x03, 0x03, 0xa4, 0xfe, 0x81, 0xb5, 0x3f, + 0xb8, 0x01, 0x5a, 0x01, 0xc8, 0xc8, 0xbf, 0xbf, 0xd1, 0xfe, 0x81, 0x7b, + 0x02, 0xcd, 0xa7, 0xa7, 0x03, 0x29, 0x8a, 0xb8, 0x8a, 0xd1, 0xa6, 0x01, + 0x4e, 0xfe, 0xb2, 0x00, 0x00, 0x03, 0x01, 0x0f, 0x02, 0xce, 0x03, 0x75, + 0x05, 0xf7, 0x00, 0x0d, 0x00, 0x18, 0x00, 0x22, 0x00, 0x42, 0xb9, 0x00, + 0x08, 0x01, 0x67, 0xb3, 0x0e, 0x0e, 0x0b, 0x00, 0xb8, 0x01, 0x67, 0xb3, + 0x19, 0x19, 0x1d, 0x14, 0xb8, 0x01, 0x67, 0x40, 0x0a, 0x05, 0x0b, 0x1c, + 0x96, 0x15, 0x15, 0x1d, 0x14, 0x96, 0x05, 0xb8, 0x02, 0x7a, 0xb2, 0x1d, + 0x96, 0x04, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x39, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x33, 0x33, + 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x06, 0x23, 0x21, 0x11, 0x21, 0x20, + 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x03, 0x34, 0x2e, 0x02, 0x23, 0x23, + 0x15, 0x33, 0x32, 0x36, 0x13, 0x34, 0x23, 0x23, 0x15, 0x33, 0x32, 0x3e, + 0x02, 0x03, 0x75, 0xa2, 0x96, 0xfe, 0xd2, 0x01, 0x24, 0x01, 0x25, 0x2e, + 0x36, 0x38, 0x49, 0xcd, 0x0d, 0x21, 0x37, 0x2a, 0x58, 0x54, 0x42, 0x51, + 0x1a, 0x9d, 0x64, 0x5a, 0x2a, 0x3f, 0x29, 0x15, 0x03, 0xc8, 0x79, 0x81, + 0x03, 0x29, 0xce, 0x39, 0x57, 0x1c, 0x16, 0x5a, 0x01, 0x0f, 0x13, 0x1d, + 0x13, 0x09, 0xb2, 0x2d, 0xfe, 0xe1, 0x64, 0xcb, 0x09, 0x17, 0x28, 0x00, + 0x00, 0x03, 0x00, 0xa8, 0x02, 0xce, 0x03, 0x88, 0x05, 0xf7, 0x00, 0x11, + 0x00, 0x1b, 0x00, 0x26, 0x00, 0x50, 0xb1, 0x15, 0x22, 0xbb, 0x01, 0x67, + 0x00, 0x02, 0x00, 0x05, 0x01, 0x67, 0xb2, 0x1c, 0x1c, 0x0b, 0xb8, 0x01, + 0x67, 0x40, 0x13, 0x08, 0x12, 0x12, 0x10, 0x02, 0x00, 0x00, 0x02, 0x08, + 0x15, 0x10, 0x96, 0x23, 0x00, 0x00, 0x02, 0x16, 0x96, 0x0f, 0xb8, 0x02, + 0x7f, 0xb2, 0x22, 0x96, 0x02, 0xb8, 0x02, 0x7a, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x11, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x39, 0x01, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, + 0x30, 0x31, 0x13, 0x33, 0x11, 0x21, 0x20, 0x15, 0x14, 0x06, 0x07, 0x16, + 0x16, 0x15, 0x14, 0x06, 0x23, 0x21, 0x11, 0x23, 0x05, 0x34, 0x23, 0x23, + 0x15, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x15, + 0x33, 0x32, 0x36, 0xa8, 0x7a, 0x01, 0x23, 0x01, 0x26, 0x2e, 0x37, 0x39, + 0x49, 0xa2, 0x96, 0xfe, 0xd2, 0x7a, 0x02, 0x2c, 0x9c, 0x65, 0x5a, 0x2a, + 0x3f, 0x29, 0x15, 0x1a, 0x0d, 0x21, 0x37, 0x2a, 0x58, 0x54, 0x42, 0x51, + 0x04, 0xb6, 0x01, 0x41, 0xce, 0x39, 0x57, 0x1c, 0x16, 0x5a, 0x45, 0x79, + 0x81, 0x01, 0x5a, 0x64, 0x64, 0xcb, 0x09, 0x17, 0x28, 0x01, 0x77, 0x13, + 0x1d, 0x13, 0x09, 0xb2, 0x2d, 0x00, 0x00, 0x02, 0x01, 0x10, 0x02, 0xce, + 0x03, 0xb2, 0x05, 0xf7, 0x00, 0x0a, 0x00, 0x15, 0x00, 0x28, 0xb9, 0x00, + 0x00, 0x01, 0x7a, 0xb2, 0x0b, 0x0b, 0x11, 0xb8, 0x01, 0x67, 0xb3, 0x07, + 0x11, 0x96, 0x07, 0xb8, 0x02, 0x7a, 0xb2, 0x12, 0x96, 0x06, 0xb8, 0x02, + 0x7f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x21, 0x32, 0x16, + 0x07, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x33, 0x32, 0x36, 0x03, 0xb2, + 0x29, 0x62, 0xa4, 0x7b, 0xf8, 0x01, 0x0f, 0xca, 0xc9, 0xbb, 0x1e, 0x3d, + 0x5c, 0x3d, 0x42, 0x35, 0x80, 0x81, 0x04, 0x6b, 0x57, 0x96, 0x70, 0x40, + 0x03, 0x29, 0xc3, 0xd0, 0x4d, 0x65, 0x3b, 0x17, 0xfd, 0xf6, 0x7b, 0x00, + 0x00, 0x01, 0x01, 0x2c, 0x02, 0xce, 0x03, 0x3d, 0x05, 0xf7, 0x00, 0x0b, + 0x00, 0x39, 0x40, 0x09, 0x08, 0x08, 0x0b, 0x04, 0x04, 0x0b, 0x0b, 0x0a, + 0x05, 0xb8, 0x01, 0x67, 0x40, 0x09, 0x02, 0x09, 0x96, 0x06, 0x06, 0x0a, + 0x05, 0x96, 0x02, 0xb8, 0x02, 0x7a, 0xb2, 0x0a, 0x96, 0x01, 0xb8, 0x02, + 0x7f, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x31, 0x30, 0x01, + 0x21, 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x03, + 0x3d, 0xfd, 0xef, 0x02, 0x11, 0xfe, 0xa0, 0x01, 0x51, 0xfe, 0xaf, 0x01, + 0x60, 0x02, 0xce, 0x03, 0x29, 0x8f, 0xb0, 0x8f, 0xcb, 0x00, 0x00, 0x01, + 0x01, 0x2a, 0x02, 0xce, 0x03, 0x3b, 0x05, 0xf7, 0x00, 0x0b, 0x00, 0x3e, + 0xb9, 0x00, 0x0a, 0x01, 0x67, 0x40, 0x14, 0x01, 0x05, 0x05, 0x01, 0x01, + 0x00, 0x07, 0x07, 0x00, 0x03, 0x03, 0x00, 0x03, 0x96, 0x04, 0x04, 0x08, + 0x00, 0x96, 0x0b, 0xb8, 0x02, 0x7f, 0xb2, 0x07, 0x96, 0x08, 0xb8, 0x02, + 0x7a, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x31, 0x30, 0x01, 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, 0x35, 0x21, + 0x11, 0x21, 0x01, 0x2a, 0x01, 0x5f, 0xfe, 0xaf, 0x01, 0x51, 0xfe, 0xa1, + 0x02, 0x11, 0xfd, 0xef, 0x03, 0x5e, 0xcb, 0x8f, 0xb0, 0x8f, 0xfc, 0xd7, + 0x00, 0x01, 0x00, 0xd2, 0x02, 0xc4, 0x03, 0x5e, 0x06, 0x01, 0x00, 0x21, + 0x00, 0x44, 0xb2, 0x00, 0x00, 0x10, 0xb8, 0x01, 0x66, 0xb5, 0x0d, 0x0f, + 0x0f, 0x0d, 0x0d, 0x06, 0xb8, 0x01, 0x67, 0x40, 0x0b, 0x19, 0x0e, 0x96, + 0x0f, 0x0f, 0x09, 0x00, 0x03, 0x96, 0x21, 0x1e, 0xb8, 0x02, 0x79, 0xb4, + 0x0c, 0x09, 0x96, 0x11, 0x14, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x31, 0x30, 0x01, 0x26, + 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, + 0x23, 0x35, 0x21, 0x11, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x03, 0x5b, 0x3b, 0x6a, 0x36, 0x76, + 0x84, 0x69, 0x78, 0x10, 0x29, 0x11, 0xa6, 0x01, 0x53, 0x3d, 0x77, 0x4b, + 0x5c, 0x92, 0x68, 0x37, 0x3d, 0x6f, 0x9c, 0x5e, 0x3c, 0x70, 0x37, 0x05, + 0x2f, 0x1d, 0x21, 0x8b, 0x81, 0x86, 0x84, 0x03, 0x04, 0xb6, 0x8d, 0xfe, + 0x58, 0x1a, 0x1b, 0x34, 0x66, 0x98, 0x64, 0x63, 0x9d, 0x6d, 0x3a, 0x15, + 0x18, 0x00, 0x00, 0x01, 0x00, 0xf5, 0x02, 0xce, 0x03, 0x72, 0x05, 0xf7, + 0x00, 0x0b, 0x00, 0x3a, 0xb9, 0x00, 0x0b, 0x01, 0x67, 0xb3, 0x02, 0x0a, + 0x03, 0x07, 0xb8, 0x01, 0x67, 0x40, 0x0f, 0x06, 0x03, 0x96, 0x0f, 0x08, + 0x1f, 0x08, 0x2f, 0x08, 0x03, 0x08, 0x08, 0x05, 0x0a, 0x06, 0xbb, 0x02, + 0x7a, 0x00, 0x01, 0x00, 0x05, 0x02, 0x7f, 0x00, 0x3f, 0x33, 0x3f, 0x33, + 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0xed, + 0x31, 0x30, 0x01, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, + 0x11, 0x33, 0x03, 0x72, 0xb1, 0xfe, 0xe5, 0xb1, 0xb1, 0x01, 0x1b, 0xb1, + 0x02, 0xce, 0x01, 0x5a, 0xfe, 0xa6, 0x03, 0x29, 0xfe, 0xc2, 0x01, 0x3e, + 0x00, 0x01, 0x01, 0x20, 0x02, 0xce, 0x03, 0x47, 0x05, 0xf7, 0x00, 0x0b, + 0x00, 0x35, 0x40, 0x0a, 0x01, 0x01, 0x0a, 0x0a, 0x00, 0x04, 0x04, 0x07, + 0x07, 0x05, 0xb8, 0x01, 0x67, 0xb4, 0x00, 0x06, 0x0a, 0x96, 0x09, 0xb8, + 0x02, 0x7f, 0xb3, 0x05, 0x01, 0x96, 0x02, 0xb8, 0x02, 0x7a, 0x00, 0x3f, + 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x31, 0x30, 0x01, 0x23, 0x35, 0x21, 0x15, + 0x23, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x01, 0xda, 0xba, 0x02, 0x27, + 0xbb, 0xbb, 0xfd, 0xd9, 0xba, 0x05, 0x68, 0x8f, 0x8f, 0xfd, 0xf6, 0x90, + 0x90, 0x00, 0x00, 0x01, 0x01, 0x0d, 0x02, 0xc6, 0x02, 0xfd, 0x05, 0xf7, + 0x00, 0x15, 0x00, 0x2d, 0xb9, 0x00, 0x01, 0x01, 0x67, 0x40, 0x09, 0x12, + 0x12, 0x0c, 0x14, 0x14, 0x0c, 0x14, 0x96, 0x15, 0xb8, 0x02, 0x7a, 0xb4, + 0x0c, 0x0f, 0x96, 0x0b, 0x06, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x31, + 0x30, 0x01, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x21, 0x35, 0x02, 0xfd, 0x27, + 0x4c, 0x70, 0x48, 0x1a, 0x37, 0x34, 0x2e, 0x12, 0x33, 0x69, 0x2a, 0x3a, + 0x3f, 0xfe, 0xca, 0x05, 0xf7, 0xfd, 0xd5, 0x36, 0x5f, 0x47, 0x2a, 0x08, + 0x0e, 0x13, 0x0b, 0xad, 0x25, 0x2a, 0x46, 0x42, 0x01, 0x88, 0x8f, 0x00, + 0x00, 0x01, 0x01, 0x0b, 0x02, 0xce, 0x03, 0x9b, 0x05, 0xf7, 0x00, 0x0a, + 0x00, 0x39, 0xb2, 0x0a, 0x02, 0x06, 0xb8, 0x01, 0x67, 0x40, 0x0f, 0x05, + 0x08, 0x09, 0x09, 0x01, 0x00, 0x00, 0x05, 0x07, 0x02, 0x0a, 0x0a, 0x04, + 0x08, 0x05, 0xbb, 0x02, 0x7a, 0x00, 0x01, 0x00, 0x04, 0x02, 0x7f, 0x00, + 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x32, 0x30, 0x31, 0x01, + 0x23, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, 0x33, 0x01, 0x03, 0x9b, + 0xca, 0xfe, 0xe9, 0xaf, 0xaf, 0x01, 0x07, 0xce, 0xfe, 0xb0, 0x02, 0xce, + 0x01, 0x54, 0xfe, 0xac, 0x03, 0x29, 0xfe, 0xc0, 0x01, 0x40, 0xfe, 0x7c, + 0x00, 0x01, 0x01, 0x4e, 0x02, 0xce, 0x03, 0x62, 0x05, 0xf7, 0x00, 0x05, + 0x00, 0x1d, 0xb1, 0x05, 0x03, 0xbb, 0x01, 0x67, 0x00, 0x02, 0x00, 0x02, + 0x02, 0x7a, 0xb2, 0x04, 0x96, 0x01, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0xed, + 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x31, 0x30, 0x01, 0x21, 0x11, 0x33, 0x11, + 0x21, 0x03, 0x62, 0xfd, 0xec, 0xb2, 0x01, 0x62, 0x02, 0xce, 0x03, 0x29, + 0xfd, 0x67, 0x00, 0x01, 0x00, 0xc5, 0x02, 0xce, 0x03, 0xa1, 0x05, 0xf7, + 0x00, 0x0e, 0x00, 0x53, 0x40, 0x0f, 0x04, 0x03, 0x0c, 0x0c, 0x0e, 0x0b, + 0x05, 0x0a, 0x0a, 0x09, 0x0d, 0x02, 0x0e, 0x0e, 0x00, 0xb8, 0x01, 0x64, + 0xb2, 0x01, 0x01, 0x08, 0xb8, 0x01, 0x64, 0xb2, 0x09, 0x02, 0x0d, 0xb8, + 0x02, 0x7a, 0xb5, 0x0c, 0x04, 0x04, 0x09, 0x05, 0x0a, 0xbb, 0x02, 0x7a, + 0x00, 0x01, 0x00, 0x09, 0x02, 0x7f, 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x12, + 0x39, 0x2f, 0x33, 0x3f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0x33, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x12, 0x39, 0x11, 0x33, + 0x33, 0x30, 0x31, 0x01, 0x23, 0x03, 0x03, 0x23, 0x03, 0x06, 0x02, 0x07, + 0x23, 0x13, 0x33, 0x13, 0x13, 0x33, 0x03, 0xa1, 0xa9, 0x14, 0x73, 0x8a, + 0x6c, 0x04, 0x07, 0x03, 0xa8, 0x2a, 0xd0, 0x71, 0x76, 0xce, 0x02, 0xce, + 0x02, 0x48, 0xfe, 0xb4, 0x01, 0x42, 0x8c, 0xfe, 0xd8, 0x8a, 0x03, 0x29, + 0xfe, 0xa6, 0x01, 0x5a, 0x00, 0x01, 0x00, 0xfb, 0x02, 0xce, 0x03, 0x6b, + 0x05, 0xf7, 0x00, 0x0d, 0x00, 0x36, 0xb9, 0x00, 0x0d, 0x01, 0x56, 0xb4, + 0x01, 0x0c, 0x0c, 0x07, 0x04, 0x41, 0x0c, 0x01, 0x56, 0x00, 0x05, 0x00, + 0x0c, 0x02, 0x7a, 0x00, 0x02, 0x00, 0x06, 0x02, 0x7a, 0x00, 0x05, 0x02, + 0x7f, 0x00, 0x08, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x3f, 0x33, 0x3f, 0x3f, + 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, + 0x01, 0x23, 0x01, 0x13, 0x11, 0x23, 0x11, 0x33, 0x01, 0x26, 0x26, 0x27, + 0x35, 0x33, 0x03, 0x6b, 0xc2, 0xfe, 0xe6, 0x0d, 0xa1, 0xc0, 0x01, 0x1e, + 0x03, 0x08, 0x03, 0xa0, 0x02, 0xce, 0x02, 0x41, 0xfe, 0xc8, 0xfe, 0xf7, + 0x03, 0x29, 0xfd, 0xc2, 0x55, 0xa6, 0x55, 0xee, 0x00, 0x01, 0x00, 0xfd, + 0x02, 0xce, 0x03, 0x69, 0x05, 0xf7, 0x00, 0x0d, 0x00, 0x36, 0xb9, 0x00, + 0x06, 0x01, 0x63, 0xb4, 0x04, 0x07, 0x07, 0x0b, 0x00, 0x41, 0x0c, 0x01, + 0x63, 0x00, 0x0d, 0x00, 0x0d, 0x02, 0x7a, 0x00, 0x01, 0x00, 0x0b, 0x02, + 0x7f, 0x00, 0x07, 0x02, 0x7f, 0x00, 0x08, 0x00, 0x04, 0x02, 0x7a, 0x00, + 0x3f, 0x33, 0x3f, 0x3f, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, + 0x33, 0xed, 0x30, 0x31, 0x01, 0x11, 0x36, 0x36, 0x37, 0x33, 0x11, 0x23, + 0x11, 0x06, 0x06, 0x07, 0x23, 0x11, 0x01, 0xa2, 0x4b, 0x99, 0x4b, 0x98, + 0xa7, 0x4b, 0x98, 0x49, 0x99, 0x05, 0xf7, 0xfe, 0x05, 0x7f, 0xff, 0x7d, + 0xfc, 0xd7, 0x01, 0xfa, 0x80, 0xfc, 0x7e, 0x03, 0x29, 0x00, 0x00, 0x02, + 0x00, 0xcc, 0x02, 0xc4, 0x03, 0x9a, 0x06, 0x01, 0x00, 0x13, 0x00, 0x25, + 0x00, 0x26, 0xbc, 0x00, 0x00, 0x01, 0x67, 0x00, 0x14, 0x00, 0x1e, 0x01, + 0x67, 0xb3, 0x0a, 0x19, 0x96, 0x0f, 0xb8, 0x02, 0x79, 0xb2, 0x21, 0x96, + 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, + 0x2f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x03, + 0x9a, 0x3b, 0x64, 0x85, 0x4b, 0x5a, 0x84, 0x57, 0x2a, 0x3a, 0x63, 0x85, + 0x4a, 0x5a, 0x85, 0x58, 0x2b, 0xb5, 0x14, 0x2b, 0x44, 0x31, 0x2f, 0x43, + 0x2b, 0x15, 0x53, 0x5f, 0x2f, 0x44, 0x2c, 0x15, 0x04, 0x68, 0x6c, 0x9f, + 0x67, 0x32, 0x38, 0x6b, 0x98, 0x60, 0x6c, 0x9d, 0x67, 0x32, 0x38, 0x6a, + 0x98, 0x67, 0x40, 0x65, 0x46, 0x25, 0x28, 0x46, 0x63, 0x3a, 0x81, 0x8e, + 0x27, 0x47, 0x61, 0x00, 0x00, 0x02, 0x00, 0xf2, 0x02, 0xbe, 0x03, 0x73, + 0x05, 0xf7, 0x00, 0x39, 0x00, 0x4b, 0x00, 0x5e, 0xb1, 0x00, 0x03, 0xb8, + 0x01, 0x67, 0x40, 0x0b, 0x39, 0x34, 0x34, 0x3a, 0x2f, 0x1c, 0x08, 0x3f, + 0x3f, 0x17, 0x0d, 0xb8, 0x01, 0x67, 0xb4, 0x3a, 0x3a, 0x17, 0x25, 0x2a, + 0xb8, 0x01, 0x67, 0xb3, 0x24, 0x21, 0x21, 0x42, 0xb8, 0x01, 0x67, 0xb7, + 0x17, 0x3f, 0x2f, 0x08, 0x1c, 0x1c, 0x39, 0x24, 0xb8, 0x02, 0x7a, 0xb2, + 0x47, 0x95, 0x12, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x39, + 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x32, + 0x11, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x16, 0x16, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, 0x33, + 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x35, 0x34, 0x2e, + 0x02, 0x27, 0x13, 0x34, 0x2e, 0x02, 0x27, 0x06, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x30, 0x19, 0x11, 0x16, 0x29, 0x38, + 0x21, 0x23, 0x40, 0x31, 0x1d, 0x1f, 0x49, 0x7c, 0x5d, 0x5d, 0x7b, 0x4a, + 0x1e, 0x1b, 0x2f, 0x3f, 0x24, 0x21, 0x37, 0x27, 0x15, 0x11, 0x18, 0xb7, + 0x10, 0x13, 0x09, 0x02, 0x10, 0x1f, 0x2d, 0x1c, 0x1c, 0x2a, 0x1d, 0x0f, + 0x02, 0x09, 0x12, 0x10, 0x4a, 0x17, 0x29, 0x38, 0x21, 0x44, 0x46, 0x15, + 0x25, 0x36, 0x21, 0x21, 0x35, 0x27, 0x15, 0x05, 0xf7, 0x21, 0x34, 0x1e, + 0x27, 0x3d, 0x34, 0x2e, 0x16, 0x16, 0x34, 0x3e, 0x48, 0x29, 0x2c, 0x57, + 0x44, 0x2a, 0x29, 0x43, 0x57, 0x2e, 0x29, 0x45, 0x3b, 0x32, 0x15, 0x17, + 0x31, 0x37, 0x3f, 0x27, 0x1e, 0x33, 0x22, 0x18, 0x22, 0x18, 0x12, 0x09, + 0x1e, 0x2d, 0x24, 0x20, 0x11, 0x11, 0x20, 0x24, 0x2d, 0x1e, 0x09, 0x12, + 0x19, 0x21, 0x18, 0xfd, 0xc1, 0x17, 0x2a, 0x28, 0x25, 0x13, 0x26, 0x4b, + 0x30, 0x22, 0x2c, 0x19, 0x09, 0x09, 0x19, 0x2c, 0x00, 0x02, 0x01, 0x1d, + 0x02, 0xce, 0x03, 0x75, 0x05, 0xf7, 0x00, 0x0e, 0x00, 0x17, 0x00, 0x32, + 0xb1, 0x06, 0x13, 0xbb, 0x01, 0x67, 0x00, 0x09, 0x00, 0x00, 0x01, 0x66, + 0x40, 0x0b, 0x0f, 0x0f, 0x09, 0x06, 0x93, 0x14, 0x14, 0x08, 0x13, 0x95, + 0x09, 0xba, 0x02, 0x7a, 0x00, 0x08, 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, + 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, + 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x32, 0x36, + 0x03, 0x75, 0x22, 0x4c, 0x7d, 0x5a, 0x62, 0xb1, 0x01, 0x12, 0x41, 0x76, + 0x5a, 0x35, 0xad, 0x5a, 0x51, 0x4f, 0x44, 0x59, 0x5d, 0x04, 0xf9, 0x33, + 0x63, 0x4e, 0x31, 0xfe, 0xea, 0x03, 0x29, 0x1c, 0x3c, 0x61, 0x4a, 0x42, + 0x38, 0xfe, 0xfd, 0x3e, 0x00, 0x02, 0x01, 0x13, 0x02, 0xce, 0x03, 0x9f, + 0x05, 0xf7, 0x00, 0x15, 0x00, 0x1e, 0x00, 0x3f, 0xb1, 0x06, 0x1a, 0xb8, + 0x01, 0x67, 0xb2, 0x09, 0x12, 0x0f, 0xb8, 0x01, 0x67, 0x40, 0x0f, 0x16, + 0x16, 0x00, 0x01, 0x01, 0x09, 0x12, 0x06, 0x90, 0x1b, 0x1b, 0x08, 0x1a, + 0x95, 0x09, 0xbb, 0x02, 0x7a, 0x00, 0x01, 0x00, 0x08, 0x02, 0x7f, 0x00, + 0x3f, 0x33, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x33, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, + 0x23, 0x27, 0x26, 0x26, 0x23, 0x23, 0x11, 0x23, 0x11, 0x21, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x17, 0x03, 0x34, 0x26, 0x23, + 0x23, 0x15, 0x33, 0x32, 0x36, 0x03, 0x9f, 0xc3, 0x7e, 0x1a, 0x38, 0x28, + 0x1f, 0xb2, 0x01, 0x13, 0x4c, 0x72, 0x4a, 0x25, 0x3e, 0x49, 0x15, 0x1d, + 0x13, 0x73, 0x45, 0x41, 0x53, 0x52, 0x43, 0x44, 0x02, 0xce, 0xf5, 0x32, + 0x26, 0xfe, 0xb3, 0x03, 0x29, 0x20, 0x3a, 0x52, 0x31, 0x4e, 0x72, 0x1b, + 0x10, 0x32, 0x23, 0x01, 0x37, 0x34, 0x29, 0xd0, 0x3c, 0x00, 0x00, 0x01, + 0x00, 0xe9, 0x02, 0xce, 0x03, 0x7d, 0x05, 0xf7, 0x00, 0x07, 0x00, 0x26, + 0xb2, 0x00, 0x00, 0x02, 0xb8, 0x01, 0x67, 0xb7, 0x03, 0x05, 0x05, 0x03, + 0x01, 0x05, 0x96, 0x06, 0xba, 0x02, 0x7a, 0x00, 0x03, 0x02, 0x7f, 0x00, + 0x3f, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, + 0x31, 0x30, 0x01, 0x23, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x03, 0x7d, + 0xf2, 0xb2, 0xf0, 0x02, 0x94, 0x05, 0x67, 0xfd, 0x67, 0x02, 0x99, 0x90, + 0x00, 0x01, 0x00, 0xf7, 0x02, 0xc4, 0x03, 0x6f, 0x05, 0xf7, 0x00, 0x17, + 0x00, 0x27, 0xb9, 0x00, 0x17, 0x01, 0x67, 0xb2, 0x16, 0x16, 0x0c, 0xb8, + 0x01, 0x67, 0xb2, 0x0b, 0x16, 0x0b, 0xb8, 0x02, 0x7a, 0xb2, 0x12, 0x96, + 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, + 0x11, 0x33, 0x03, 0x6f, 0x2d, 0x53, 0x77, 0x49, 0x51, 0x76, 0x4c, 0x25, + 0xaf, 0x0d, 0x20, 0x36, 0x29, 0x4d, 0x41, 0xaf, 0x03, 0xed, 0x44, 0x6e, + 0x4d, 0x2a, 0x2a, 0x4b, 0x67, 0x3d, 0x02, 0x1a, 0xfe, 0x0e, 0x29, 0x3e, + 0x2a, 0x16, 0x58, 0x50, 0x01, 0xf1, 0x00, 0x01, 0x00, 0xc3, 0x02, 0xce, + 0x03, 0xa4, 0x05, 0xf7, 0x00, 0x0c, 0x00, 0x58, 0x40, 0x0a, 0x0a, 0x09, + 0x03, 0x03, 0x06, 0x0b, 0x02, 0x01, 0x01, 0x00, 0xb8, 0x01, 0x56, 0xb7, + 0x0c, 0x0c, 0x06, 0x08, 0x04, 0x05, 0x05, 0x07, 0xb8, 0x01, 0x63, 0x40, + 0x0a, 0x06, 0x03, 0x3f, 0x09, 0x01, 0x09, 0x09, 0x05, 0x0c, 0x06, 0xbe, + 0x02, 0x7a, 0x00, 0x08, 0x00, 0x05, 0x02, 0x7f, 0x00, 0x0b, 0x00, 0x02, + 0x02, 0x7f, 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x2f, + 0x5d, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x2f, + 0xed, 0x32, 0x2f, 0x33, 0x33, 0x11, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, + 0x01, 0x03, 0x23, 0x03, 0x03, 0x23, 0x03, 0x33, 0x13, 0x13, 0x33, 0x13, + 0x13, 0x03, 0xa4, 0x39, 0xbc, 0x80, 0x7a, 0xb8, 0x3a, 0xa7, 0x21, 0x71, + 0x6c, 0x7a, 0x21, 0x05, 0xf7, 0xfc, 0xd7, 0x01, 0x30, 0xfe, 0xd0, 0x03, + 0x29, 0xfd, 0xd1, 0x01, 0x2a, 0xfe, 0xd4, 0x02, 0x31, 0x00, 0x00, 0x02, + 0x01, 0x13, 0x02, 0xc4, 0x03, 0x52, 0x05, 0x4e, 0x00, 0x1d, 0x00, 0x28, + 0x00, 0x59, 0xb9, 0x00, 0x1c, 0x01, 0x65, 0xb4, 0x0d, 0x01, 0x1e, 0x1e, + 0x22, 0xb8, 0x01, 0x67, 0x40, 0x1c, 0x09, 0x13, 0x13, 0x09, 0x13, 0x10, + 0x96, 0x17, 0x1e, 0x90, 0x30, 0x0c, 0x40, 0x0c, 0x50, 0x0c, 0x03, 0x05, + 0x0c, 0x15, 0x0c, 0x25, 0x0c, 0x03, 0x0c, 0x0c, 0x14, 0x17, 0xb8, 0x02, + 0x7b, 0xb4, 0x28, 0x25, 0x90, 0x01, 0x04, 0xba, 0x02, 0x80, 0x00, 0x00, + 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x39, 0x2f, + 0x5d, 0x5d, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x33, 0x2f, 0x33, 0x33, 0xed, 0x30, 0x31, 0x01, 0x27, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, 0x33, 0x35, 0x34, 0x23, 0x22, + 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x03, + 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x02, 0xb6, + 0x03, 0x2f, 0x5e, 0x35, 0x3b, 0x54, 0x36, 0x19, 0x88, 0x93, 0x7a, 0x7a, + 0x31, 0x71, 0x45, 0x30, 0x7d, 0x42, 0x3e, 0x68, 0x4c, 0x2a, 0xaa, 0x61, + 0x46, 0x3e, 0x23, 0x23, 0x32, 0x51, 0x1c, 0x02, 0xce, 0x37, 0x23, 0x1e, + 0x1f, 0x35, 0x47, 0x27, 0x61, 0x71, 0x10, 0x59, 0x1c, 0x1a, 0x97, 0x11, + 0x1b, 0x1a, 0x34, 0x51, 0x36, 0xfe, 0x55, 0x01, 0x0f, 0x31, 0x2a, 0x1a, + 0x22, 0x1e, 0x20, 0x00, 0x00, 0x02, 0x01, 0x13, 0x02, 0xc4, 0x03, 0x52, + 0x05, 0x4e, 0x00, 0x1d, 0x00, 0x28, 0x00, 0x58, 0xb2, 0x13, 0x13, 0x09, + 0xb8, 0x01, 0x67, 0xb4, 0x22, 0x22, 0x0d, 0x01, 0x1e, 0xbb, 0x01, 0x65, + 0x00, 0x1c, 0x00, 0x1d, 0x02, 0x7c, 0x40, 0x18, 0x13, 0x10, 0x96, 0x17, + 0x1e, 0x90, 0x3f, 0x0c, 0x4f, 0x0c, 0x5f, 0x0c, 0x03, 0x0a, 0x0c, 0x1a, + 0x0c, 0x2a, 0x0c, 0x03, 0x0c, 0x0c, 0x14, 0x17, 0xb8, 0x02, 0x80, 0xb4, + 0x28, 0x25, 0x90, 0x01, 0x04, 0xb8, 0x02, 0x7b, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0x39, 0x2f, 0x5d, 0x5d, 0xed, 0x10, 0xed, 0x32, 0x3f, + 0x01, 0x2f, 0xed, 0x32, 0x32, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, + 0x01, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x23, + 0x23, 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x11, 0x13, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x01, 0xb1, 0x01, 0x2f, 0x5e, 0x35, 0x3b, 0x54, 0x36, + 0x19, 0x88, 0x93, 0x7a, 0x7a, 0x31, 0x71, 0x45, 0x30, 0x7d, 0x42, 0x3e, + 0x68, 0x4b, 0x2b, 0xaa, 0x61, 0x46, 0x3f, 0x24, 0x23, 0x2d, 0x4f, 0x23, + 0x05, 0x43, 0x37, 0x23, 0x1f, 0x1f, 0x35, 0x47, 0x27, 0x62, 0x71, 0x0f, + 0x59, 0x1c, 0x1a, 0x98, 0x11, 0x1a, 0x19, 0x35, 0x50, 0x36, 0x01, 0xab, + 0xfe, 0xf2, 0x31, 0x2a, 0x1a, 0x21, 0x1e, 0x22, 0x00, 0x02, 0x01, 0x03, + 0x02, 0xc4, 0x03, 0x52, 0x05, 0x4b, 0x00, 0x11, 0x00, 0x20, 0x00, 0x37, + 0xb1, 0x0b, 0x08, 0xb8, 0x01, 0x65, 0xb2, 0x19, 0x19, 0x12, 0xb8, 0x01, + 0x66, 0xb5, 0x00, 0x18, 0x15, 0x95, 0x0b, 0x0d, 0xba, 0x02, 0x80, 0x00, + 0x09, 0x02, 0x7f, 0xb4, 0x19, 0x1c, 0x95, 0x08, 0x05, 0xb8, 0x02, 0x7b, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x17, 0x11, 0x23, 0x27, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x37, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x35, 0x26, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x01, 0x03, 0x2e, 0x56, 0x78, 0x4a, 0x1f, 0x8c, 0x5e, 0x9d, 0x03, + 0x52, 0x6f, 0x3b, 0x59, 0x3c, 0x1e, 0xad, 0x2d, 0x2d, 0x30, 0x47, 0x27, + 0x16, 0x37, 0x19, 0x1e, 0x35, 0x28, 0x17, 0x03, 0xfd, 0x4d, 0x7b, 0x57, + 0x2f, 0x0d, 0x14, 0xfd, 0xa4, 0x4b, 0x55, 0x2d, 0x52, 0x73, 0x4d, 0x62, + 0x54, 0x36, 0x39, 0xf5, 0x07, 0x08, 0x15, 0x2e, 0x47, 0x00, 0x00, 0x03, + 0x00, 0xb9, 0x02, 0xc4, 0x03, 0x9a, 0x05, 0x4c, 0x00, 0x36, 0x00, 0x41, + 0x00, 0x47, 0x00, 0x8b, 0xb3, 0x20, 0x03, 0x0f, 0x44, 0xb8, 0x01, 0x55, + 0xb7, 0x2a, 0x41, 0x41, 0x45, 0x26, 0x17, 0x17, 0x0b, 0xb8, 0x01, 0x53, + 0xb2, 0x45, 0x45, 0x3a, 0xb8, 0x01, 0x56, 0x40, 0x20, 0x26, 0x31, 0x31, + 0x26, 0x37, 0x90, 0x29, 0x0f, 0x90, 0x44, 0x00, 0x44, 0x10, 0x44, 0x20, + 0x44, 0x03, 0x29, 0x40, 0x09, 0x0e, 0x48, 0x29, 0x44, 0x29, 0x44, 0x00, + 0x40, 0x3d, 0x93, 0x20, 0x23, 0xb8, 0x02, 0x7b, 0xb4, 0x17, 0x12, 0x93, + 0x18, 0x1d, 0xb8, 0x02, 0x7b, 0xb2, 0x42, 0x90, 0x06, 0xb8, 0x02, 0x80, + 0xb5, 0x31, 0x2e, 0x91, 0x32, 0x03, 0x00, 0xb8, 0x02, 0x80, 0x00, 0x3f, + 0x32, 0x32, 0xed, 0x32, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x2b, 0x5d, 0x10, 0xed, 0x10, + 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, + 0x11, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x39, 0x39, 0x31, 0x30, 0x01, + 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, + 0x37, 0x21, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x35, 0x3e, 0x03, + 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, + 0x23, 0x23, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x0e, 0x03, + 0x03, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x15, 0x07, + 0x32, 0x37, 0x23, 0x16, 0x16, 0x02, 0xbb, 0x33, 0x55, 0x1a, 0x1a, 0x4b, + 0x2a, 0x36, 0x4f, 0x33, 0x19, 0x01, 0x04, 0x01, 0x1a, 0x04, 0x31, 0x33, + 0x10, 0x28, 0x2b, 0x2b, 0x13, 0x12, 0x2f, 0x32, 0x31, 0x14, 0x3a, 0x5d, + 0x1d, 0x22, 0x58, 0x2e, 0x54, 0x63, 0x6d, 0x78, 0x49, 0x2a, 0x29, 0x20, + 0x5a, 0x34, 0x12, 0x2b, 0x2f, 0x30, 0x23, 0x2b, 0x26, 0x20, 0x17, 0x14, + 0x2f, 0x19, 0xde, 0x45, 0x05, 0x90, 0x01, 0x25, 0x02, 0xc4, 0x1c, 0x1a, + 0x19, 0x1d, 0x28, 0x48, 0x66, 0x3e, 0x21, 0x29, 0x16, 0x47, 0x46, 0x05, + 0x0a, 0x0d, 0x07, 0x88, 0x08, 0x0c, 0x09, 0x05, 0x2a, 0x2a, 0x29, 0x2b, + 0x66, 0x5b, 0x61, 0x70, 0x17, 0x32, 0x28, 0x1f, 0x1c, 0x94, 0x09, 0x10, + 0x0c, 0x07, 0x01, 0x74, 0x2a, 0x22, 0x23, 0x1e, 0x15, 0x20, 0x58, 0xf0, + 0x72, 0x39, 0x39, 0x00, 0x00, 0x02, 0x01, 0x14, 0x02, 0xc8, 0x03, 0x66, + 0x06, 0x36, 0x00, 0x11, 0x00, 0x20, 0x00, 0x37, 0xb9, 0x00, 0x00, 0x01, + 0x66, 0xb3, 0x12, 0x12, 0x18, 0x0a, 0xb8, 0x01, 0x65, 0xb5, 0x09, 0x18, + 0x15, 0x96, 0x0c, 0x0f, 0xba, 0x02, 0x7b, 0x00, 0x09, 0x02, 0x77, 0xb4, + 0x19, 0x1c, 0x90, 0x08, 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, + 0x33, 0x15, 0x07, 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x66, + 0x2d, 0x55, 0x79, 0x4c, 0x3b, 0x90, 0x40, 0xaa, 0x02, 0x28, 0x57, 0x36, + 0x76, 0x7f, 0xab, 0x33, 0x39, 0x22, 0x4d, 0x22, 0x18, 0x27, 0x16, 0x21, + 0x3d, 0x2e, 0x1c, 0x04, 0x14, 0x4e, 0x7b, 0x56, 0x2d, 0x16, 0x19, 0x03, + 0x3f, 0xf8, 0x36, 0x26, 0x20, 0x9b, 0xa4, 0x56, 0x5c, 0x28, 0x2f, 0xfe, + 0xf5, 0x08, 0x0b, 0x10, 0x2c, 0x4c, 0x00, 0x02, 0x01, 0x03, 0x02, 0xc4, + 0x03, 0x52, 0x06, 0x36, 0x00, 0x13, 0x00, 0x24, 0x00, 0x3c, 0xb2, 0x1d, + 0x0d, 0x0a, 0xbb, 0x01, 0x65, 0x00, 0x09, 0x00, 0x14, 0x01, 0x66, 0xb5, + 0x00, 0x1c, 0x17, 0x95, 0x0d, 0x0f, 0xbc, 0x02, 0x80, 0x00, 0x0c, 0x02, + 0x7f, 0x00, 0x09, 0x02, 0x77, 0xb4, 0x1d, 0x20, 0x95, 0x08, 0x05, 0xb8, + 0x02, 0x7b, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x33, 0x33, 0x30, 0x31, 0x01, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x35, 0x33, 0x11, 0x23, 0x27, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x35, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x03, 0x2e, 0x56, 0x78, + 0x4a, 0x18, 0x30, 0x17, 0xaa, 0x9d, 0x03, 0x52, 0x6f, 0x3b, 0x59, 0x3c, + 0x1e, 0xad, 0x2d, 0x32, 0x13, 0x23, 0x24, 0x27, 0x18, 0x17, 0x35, 0x1a, + 0x1b, 0x34, 0x29, 0x1a, 0x03, 0xfd, 0x4f, 0x7d, 0x55, 0x2d, 0x05, 0x05, + 0xf5, 0xfc, 0x98, 0x4b, 0x55, 0x2d, 0x52, 0x73, 0x4d, 0x62, 0x54, 0x0a, + 0x1a, 0x29, 0x20, 0xf7, 0x08, 0x07, 0x13, 0x2d, 0x48, 0x00, 0x00, 0x02, + 0x00, 0xff, 0x02, 0xc4, 0x03, 0x66, 0x05, 0x4c, 0x00, 0x1e, 0x00, 0x25, + 0x00, 0x44, 0xb1, 0x04, 0x25, 0xb8, 0x01, 0x67, 0xb3, 0x15, 0x0c, 0x0c, + 0x03, 0xb8, 0x01, 0x65, 0x40, 0x10, 0x1f, 0x1f, 0x15, 0x04, 0x90, 0x25, + 0x40, 0x09, 0x0e, 0x48, 0x25, 0x25, 0x07, 0x22, 0x92, 0x1a, 0xb8, 0x02, + 0x7b, 0xb4, 0x0c, 0x07, 0x95, 0x0d, 0x10, 0xb8, 0x02, 0x80, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x2b, 0xed, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, + 0x06, 0x07, 0x21, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, + 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x07, 0x36, 0x26, 0x23, 0x22, 0x06, 0x07, 0x03, 0x66, 0x02, 0x02, + 0xfe, 0x4d, 0x08, 0x52, 0x4b, 0x1b, 0x40, 0x41, 0x3d, 0x18, 0x35, 0x84, + 0x3d, 0x56, 0x7e, 0x53, 0x29, 0x2c, 0x51, 0x75, 0x48, 0x46, 0x70, 0x4e, + 0x29, 0xae, 0x02, 0x42, 0x45, 0x39, 0x42, 0x09, 0x04, 0x28, 0x16, 0x30, + 0x16, 0x3c, 0x43, 0x07, 0x0b, 0x0e, 0x07, 0x90, 0x0f, 0x11, 0x2c, 0x53, + 0x78, 0x4c, 0x42, 0x77, 0x58, 0x34, 0x29, 0x4b, 0x6d, 0x22, 0x42, 0x3b, + 0x43, 0x3a, 0x00, 0x02, 0x00, 0xff, 0x02, 0xc4, 0x03, 0x67, 0x05, 0x4c, + 0x00, 0x1e, 0x00, 0x25, 0x00, 0x47, 0xb1, 0x25, 0x15, 0xb8, 0x01, 0x67, + 0xb2, 0x04, 0x04, 0x1f, 0xb8, 0x01, 0x67, 0xb6, 0x00, 0x0c, 0x0c, 0x00, + 0x04, 0x90, 0x25, 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x09, 0x0e, 0x48, 0x25, + 0x25, 0x07, 0x22, 0x92, 0x1a, 0xb8, 0x02, 0x80, 0xb4, 0x0c, 0x07, 0x95, + 0x0d, 0x10, 0xb8, 0x02, 0x7b, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0x2b, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, + 0x2f, 0xed, 0x33, 0x30, 0x31, 0x13, 0x34, 0x36, 0x37, 0x21, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x06, 0x16, 0x33, + 0x32, 0x36, 0x37, 0xff, 0x03, 0x02, 0x01, 0xb3, 0x08, 0x52, 0x4b, 0x1b, + 0x40, 0x41, 0x3d, 0x18, 0x35, 0x83, 0x3d, 0x56, 0x7f, 0x53, 0x29, 0x2c, + 0x51, 0x75, 0x48, 0x47, 0x70, 0x4e, 0x29, 0xaf, 0x02, 0x41, 0x45, 0x39, + 0x43, 0x09, 0x03, 0xe7, 0x16, 0x30, 0x16, 0x3c, 0x44, 0x07, 0x0c, 0x0e, + 0x06, 0x90, 0x0e, 0x12, 0x2c, 0x54, 0x78, 0x4c, 0x42, 0x76, 0x58, 0x34, + 0x29, 0x4b, 0x6c, 0x23, 0x42, 0x3b, 0x42, 0x3b, 0x00, 0x01, 0x01, 0x0d, + 0x02, 0xc4, 0x03, 0x5a, 0x05, 0x4e, 0x00, 0x3a, 0x00, 0x49, 0xb7, 0x2a, + 0x3a, 0x1b, 0x1b, 0x3a, 0x3a, 0x0d, 0x30, 0xbb, 0x01, 0x67, 0x00, 0x0a, + 0x00, 0x23, 0x01, 0x67, 0x40, 0x14, 0x10, 0x10, 0x0a, 0x0d, 0x2b, 0x93, + 0x28, 0x28, 0x15, 0x00, 0x05, 0x96, 0x3a, 0x35, 0x6e, 0x1b, 0x1e, 0x95, + 0x1a, 0x15, 0xb8, 0x02, 0x7b, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0xed, + 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x30, 0x31, 0x01, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x15, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x03, 0x5a, 0x1d, 0x41, 0x40, 0x3b, 0x18, 0x5b, 0x84, 0x55, 0x28, 0x3e, + 0x31, 0x2a, 0x29, 0x21, 0x48, 0x71, 0x50, 0x1c, 0x40, 0x43, 0x42, 0x1e, + 0x48, 0x7e, 0x2d, 0x26, 0x34, 0x20, 0x0d, 0x0b, 0x1d, 0x34, 0x2a, 0xad, + 0xad, 0x30, 0x3e, 0x23, 0x0e, 0x10, 0x29, 0x47, 0x36, 0x0e, 0x32, 0x3f, + 0x45, 0x21, 0x02, 0xdd, 0x06, 0x0a, 0x06, 0x03, 0x1e, 0x35, 0x49, 0x2b, + 0x36, 0x49, 0x13, 0x15, 0x46, 0x2a, 0x25, 0x3f, 0x2e, 0x1a, 0x04, 0x08, + 0x0a, 0x06, 0x8f, 0x0f, 0x11, 0x06, 0x0c, 0x13, 0x0d, 0x0f, 0x17, 0x0e, + 0x07, 0x87, 0x09, 0x11, 0x1a, 0x10, 0x0f, 0x16, 0x0e, 0x07, 0x05, 0x09, + 0x0d, 0x09, 0x00, 0x01, 0x01, 0x08, 0x02, 0xc4, 0x03, 0x55, 0x05, 0x4e, + 0x00, 0x38, 0x00, 0x4e, 0xb9, 0x00, 0x10, 0x01, 0x67, 0xb3, 0x21, 0x21, + 0x0d, 0x0a, 0xb8, 0x01, 0x67, 0x40, 0x14, 0x2e, 0x2e, 0x1b, 0x38, 0x38, + 0x1b, 0x27, 0x27, 0x1b, 0x0d, 0x27, 0x93, 0x28, 0x28, 0x05, 0x1b, 0x1e, + 0x95, 0x1a, 0x15, 0xb8, 0x02, 0x80, 0xb4, 0x38, 0x33, 0x96, 0x00, 0x05, + 0xb8, 0x02, 0x7b, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0xed, 0x33, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x3e, + 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x01, 0x08, + 0x1d, 0x41, 0x40, 0x3b, 0x18, 0x5b, 0x84, 0x55, 0x28, 0x3e, 0x31, 0x2a, + 0x29, 0x22, 0x48, 0x71, 0x4f, 0x1c, 0x40, 0x43, 0x42, 0x1e, 0x48, 0x7e, + 0x2d, 0x4c, 0x3b, 0x0b, 0x1d, 0x34, 0x2a, 0xad, 0xad, 0x30, 0x3e, 0x23, + 0x0e, 0x10, 0x29, 0x47, 0x36, 0x0e, 0x32, 0x3f, 0x45, 0x21, 0x05, 0x35, + 0x06, 0x0a, 0x06, 0x03, 0x1e, 0x35, 0x49, 0x2b, 0x36, 0x49, 0x13, 0x15, + 0x46, 0x2a, 0x25, 0x3f, 0x2e, 0x1a, 0x04, 0x08, 0x0a, 0x06, 0x8f, 0x0f, + 0x11, 0x18, 0x1a, 0x0f, 0x17, 0x0e, 0x07, 0x87, 0x09, 0x11, 0x19, 0x11, + 0x0f, 0x16, 0x0e, 0x07, 0x05, 0x09, 0x0d, 0x09, 0x00, 0x03, 0x00, 0xf2, + 0x01, 0xd6, 0x03, 0x7e, 0x05, 0x4b, 0x00, 0x34, 0x00, 0x43, 0x00, 0x4f, + 0x00, 0x82, 0xb3, 0x34, 0x34, 0x00, 0x02, 0xb8, 0x01, 0x65, 0xb3, 0x32, + 0x4a, 0x4a, 0x14, 0xb8, 0x01, 0x67, 0xb3, 0x3d, 0x3d, 0x1e, 0x44, 0xb8, + 0x01, 0x66, 0xb5, 0x27, 0x2a, 0x2a, 0x1e, 0x41, 0x0d, 0xb8, 0x01, 0x56, + 0xb2, 0x24, 0x24, 0x35, 0xb8, 0x01, 0x67, 0x40, 0x1e, 0x21, 0x1e, 0x21, + 0x40, 0x90, 0x5b, 0x11, 0x01, 0x3f, 0x11, 0x4f, 0x11, 0x02, 0x02, 0x11, + 0x27, 0x0a, 0x07, 0x90, 0x47, 0x47, 0x2f, 0x38, 0x00, 0x90, 0x32, 0x32, + 0x4d, 0x90, 0x2f, 0xb8, 0x02, 0x7b, 0xb2, 0x38, 0x90, 0x19, 0xb8, 0x02, + 0x81, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x12, 0x39, + 0x2f, 0xfd, 0x32, 0x32, 0xde, 0x5f, 0x5d, 0x5d, 0xed, 0x39, 0x01, 0x2f, + 0x33, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x11, + 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x31, 0x30, + 0x01, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, + 0x15, 0x14, 0x16, 0x17, 0x17, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x36, + 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x33, + 0x15, 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x27, + 0x27, 0x06, 0x06, 0x13, 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x03, 0x29, 0x15, 0x27, 0x45, 0x62, 0x3a, 0x23, 0x47, + 0x1a, 0x07, 0x07, 0x20, 0x29, 0xb6, 0x67, 0x72, 0x25, 0x51, 0x81, 0x5b, + 0x57, 0x77, 0x49, 0x21, 0x28, 0x20, 0x1c, 0x14, 0x25, 0x20, 0x1a, 0x1c, + 0x29, 0x4a, 0x64, 0x3c, 0x18, 0x31, 0x0d, 0xfc, 0xfe, 0x25, 0x47, 0x48, + 0x2d, 0x3c, 0x22, 0x0e, 0x35, 0x36, 0x8c, 0x1a, 0x17, 0x21, 0x37, 0x31, + 0x36, 0x32, 0x37, 0x31, 0x36, 0x32, 0x04, 0xcc, 0x27, 0x32, 0x33, 0x52, + 0x3a, 0x20, 0x0b, 0x0e, 0x0b, 0x10, 0x0b, 0x11, 0x20, 0x02, 0x07, 0x04, + 0x4c, 0x51, 0x2b, 0x4e, 0x3a, 0x23, 0x19, 0x2e, 0x3e, 0x26, 0x29, 0x41, + 0x1a, 0x17, 0x33, 0x1d, 0x26, 0x37, 0x1d, 0x1d, 0x40, 0x2b, 0x32, 0x51, + 0x3a, 0x20, 0x05, 0x03, 0x77, 0xfd, 0xbe, 0x20, 0x15, 0x0c, 0x15, 0x1b, + 0x10, 0x1a, 0x0e, 0x03, 0x07, 0x13, 0x22, 0x01, 0xd2, 0x31, 0x2e, 0x35, + 0x2a, 0x30, 0x28, 0x32, 0x00, 0x02, 0x01, 0x19, 0x01, 0xbb, 0x03, 0x4c, + 0x05, 0x43, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x3f, 0xb9, 0x00, 0x19, 0x01, + 0xbb, 0xb7, 0x0f, 0x0f, 0x04, 0x08, 0x08, 0x01, 0x01, 0x09, 0xb8, 0x01, + 0x66, 0xb7, 0x04, 0x05, 0x05, 0x04, 0x09, 0x05, 0x96, 0x06, 0xb8, 0x02, + 0x7c, 0xb5, 0x0a, 0xc0, 0x14, 0x00, 0x96, 0x03, 0xb8, 0x02, 0x7f, 0x00, + 0x3f, 0xed, 0xde, 0xed, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, + 0x33, 0x15, 0x21, 0x11, 0x23, 0x35, 0x21, 0x15, 0x23, 0x03, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x02, 0x7e, 0xb9, 0xfe, 0x9b, 0xb9, 0x02, 0x33, 0xce, 0x34, 0x18, + 0x2a, 0x1f, 0x12, 0x12, 0x1f, 0x2a, 0x18, 0x18, 0x29, 0x1f, 0x12, 0x12, + 0x1f, 0x29, 0x03, 0x5a, 0x8c, 0x01, 0xe9, 0x8c, 0x8c, 0xfd, 0x04, 0x11, + 0x1d, 0x26, 0x16, 0x16, 0x27, 0x1d, 0x11, 0x11, 0x1d, 0x27, 0x16, 0x16, + 0x26, 0x1d, 0x11, 0x00, 0x00, 0x01, 0x01, 0x2a, 0x02, 0xce, 0x03, 0xa0, + 0x06, 0x36, 0x00, 0x0c, 0x00, 0x3e, 0xb2, 0x0c, 0x02, 0x06, 0xb8, 0x01, + 0x64, 0x40, 0x0e, 0x05, 0x0b, 0x0a, 0x0a, 0x00, 0x01, 0x01, 0x05, 0x07, + 0x02, 0x0c, 0x0c, 0x01, 0x0a, 0xbe, 0x02, 0x7c, 0x00, 0x05, 0x02, 0x77, + 0x00, 0x04, 0x02, 0x7f, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x3f, + 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x32, 0x32, + 0x2f, 0x33, 0x10, 0xed, 0x32, 0x32, 0x31, 0x30, 0x01, 0x23, 0x03, 0x11, + 0x23, 0x11, 0x33, 0x11, 0x36, 0x36, 0x37, 0x33, 0x01, 0x03, 0xa0, 0xde, + 0xef, 0xa9, 0xa9, 0x3b, 0x72, 0x39, 0xdb, 0xfe, 0xde, 0x02, 0xce, 0x01, + 0x19, 0xfe, 0xe7, 0x03, 0x68, 0xfe, 0x1f, 0x3c, 0x77, 0x3b, 0xfe, 0xdc, + 0x00, 0x01, 0x00, 0xc1, 0x02, 0xce, 0x03, 0xa4, 0x05, 0x4e, 0x00, 0x23, + 0x00, 0x5e, 0xb1, 0x16, 0x12, 0xb8, 0x01, 0x63, 0xb2, 0x13, 0x1c, 0x08, + 0xb8, 0x01, 0x56, 0xb3, 0x09, 0x09, 0x13, 0x23, 0xb8, 0x01, 0x56, 0xb5, + 0x00, 0x00, 0x13, 0x04, 0x95, 0x1f, 0xb8, 0x02, 0x7b, 0x40, 0x0a, 0x1c, + 0x16, 0x16, 0x19, 0x07, 0x11, 0x11, 0x0c, 0x95, 0x19, 0x41, 0x09, 0x02, + 0x7b, 0x00, 0x14, 0x02, 0x7c, 0x00, 0x13, 0x02, 0x7f, 0x00, 0x09, 0x02, + 0x7f, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0xed, + 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x3f, 0xed, 0x01, 0x2f, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x10, 0xed, 0x32, 0x31, 0x30, + 0x01, 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x34, + 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, + 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x03, + 0x03, 0x10, 0x0e, 0x13, 0x2d, 0x1d, 0xa1, 0x1f, 0x09, 0x15, 0x18, 0x1d, + 0x12, 0xa2, 0x91, 0x01, 0x1a, 0x51, 0x2c, 0x37, 0x3e, 0x0e, 0x18, 0x52, + 0x2f, 0x54, 0x4a, 0x02, 0xce, 0x01, 0xca, 0x16, 0x15, 0x36, 0x45, 0xfe, + 0x86, 0x01, 0xcb, 0x2a, 0x0b, 0x1d, 0x30, 0x25, 0xfe, 0x88, 0x02, 0x75, + 0x57, 0x2b, 0x37, 0x34, 0x2a, 0x27, 0x37, 0x5e, 0x60, 0xfe, 0x3e, 0x00, + 0x00, 0x01, 0x01, 0x19, 0x02, 0xce, 0x03, 0x4d, 0x05, 0x4e, 0x00, 0x15, + 0x00, 0x34, 0xb1, 0x02, 0x14, 0x41, 0x09, 0x01, 0x65, 0x00, 0x15, 0x00, + 0x09, 0x01, 0x65, 0x00, 0x0a, 0x00, 0x15, 0x02, 0x7f, 0x00, 0x0a, 0x02, + 0x7f, 0xb4, 0x13, 0x0e, 0x96, 0x02, 0x05, 0xba, 0x02, 0x7b, 0x00, 0x00, + 0x02, 0x7c, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x01, 0x2f, + 0xed, 0x2f, 0xed, 0x32, 0x31, 0x30, 0x01, 0x33, 0x17, 0x36, 0x36, 0x33, + 0x32, 0x16, 0x15, 0x11, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x07, 0x11, 0x23, 0x01, 0x19, 0x9e, 0x03, 0x2a, 0x5d, 0x33, 0x6b, 0x6e, + 0xaa, 0x1b, 0x29, 0x11, 0x20, 0x24, 0x2c, 0x1b, 0xaa, 0x05, 0x43, 0x52, + 0x2b, 0x32, 0x74, 0x76, 0xfe, 0x6a, 0x01, 0x7a, 0x3d, 0x3b, 0x0b, 0x19, + 0x2b, 0x20, 0xfe, 0x7d, 0x00, 0x02, 0x00, 0xf9, 0x02, 0xc4, 0x03, 0x6d, + 0x05, 0x4e, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x28, 0xb9, 0x00, 0x00, 0x01, + 0x66, 0xb2, 0x10, 0x10, 0x17, 0xb8, 0x01, 0x66, 0xb3, 0x08, 0x12, 0x96, + 0x0d, 0xb8, 0x02, 0x7b, 0xb2, 0x1a, 0x96, 0x05, 0xb8, 0x02, 0x80, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x31, 0x30, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x07, 0x34, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x03, 0x6d, 0x2a, 0x52, 0x77, 0x4d, 0x96, 0x9e, 0x2a, + 0x51, 0x77, 0x4e, 0x95, 0x9f, 0xad, 0x8e, 0x28, 0x36, 0x21, 0x0e, 0x48, + 0x45, 0x28, 0x37, 0x21, 0x0e, 0x04, 0x0e, 0x4a, 0x79, 0x57, 0x30, 0xa4, + 0x9d, 0x49, 0x79, 0x57, 0x30, 0xa3, 0xa2, 0xb8, 0x1e, 0x33, 0x43, 0x24, + 0x5c, 0x5c, 0x1e, 0x33, 0x43, 0x00, 0x00, 0x01, 0x01, 0x25, 0x02, 0xc6, + 0x03, 0x42, 0x05, 0x4c, 0x00, 0x1f, 0x00, 0x2f, 0xb9, 0x00, 0x06, 0x01, + 0x66, 0x40, 0x0b, 0x17, 0x17, 0x0f, 0x1f, 0x1f, 0x0f, 0x0f, 0x12, 0x96, + 0x0e, 0x0b, 0xb8, 0x02, 0x80, 0xb3, 0x1f, 0x1c, 0x96, 0x03, 0xb8, 0x02, + 0x7b, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x01, 0x25, 0x33, 0x70, 0x32, 0x9e, 0xaa, 0x2e, 0x57, 0x7c, 0x4e, 0x35, + 0x69, 0x30, 0x36, 0x64, 0x29, 0x23, 0x3e, 0x2f, 0x1c, 0x18, 0x2e, 0x42, + 0x29, 0x27, 0x64, 0x33, 0x05, 0x27, 0x13, 0x12, 0xa1, 0x9d, 0x4a, 0x79, + 0x56, 0x2f, 0x10, 0x12, 0xa1, 0x1c, 0x19, 0x16, 0x2d, 0x45, 0x2f, 0x31, + 0x44, 0x2a, 0x13, 0x19, 0x1a, 0x00, 0x00, 0x01, 0x00, 0xea, 0x03, 0xf7, + 0x03, 0x7c, 0x05, 0x49, 0x00, 0x13, 0x00, 0x25, 0xb9, 0x00, 0x0a, 0x01, + 0x67, 0xb2, 0x0b, 0x0b, 0x13, 0xb8, 0x01, 0x67, 0xb6, 0x00, 0x0b, 0x00, + 0x00, 0x0e, 0xa3, 0x05, 0xb8, 0x02, 0x7b, 0x00, 0x3f, 0xed, 0x32, 0x2f, + 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x13, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x23, 0x34, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0xea, 0x2a, 0x52, 0x79, 0x4f, 0x4a, 0x7b, 0x58, 0x31, 0xb2, + 0x52, 0x46, 0x2c, 0x39, 0x23, 0x0e, 0x03, 0xf7, 0x4d, 0x7d, 0x58, 0x30, + 0x2d, 0x57, 0x7e, 0x50, 0x5d, 0x55, 0x1a, 0x2f, 0x41, 0x28, 0x00, 0x01, + 0x00, 0xea, 0x02, 0xc4, 0x03, 0x7c, 0x04, 0x16, 0x00, 0x13, 0x00, 0x25, + 0xb9, 0x00, 0x09, 0x01, 0x67, 0xb2, 0x08, 0x08, 0x00, 0xb8, 0x01, 0x67, + 0xb6, 0x13, 0x08, 0x13, 0x13, 0x05, 0xa3, 0x0e, 0xb8, 0x02, 0x80, 0x00, + 0x3f, 0xed, 0x32, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, + 0x31, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x33, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0x9c, 0x0e, 0x23, 0x39, 0x2c, + 0x46, 0x52, 0xb2, 0x31, 0x58, 0x7b, 0x4a, 0x4f, 0x79, 0x52, 0x2a, 0x04, + 0x16, 0x28, 0x41, 0x2f, 0x1a, 0x55, 0x5d, 0x51, 0x7d, 0x57, 0x2d, 0x30, + 0x58, 0x7d, 0x4d, 0x00, 0x00, 0x02, 0x01, 0x14, 0x01, 0xdc, 0x03, 0x66, + 0x05, 0x4e, 0x00, 0x14, 0x00, 0x21, 0x00, 0x40, 0xb2, 0x0d, 0x09, 0x1c, + 0xbb, 0x01, 0x65, 0x00, 0x0a, 0x00, 0x00, 0x01, 0x66, 0xb7, 0x15, 0x15, + 0x0a, 0x1b, 0x18, 0x96, 0x0d, 0x10, 0xbc, 0x02, 0x7b, 0x00, 0x0b, 0x02, + 0x7c, 0x00, 0x0a, 0x02, 0x81, 0xb4, 0x1c, 0x1f, 0x90, 0x08, 0x05, 0xb8, + 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x32, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x15, 0x23, 0x11, 0x33, + 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x11, 0x16, 0x16, 0x33, 0x32, 0x36, 0x03, 0x66, 0x32, 0x57, + 0x78, 0x46, 0x1a, 0x2f, 0x18, 0xaa, 0x9d, 0x05, 0x2b, 0x5f, 0x3a, 0x3a, + 0x59, 0x3b, 0x1e, 0xab, 0x33, 0x39, 0x22, 0x45, 0x2a, 0x17, 0x27, 0x17, + 0x52, 0x56, 0x04, 0x14, 0x54, 0x7c, 0x53, 0x29, 0x02, 0x04, 0xf2, 0x03, + 0x67, 0x42, 0x2c, 0x21, 0x2b, 0x51, 0x75, 0x4e, 0x56, 0x5c, 0x28, 0x37, + 0xfe, 0xfd, 0x08, 0x0b, 0x5b, 0x00, 0x00, 0x01, 0x00, 0xe8, 0x02, 0xc6, + 0x03, 0x58, 0x06, 0x06, 0x00, 0x16, 0x00, 0x41, 0xb3, 0x0f, 0x0f, 0x0d, + 0x10, 0xb8, 0x01, 0x65, 0x40, 0x10, 0x07, 0x16, 0x16, 0x0a, 0x08, 0x08, + 0x07, 0x10, 0x07, 0x96, 0x0a, 0x0d, 0x0a, 0x0c, 0x0c, 0x0a, 0xb8, 0x02, + 0x7c, 0xb4, 0x16, 0x13, 0x96, 0x00, 0x03, 0xb8, 0x02, 0x80, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0x32, 0x2f, 0x32, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x30, + 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, + 0x35, 0x37, 0x15, 0x21, 0x15, 0x21, 0x15, 0x14, 0x33, 0x32, 0x36, 0x37, + 0x03, 0x58, 0x2f, 0x57, 0x2a, 0x80, 0x92, 0xae, 0xae, 0xaa, 0x01, 0x18, + 0xfe, 0xe8, 0x78, 0x1d, 0x50, 0x33, 0x02, 0xdc, 0x0c, 0x0a, 0x6e, 0x72, + 0x01, 0x11, 0x8c, 0xa0, 0x23, 0xc3, 0x8c, 0xf6, 0x6d, 0x0b, 0x0d, 0x00, + 0x00, 0x01, 0x01, 0x19, 0x02, 0xc4, 0x03, 0x4d, 0x05, 0x43, 0x00, 0x14, + 0x00, 0x35, 0xb9, 0x00, 0x14, 0x01, 0x65, 0xb3, 0x02, 0x13, 0x13, 0x0c, + 0xbd, 0x01, 0x65, 0x00, 0x0b, 0x00, 0x13, 0x02, 0x7c, 0x00, 0x0b, 0x02, + 0x7c, 0xb4, 0x12, 0x0f, 0x96, 0x02, 0x05, 0xba, 0x02, 0x80, 0x00, 0x01, + 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, 0x01, 0x23, 0x27, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x36, + 0x37, 0x11, 0x33, 0x03, 0x4d, 0x9c, 0x05, 0x26, 0x4f, 0x33, 0x35, 0x57, + 0x3d, 0x22, 0xaa, 0x57, 0x27, 0x42, 0x20, 0xaa, 0x02, 0xce, 0x3e, 0x26, + 0x22, 0x1d, 0x3a, 0x58, 0x3b, 0x01, 0x95, 0xfe, 0x87, 0x78, 0x2a, 0x33, + 0x01, 0x94, 0x00, 0x01, 0x00, 0xf0, 0x02, 0xf1, 0x03, 0x77, 0x05, 0x1d, + 0x00, 0x13, 0x00, 0x31, 0xb3, 0x02, 0x01, 0x01, 0x05, 0xb8, 0x01, 0x56, + 0x40, 0x0e, 0x11, 0x0e, 0x0e, 0x13, 0x0a, 0x0a, 0x13, 0x02, 0x12, 0x13, + 0x09, 0x0a, 0x0a, 0x13, 0xb8, 0x02, 0x7e, 0x00, 0x3f, 0x33, 0x2f, 0xcd, + 0x10, 0xcd, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0xed, + 0x32, 0x2f, 0x32, 0x30, 0x31, 0x01, 0x15, 0x07, 0x16, 0x16, 0x15, 0x14, + 0x06, 0x23, 0x21, 0x35, 0x21, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x21, + 0x35, 0x03, 0x6c, 0x48, 0x2b, 0x28, 0x75, 0x79, 0xfe, 0x67, 0x01, 0x73, + 0x3c, 0x38, 0x2b, 0x3a, 0xfe, 0x7e, 0x05, 0x1d, 0x95, 0x04, 0x2f, 0x5d, + 0x31, 0x6a, 0x6c, 0xa3, 0x1c, 0x2c, 0x23, 0x4b, 0x31, 0xa2, 0x00, 0x01, + 0x00, 0xcb, 0x02, 0xc3, 0x03, 0x9a, 0x05, 0x43, 0x00, 0x28, 0x00, 0x57, + 0xb1, 0x1f, 0x0c, 0xb8, 0x01, 0x63, 0xb4, 0x09, 0x09, 0x28, 0x19, 0x16, + 0xb8, 0x01, 0x56, 0xb2, 0x15, 0x15, 0x00, 0xbb, 0x01, 0x63, 0x00, 0x28, + 0x00, 0x28, 0x02, 0x7c, 0x40, 0x0c, 0x19, 0x1f, 0x1f, 0x22, 0x14, 0x09, + 0x09, 0x0f, 0x04, 0x96, 0x1c, 0x22, 0xbe, 0x02, 0x80, 0x00, 0x18, 0x02, + 0x7f, 0x00, 0x15, 0x02, 0x7c, 0x00, 0x0a, 0x02, 0x7c, 0x00, 0x3f, 0x3f, + 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x12, 0x39, 0x2f, 0xed, + 0x33, 0x30, 0x31, 0x01, 0x11, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x33, + 0x11, 0x23, 0x35, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x01, 0x6d, 0x13, 0x0e, 0x07, 0x0f, 0x14, + 0x17, 0x0e, 0xa2, 0x13, 0x0f, 0x06, 0x0f, 0x15, 0x1c, 0x12, 0xa1, 0x8d, + 0x1a, 0x50, 0x27, 0x2d, 0x41, 0x0e, 0x19, 0x4e, 0x2f, 0x22, 0x3a, 0x2b, + 0x18, 0x05, 0x43, 0xfe, 0x36, 0x16, 0x14, 0x05, 0x14, 0x27, 0x22, 0x01, + 0x92, 0xfe, 0x35, 0x16, 0x13, 0x04, 0x13, 0x28, 0x25, 0x01, 0x90, 0xfd, + 0x8b, 0x39, 0x26, 0x1e, 0x27, 0x2a, 0x28, 0x29, 0x18, 0x2f, 0x47, 0x30, + 0x01, 0xc2, 0x00, 0x01, 0x00, 0xda, 0x02, 0xce, 0x03, 0x8c, 0x05, 0x43, + 0x00, 0x06, 0x00, 0x30, 0xb5, 0x06, 0x05, 0x02, 0x02, 0x00, 0x04, 0xb8, + 0x01, 0x67, 0xb2, 0x03, 0x03, 0x01, 0xb8, 0x01, 0x7a, 0xb2, 0x00, 0x02, + 0x06, 0xbb, 0x02, 0x7f, 0x00, 0x03, 0x00, 0x00, 0x02, 0x7c, 0x00, 0x3f, + 0x32, 0x3f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x11, + 0x33, 0x33, 0x30, 0x31, 0x13, 0x33, 0x13, 0x13, 0x33, 0x01, 0x23, 0xda, + 0xbc, 0x9e, 0xa1, 0xb7, 0xfe, 0xfd, 0xad, 0x05, 0x43, 0xfe, 0x40, 0x01, + 0xc0, 0xfd, 0x8b, 0x00, 0x00, 0x01, 0x00, 0xee, 0x02, 0xcc, 0x03, 0x78, + 0x05, 0x4b, 0x00, 0x2f, 0x00, 0x49, 0x40, 0x0e, 0x21, 0x0f, 0x00, 0x00, + 0x12, 0x1c, 0x1c, 0x28, 0x28, 0x08, 0x12, 0x12, 0x08, 0x17, 0xb8, 0x02, + 0x7b, 0x40, 0x10, 0x29, 0x2c, 0x2c, 0x04, 0x28, 0x25, 0x25, 0x21, 0x0f, + 0x00, 0x00, 0x08, 0x0b, 0x96, 0x07, 0x04, 0xb8, 0x02, 0x7f, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x33, 0x32, 0x2f, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x3f, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, + 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x01, 0x07, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x37, 0x26, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x17, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x26, 0x27, 0x02, 0x33, 0x38, 0x21, 0x5b, 0x35, 0x0f, 0x33, + 0x1a, 0x11, 0x25, 0x12, 0x18, 0x2d, 0x11, 0x2c, 0x38, 0x3f, 0x17, 0x37, + 0x5d, 0x46, 0x46, 0x5e, 0x38, 0x17, 0x10, 0x1e, 0x2d, 0x1c, 0x2b, 0x12, + 0x2d, 0x17, 0x14, 0x25, 0x10, 0x1b, 0x2f, 0x0e, 0x3a, 0x5a, 0x23, 0x03, + 0x4e, 0x3b, 0x23, 0x24, 0x03, 0x04, 0x8d, 0x02, 0x05, 0x0c, 0x11, 0x2b, + 0x2e, 0x63, 0x48, 0x23, 0x4a, 0x3d, 0x27, 0x27, 0x3d, 0x4a, 0x23, 0x25, + 0x3c, 0x34, 0x2e, 0x16, 0x2b, 0x11, 0x0d, 0x06, 0x02, 0x8d, 0x04, 0x03, + 0x22, 0x26, 0x00, 0x02, 0x01, 0x06, 0x01, 0xdc, 0x03, 0x63, 0x06, 0x3d, + 0x00, 0x1a, 0x00, 0x32, 0x00, 0x53, 0xb4, 0x28, 0x28, 0x23, 0x08, 0x32, + 0xbb, 0x01, 0x65, 0x00, 0x0b, 0x00, 0x15, 0x01, 0x66, 0xb3, 0x2c, 0x2c, + 0x18, 0x00, 0xb8, 0x01, 0x66, 0x40, 0x0c, 0x23, 0x23, 0x0b, 0x18, 0x27, + 0x96, 0x28, 0x28, 0x1e, 0x2f, 0x96, 0x10, 0xba, 0x02, 0x76, 0x00, 0x0a, + 0x02, 0x81, 0xb4, 0x1b, 0x1e, 0x96, 0x08, 0x05, 0xb8, 0x02, 0x80, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, + 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, + 0x11, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x27, 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x06, 0x07, 0x16, 0x16, 0x05, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x15, 0x03, 0x63, 0x2b, 0x4e, 0x6c, 0x40, 0x29, 0x48, + 0x1d, 0xaa, 0x24, 0x48, 0x6a, 0x46, 0x3d, 0x64, 0x45, 0x26, 0x2d, 0x26, + 0x3f, 0x49, 0xfe, 0x4d, 0x1d, 0x42, 0x27, 0x19, 0x2f, 0x24, 0x15, 0x46, + 0x51, 0x32, 0x25, 0x3c, 0x34, 0x34, 0x30, 0x36, 0x39, 0x03, 0xdd, 0x3c, + 0x67, 0x4b, 0x2a, 0x10, 0x0c, 0xfe, 0xfb, 0x03, 0x60, 0x34, 0x5d, 0x47, + 0x29, 0x23, 0x3e, 0x52, 0x2f, 0x33, 0x5b, 0x19, 0x19, 0x73, 0xae, 0x11, + 0x15, 0x0d, 0x1e, 0x33, 0x26, 0x3c, 0x45, 0x8f, 0x3b, 0x30, 0x2f, 0x2d, + 0x38, 0x3e, 0x00, 0x01, 0x00, 0xe8, 0x01, 0xdc, 0x03, 0x6b, 0x05, 0x47, + 0x00, 0x32, 0x00, 0x40, 0xb2, 0x2d, 0x20, 0x00, 0xb8, 0x01, 0x64, 0xb3, + 0x01, 0x01, 0x11, 0x27, 0xb8, 0x01, 0x66, 0xb7, 0x26, 0x26, 0x11, 0x20, + 0x2d, 0x2d, 0x01, 0x26, 0xb8, 0x02, 0x7c, 0xb4, 0x11, 0x0e, 0x90, 0x12, + 0x15, 0xba, 0x02, 0x7c, 0x00, 0x01, 0x02, 0x81, 0x00, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x32, 0x32, 0x30, 0x31, 0x01, 0x23, 0x35, 0x34, + 0x26, 0x27, 0x26, 0x26, 0x27, 0x26, 0x26, 0x27, 0x26, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x16, 0x16, + 0x17, 0x16, 0x16, 0x17, 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x33, 0x06, + 0x06, 0x07, 0x06, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x02, 0x83, 0xa9, 0x0d, + 0x08, 0x08, 0x17, 0x15, 0x1a, 0x2a, 0x10, 0x0b, 0x16, 0x11, 0x0b, 0x10, + 0x08, 0x1a, 0x29, 0x0d, 0x12, 0x27, 0x26, 0x22, 0x0e, 0x18, 0x3c, 0x1c, + 0x09, 0x0f, 0x04, 0x39, 0x34, 0x02, 0x01, 0xae, 0x02, 0x45, 0x3f, 0x16, + 0x33, 0x20, 0x01, 0x03, 0x02, 0x01, 0x01, 0xdc, 0x57, 0x39, 0x66, 0x2c, + 0x2d, 0x65, 0x45, 0x54, 0x65, 0x1a, 0x12, 0x11, 0x03, 0x02, 0x7a, 0x04, + 0x03, 0x04, 0x0e, 0x18, 0x13, 0x23, 0x86, 0x68, 0x20, 0x38, 0x1a, 0x69, + 0xb3, 0x59, 0x0d, 0x2c, 0x0e, 0x88, 0xef, 0x70, 0x26, 0x52, 0x30, 0x09, + 0x1e, 0x24, 0x26, 0x10, 0x00, 0x02, 0x00, 0xf2, 0x02, 0xc4, 0x03, 0x60, + 0x06, 0x3d, 0x00, 0x2b, 0x00, 0x3e, 0x00, 0x57, 0xb5, 0x2c, 0x31, 0x39, + 0x10, 0x10, 0x20, 0xb8, 0x01, 0x67, 0xb2, 0x39, 0x39, 0x31, 0xbb, 0x01, + 0x66, 0x00, 0x00, 0x00, 0x16, 0x01, 0x67, 0xb7, 0x05, 0x08, 0x08, 0x00, + 0x2c, 0x1b, 0x05, 0x05, 0xb8, 0xff, 0xe0, 0xb7, 0x09, 0x0e, 0x48, 0x05, + 0x0d, 0x34, 0x96, 0x27, 0xb8, 0x02, 0x80, 0xb4, 0x10, 0x13, 0x95, 0x0f, + 0x0d, 0xb8, 0x02, 0x76, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x11, + 0x39, 0x2b, 0x11, 0x33, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x10, + 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x12, 0x39, 0x30, 0x31, 0x13, + 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, + 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x04, 0x23, 0x22, 0x2e, 0x02, 0x01, 0x0e, + 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x27, 0xf2, 0x1d, 0x35, 0x49, 0x2c, 0x20, 0x1e, 0x1d, 0x3b, 0x5b, 0x3f, + 0x4f, 0x67, 0x3a, 0x5f, 0x21, 0x21, 0x1e, 0x24, 0x2f, 0x2e, 0x09, 0x27, + 0x3f, 0x2d, 0x19, 0x0c, 0x1e, 0x2f, 0x46, 0x5e, 0x3e, 0x4d, 0x73, 0x4d, + 0x26, 0x01, 0x39, 0x19, 0x32, 0x28, 0x19, 0x4c, 0x45, 0x23, 0x31, 0x1f, + 0x0e, 0x09, 0x16, 0x27, 0x1e, 0x03, 0xf1, 0x36, 0x60, 0x51, 0x3f, 0x15, + 0x1f, 0x37, 0x26, 0x21, 0x36, 0x28, 0x16, 0x14, 0x92, 0x0d, 0x10, 0x0b, + 0x0e, 0x08, 0x23, 0x25, 0x22, 0x08, 0x20, 0x41, 0x47, 0x52, 0x31, 0x21, + 0x47, 0x44, 0x3d, 0x2e, 0x1b, 0x30, 0x52, 0x6d, 0x01, 0x1b, 0x08, 0x1f, + 0x31, 0x48, 0x32, 0x55, 0x55, 0x19, 0x2b, 0x3a, 0x21, 0x19, 0x2f, 0x2f, + 0x2f, 0x1a, 0x00, 0x01, 0x00, 0xc7, 0x01, 0xdc, 0x03, 0x88, 0x06, 0x36, + 0x00, 0x1f, 0x00, 0x4c, 0xb1, 0x19, 0x1c, 0xb8, 0x01, 0x63, 0xb2, 0x13, + 0x00, 0x0f, 0xb8, 0x01, 0x56, 0xb6, 0x02, 0x0e, 0x0e, 0x08, 0x18, 0x13, + 0x09, 0xbd, 0x01, 0x63, 0x00, 0x08, 0x00, 0x18, 0x02, 0x7c, 0x00, 0x0e, + 0x02, 0x77, 0xb4, 0x1f, 0x10, 0x0d, 0x95, 0x02, 0xbc, 0x02, 0x7f, 0x00, + 0x08, 0x02, 0x7c, 0x00, 0x01, 0x02, 0x81, 0x00, 0x3f, 0x3f, 0x3f, 0xed, + 0x32, 0x33, 0x3f, 0x3f, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0x12, 0x39, 0x2f, + 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x23, 0x35, 0x2e, + 0x03, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x17, 0x11, 0x33, 0x11, 0x36, + 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x33, 0x16, 0x16, 0x15, 0x14, 0x06, + 0x07, 0x02, 0x72, 0xa1, 0x3c, 0x62, 0x46, 0x26, 0xa3, 0x32, 0x35, 0xa1, + 0x39, 0x3a, 0x03, 0x06, 0x08, 0x06, 0xa4, 0x08, 0x0e, 0x91, 0x85, 0x01, + 0xdc, 0xeb, 0x06, 0x25, 0x41, 0x60, 0x41, 0x01, 0x6f, 0xfe, 0xb3, 0x4b, + 0x4f, 0x0c, 0x02, 0xe6, 0xfd, 0x1d, 0x11, 0x6f, 0x69, 0x1e, 0x38, 0x3e, + 0x47, 0x2c, 0x46, 0x89, 0x42, 0x97, 0xbd, 0x17, 0x00, 0x01, 0x00, 0xc0, + 0x01, 0xd6, 0x03, 0x87, 0x05, 0x4e, 0x00, 0x29, 0x00, 0x54, 0x40, 0x16, + 0x29, 0x10, 0x28, 0x11, 0x11, 0x13, 0x27, 0x27, 0x28, 0x28, 0x06, 0x06, + 0x1c, 0x1c, 0x12, 0x29, 0x26, 0x10, 0x13, 0x13, 0x12, 0x27, 0xb8, 0x02, + 0x7c, 0xb4, 0x1c, 0x19, 0x90, 0x1d, 0x20, 0xba, 0x02, 0x7b, 0x00, 0x12, + 0x02, 0x81, 0xb4, 0x06, 0x03, 0x90, 0x07, 0x0a, 0xb8, 0x02, 0x81, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x12, 0x39, + 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x2f, + 0x33, 0x11, 0x39, 0x32, 0x11, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x16, + 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x27, 0x27, 0x03, 0x23, 0x01, 0x27, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x17, 0x13, 0x33, 0x03, + 0x03, 0x02, 0x10, 0x1f, 0x17, 0x13, 0x1b, 0x11, 0x1b, 0x37, 0x13, 0x26, + 0x38, 0x2c, 0x21, 0x0f, 0x4e, 0xa4, 0xb6, 0x01, 0x06, 0x67, 0x09, 0x0e, + 0x0d, 0x10, 0x0b, 0x15, 0x23, 0x0e, 0x1b, 0x37, 0x13, 0x2a, 0x39, 0x29, + 0x1e, 0x0f, 0x40, 0x8e, 0xb4, 0xee, 0x02, 0x9d, 0x29, 0x1a, 0x06, 0x03, + 0x82, 0x07, 0x04, 0x10, 0x21, 0x32, 0x23, 0xb2, 0xfe, 0xce, 0x01, 0xcf, + 0xdd, 0x14, 0x1a, 0x0f, 0x06, 0x06, 0x03, 0x81, 0x07, 0x04, 0x11, 0x22, + 0x32, 0x21, 0x8f, 0x01, 0x0a, 0xfe, 0x57, 0x00, 0x00, 0x02, 0x01, 0x18, + 0xff, 0x30, 0x03, 0x4b, 0x02, 0xb0, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x5a, + 0xb9, 0x00, 0x19, 0x01, 0xbb, 0xb6, 0x0f, 0x08, 0x08, 0x0f, 0x05, 0x05, + 0x04, 0xb8, 0x01, 0x66, 0x40, 0x2c, 0x09, 0x01, 0x01, 0x09, 0x04, 0x08, + 0x96, 0x07, 0x5e, 0x14, 0xc0, 0x0a, 0x01, 0x95, 0x10, 0x02, 0x20, 0x02, + 0x40, 0x02, 0x70, 0x02, 0x04, 0x90, 0x02, 0xb0, 0x02, 0xc0, 0x02, 0xe0, + 0x02, 0x04, 0x5f, 0x02, 0x6f, 0x02, 0x02, 0xcf, 0x02, 0x01, 0x80, 0x02, + 0x01, 0x02, 0x00, 0x2f, 0x5d, 0x5d, 0x71, 0x71, 0x72, 0xed, 0xde, 0xed, + 0x3f, 0xfd, 0xc4, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x2f, + 0x33, 0x2f, 0x10, 0xed, 0x30, 0x31, 0x01, 0x23, 0x35, 0x21, 0x11, 0x33, + 0x15, 0x21, 0x35, 0x33, 0x13, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x01, 0xe6, 0xb9, 0x01, + 0x65, 0xb9, 0xfd, 0xcd, 0xce, 0x35, 0x18, 0x2a, 0x1f, 0x12, 0x12, 0x1f, + 0x2a, 0x18, 0x18, 0x29, 0x1f, 0x12, 0x12, 0x1f, 0x29, 0x01, 0x1a, 0x8b, + 0xfe, 0x17, 0x8c, 0x8c, 0x02, 0x1f, 0x11, 0x1d, 0x26, 0x16, 0x16, 0x27, + 0x1d, 0x11, 0x11, 0x1d, 0x27, 0x16, 0x16, 0x26, 0x1d, 0x11, 0x00, 0x01, + 0x01, 0x34, 0xff, 0x30, 0x03, 0x74, 0x01, 0xb0, 0x00, 0x15, 0x00, 0x7e, + 0xb1, 0x02, 0x14, 0xbb, 0x01, 0x66, 0x00, 0x15, 0x00, 0x0a, 0x01, 0x65, + 0x40, 0x4e, 0x0b, 0x0b, 0x15, 0x15, 0x5e, 0x13, 0x0b, 0x0b, 0x0e, 0x9e, + 0x02, 0x54, 0x05, 0x74, 0x05, 0x94, 0x05, 0x03, 0x40, 0x05, 0x01, 0x14, + 0x05, 0x24, 0x05, 0x02, 0xc4, 0x05, 0xe4, 0x05, 0x02, 0xb0, 0x05, 0x01, + 0x02, 0x90, 0x05, 0x01, 0x5f, 0x05, 0x01, 0xcf, 0x05, 0x01, 0x80, 0x05, + 0x01, 0x05, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x70, 0x00, 0x04, 0x90, + 0x00, 0xb0, 0x00, 0xc0, 0x00, 0xe0, 0x00, 0x04, 0x5f, 0x00, 0x6f, 0x00, + 0x02, 0xcf, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0x00, 0x2f, 0x5d, 0x5d, + 0x71, 0x71, 0x72, 0x2f, 0x5d, 0x5d, 0x71, 0x71, 0x5f, 0x71, 0x71, 0x72, + 0x72, 0x72, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x3f, 0x01, 0x2f, 0x33, 0x2f, + 0xed, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x33, 0x17, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x07, 0x23, 0x36, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x11, 0x23, 0x01, 0x34, 0xa0, 0x02, 0x2a, 0x5e, 0x3e, 0x36, 0x52, 0x36, + 0x1a, 0x03, 0xaa, 0x02, 0x27, 0x26, 0x13, 0x22, 0x24, 0x29, 0x1a, 0xac, + 0x01, 0xa5, 0x52, 0x2d, 0x30, 0x29, 0x4c, 0x6b, 0x43, 0x4e, 0x42, 0x0b, + 0x1b, 0x2e, 0x22, 0xfe, 0x89, 0x00, 0xff, 0xff, 0x01, 0x19, 0xff, 0x27, + 0x03, 0x4d, 0x01, 0xa6, 0x03, 0x07, 0x06, 0xb4, 0x00, 0x00, 0xfc, 0x63, + 0x00, 0x09, 0xb3, 0x00, 0x01, 0x5e, 0x01, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0x00, 0xda, 0xff, 0x31, 0x03, 0x8c, 0x01, 0xa6, 0x03, 0x07, + 0x06, 0xb7, 0x00, 0x00, 0xfc, 0x63, 0x00, 0x09, 0xb3, 0x00, 0x06, 0x5e, + 0x06, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0x01, 0x06, 0xfe, 0x3c, + 0x03, 0x63, 0x02, 0x9d, 0x03, 0x07, 0x06, 0xb9, 0x00, 0x00, 0xfc, 0x60, + 0x00, 0x0b, 0xb4, 0x01, 0x00, 0x05, 0x5f, 0x05, 0x00, 0x11, 0x3f, 0x35, + 0x35, 0x00, 0xff, 0xff, 0x00, 0xe8, 0xfe, 0x3b, 0x03, 0x6b, 0x01, 0xa6, + 0x03, 0x07, 0x06, 0xba, 0x00, 0x00, 0xfc, 0x5f, 0x00, 0x4a, 0x40, 0x1b, + 0x00, 0x00, 0x40, 0x30, 0x30, 0x48, 0x00, 0x40, 0x2a, 0x2a, 0x48, 0x00, + 0x40, 0x27, 0x27, 0x48, 0x00, 0x40, 0x25, 0x25, 0x48, 0x00, 0x40, 0x20, + 0x21, 0x48, 0x00, 0xb8, 0xff, 0xc0, 0xb3, 0x1f, 0x1f, 0x48, 0x00, 0xb8, + 0xff, 0xc0, 0x40, 0x13, 0x19, 0x19, 0x48, 0x00, 0x40, 0x11, 0x11, 0x48, + 0x00, 0x40, 0x0d, 0x0d, 0x48, 0x00, 0x40, 0x0a, 0x0a, 0x48, 0x00, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0x00, 0x02, 0x01, 0x14, 0xfe, 0x3e, 0x03, 0x66, 0x01, 0xb0, 0x00, 0x14, + 0x00, 0x23, 0x00, 0x2d, 0xb9, 0x00, 0x00, 0x01, 0x66, 0xb2, 0x15, 0x1e, + 0x09, 0xb8, 0x01, 0x65, 0x40, 0x0d, 0x0a, 0x1a, 0x96, 0x10, 0x1e, 0x21, + 0x96, 0x05, 0x0a, 0x0a, 0x08, 0x05, 0x5e, 0x00, 0x3f, 0x33, 0x33, 0x2f, + 0x10, 0xed, 0x32, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x30, + 0x31, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x11, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x06, 0x15, 0x15, 0x16, 0x16, 0x33, 0x32, 0x36, 0x03, 0x66, 0x2e, + 0x50, 0x6b, 0x3d, 0x22, 0x44, 0x1c, 0xaa, 0x24, 0x4a, 0x73, 0x4e, 0x4e, + 0x6e, 0x46, 0x21, 0xab, 0x0d, 0x1e, 0x30, 0x22, 0x3c, 0x44, 0x19, 0x3d, + 0x1c, 0x41, 0x4a, 0x76, 0x53, 0x7d, 0x54, 0x2a, 0x0b, 0x0b, 0xff, 0x00, + 0x02, 0x45, 0x3e, 0x6e, 0x52, 0x2f, 0x30, 0x54, 0x73, 0x47, 0x25, 0x41, + 0x30, 0x1b, 0x51, 0x58, 0xa9, 0x0e, 0x0c, 0x5b, 0xff, 0xff, 0x00, 0xc7, + 0xfe, 0x3f, 0x03, 0x88, 0x02, 0x99, 0x03, 0x07, 0x06, 0xbc, 0x00, 0x00, + 0xfc, 0x63, 0x00, 0x09, 0xb3, 0x00, 0x02, 0x5f, 0x02, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0xc0, 0xfe, 0x39, 0x03, 0x87, 0x01, 0xb1, + 0x03, 0x07, 0x06, 0xbd, 0x00, 0x00, 0xfc, 0x63, 0x00, 0x4a, 0x40, 0x1b, + 0x00, 0x00, 0x40, 0x30, 0x30, 0x48, 0x00, 0x40, 0x2a, 0x2a, 0x48, 0x00, + 0x40, 0x27, 0x27, 0x48, 0x00, 0x40, 0x25, 0x25, 0x48, 0x00, 0x40, 0x20, + 0x21, 0x48, 0x00, 0xb8, 0xff, 0xc0, 0xb3, 0x1f, 0x1f, 0x48, 0x00, 0xb8, + 0xff, 0xc0, 0x40, 0x13, 0x19, 0x19, 0x48, 0x00, 0x40, 0x11, 0x11, 0x48, + 0x00, 0x40, 0x0d, 0x0d, 0x48, 0x00, 0x40, 0x0a, 0x0a, 0x48, 0x00, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, + 0x00, 0x02, 0x00, 0x41, 0xff, 0xe9, 0x04, 0x34, 0x04, 0x0a, 0x00, 0x38, + 0x00, 0x43, 0x00, 0x74, 0xb2, 0x2b, 0x2b, 0x1d, 0xb8, 0x01, 0xac, 0xb4, + 0x3f, 0x34, 0x3e, 0x21, 0x14, 0xb8, 0x01, 0xa7, 0xb5, 0x13, 0x13, 0x06, + 0x3f, 0x3f, 0x07, 0xb8, 0x01, 0xab, 0x40, 0x1b, 0x06, 0x21, 0xcd, 0x00, + 0x3e, 0x01, 0x60, 0x3e, 0x70, 0x3e, 0xf0, 0x3e, 0x03, 0x3e, 0x3e, 0x18, + 0x2b, 0x26, 0xfb, 0x2c, 0x31, 0x52, 0x39, 0xf7, 0x18, 0x50, 0x15, 0xb8, + 0xff, 0xe8, 0x40, 0x0a, 0x14, 0x1d, 0x48, 0x15, 0x13, 0x4f, 0x06, 0x4f, + 0x12, 0x0d, 0xb8, 0x01, 0x01, 0xb2, 0x34, 0x00, 0x52, 0x00, 0x3f, 0x32, + 0xed, 0x32, 0x3f, 0x3f, 0x33, 0x2b, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x2f, 0x5d, 0x71, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x32, 0x39, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, + 0x05, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x37, 0x11, 0x33, 0x15, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x06, 0x07, 0x21, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, + 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x0e, 0x03, 0x01, 0x22, + 0x0e, 0x02, 0x07, 0x33, 0x34, 0x2e, 0x02, 0x01, 0x46, 0x53, 0x67, 0x38, + 0x13, 0xd8, 0x05, 0x0f, 0x1c, 0x18, 0x10, 0x1a, 0x15, 0x10, 0x06, 0xd2, + 0x20, 0x46, 0x2d, 0x48, 0x69, 0x46, 0x22, 0x03, 0x04, 0xfe, 0x56, 0x02, + 0x16, 0x2a, 0x3d, 0x29, 0x19, 0x3a, 0x3c, 0x3c, 0x1b, 0x1b, 0x43, 0x47, + 0x46, 0x1e, 0x4b, 0x7b, 0x2a, 0x18, 0x2e, 0x32, 0x39, 0x01, 0x8f, 0x1b, + 0x2a, 0x1d, 0x10, 0x01, 0xd8, 0x0c, 0x19, 0x26, 0x17, 0x2e, 0x57, 0x80, + 0x53, 0x02, 0xb7, 0xfd, 0x44, 0x21, 0x35, 0x25, 0x13, 0x0c, 0x14, 0x18, + 0x0b, 0x03, 0x07, 0x26, 0x1d, 0x1b, 0x41, 0x76, 0xa5, 0x64, 0x37, 0x3f, + 0x18, 0x3f, 0x66, 0x48, 0x27, 0x08, 0x0e, 0x13, 0x0c, 0xbd, 0x0c, 0x14, + 0x0f, 0x08, 0x38, 0x31, 0x18, 0x27, 0x1b, 0x0f, 0x03, 0x66, 0x21, 0x3c, + 0x54, 0x33, 0x32, 0x54, 0x3c, 0x22, 0xff, 0xff, 0xfe, 0xd5, 0xff, 0xee, + 0x04, 0x1d, 0x05, 0x99, 0x02, 0x27, 0x01, 0x45, 0xfe, 0xd5, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x84, 0x00, 0x00, 0xff, 0xff, 0x00, 0x4c, 0xff, 0xe9, + 0x04, 0xcf, 0x05, 0x85, 0x02, 0x26, 0x00, 0x86, 0x00, 0x00, 0x00, 0x07, + 0x01, 0x45, 0x01, 0x23, 0xff, 0xd6, 0xff, 0xff, 0xff, 0xc2, 0x00, 0x00, + 0x04, 0x1b, 0x05, 0x98, 0x02, 0x26, 0x00, 0x88, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x45, 0xff, 0xc2, 0xfc, 0xdd, 0x00, 0x33, 0xb1, 0x02, 0x2c, 0xb8, + 0xff, 0xc0, 0xb3, 0x2a, 0x2a, 0x48, 0x2c, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1c, 0x48, 0x2c, 0xb8, 0xff, 0xc0, 0xb3, 0x18, 0x18, 0x48, 0x2c, 0xb8, + 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, 0x2c, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, + 0x0b, 0x48, 0x2c, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x00, + 0x00, 0x03, 0xff, 0xb3, 0x00, 0x00, 0x04, 0xbc, 0x04, 0x0c, 0x00, 0x32, + 0x00, 0x3f, 0x00, 0x4a, 0x00, 0xa3, 0xb5, 0x14, 0x15, 0x15, 0x47, 0x1b, + 0x10, 0xb8, 0x01, 0xa8, 0xb4, 0x11, 0x25, 0x3c, 0x3c, 0x0a, 0xb8, 0x01, + 0xa7, 0x40, 0x0a, 0x4a, 0x0b, 0x0b, 0x05, 0x11, 0x32, 0x00, 0x00, 0x30, + 0x04, 0xb8, 0x01, 0xa8, 0x40, 0x38, 0x3f, 0x05, 0x05, 0x19, 0x11, 0x3b, + 0x36, 0xfc, 0x25, 0x2a, 0x50, 0x3c, 0x4a, 0x47, 0x30, 0x32, 0x3f, 0x03, + 0x00, 0x00, 0x32, 0x32, 0x3f, 0x09, 0x0c, 0x0f, 0x06, 0xcf, 0x3f, 0x3f, + 0x18, 0x47, 0x15, 0x15, 0x12, 0x14, 0x14, 0x0f, 0xcf, 0x47, 0x47, 0x10, + 0x46, 0x43, 0xfc, 0x1b, 0x20, 0x50, 0x1a, 0x4f, 0x10, 0x51, 0x0b, 0x51, + 0x05, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x12, + 0x39, 0x2f, 0xe1, 0x32, 0x2f, 0x39, 0x33, 0x11, 0x12, 0x39, 0x32, 0x2f, + 0xed, 0x11, 0x39, 0x39, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x39, 0x11, 0x12, + 0x39, 0x12, 0x39, 0x39, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x11, 0x12, 0x39, 0x2f, 0x33, + 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x33, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x06, 0x06, 0x07, 0x11, 0x23, 0x11, 0x26, 0x26, 0x27, 0x11, + 0x23, 0x11, 0x26, 0x26, 0x27, 0x11, 0x23, 0x11, 0x06, 0x07, 0x27, 0x36, + 0x36, 0x37, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x17, + 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x15, 0x36, 0x37, 0x25, 0x34, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x15, 0x16, 0x16, 0x17, 0x25, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x07, 0x15, 0x16, 0x16, 0x17, 0x04, 0xbc, 0x2d, + 0x51, 0x31, 0xd3, 0x2a, 0x4e, 0x26, 0xd1, 0x29, 0x4e, 0x28, 0xd3, 0x1e, + 0x20, 0x68, 0x2a, 0x4e, 0x2e, 0xb5, 0x04, 0x16, 0x29, 0x2e, 0x36, 0x24, + 0x2a, 0x3b, 0x25, 0x13, 0x03, 0x18, 0x2c, 0x2f, 0x38, 0x24, 0x37, 0x4c, + 0x2e, 0x14, 0x23, 0x1f, 0xfe, 0xeb, 0x14, 0x27, 0x0f, 0x18, 0x15, 0x18, + 0x0f, 0x28, 0x4e, 0x28, 0xfe, 0x91, 0x14, 0x28, 0x1a, 0x2e, 0x1b, 0x2a, + 0x4f, 0x26, 0x01, 0xf5, 0x2f, 0x40, 0x13, 0xfe, 0x8d, 0x01, 0x58, 0x02, + 0x0c, 0x08, 0xfe, 0x92, 0x01, 0xa5, 0x0a, 0x10, 0x03, 0xfe, 0x3e, 0x01, + 0x99, 0x13, 0x1b, 0x6d, 0x2c, 0x3e, 0x13, 0x01, 0xa3, 0x94, 0x2d, 0x40, + 0x29, 0x12, 0x17, 0x2b, 0x3f, 0x27, 0x2d, 0x40, 0x29, 0x12, 0x27, 0x4d, + 0x73, 0x4c, 0xa9, 0x16, 0x1b, 0x53, 0x4c, 0x4c, 0x13, 0x28, 0x3e, 0x2c, + 0x7e, 0x0b, 0x10, 0x04, 0xaa, 0x4c, 0x4c, 0x4c, 0x59, 0x33, 0x02, 0x0a, + 0x08, 0x00, 0x00, 0x02, 0xff, 0xb3, 0x00, 0x00, 0x04, 0xbc, 0x04, 0x0e, + 0x00, 0x28, 0x00, 0x34, 0x00, 0x75, 0xb5, 0x11, 0x12, 0x12, 0x2f, 0x1a, + 0x0c, 0xb8, 0x02, 0x0b, 0xb4, 0x0d, 0x25, 0x00, 0x00, 0x04, 0xb8, 0x02, + 0x0b, 0x40, 0x23, 0x34, 0x05, 0x05, 0x18, 0x0d, 0x03, 0x00, 0x00, 0x28, + 0x28, 0x06, 0xf3, 0x25, 0x10, 0x34, 0x20, 0x34, 0x30, 0x34, 0x03, 0x34, + 0x34, 0x17, 0x2f, 0x12, 0x12, 0x0e, 0x11, 0x11, 0x0b, 0xf3, 0x2f, 0x2f, + 0x0d, 0x2b, 0xb8, 0x01, 0x31, 0x40, 0x09, 0x1a, 0x1f, 0x50, 0x18, 0x4f, + 0x0d, 0x51, 0x05, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x2f, 0x39, 0x33, 0x11, 0x12, 0x39, 0x32, 0x2f, + 0x5d, 0x33, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x39, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x10, 0xed, 0x32, 0x32, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x06, 0x06, 0x07, 0x11, 0x23, 0x11, 0x2e, 0x03, + 0x27, 0x11, 0x23, 0x11, 0x06, 0x06, 0x07, 0x27, 0x3e, 0x03, 0x37, 0x11, + 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x15, 0x36, 0x36, + 0x37, 0x25, 0x34, 0x23, 0x22, 0x06, 0x07, 0x15, 0x1e, 0x03, 0x17, 0x04, + 0xbc, 0x37, 0x65, 0x43, 0xf4, 0x30, 0x5d, 0x5a, 0x58, 0x2b, 0xf4, 0x1e, + 0x36, 0x1c, 0x68, 0x1b, 0x32, 0x33, 0x38, 0x20, 0xd3, 0x06, 0x1f, 0x43, + 0x4d, 0x5b, 0x38, 0x4e, 0x74, 0x4e, 0x27, 0x1f, 0x37, 0x1c, 0xfe, 0x9a, + 0x7c, 0x3e, 0x71, 0x3f, 0x31, 0x5d, 0x5a, 0x57, 0x2b, 0x01, 0xf5, 0x39, + 0x48, 0x10, 0xfe, 0x9c, 0x01, 0x60, 0x07, 0x16, 0x19, 0x17, 0x09, 0xfe, + 0x4a, 0x01, 0xb2, 0x0b, 0x24, 0x18, 0x6d, 0x1b, 0x2d, 0x24, 0x1a, 0x08, + 0x01, 0x92, 0x96, 0x27, 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, 0x51, 0x91, + 0x0b, 0x25, 0x18, 0x35, 0xa7, 0x64, 0x56, 0x16, 0x06, 0x16, 0x19, 0x18, + 0x09, 0x00, 0xff, 0xff, 0xfe, 0xca, 0xfe, 0x23, 0x04, 0x1d, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x92, 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, 0xfe, 0xca, + 0xfa, 0x2b, 0x00, 0x34, 0xb1, 0x02, 0x37, 0xb8, 0xff, 0xc0, 0x40, 0x13, + 0x1c, 0x1c, 0x48, 0x37, 0x40, 0x1b, 0x1b, 0x48, 0x37, 0x40, 0x17, 0x17, + 0x48, 0x37, 0x40, 0x10, 0x10, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, + 0x0e, 0x48, 0x37, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, 0x0b, 0x48, 0x37, 0x00, + 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0xff, 0xff, 0xff, 0x11, + 0x00, 0x00, 0x04, 0x11, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x45, 0xff, 0x11, 0xfd, 0x1a, 0x00, 0x21, 0xb1, 0x01, + 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1d, 0x48, 0x27, 0xb8, 0xff, 0xc0, + 0xb3, 0x0e, 0x11, 0x48, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x0c, 0x48, + 0x27, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0xfe, 0xf3, + 0x00, 0x00, 0x04, 0x0e, 0x04, 0x0e, 0x02, 0x26, 0x06, 0x2a, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x45, 0xfe, 0xf3, 0xfd, 0x1a, 0x00, 0x21, 0xb1, 0x01, + 0x25, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, 0x1d, 0x48, 0x25, 0xb8, 0xff, 0xc0, + 0xb3, 0x0e, 0x11, 0x48, 0x25, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x0c, 0x48, + 0x25, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0x00, 0x01, 0x00, 0x11, + 0xff, 0xe9, 0x04, 0x55, 0x04, 0x0e, 0x00, 0x3f, 0x00, 0x72, 0xb1, 0x1d, + 0x20, 0xb8, 0x01, 0x90, 0xb4, 0x21, 0x21, 0x25, 0x3c, 0x00, 0xb8, 0x01, + 0x90, 0xb6, 0x3f, 0x3f, 0x15, 0x2e, 0x2e, 0x03, 0x06, 0xb8, 0x02, 0x24, + 0xb2, 0x15, 0x15, 0x34, 0xb8, 0x02, 0x1c, 0x40, 0x21, 0x25, 0x0f, 0x0f, + 0x25, 0x03, 0x3c, 0x12, 0x3f, 0x1a, 0x0b, 0x2e, 0x31, 0xf2, 0x2a, 0x24, + 0x39, 0x1d, 0x03, 0x2a, 0x80, 0x21, 0x01, 0x21, 0x21, 0x2d, 0x2a, 0x50, + 0x0f, 0x12, 0xf7, 0x0e, 0x0b, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x33, 0x39, 0x2f, 0x5d, 0x12, 0x17, 0x39, 0x10, 0xfd, 0x32, 0x11, 0x39, + 0xc6, 0x11, 0x39, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, + 0xed, 0x32, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x11, 0x33, 0x2f, + 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, 0x06, 0x07, 0x16, 0x16, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x2e, 0x02, 0x27, 0x26, 0x26, 0x27, 0x06, 0x06, 0x15, 0x23, + 0x34, 0x36, 0x37, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x16, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x04, 0x55, 0x42, 0x4d, 0x06, 0x05, 0x4d, 0x7f, + 0xa1, 0x54, 0x70, 0xb3, 0x51, 0x5e, 0xba, 0x54, 0x61, 0x5e, 0x14, 0x37, + 0x64, 0x51, 0x42, 0x65, 0x25, 0x0e, 0x0f, 0xcd, 0x40, 0x4b, 0x38, 0x6f, + 0xa6, 0x6f, 0x61, 0x93, 0x39, 0x58, 0x98, 0x4b, 0x4b, 0x5b, 0x1c, 0x34, + 0x4a, 0x2e, 0x36, 0x60, 0x25, 0x2b, 0x33, 0x03, 0x02, 0xc5, 0x6f, 0xa8, + 0x2b, 0x14, 0x2c, 0x18, 0x57, 0x7b, 0x4d, 0x23, 0x15, 0x14, 0xdc, 0x27, + 0x23, 0x3d, 0x31, 0x17, 0x26, 0x23, 0x25, 0x17, 0x12, 0x2c, 0x1d, 0x0e, + 0x3c, 0x36, 0x6e, 0xa6, 0x2b, 0x17, 0x3e, 0x6e, 0x53, 0x30, 0x14, 0x0c, + 0xc7, 0x1c, 0x17, 0x36, 0x30, 0x1d, 0x27, 0x1f, 0x1a, 0x0f, 0x11, 0x1f, + 0x3c, 0x51, 0xff, 0xff, 0xff, 0xa7, 0xff, 0xe9, 0x03, 0xd1, 0x05, 0x3d, + 0x02, 0x26, 0x00, 0x96, 0x00, 0x00, 0x01, 0x07, 0x01, 0x45, 0xff, 0xa7, + 0xfd, 0x1a, 0x00, 0x2a, 0xb1, 0x01, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x1c, + 0x1d, 0x48, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, 0x0f, 0x48, 0x29, 0xb8, + 0xff, 0xc0, 0xb3, 0x0b, 0x0c, 0x48, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x09, + 0x09, 0x48, 0x29, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x35, 0x00, 0x01, + 0x00, 0x8f, 0x00, 0x00, 0x03, 0xf9, 0x03, 0xf8, 0x00, 0x24, 0x00, 0xa4, + 0x40, 0x2a, 0x94, 0x21, 0xa4, 0x21, 0x02, 0x80, 0x21, 0x01, 0x80, 0x15, + 0x01, 0x9b, 0x0e, 0xab, 0x0e, 0x02, 0x11, 0x12, 0x12, 0x0c, 0x18, 0x0b, + 0x19, 0x1e, 0x06, 0x1d, 0x07, 0x07, 0x0b, 0x1a, 0x1a, 0x0b, 0x19, 0x1d, + 0x1d, 0x08, 0x24, 0x00, 0x00, 0x08, 0x1d, 0x1a, 0xb8, 0x01, 0x31, 0x40, + 0x2e, 0x1b, 0x12, 0x0f, 0x11, 0x01, 0x11, 0x0c, 0x06, 0x0e, 0x03, 0xce, + 0x21, 0x00, 0x5f, 0x24, 0x01, 0x00, 0x24, 0x01, 0x24, 0x24, 0x18, 0x0e, + 0xce, 0x15, 0xb0, 0x21, 0xc0, 0x21, 0x02, 0x64, 0x15, 0x74, 0x15, 0x02, + 0x21, 0x18, 0x15, 0x15, 0x18, 0x21, 0x03, 0x1b, 0x4f, 0x0b, 0x07, 0xb8, + 0x01, 0x36, 0xb1, 0x0a, 0x51, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x17, 0x39, + 0x2f, 0x2f, 0x2f, 0x5d, 0x5d, 0x10, 0xed, 0x11, 0x33, 0x2f, 0x5d, 0x5d, + 0x33, 0x10, 0xfd, 0x11, 0x39, 0x39, 0xc4, 0x5d, 0x32, 0x10, 0xed, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x11, 0x12, 0x39, 0x39, 0x11, 0x12, 0x39, 0x39, 0x32, 0x2f, + 0x33, 0x00, 0x5d, 0x5d, 0x5d, 0x5d, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x27, 0x07, 0x21, 0x15, 0x21, 0x35, 0x01, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x37, 0x21, 0x35, + 0x21, 0x15, 0x03, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x03, 0xf9, 0x2a, + 0x70, 0x51, 0x22, 0x45, 0x21, 0xa3, 0x01, 0xee, 0xfc, 0xc5, 0x01, 0x08, + 0x17, 0x12, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x26, 0x4f, 0x26, + 0x71, 0xfe, 0x1b, 0x03, 0x27, 0xcb, 0x06, 0x0b, 0x05, 0x25, 0x38, 0x1b, + 0x02, 0x32, 0x51, 0x4d, 0x0c, 0x0a, 0xd3, 0xd7, 0xaa, 0x01, 0x52, 0x06, + 0x2d, 0x2d, 0x6d, 0x51, 0x4c, 0x10, 0x0c, 0x91, 0xd1, 0xac, 0xfe, 0xfa, + 0x01, 0x01, 0x2f, 0x2b, 0x00, 0x03, 0x00, 0x4c, 0xfe, 0x5c, 0x04, 0x25, + 0x04, 0x0c, 0x00, 0x3d, 0x00, 0x50, 0x00, 0x60, 0x00, 0x90, 0xb7, 0x6f, + 0x13, 0x7f, 0x13, 0x8f, 0x13, 0x03, 0x33, 0xb8, 0x01, 0xd6, 0xb3, 0x51, + 0x51, 0x28, 0x23, 0xb8, 0x02, 0x11, 0xb2, 0x3e, 0x30, 0x2b, 0xb8, 0x01, + 0xae, 0x40, 0x09, 0x0b, 0x0e, 0x0e, 0x4c, 0x3e, 0x3e, 0x19, 0x3b, 0x59, + 0xb8, 0x01, 0xd7, 0xb3, 0x00, 0x03, 0x03, 0x46, 0xb8, 0x02, 0x13, 0x40, + 0x29, 0x19, 0x3d, 0x3d, 0x19, 0x00, 0xcf, 0x3b, 0x55, 0x28, 0x13, 0x40, + 0x18, 0x1b, 0x48, 0x13, 0xf7, 0x4c, 0x30, 0x54, 0xc8, 0x08, 0x0b, 0x08, + 0x9f, 0x4c, 0xaf, 0x4c, 0x02, 0x4c, 0x08, 0x4c, 0x08, 0x1e, 0x5c, 0xca, + 0x38, 0x56, 0x41, 0xca, 0x1e, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x11, + 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x11, 0x33, 0x10, 0xed, 0x32, 0x10, 0xed, + 0x2b, 0x39, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, + 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, + 0x10, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x00, 0x5d, 0x30, 0x31, 0x17, 0x26, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x27, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x15, 0x14, + 0x0e, 0x02, 0x07, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x27, 0x21, 0x35, 0x01, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x17, 0x17, 0x3e, 0x03, 0x03, 0x34, 0x26, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0xec, 0x1c, 0x17, 0x3b, + 0x6b, 0x95, 0x5a, 0x35, 0x5a, 0x17, 0x11, 0x18, 0x10, 0x1f, 0x2b, 0x1b, + 0xf1, 0x51, 0x83, 0x5e, 0x33, 0x40, 0x81, 0xc0, 0x7f, 0x7b, 0xb1, 0x71, + 0x36, 0x12, 0x24, 0x36, 0x25, 0x31, 0x33, 0x12, 0x1d, 0x26, 0x15, 0x25, + 0x31, 0x3d, 0x6c, 0x95, 0x58, 0x2d, 0x53, 0x22, 0xfe, 0xa0, 0x02, 0xdf, + 0x77, 0x6c, 0x45, 0x5f, 0x3c, 0x1a, 0x19, 0x2d, 0x3d, 0x25, 0xd7, 0x1d, + 0x25, 0x15, 0x07, 0x29, 0x5f, 0x55, 0x2d, 0x43, 0x2c, 0x16, 0x5f, 0x55, + 0x2d, 0x43, 0x2c, 0x16, 0xde, 0x23, 0x4d, 0x28, 0x55, 0x82, 0x58, 0x2d, + 0x15, 0x0e, 0x11, 0x29, 0x1a, 0x10, 0x20, 0x19, 0x10, 0x01, 0x09, 0x02, + 0x25, 0x44, 0x61, 0x3e, 0x47, 0x7e, 0x5d, 0x36, 0x27, 0x46, 0x61, 0x3a, + 0x23, 0x3c, 0x37, 0x34, 0x1a, 0x1c, 0x58, 0x32, 0x22, 0x3b, 0x36, 0x32, + 0x18, 0x25, 0x69, 0x4f, 0x55, 0x85, 0x5b, 0x2f, 0x09, 0x0b, 0xb2, 0x03, + 0xcd, 0x3b, 0x38, 0x1a, 0x2a, 0x38, 0x1e, 0x1b, 0x25, 0x19, 0x0d, 0x02, + 0x04, 0x14, 0x24, 0x23, 0x24, 0xfc, 0xe5, 0x51, 0x5f, 0x1e, 0x32, 0x42, + 0x24, 0x55, 0x5f, 0x1e, 0x33, 0x44, 0x00, 0x01, 0x00, 0xef, 0x02, 0x94, + 0x03, 0x63, 0x05, 0x06, 0x00, 0x0b, 0x00, 0x36, 0xb9, 0x00, 0x0b, 0x01, + 0x67, 0xb3, 0x02, 0x0a, 0x0a, 0x07, 0xba, 0x01, 0x67, 0x00, 0x03, 0x01, + 0x67, 0xb7, 0x06, 0x03, 0x96, 0x08, 0x08, 0x05, 0x0a, 0x06, 0xbb, 0x02, + 0x7e, 0x00, 0x01, 0x00, 0x05, 0x02, 0x80, 0x00, 0x3f, 0x33, 0x3f, 0x33, + 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0xed, 0x33, 0x2f, 0x33, 0xed, + 0x31, 0x30, 0x01, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x15, 0x21, + 0x35, 0x33, 0x03, 0x63, 0xb0, 0xfe, 0xee, 0xb2, 0xb2, 0x01, 0x12, 0xb0, + 0x02, 0x94, 0x01, 0x04, 0xfe, 0xfc, 0x02, 0x72, 0xda, 0xda, 0x00, 0x02, + 0x00, 0x4c, 0xfe, 0x5c, 0x04, 0x1f, 0x03, 0xf8, 0x00, 0x2c, 0x00, 0x3e, + 0x00, 0x58, 0xb4, 0x21, 0x3a, 0x35, 0x03, 0x08, 0xb8, 0x02, 0x09, 0xb3, + 0x2b, 0x26, 0x02, 0x12, 0xb8, 0x02, 0x13, 0xb2, 0x35, 0x35, 0x2d, 0xb8, + 0x02, 0x11, 0x40, 0x1d, 0x1c, 0x2c, 0x2c, 0x1c, 0x3a, 0x0d, 0x21, 0x66, + 0x21, 0x76, 0x21, 0x02, 0x39, 0x21, 0x01, 0x28, 0x21, 0x01, 0x21, 0x00, + 0x30, 0xca, 0x17, 0x56, 0x03, 0x2c, 0xcf, 0x00, 0x4f, 0x00, 0x3f, 0xed, + 0x32, 0x3f, 0xed, 0x11, 0x39, 0x5d, 0x5d, 0x5d, 0x11, 0x33, 0x33, 0x01, + 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0xed, + 0x32, 0x12, 0x39, 0x39, 0x30, 0x31, 0x13, 0x21, 0x15, 0x21, 0x0e, 0x03, + 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, + 0x3e, 0x02, 0x37, 0x21, 0x13, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x27, 0x0e, 0x03, 0x7e, 0x03, 0x79, 0xfe, 0xf0, 0x39, + 0x6a, 0x51, 0x31, 0x2c, 0x4a, 0x60, 0x34, 0x3d, 0x79, 0x61, 0x3c, 0x39, + 0x7a, 0xbe, 0x85, 0x83, 0xb6, 0x71, 0x33, 0x33, 0x4c, 0x57, 0x25, 0x23, + 0x2e, 0x1b, 0x0b, 0x27, 0x41, 0x52, 0x2a, 0xfe, 0xca, 0xc8, 0x7a, 0x78, + 0x3f, 0x5a, 0x38, 0x1a, 0x0f, 0x3b, 0x75, 0x65, 0x1e, 0x41, 0x37, 0x23, + 0x03, 0xf8, 0xb2, 0x21, 0x42, 0x48, 0x53, 0x31, 0x24, 0x35, 0x2a, 0x25, + 0x15, 0x18, 0x3d, 0x58, 0x7a, 0x55, 0x47, 0x8b, 0x6d, 0x43, 0x33, 0x5a, + 0x7b, 0x47, 0x4c, 0x75, 0x5b, 0x43, 0x1a, 0x18, 0x2f, 0x33, 0x39, 0x21, + 0x35, 0x5f, 0x54, 0x48, 0x1e, 0xfc, 0x83, 0x64, 0x5f, 0x1e, 0x35, 0x46, + 0x28, 0x24, 0x3d, 0x3c, 0x3f, 0x26, 0x14, 0x30, 0x3d, 0x4d, 0x00, 0x01, + 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, 0x05, 0x95, 0x00, 0x33, 0x00, 0xb8, + 0xb5, 0x2c, 0x2c, 0x2a, 0x17, 0x17, 0x2d, 0xb8, 0x01, 0x8c, 0x40, 0x2d, + 0x24, 0x32, 0x2f, 0x2e, 0x21, 0x20, 0x33, 0x20, 0x21, 0x2e, 0x2f, 0x32, + 0x04, 0x33, 0x20, 0x01, 0x0c, 0x0d, 0x10, 0x11, 0x1e, 0x1f, 0x00, 0x1f, + 0x1e, 0x11, 0x10, 0x0d, 0x0c, 0x01, 0x06, 0x00, 0x1f, 0x1f, 0x20, 0x20, + 0x27, 0x24, 0x25, 0x25, 0x24, 0x33, 0x00, 0x00, 0x04, 0xb8, 0x01, 0x8c, + 0x40, 0x28, 0x07, 0x33, 0x33, 0x30, 0x00, 0x00, 0x30, 0x53, 0x2d, 0x24, + 0xc7, 0x27, 0x2a, 0x27, 0x29, 0x29, 0x27, 0x4f, 0x2e, 0x11, 0x14, 0xc8, + 0x21, 0x20, 0x1f, 0x1e, 0x1b, 0x51, 0x0f, 0x51, 0x06, 0x51, 0x10, 0x0d, + 0x0c, 0xcd, 0x32, 0x2f, 0x01, 0x4f, 0x00, 0x3f, 0x33, 0x33, 0xed, 0x32, + 0x32, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x33, 0x33, 0xed, 0x32, 0x32, 0x3f, + 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x33, 0x2f, 0x33, 0x11, 0x12, 0x17, 0x39, 0x10, 0x7d, 0x87, 0x04, 0xc4, + 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x11, 0x12, 0x01, 0x17, 0x39, 0x10, 0x87, + 0x04, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0x10, 0xed, 0x32, 0x2f, 0x32, + 0x32, 0x2f, 0x30, 0x31, 0x01, 0x01, 0x16, 0x16, 0x15, 0x11, 0x23, 0x11, + 0x34, 0x2e, 0x02, 0x27, 0x07, 0x11, 0x23, 0x11, 0x07, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x07, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x07, 0x23, + 0x13, 0x26, 0x35, 0x11, 0x23, 0x35, 0x33, 0x11, 0x37, 0x11, 0x33, 0x15, + 0x23, 0x11, 0x13, 0x11, 0x33, 0x11, 0x01, 0x04, 0xd4, 0xfe, 0xe8, 0x46, + 0x35, 0xc5, 0x01, 0x09, 0x13, 0x12, 0x67, 0xc2, 0xa9, 0x0d, 0x23, 0x16, + 0x08, 0x1d, 0x16, 0x01, 0x22, 0x39, 0x18, 0x21, 0x3e, 0x1b, 0x85, 0xed, + 0xfb, 0x0c, 0x7e, 0x7e, 0xc5, 0xaa, 0xaa, 0xd4, 0xc2, 0x01, 0x0d, 0x05, + 0x95, 0xfe, 0x6c, 0x18, 0x8b, 0x74, 0xfd, 0x16, 0x02, 0xb1, 0x22, 0x38, + 0x2a, 0x19, 0x04, 0x95, 0xfd, 0x43, 0x01, 0xa5, 0xf4, 0x0b, 0x08, 0x02, + 0x04, 0xa4, 0x04, 0x02, 0x0c, 0x0e, 0xc0, 0x01, 0x6a, 0x36, 0x49, 0x02, + 0x18, 0xa3, 0x01, 0x0a, 0x36, 0xfe, 0xc0, 0xa3, 0xfe, 0x73, 0x01, 0x32, + 0x02, 0x8c, 0xfe, 0x8b, 0x01, 0x84, 0xff, 0xff, 0x00, 0x91, 0x00, 0x00, + 0x03, 0xf2, 0x03, 0xf8, 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x01, 0x06, + 0x0a, 0x66, 0x17, 0x00, 0x00, 0x29, 0xb9, 0x00, 0x0b, 0xff, 0xc0, 0xb4, + 0x10, 0x10, 0x48, 0x0b, 0x0a, 0xb8, 0xff, 0xc0, 0x40, 0x10, 0x10, 0x10, + 0x48, 0x0a, 0x0c, 0x40, 0x0f, 0x0f, 0x48, 0x0c, 0x0d, 0x40, 0x0f, 0x0f, + 0x48, 0x0d, 0x00, 0x11, 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x00, + 0xff, 0xff, 0x00, 0x7b, 0xff, 0xe9, 0x03, 0xec, 0x03, 0xf8, 0x02, 0x26, + 0x01, 0xbb, 0x00, 0x00, 0x01, 0x06, 0x0a, 0x66, 0xff, 0x00, 0x00, 0x29, + 0xb9, 0x00, 0x15, 0xff, 0xc0, 0xb4, 0x10, 0x10, 0x48, 0x15, 0x14, 0xb8, + 0xff, 0xc0, 0x40, 0x10, 0x10, 0x10, 0x48, 0x14, 0x16, 0x40, 0x0f, 0x0f, + 0x48, 0x16, 0x17, 0x40, 0x0f, 0x0f, 0x48, 0x17, 0x00, 0x11, 0x2b, 0x11, + 0x2b, 0x11, 0x2b, 0x11, 0x2b, 0x00, 0xff, 0xff, 0xff, 0x96, 0xfe, 0x73, + 0x04, 0x1d, 0x04, 0x0e, 0x02, 0x26, 0x00, 0x92, 0x00, 0x00, 0x01, 0x07, + 0x0a, 0x66, 0xfe, 0xc4, 0xfd, 0x52, 0x00, 0x64, 0xb9, 0x00, 0x29, 0xff, + 0xc0, 0xb4, 0x10, 0x10, 0x48, 0x29, 0x28, 0xb8, 0xff, 0xc0, 0x40, 0x1c, + 0x10, 0x10, 0x48, 0x28, 0x2a, 0x40, 0x11, 0x11, 0x48, 0x2a, 0x40, 0x0f, + 0x0f, 0x48, 0x2a, 0x2b, 0x40, 0x11, 0x11, 0x48, 0x2b, 0x40, 0x0f, 0x0f, + 0x48, 0x2b, 0x02, 0x28, 0xb8, 0xff, 0xc0, 0xb3, 0x2e, 0x2e, 0x48, 0x28, + 0xb8, 0xff, 0xc0, 0xb3, 0x16, 0x16, 0x48, 0x28, 0xb8, 0xff, 0xc0, 0xb3, + 0x13, 0x13, 0x48, 0x28, 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x0d, 0x0d, 0x48, + 0x28, 0x40, 0x0b, 0x0b, 0x48, 0x28, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0x11, 0x2b, 0x2b, 0x11, 0x2b, 0x2b, 0x11, 0x2b, 0x11, 0x2b, + 0x00, 0x02, 0x00, 0x0a, 0xff, 0xe9, 0x04, 0x5c, 0x03, 0xf8, 0x00, 0x16, + 0x00, 0x1f, 0x00, 0x4b, 0xb3, 0x0b, 0x09, 0x09, 0x07, 0xb8, 0x02, 0x08, + 0xb4, 0x17, 0x06, 0x06, 0x18, 0x03, 0xb8, 0x02, 0x09, 0x40, 0x10, 0x02, + 0x15, 0x02, 0x00, 0x00, 0x02, 0x18, 0x0b, 0x16, 0xfa, 0x08, 0x04, 0x00, + 0x00, 0x02, 0x1d, 0xb8, 0x01, 0x06, 0xb4, 0x10, 0x52, 0x06, 0x02, 0x4f, + 0x00, 0x3f, 0x33, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x33, 0x2f, + 0x33, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, 0x13, 0x33, 0x11, 0x33, 0x11, + 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x27, 0x23, 0x21, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x0a, 0x75, 0xf2, 0x01, 0x85, 0xf1, 0x75, 0x75, 0x3e, 0x73, 0xa4, 0x67, + 0x7d, 0xa4, 0x62, 0x28, 0x01, 0x75, 0x02, 0xeb, 0xfe, 0x7c, 0x10, 0x2b, + 0x4a, 0x3a, 0x63, 0x62, 0x02, 0x61, 0x01, 0x97, 0xfe, 0x69, 0x01, 0x97, + 0xfe, 0x69, 0xbe, 0x6b, 0xa5, 0x70, 0x3a, 0x3d, 0x72, 0xa4, 0x67, 0x39, + 0x58, 0x3e, 0x20, 0x7b, 0x00, 0x02, 0x00, 0x0a, 0xff, 0xe9, 0x04, 0x5c, + 0x03, 0xf8, 0x00, 0x22, 0x00, 0x30, 0x00, 0x4f, 0xb4, 0x17, 0x15, 0x15, + 0x10, 0x14, 0xb8, 0x02, 0x08, 0xb5, 0x2d, 0x0f, 0x0b, 0x0b, 0x0a, 0x06, + 0xb8, 0x01, 0xe3, 0x40, 0x10, 0x05, 0x01, 0x05, 0x00, 0x00, 0x05, 0x2e, + 0x17, 0x22, 0xfa, 0x14, 0x0a, 0x00, 0x00, 0x05, 0x27, 0xb8, 0x01, 0x08, + 0xb4, 0x1d, 0x52, 0x0f, 0x05, 0x4f, 0x00, 0x3f, 0x33, 0x3f, 0xed, 0x11, + 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x2f, + 0x32, 0x30, 0x31, 0x13, 0x33, 0x34, 0x27, 0x26, 0x27, 0x33, 0x16, 0x16, + 0x15, 0x15, 0x21, 0x26, 0x27, 0x26, 0x27, 0x33, 0x16, 0x17, 0x16, 0x17, + 0x33, 0x15, 0x23, 0x06, 0x07, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x35, + 0x23, 0x05, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x36, 0x37, 0x36, 0x37, 0x21, + 0x15, 0x14, 0x0a, 0x8a, 0x06, 0x05, 0x0e, 0xf0, 0x0d, 0x0c, 0x01, 0x77, + 0x01, 0x05, 0x07, 0x0d, 0xf0, 0x0c, 0x07, 0x06, 0x02, 0x70, 0x7b, 0x08, + 0x0d, 0x20, 0x7c, 0xb4, 0x75, 0xc3, 0xb5, 0x85, 0x01, 0x7d, 0x09, 0x27, + 0x3d, 0x2d, 0x2f, 0x50, 0x3b, 0x10, 0x04, 0x03, 0xfe, 0x8d, 0x02, 0x61, + 0x64, 0x66, 0x68, 0x65, 0x61, 0xc6, 0x61, 0x0f, 0x58, 0x57, 0x73, 0x75, + 0x72, 0x6e, 0x5a, 0x5d, 0xbe, 0x31, 0x2c, 0x6d, 0x9b, 0x55, 0xb9, 0xc9, + 0x38, 0x7e, 0x27, 0x31, 0x17, 0x2b, 0x5b, 0x45, 0x10, 0x12, 0x21, 0x36, + 0x00, 0x02, 0x00, 0x8b, 0xfe, 0x5e, 0x04, 0x1d, 0x05, 0x85, 0x00, 0x28, + 0x00, 0x39, 0x00, 0x50, 0xb2, 0x0f, 0x0f, 0x05, 0xb8, 0x01, 0x8e, 0xb2, + 0x18, 0x18, 0x00, 0xb8, 0x02, 0x17, 0xb3, 0x29, 0x29, 0x31, 0x1f, 0xb8, + 0x02, 0x0b, 0xb2, 0x1e, 0x31, 0x2e, 0xb8, 0x01, 0x31, 0x40, 0x13, 0x21, + 0x24, 0x50, 0x1e, 0x53, 0x32, 0x35, 0xfc, 0x1d, 0x18, 0x05, 0x1a, 0x52, + 0x0f, 0x12, 0xf2, 0x0e, 0x0b, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x33, 0x33, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x30, 0x31, + 0x01, 0x14, 0x06, 0x07, 0x06, 0x07, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x06, + 0x23, 0x22, 0x26, 0x27, 0x11, 0x33, 0x11, 0x07, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x47, 0x09, 0x0a, 0x25, + 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, + 0x0e, 0x49, 0x52, 0x6f, 0xbf, 0x57, 0xf4, 0x0a, 0x37, 0x93, 0x67, 0x5a, + 0x8c, 0x5f, 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, + 0x1d, 0x55, 0x2c, 0x3a, 0x5f, 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x44, + 0x09, 0x09, 0xc5, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, + 0x0c, 0x22, 0x3b, 0x30, 0x53, 0x11, 0x21, 0x1c, 0x05, 0x5a, 0xfe, 0xb4, + 0xc8, 0x47, 0x56, 0x48, 0x85, 0xbd, 0x80, 0x54, 0x76, 0x4c, 0x23, 0x64, + 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, 0x58, 0x7f, 0x00, 0x02, 0x00, 0x4c, + 0xfe, 0x5e, 0x04, 0x66, 0x05, 0x85, 0x00, 0x2a, 0x00, 0x3b, 0x00, 0x57, + 0xb2, 0x21, 0x21, 0x17, 0xb8, 0x01, 0x8e, 0xb3, 0x2a, 0x2a, 0x34, 0x15, + 0xb8, 0x02, 0x0b, 0xb3, 0x01, 0x14, 0x14, 0x2b, 0xb8, 0x02, 0x17, 0x40, + 0x11, 0x0b, 0x21, 0x24, 0xf2, 0x20, 0x1d, 0x56, 0x14, 0x53, 0x34, 0x37, + 0xfc, 0x13, 0x10, 0x50, 0x33, 0x30, 0xb8, 0x01, 0x31, 0xb3, 0x01, 0x06, + 0x52, 0x16, 0xb8, 0x01, 0x3c, 0xb1, 0x00, 0x51, 0x00, 0x3f, 0xed, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x33, 0x2f, 0xed, 0x33, + 0x2f, 0x30, 0x31, 0x21, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x35, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, + 0x11, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x0a, 0x06, 0x20, 0x44, + 0x4e, 0x59, 0x36, 0x5a, 0x8c, 0x5f, 0x32, 0x4f, 0x8c, 0xc0, 0x71, 0x26, + 0x4d, 0x1e, 0xf4, 0x89, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, + 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xfd, 0xaf, 0x17, 0x2d, 0x42, 0x2a, + 0x3e, 0x70, 0x3f, 0x1d, 0x55, 0x2b, 0x3b, 0x5e, 0x43, 0x24, 0x96, 0x27, + 0x40, 0x2d, 0x19, 0x48, 0x85, 0xbe, 0x75, 0x8c, 0xcd, 0x87, 0x41, 0x0a, + 0x08, 0x01, 0x8d, 0xfb, 0x59, 0xfe, 0xbd, 0x63, 0x7c, 0x45, 0x19, 0x04, + 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x01, 0xf4, 0x54, + 0x77, 0x4c, 0x23, 0x64, 0x57, 0x01, 0xbc, 0x0b, 0x0e, 0x30, 0x58, 0x7f, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5e, 0x04, 0x1b, 0x05, 0x98, 0x02, 0x26, + 0x00, 0x88, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x4d, 0x32, 0x00, 0x00, 0x03, + 0x00, 0x16, 0xfe, 0x5c, 0x04, 0x56, 0x04, 0x0c, 0x00, 0x4a, 0x00, 0x5a, + 0x00, 0x6e, 0x00, 0x91, 0xb2, 0x6a, 0x65, 0x5b, 0xb8, 0x02, 0x11, 0xb4, + 0x15, 0x2e, 0x2d, 0x2d, 0x31, 0xb8, 0x01, 0xd7, 0xb3, 0x53, 0x53, 0x15, + 0x4b, 0xb8, 0x01, 0xd6, 0xb5, 0x39, 0x20, 0x23, 0x23, 0x15, 0x3c, 0xb8, + 0x01, 0xae, 0xb5, 0x18, 0x1b, 0x1b, 0x15, 0x09, 0x0b, 0xb8, 0x01, 0x90, + 0xb3, 0x65, 0x65, 0x15, 0x42, 0xb8, 0x01, 0x81, 0x40, 0x24, 0x07, 0x00, + 0x00, 0x07, 0x07, 0x15, 0x02, 0xf2, 0x48, 0x56, 0x2e, 0xcf, 0x2b, 0x4f, + 0x56, 0xca, 0x28, 0x50, 0x60, 0xca, 0x10, 0x56, 0x4e, 0xc8, 0x39, 0x20, + 0x00, 0x36, 0x01, 0x36, 0x41, 0xfc, 0x6a, 0x18, 0x09, 0x51, 0x00, 0x3f, + 0x33, 0x33, 0xfd, 0xde, 0x5d, 0x32, 0x32, 0xed, 0x3f, 0xed, 0x3f, 0xed, + 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x11, 0x33, + 0x2f, 0x33, 0x33, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x10, + 0xed, 0x11, 0x39, 0x30, 0x31, 0x05, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x35, 0x23, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x26, 0x26, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x21, 0x15, 0x23, 0x16, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x21, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x27, + 0x01, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x03, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x0e, 0x03, 0x03, 0x0f, 0x19, 0x19, 0x16, 0x1f, 0x14, + 0x09, 0xc1, 0x20, 0x29, 0x53, 0x7d, 0x54, 0x5e, 0x94, 0x67, 0x36, 0x47, + 0x4a, 0x31, 0x33, 0x11, 0x1e, 0x26, 0x15, 0x25, 0x31, 0x3d, 0x6c, 0x95, + 0x58, 0x2d, 0x53, 0x22, 0x01, 0x60, 0xa0, 0x1c, 0x17, 0x3b, 0x6b, 0x95, + 0x5a, 0x36, 0x59, 0x17, 0x11, 0x18, 0x0e, 0x2a, 0x4e, 0x41, 0x02, 0x71, + 0x20, 0x3e, 0x5b, 0x3c, 0x27, 0x2b, 0xfe, 0x2a, 0x5f, 0x55, 0x2d, 0x43, + 0x2c, 0x16, 0x5f, 0x55, 0x2d, 0x43, 0x2c, 0x16, 0x29, 0x18, 0x26, 0x2d, + 0x15, 0x31, 0x3b, 0x1f, 0x0a, 0x1b, 0x31, 0x43, 0x28, 0x1d, 0x25, 0x15, + 0x07, 0xea, 0x03, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x49, 0x47, 0x38, 0x64, + 0x4c, 0x2c, 0x27, 0x46, 0x61, 0x3a, 0x45, 0x6b, 0x34, 0x1c, 0x57, 0x33, + 0x21, 0x3c, 0x36, 0x32, 0x18, 0x25, 0x69, 0x4f, 0x55, 0x85, 0x5b, 0x2f, + 0x09, 0x0b, 0xb2, 0x23, 0x4d, 0x28, 0x55, 0x82, 0x58, 0x2d, 0x15, 0x0e, + 0x11, 0x29, 0x1a, 0x11, 0x22, 0x1c, 0x12, 0xfe, 0xdb, 0x63, 0x7c, 0x45, + 0x19, 0x03, 0x04, 0x47, 0x51, 0x5f, 0x1e, 0x32, 0x42, 0x24, 0x55, 0x5f, + 0x1e, 0x33, 0x44, 0xfc, 0xac, 0x1e, 0x2b, 0x1c, 0x0e, 0x19, 0x26, 0x2d, + 0x15, 0x24, 0x33, 0x1f, 0x0f, 0x14, 0x24, 0x23, 0x24, 0x00, 0xff, 0xff, + 0x00, 0x95, 0xfe, 0x5e, 0x04, 0x91, 0x05, 0x85, 0x02, 0x26, 0x00, 0x8d, + 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4d, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x91, 0xfe, 0x5e, 0x03, 0xf2, 0x05, 0x85, 0x00, 0x1b, 0x00, 0x40, + 0xb2, 0x0f, 0x0f, 0x05, 0xb8, 0x01, 0x8e, 0xb5, 0x18, 0x18, 0x1b, 0x1a, + 0x1a, 0x04, 0xb8, 0x02, 0x11, 0x40, 0x13, 0x1b, 0x01, 0x01, 0x1b, 0x04, + 0x1a, 0xfa, 0x19, 0x51, 0x0f, 0x12, 0xf2, 0x0e, 0x0b, 0x56, 0x01, 0xfa, + 0x02, 0x53, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, + 0x33, 0x2f, 0x30, 0x31, 0x01, 0x21, 0x35, 0x21, 0x11, 0x21, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x35, 0x21, 0x35, 0x21, 0x01, 0xd3, 0xfe, 0xe1, 0x02, 0x19, + 0x01, 0x25, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, + 0x16, 0x23, 0x1a, 0x0e, 0xfd, 0x68, 0x01, 0x42, 0x04, 0xc7, 0xbe, 0xfb, + 0x39, 0xfe, 0xdd, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, + 0x0c, 0x22, 0x3b, 0x30, 0x54, 0xbe, 0x00, 0x01, 0x00, 0x1e, 0xfe, 0x5e, + 0x04, 0x8b, 0x04, 0x0c, 0x00, 0x46, 0x00, 0x78, 0xb1, 0x1b, 0x16, 0xb8, + 0x01, 0xa8, 0xb3, 0x19, 0x3d, 0x3d, 0x31, 0xb8, 0x01, 0x75, 0xb4, 0x45, + 0x45, 0x01, 0x25, 0x0a, 0xb8, 0x01, 0xa7, 0xb3, 0x0b, 0x0b, 0x19, 0x2f, + 0xb8, 0x01, 0xa8, 0x40, 0x0a, 0x01, 0x01, 0x19, 0x3d, 0x40, 0xcb, 0x3c, + 0x37, 0x56, 0x06, 0xb8, 0x01, 0x02, 0x40, 0x0a, 0x2a, 0x50, 0x25, 0x1b, + 0x1b, 0x20, 0x09, 0x16, 0x16, 0x11, 0xb8, 0x01, 0x02, 0x40, 0x09, 0x20, + 0x50, 0x19, 0x4f, 0x17, 0x51, 0x0b, 0x51, 0x30, 0xb8, 0x01, 0x33, 0xb1, + 0x00, 0x51, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x3f, 0x3f, 0xed, 0x32, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x2f, + 0xed, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x21, 0x11, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x3e, 0x03, 0x33, + 0x32, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, + 0x33, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x2a, 0x02, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x02, 0xff, 0x03, 0x0c, 0x17, + 0x13, 0x1f, 0x30, 0x16, 0xd1, 0x03, 0x0c, 0x17, 0x14, 0x0d, 0x1b, 0x19, + 0x19, 0x0b, 0xd3, 0xb5, 0x04, 0x16, 0x2a, 0x2f, 0x37, 0x24, 0x2a, 0x3a, + 0x24, 0x12, 0x03, 0x18, 0x2d, 0x30, 0x39, 0x24, 0x37, 0x4b, 0x2d, 0x13, + 0xb9, 0x1f, 0x3e, 0x5a, 0x3c, 0x11, 0x1b, 0x1b, 0x1e, 0x13, 0x16, 0x22, + 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0x02, 0xb4, 0x26, 0x37, 0x23, 0x11, 0x53, + 0x41, 0xfd, 0x4f, 0x02, 0xb4, 0x26, 0x37, 0x23, 0x11, 0x17, 0x28, 0x36, + 0x1f, 0xfd, 0x4f, 0x03, 0xf8, 0x94, 0x2d, 0x40, 0x29, 0x12, 0x17, 0x2b, + 0x3f, 0x27, 0x2d, 0x40, 0x29, 0x12, 0x27, 0x4d, 0x73, 0x4c, 0xfd, 0xfb, + 0xfe, 0xda, 0x63, 0x82, 0x4d, 0x1e, 0x01, 0x02, 0xb1, 0x05, 0x03, 0x0c, + 0x22, 0x3b, 0x30, 0x5d, 0x00, 0x01, 0x00, 0x8b, 0xfe, 0x5e, 0x04, 0x66, + 0x04, 0x0e, 0x00, 0x2a, 0x00, 0x50, 0xb1, 0x0b, 0x07, 0xb8, 0x02, 0x0b, + 0xb3, 0x08, 0x21, 0x21, 0x18, 0xb8, 0x01, 0x8e, 0xb2, 0x2a, 0x2a, 0x16, + 0xb8, 0x02, 0x0b, 0x40, 0x0b, 0x00, 0x00, 0x08, 0x21, 0x24, 0xf2, 0x20, + 0x1d, 0x56, 0x06, 0x03, 0xb8, 0x01, 0x31, 0xb7, 0x0b, 0x10, 0x50, 0x09, + 0x4f, 0x07, 0x51, 0x16, 0xb8, 0x01, 0x3c, 0xb1, 0x00, 0x51, 0x00, 0x3f, + 0xed, 0x3f, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x30, 0x31, 0x21, 0x11, 0x34, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, + 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x11, 0x33, 0x11, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x35, 0x02, 0xe9, 0x7c, 0x3e, 0x71, 0x3f, 0xf4, 0xd3, + 0x06, 0x1f, 0x43, 0x4e, 0x5a, 0x38, 0x4e, 0x74, 0x4e, 0x27, 0x89, 0x25, + 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, + 0x0e, 0x02, 0x96, 0xa7, 0x64, 0x56, 0xfd, 0x7d, 0x03, 0xf8, 0x96, 0x27, + 0x40, 0x2d, 0x18, 0x33, 0x5d, 0x83, 0x51, 0xfe, 0x34, 0xfe, 0xbd, 0x63, + 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, + 0x54, 0x00, 0xff, 0xff, 0x00, 0x8b, 0xfe, 0x5e, 0x04, 0x3d, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x92, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4d, 0x01, 0x53, + 0x00, 0x00, 0xff, 0xff, 0x00, 0xb4, 0xfe, 0x5e, 0x04, 0x11, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x94, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x50, 0x9c, 0x00, + 0xff, 0xff, 0x00, 0x9c, 0xfe, 0x5e, 0x04, 0x3e, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x95, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4d, 0x01, 0x54, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x7b, 0xfe, 0x5c, 0x04, 0x65, 0x05, 0x98, 0x02, 0x26, + 0x06, 0x2f, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4f, 0x01, 0x7b, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x17, 0xfe, 0x5e, 0x04, 0x52, 0x03, 0xf8, 0x02, 0x26, + 0x00, 0x98, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x50, 0x00, 0xc7, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x21, 0xfe, 0x5e, 0x04, 0x66, 0x03, 0xf8, 0x00, 0x1f, + 0x00, 0x69, 0xb2, 0x16, 0x16, 0x0c, 0xb8, 0x01, 0x8e, 0xb7, 0x1f, 0x0a, + 0x04, 0x01, 0x07, 0x07, 0x09, 0x06, 0xb8, 0x02, 0x2e, 0xb3, 0x05, 0x05, + 0x03, 0x09, 0xb8, 0x02, 0x27, 0xb5, 0x08, 0x08, 0x0b, 0x00, 0x00, 0x02, + 0xb8, 0x02, 0x2e, 0x40, 0x13, 0x03, 0x16, 0x19, 0xf2, 0x15, 0x12, 0x56, + 0x0a, 0x07, 0x01, 0x04, 0x04, 0x02, 0x08, 0x05, 0x4f, 0x02, 0x51, 0x0b, + 0xb8, 0x01, 0x3c, 0xb1, 0x00, 0x51, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x33, + 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x11, 0x33, 0x33, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x30, 0x31, 0x21, + 0x03, 0x03, 0x21, 0x01, 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, 0x13, 0x33, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x35, 0x03, 0x19, 0xe8, 0xe9, 0xfe, 0xd9, 0x01, + 0x7d, 0xfe, 0x97, 0x01, 0x29, 0xe4, 0xe1, 0x01, 0x12, 0xfe, 0xa2, 0xd1, + 0xbe, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, + 0x23, 0x1a, 0x0e, 0x01, 0x56, 0xfe, 0xaa, 0x02, 0x00, 0x01, 0xf8, 0xfe, + 0xb2, 0x01, 0x4e, 0xfe, 0x0a, 0xfe, 0xdc, 0xfe, 0xbd, 0x63, 0x7c, 0x45, + 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x00, + 0xff, 0xff, 0x00, 0x96, 0xfe, 0x5e, 0x03, 0xd1, 0x03, 0xf8, 0x02, 0x26, + 0x00, 0x9c, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x52, 0x00, 0xe7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x6d, 0xfe, 0x5e, 0x05, 0x12, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x83, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4e, 0x02, 0x0b, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x4c, 0xfe, 0x5e, 0x05, 0x14, 0x04, 0x0c, 0x02, 0x26, + 0x05, 0xf8, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4e, 0x02, 0x0d, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x4c, 0xfe, 0x5c, 0x04, 0xf3, 0x05, 0x98, 0x02, 0x26, + 0x05, 0xfe, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x53, 0x01, 0x6a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x66, 0xfe, 0x5c, 0x04, 0x93, 0x04, 0x0e, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x53, 0x01, 0x56, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x6a, 0xfe, 0x5c, 0x04, 0xc6, 0x04, 0x0e, 0x02, 0x26, + 0x09, 0xbf, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x53, 0x01, 0x89, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x69, 0xfe, 0x5c, 0x03, 0xfc, 0x04, 0x0e, 0x02, 0x26, + 0x02, 0x1b, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x53, 0xfe, 0xcb, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x66, 0xfe, 0x5c, 0x04, 0x49, 0x04, 0x0e, 0x02, 0x26, + 0x09, 0xa3, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x53, 0x01, 0x0c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x91, 0xfe, 0x5e, 0x04, 0xbc, 0x05, 0xae, 0x02, 0x26, + 0x00, 0x8b, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4e, 0x01, 0xb5, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xa5, 0xfe, 0x5c, 0x03, 0xe1, 0x04, 0x08, 0x02, 0x26, + 0x05, 0xfb, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x53, 0xff, 0x0b, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x7b, 0xfe, 0x5c, 0x03, 0xe9, 0x05, 0x98, 0x00, 0x36, + 0x00, 0x44, 0xb2, 0x08, 0x08, 0x36, 0xb8, 0x01, 0xa8, 0xb3, 0x12, 0x26, + 0x26, 0x31, 0xb8, 0x02, 0x11, 0xb4, 0x1c, 0x1c, 0x12, 0x12, 0x17, 0xb8, + 0x01, 0x31, 0xb3, 0x36, 0x52, 0x26, 0x2b, 0xb8, 0x01, 0x36, 0x40, 0x09, + 0x25, 0x22, 0x54, 0x08, 0x05, 0xf7, 0x09, 0x0c, 0x56, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x05, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x11, 0x14, 0x0e, 0x02, 0x07, 0x01, 0x4e, 0x0d, 0x1a, 0x26, + 0x19, 0x1a, 0x34, 0x16, 0x27, 0x51, 0x21, 0x3c, 0x60, 0x43, 0x25, 0x13, + 0x2b, 0x2b, 0x28, 0x0f, 0x26, 0x3a, 0x27, 0x14, 0x30, 0x62, 0x94, 0x63, + 0x27, 0x5b, 0x28, 0x13, 0x2b, 0x2a, 0x27, 0x10, 0x27, 0x39, 0x27, 0x13, + 0x2c, 0x59, 0x85, 0x58, 0x50, 0x30, 0x3b, 0x22, 0x0c, 0x08, 0x05, 0xbd, + 0x05, 0x06, 0x1a, 0x48, 0x7e, 0x63, 0x01, 0x3e, 0x06, 0x0a, 0x08, 0x04, + 0x13, 0x36, 0x60, 0x4d, 0x02, 0x10, 0x84, 0xb2, 0x6d, 0x2e, 0x11, 0x0c, + 0xd7, 0x06, 0x0b, 0x07, 0x05, 0x13, 0x36, 0x60, 0x4d, 0xfd, 0xf5, 0x7d, + 0xad, 0x6d, 0x35, 0x04, 0xff, 0xff, 0x00, 0x89, 0xfe, 0x5e, 0x05, 0x23, + 0x03, 0xf8, 0x02, 0x26, 0x00, 0x97, 0x00, 0x00, 0x00, 0x07, 0x0a, 0x4e, + 0x02, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x6e, 0xfe, 0x5c, 0x03, 0xdb, + 0x03, 0xf8, 0x00, 0x36, 0x00, 0x3c, 0x40, 0x0f, 0x1c, 0x19, 0xf7, 0x1d, + 0x20, 0x56, 0x36, 0xcf, 0x00, 0x60, 0x06, 0x70, 0x06, 0x02, 0x06, 0xb8, + 0xff, 0xc0, 0x40, 0x11, 0x18, 0x1b, 0x48, 0x06, 0x06, 0x03, 0x26, 0x2b, + 0xfa, 0x13, 0x10, 0x52, 0x05, 0x02, 0xfe, 0x03, 0x4f, 0x00, 0x3f, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x2b, 0x5d, 0x33, 0xed, + 0x3f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x25, 0x21, 0x35, 0x21, 0x15, + 0x05, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x11, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x01, 0x0f, 0x01, 0x24, 0xfe, 0x49, 0x03, 0x14, + 0xfe, 0xb9, 0x74, 0x9a, 0x5d, 0x27, 0x34, 0x77, 0xc2, 0x8e, 0x20, 0x52, + 0x2d, 0x0d, 0x1a, 0x26, 0x19, 0x1a, 0x34, 0x16, 0x27, 0x51, 0x21, 0x3c, + 0x60, 0x43, 0x25, 0x33, 0x6c, 0x66, 0x5b, 0x21, 0x48, 0x61, 0x39, 0x18, + 0x1b, 0x3e, 0x66, 0x4a, 0xd1, 0x02, 0x77, 0xbf, 0xc2, 0xb3, 0xc6, 0x0b, + 0x3d, 0x59, 0x6b, 0x38, 0x45, 0x7b, 0x5c, 0x36, 0x04, 0x05, 0x42, 0x30, + 0x3b, 0x22, 0x0c, 0x08, 0x05, 0xbd, 0x05, 0x06, 0x1a, 0x48, 0x7e, 0x63, + 0x01, 0x43, 0x0e, 0x16, 0x0f, 0x08, 0x18, 0x29, 0x35, 0x1e, 0x1d, 0x35, + 0x28, 0x18, 0x00, 0x02, 0x01, 0x0b, 0x02, 0xc4, 0x03, 0x5a, 0x05, 0x4b, + 0x00, 0x13, 0x00, 0x24, 0x00, 0x35, 0xb9, 0x00, 0x00, 0x01, 0x66, 0xb2, + 0x14, 0x0d, 0x1d, 0xb8, 0x01, 0x65, 0xb5, 0x0a, 0x1c, 0x17, 0x95, 0x0d, + 0x0f, 0xba, 0x02, 0x7b, 0x00, 0x0b, 0x02, 0x7c, 0xb4, 0x1d, 0x20, 0x95, + 0x0a, 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x11, 0x33, 0x17, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x15, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x5a, 0x2f, 0x55, 0x79, + 0x4a, 0x0f, 0x34, 0x44, 0x53, 0x2e, 0x9e, 0x02, 0x52, 0x6f, 0x3b, 0x59, + 0x3c, 0x1e, 0xad, 0x2d, 0x2d, 0x16, 0x25, 0x25, 0x27, 0x17, 0x17, 0x35, + 0x1a, 0x1d, 0x35, 0x28, 0x18, 0x04, 0x12, 0x4d, 0x7b, 0x57, 0x2f, 0x03, + 0x07, 0x0d, 0x0a, 0x02, 0x5c, 0x4b, 0x55, 0x2d, 0x52, 0x74, 0x4c, 0x62, + 0x54, 0x10, 0x20, 0x2f, 0x1f, 0xe6, 0x08, 0x07, 0x15, 0x2e, 0x47, 0x00, + 0x00, 0x01, 0x01, 0x11, 0x02, 0xc6, 0x03, 0x2e, 0x05, 0x4c, 0x00, 0x1d, + 0x00, 0x2a, 0xb9, 0x00, 0x17, 0x01, 0x66, 0xb7, 0x06, 0x0f, 0x00, 0x0f, + 0x12, 0x96, 0x0e, 0x0b, 0xb8, 0x02, 0x7b, 0xb4, 0x1d, 0x1a, 0x96, 0x00, + 0x03, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, + 0x03, 0x2e, 0x33, 0x70, 0x32, 0x9e, 0xaa, 0x2f, 0x57, 0x7c, 0x4d, 0x34, + 0x6a, 0x30, 0x36, 0x64, 0x29, 0x23, 0x3e, 0x2f, 0x1c, 0x5e, 0x53, 0x28, + 0x63, 0x33, 0x02, 0xea, 0x13, 0x11, 0xa1, 0x9c, 0x4a, 0x7a, 0x56, 0x2f, + 0x11, 0x11, 0xa1, 0x1b, 0x1a, 0x16, 0x2d, 0x46, 0x2f, 0x62, 0x4f, 0x19, + 0x1a, 0x00, 0x00, 0x02, 0x01, 0x04, 0x02, 0x75, 0x03, 0x4d, 0x05, 0x4c, + 0x00, 0x2d, 0x00, 0x36, 0x00, 0x5f, 0xb2, 0x27, 0x27, 0x0b, 0xb8, 0x01, + 0x51, 0xb2, 0x34, 0x34, 0x00, 0xb8, 0x01, 0x67, 0xb3, 0x1f, 0x31, 0x10, + 0x16, 0xb8, 0x01, 0x53, 0x40, 0x14, 0x1c, 0x03, 0x17, 0x27, 0x29, 0x96, + 0x24, 0x2e, 0x8d, 0x6f, 0x08, 0x7f, 0x08, 0x8f, 0x08, 0x03, 0x08, 0x08, + 0x26, 0x24, 0xb8, 0x02, 0x7b, 0x40, 0x09, 0x03, 0x31, 0x90, 0x10, 0x1c, + 0x10, 0x16, 0x16, 0x10, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0x39, 0x2f, 0x5d, 0xed, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x16, 0x17, 0x3e, 0x03, 0x33, + 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x06, 0x14, 0x15, 0x14, 0x06, + 0x15, 0x23, 0x3c, 0x02, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x17, 0x15, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x05, 0x22, 0x06, + 0x07, 0x36, 0x36, 0x35, 0x34, 0x26, 0x01, 0xb4, 0x1c, 0x2a, 0x0b, 0x25, + 0x33, 0x41, 0x26, 0x3c, 0x4d, 0x1b, 0x36, 0x51, 0x37, 0x01, 0x01, 0x8e, + 0x01, 0x01, 0x6f, 0x73, 0x36, 0x5d, 0x7c, 0x47, 0x61, 0x57, 0x67, 0x4f, + 0x23, 0x3e, 0x2d, 0x1a, 0x01, 0x13, 0x20, 0x37, 0x11, 0x40, 0x42, 0x0e, + 0x04, 0x06, 0x3c, 0x53, 0x15, 0x22, 0x3a, 0x2b, 0x18, 0x44, 0x44, 0x1e, + 0x3d, 0x31, 0x22, 0x04, 0x09, 0x11, 0x0a, 0x0a, 0x21, 0x03, 0x07, 0x17, + 0x19, 0x19, 0x09, 0x19, 0x9b, 0x81, 0x4e, 0x7b, 0x54, 0x2c, 0x22, 0xa1, + 0x35, 0x16, 0x2d, 0x46, 0x9b, 0x30, 0x2b, 0x03, 0x25, 0x1a, 0x0b, 0x0e, + 0x00, 0x02, 0x01, 0x00, 0x02, 0xc4, 0x03, 0x5a, 0x06, 0x36, 0x00, 0x10, + 0x00, 0x2f, 0x00, 0x76, 0x40, 0x09, 0x1e, 0x1b, 0x15, 0x18, 0x04, 0x17, + 0x1c, 0x1c, 0x21, 0xb8, 0x01, 0x66, 0x40, 0x0a, 0x0e, 0x17, 0x17, 0x1a, + 0x19, 0x19, 0x2b, 0x0e, 0x0e, 0x06, 0xb8, 0x01, 0x66, 0x40, 0x13, 0x2b, + 0x18, 0x1b, 0x17, 0x1c, 0x17, 0x1e, 0x15, 0x1d, 0x16, 0x00, 0x03, 0x92, + 0x00, 0x14, 0x10, 0x14, 0x02, 0x14, 0xb8, 0xff, 0xc0, 0x40, 0x09, 0x09, + 0x0c, 0x48, 0x14, 0x14, 0x19, 0x0b, 0x96, 0x26, 0xb8, 0x02, 0x80, 0xb3, + 0x1d, 0x1c, 0x1c, 0x19, 0xb8, 0x02, 0x77, 0x00, 0x3f, 0x33, 0x2f, 0x33, + 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x2b, 0x71, 0xed, 0x32, 0xce, 0x11, 0x39, + 0x39, 0x32, 0x11, 0x12, 0x39, 0x39, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x12, + 0x39, 0x2f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x12, 0x17, 0x39, + 0x30, 0x31, 0x01, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x32, 0x32, 0x17, 0x27, 0x07, + 0x27, 0x37, 0x27, 0x33, 0x17, 0x37, 0x17, 0x07, 0x16, 0x16, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x02, 0x87, + 0x0f, 0x1f, 0x0e, 0x54, 0x4a, 0x13, 0x23, 0x2f, 0x1c, 0x42, 0x3d, 0x12, + 0x71, 0x05, 0x10, 0x08, 0x2b, 0xb1, 0x06, 0x63, 0x45, 0xb9, 0x28, 0xb6, + 0x06, 0x6c, 0x4e, 0x58, 0x1a, 0x45, 0x77, 0x5e, 0x47, 0x6d, 0x4b, 0x27, + 0x27, 0x4b, 0x70, 0x04, 0x99, 0x03, 0x05, 0x4f, 0x51, 0x2f, 0x43, 0x2a, + 0x14, 0x5a, 0x58, 0x30, 0x44, 0xb1, 0x01, 0x4a, 0x27, 0x81, 0x16, 0x55, + 0x35, 0x27, 0x81, 0x16, 0x66, 0xcc, 0x56, 0x32, 0x72, 0x61, 0x40, 0x2c, + 0x51, 0x73, 0x46, 0x45, 0x6f, 0x4f, 0x2b, 0x00, 0xff, 0xff, 0x01, 0x08, + 0x02, 0xa0, 0x03, 0x55, 0x05, 0x2a, 0x03, 0x06, 0x06, 0xa8, 0x00, 0xdc, + 0x00, 0x0c, 0xb1, 0x00, 0x15, 0xb9, 0x02, 0x80, 0x00, 0x15, 0x00, 0x11, + 0x3f, 0x35, 0x00, 0x01, 0x00, 0xf3, 0x02, 0xce, 0x03, 0x74, 0x06, 0x3d, + 0x00, 0x17, 0x00, 0x49, 0xb5, 0x08, 0x08, 0x06, 0x00, 0x00, 0x09, 0xb8, + 0x01, 0x66, 0x40, 0x0b, 0x0c, 0x0f, 0x0c, 0x0d, 0x0d, 0x0c, 0x00, 0x03, + 0x96, 0x17, 0x15, 0xb8, 0x02, 0x76, 0xb4, 0x09, 0x0c, 0x96, 0x06, 0x0f, + 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x0c, 0x48, 0x0f, 0xba, 0x02, 0x7e, 0x00, + 0x0b, 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x2b, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x2f, + 0x32, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x26, 0x26, 0x23, 0x22, 0x15, 0x15, + 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x17, 0x03, 0x74, 0x37, 0x4f, 0x1a, 0x76, 0x01, 0x03, + 0xfe, 0xfd, 0xac, 0xbf, 0xbf, 0x29, 0x4d, 0x6c, 0x42, 0x3f, 0x5f, 0x05, + 0x9a, 0x0c, 0x0b, 0x80, 0x3a, 0x8c, 0xfe, 0x63, 0x01, 0x9d, 0x8c, 0x47, + 0x3f, 0x60, 0x40, 0x20, 0x12, 0x00, 0x00, 0x01, 0x00, 0xf3, 0x01, 0xd4, + 0x03, 0x74, 0x05, 0x43, 0x00, 0x16, 0x00, 0x48, 0xb3, 0x0e, 0x0c, 0x0c, + 0x0b, 0xb8, 0x01, 0x66, 0x40, 0x1b, 0x08, 0x06, 0x06, 0x05, 0x08, 0x00, + 0x00, 0x08, 0x0c, 0x07, 0x96, 0x0e, 0x0f, 0x05, 0x1f, 0x05, 0x2f, 0x05, + 0x03, 0x05, 0x05, 0x09, 0x00, 0x02, 0x96, 0x16, 0x14, 0xba, 0x02, 0x81, + 0x00, 0x09, 0x02, 0x7c, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, + 0x2f, 0x5d, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, 0x13, 0x16, 0x33, 0x32, + 0x35, 0x35, 0x21, 0x35, 0x21, 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x27, 0xf3, 0x6c, 0x34, 0x76, 0xfe, 0xfc, + 0x01, 0x04, 0xac, 0xbf, 0xbf, 0x2a, 0x4c, 0x6c, 0x43, 0x42, 0x5b, 0x02, + 0x78, 0x18, 0x81, 0x3a, 0x8c, 0x01, 0x9c, 0xfe, 0x64, 0x8c, 0x48, 0x3f, + 0x60, 0x40, 0x20, 0x13, 0xff, 0xff, 0x00, 0xf2, 0x01, 0xd6, 0x03, 0x7e, + 0x05, 0x4b, 0x02, 0x06, 0x06, 0xa9, 0x00, 0x00, 0x00, 0x01, 0x01, 0x1e, + 0x01, 0xdc, 0x03, 0x3f, 0x05, 0x43, 0x00, 0x16, 0x00, 0x2f, 0xb1, 0x10, + 0x0c, 0xbb, 0x01, 0x65, 0x00, 0x0b, 0x00, 0x01, 0x01, 0x65, 0xb7, 0x00, + 0x0a, 0x05, 0x96, 0x10, 0x13, 0x13, 0x0e, 0xbb, 0x02, 0x81, 0x00, 0x0b, + 0x00, 0x00, 0x02, 0x7c, 0x00, 0x3f, 0x32, 0x3f, 0x39, 0x2f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x33, 0x11, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x33, 0x11, 0x23, 0x11, + 0x37, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x01, 0x1e, 0xaa, 0x20, 0x25, + 0x11, 0x1d, 0x20, 0x23, 0x17, 0xaa, 0xaa, 0x01, 0x2a, 0x50, 0x2e, 0x64, + 0x6c, 0x05, 0x43, 0xfe, 0x87, 0x3d, 0x3b, 0x0a, 0x19, 0x2a, 0x20, 0x01, + 0x84, 0xfc, 0x99, 0x01, 0x04, 0x26, 0x26, 0x1c, 0x74, 0x76, 0x00, 0x02, + 0x01, 0x1b, 0x02, 0xce, 0x03, 0x33, 0x06, 0x4f, 0x00, 0x11, 0x00, 0x25, + 0x00, 0x6b, 0xb9, 0x00, 0x17, 0x01, 0xb8, 0x40, 0x0a, 0x21, 0x11, 0x11, + 0x21, 0x0b, 0x0b, 0x08, 0x08, 0x06, 0x0a, 0xb8, 0x01, 0x63, 0x40, 0x13, + 0x0f, 0x0e, 0x0e, 0x0f, 0x03, 0x03, 0x01, 0x0f, 0x09, 0x11, 0x94, 0x06, + 0x00, 0x00, 0x05, 0x0a, 0x0f, 0x95, 0x0d, 0xb8, 0x02, 0x7f, 0x40, 0x14, + 0x12, 0xc0, 0x00, 0x1c, 0x10, 0x1c, 0x20, 0x1c, 0x03, 0x1c, 0x02, 0x95, + 0x0f, 0x05, 0x1f, 0x05, 0x2f, 0x05, 0x03, 0x05, 0xb8, 0x02, 0x7c, 0x00, + 0x3f, 0x5d, 0xed, 0xde, 0x5d, 0xed, 0x3f, 0xed, 0x32, 0x11, 0x39, 0x2f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x32, 0x2f, 0x32, 0x2f, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x30, + 0x31, 0x01, 0x33, 0x35, 0x23, 0x35, 0x21, 0x15, 0x33, 0x15, 0x23, 0x15, + 0x33, 0x15, 0x21, 0x35, 0x33, 0x35, 0x23, 0x13, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x01, + 0x4b, 0x94, 0xb0, 0x01, 0x53, 0x89, 0x89, 0xb1, 0xfd, 0xe8, 0xc4, 0x94, + 0xc5, 0x17, 0x28, 0x1e, 0x11, 0x11, 0x1e, 0x28, 0x17, 0x17, 0x28, 0x1e, + 0x11, 0x11, 0x1e, 0x28, 0x04, 0x56, 0x64, 0x89, 0xed, 0x88, 0x76, 0x8a, + 0x8a, 0x76, 0x02, 0x81, 0x11, 0x1d, 0x27, 0x16, 0x16, 0x27, 0x1c, 0x11, + 0x11, 0x1c, 0x27, 0x16, 0x16, 0x27, 0x1d, 0x11, 0x00, 0x01, 0x01, 0x0b, + 0x02, 0xc6, 0x03, 0x46, 0x05, 0x43, 0x00, 0x13, 0x00, 0x2c, 0xb2, 0x13, + 0x13, 0x0c, 0xb8, 0x01, 0x65, 0xb6, 0x09, 0x0a, 0x0a, 0x09, 0x09, 0x96, + 0x0b, 0xb8, 0x02, 0x7c, 0xb4, 0x13, 0x10, 0x96, 0x00, 0x03, 0xb8, 0x02, + 0x80, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x32, 0x2f, + 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x11, 0x23, 0x35, 0x21, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x37, 0x03, 0x46, 0x1f, 0x43, 0x20, 0x32, 0x57, 0x41, 0x26, 0xc9, 0x01, + 0x73, 0x2b, 0x2a, 0x17, 0x3d, 0x1f, 0x02, 0xd9, 0x0a, 0x09, 0x16, 0x32, + 0x4f, 0x39, 0x01, 0x21, 0x8c, 0xfe, 0x78, 0x36, 0x32, 0x0c, 0x0b, 0x00, + 0x00, 0x01, 0x01, 0x23, 0x02, 0xce, 0x03, 0x30, 0x05, 0xf7, 0x00, 0x0b, + 0x00, 0x37, 0xb4, 0x07, 0x07, 0x04, 0x04, 0x05, 0xb8, 0x01, 0x64, 0x40, + 0x0b, 0x00, 0x0a, 0x0a, 0x00, 0x01, 0x01, 0x00, 0x06, 0x0a, 0x96, 0x09, + 0xb8, 0x02, 0x7f, 0xb3, 0x05, 0x01, 0x96, 0x02, 0xb8, 0x02, 0x7a, 0x00, + 0x3f, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x23, 0x35, + 0x21, 0x15, 0x23, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x01, 0xd5, 0xb2, + 0x02, 0x0d, 0xb3, 0xb3, 0xfd, 0xf3, 0xb2, 0x05, 0x6b, 0x8c, 0x8c, 0xfd, + 0xf0, 0x8d, 0x8d, 0x00, 0x00, 0x01, 0x01, 0x23, 0x02, 0xce, 0x03, 0x30, + 0x05, 0xf7, 0x00, 0x13, 0x00, 0x54, 0xb7, 0x0d, 0x0d, 0x0b, 0x09, 0x09, + 0x06, 0x06, 0x07, 0xb8, 0x01, 0x64, 0x40, 0x17, 0x02, 0x12, 0x02, 0x10, + 0x10, 0x02, 0x03, 0x03, 0x02, 0x00, 0x00, 0x02, 0x0b, 0x13, 0x93, 0x08, + 0x00, 0x00, 0x04, 0x0c, 0x10, 0x96, 0x0f, 0xb8, 0x02, 0x7f, 0xb3, 0x07, + 0x03, 0x96, 0x04, 0xb8, 0x02, 0x7a, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, + 0x32, 0x11, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x2f, 0x32, + 0x2f, 0x32, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x33, 0x35, 0x23, 0x35, 0x21, + 0x15, 0x23, 0x15, 0x33, 0x15, 0x23, 0x15, 0x33, 0x15, 0x21, 0x35, 0x33, + 0x35, 0x23, 0x01, 0x40, 0x95, 0xb2, 0x02, 0x0d, 0xb3, 0x96, 0x96, 0xb3, + 0xfd, 0xf3, 0xb2, 0x95, 0x04, 0xb6, 0xb5, 0x8c, 0x8c, 0xb5, 0x87, 0xd4, + 0x8d, 0x8d, 0xd4, 0x00, 0x00, 0x03, 0x00, 0xeb, 0x01, 0xdc, 0x03, 0x0c, + 0x06, 0x4f, 0x00, 0x21, 0x00, 0x30, 0x00, 0x44, 0x00, 0x6d, 0xb9, 0x00, + 0x36, 0x01, 0xb8, 0xb4, 0x40, 0x40, 0x1e, 0x03, 0x06, 0xb8, 0x01, 0x56, + 0xb3, 0x27, 0x07, 0x07, 0x21, 0xb8, 0x01, 0x66, 0xb3, 0x1a, 0x1e, 0x1e, + 0x2c, 0xb8, 0x01, 0x51, 0x40, 0x0a, 0x12, 0x1f, 0x1f, 0x12, 0x31, 0xc0, + 0x3b, 0x1f, 0x96, 0x20, 0xb8, 0x02, 0x7c, 0x40, 0x13, 0x2a, 0x15, 0x40, + 0x0c, 0x0f, 0x48, 0x15, 0x15, 0x27, 0x1a, 0x22, 0x90, 0x0d, 0x0a, 0x0d, + 0x07, 0x07, 0x03, 0x0d, 0xb8, 0x02, 0x81, 0x00, 0x3f, 0x33, 0x33, 0x2f, + 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x32, 0x2f, 0x2b, 0xcd, 0x3f, 0xed, + 0xde, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, 0xed, + 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, + 0x14, 0x06, 0x07, 0x16, 0x16, 0x17, 0x23, 0x26, 0x34, 0x27, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, + 0x36, 0x36, 0x35, 0x11, 0x21, 0x35, 0x21, 0x01, 0x32, 0x3e, 0x02, 0x33, + 0x26, 0x26, 0x23, 0x22, 0x15, 0x14, 0x1e, 0x02, 0x13, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x03, 0x0c, 0x36, 0x3c, 0x03, 0x09, 0x04, 0x9f, 0x02, 0x04, 0x0e, 0x1c, + 0x0e, 0x2c, 0x51, 0x3f, 0x26, 0x5a, 0x4f, 0x2a, 0x3e, 0x2f, 0x22, 0x0d, + 0x05, 0x01, 0xfe, 0xdc, 0x01, 0xcf, 0xfe, 0xbd, 0x03, 0x0d, 0x0f, 0x0c, + 0x03, 0x0d, 0x38, 0x1e, 0x26, 0x10, 0x1a, 0x20, 0xe3, 0x17, 0x28, 0x1e, + 0x11, 0x11, 0x1e, 0x28, 0x17, 0x17, 0x29, 0x1e, 0x11, 0x11, 0x1e, 0x29, + 0x03, 0x05, 0x48, 0x71, 0x20, 0x0f, 0x21, 0x20, 0x08, 0x10, 0x08, 0x02, + 0x01, 0x16, 0x2d, 0x44, 0x2d, 0x4a, 0x4d, 0x16, 0x24, 0x2e, 0x18, 0x0e, + 0x28, 0x18, 0x01, 0x96, 0x9b, 0xfd, 0x37, 0x01, 0x01, 0x01, 0x24, 0x33, + 0x21, 0x0f, 0x15, 0x0e, 0x07, 0x03, 0xd5, 0x11, 0x1d, 0x27, 0x16, 0x16, + 0x27, 0x1c, 0x11, 0x11, 0x1c, 0x27, 0x16, 0x16, 0x27, 0x1d, 0x11, 0x00, + 0x00, 0x01, 0x01, 0x21, 0x01, 0xd8, 0x03, 0x30, 0x06, 0x36, 0x00, 0x15, + 0x00, 0x2c, 0xb2, 0x09, 0x09, 0x00, 0xb8, 0x01, 0x66, 0xb6, 0x13, 0x14, + 0x14, 0x13, 0x13, 0x90, 0x15, 0xb8, 0x02, 0x77, 0xb4, 0x09, 0x04, 0x96, + 0x0a, 0x0f, 0xb8, 0x02, 0x81, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x01, 0x2f, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x31, 0x30, 0x01, 0x11, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, + 0x26, 0x35, 0x11, 0x23, 0x35, 0x02, 0x7b, 0x1a, 0x2a, 0x0d, 0x1f, 0x1f, + 0x1c, 0x0a, 0x0c, 0x22, 0x24, 0x22, 0x0b, 0x70, 0x71, 0xaf, 0x06, 0x36, + 0xfc, 0x96, 0x30, 0x32, 0x03, 0x04, 0x04, 0x02, 0x92, 0x02, 0x04, 0x04, + 0x03, 0x71, 0x70, 0x03, 0x06, 0x77, 0x00, 0x01, 0x01, 0x02, 0x01, 0xb9, + 0x03, 0x2c, 0x06, 0x36, 0x00, 0x17, 0x00, 0x47, 0xb2, 0x10, 0x10, 0x17, + 0xb8, 0x01, 0x56, 0xb2, 0x08, 0x08, 0x06, 0xb8, 0x01, 0x66, 0x40, 0x0a, + 0x03, 0x04, 0x04, 0x03, 0x01, 0x01, 0x03, 0x04, 0x95, 0x05, 0xb8, 0x02, + 0x77, 0x40, 0x0a, 0x10, 0x13, 0x94, 0x0f, 0x0c, 0x0c, 0x07, 0x01, 0x96, + 0x00, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x35, 0x33, 0x11, 0x23, + 0x35, 0x21, 0x11, 0x33, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x35, 0x01, 0x02, 0xce, 0xb9, 0x01, + 0x64, 0xb1, 0x67, 0x72, 0x15, 0x30, 0x14, 0x1c, 0x28, 0x0c, 0x1c, 0x25, + 0x02, 0xce, 0x8c, 0x02, 0x51, 0x8b, 0xfd, 0x24, 0xcc, 0x63, 0x72, 0x02, + 0x04, 0x90, 0x0a, 0x04, 0x24, 0x2d, 0x3c, 0x00, 0x00, 0x01, 0x01, 0x48, + 0x02, 0xce, 0x03, 0x3e, 0x05, 0x43, 0x00, 0x05, 0x00, 0x1f, 0xb2, 0x05, + 0x05, 0x03, 0xbb, 0x01, 0x66, 0x00, 0x02, 0x00, 0x02, 0x02, 0x7c, 0xb2, + 0x04, 0x96, 0x01, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0xed, 0x3f, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0x31, 0x30, 0x01, 0x21, 0x11, 0x33, 0x11, 0x21, 0x03, + 0x3e, 0xfe, 0x0a, 0xae, 0x01, 0x48, 0x02, 0xce, 0x02, 0x75, 0xfe, 0x1b, + 0x00, 0x01, 0x00, 0xc1, 0x01, 0xb9, 0x03, 0xa4, 0x05, 0x4e, 0x00, 0x2f, + 0x00, 0x6a, 0xb1, 0x15, 0x11, 0xb8, 0x01, 0x63, 0xb2, 0x12, 0x1b, 0x07, + 0xb8, 0x01, 0x56, 0xb6, 0x08, 0x08, 0x00, 0x12, 0x29, 0x29, 0x21, 0xb8, + 0x01, 0x56, 0xb5, 0x00, 0x00, 0x12, 0x03, 0x95, 0x1e, 0xb8, 0x02, 0x7b, + 0x40, 0x0a, 0x1b, 0x15, 0x15, 0x18, 0x06, 0x10, 0x10, 0x0b, 0x95, 0x18, + 0xba, 0x02, 0x7b, 0x00, 0x13, 0x02, 0x7c, 0xb6, 0x29, 0x2c, 0x94, 0x28, + 0x25, 0x25, 0x12, 0xba, 0x02, 0x7f, 0x00, 0x08, 0x02, 0x7f, 0x00, 0x3f, + 0x3f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0xed, 0x32, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, + 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x10, 0xed, 0x32, 0x30, 0x31, + 0x01, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x34, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, + 0x32, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, 0x14, 0x06, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x03, + 0x03, 0x10, 0x0e, 0x13, 0x2d, 0x1d, 0xa1, 0x1f, 0x09, 0x15, 0x18, 0x1d, + 0x12, 0xa2, 0x91, 0x01, 0x1a, 0x51, 0x2c, 0x37, 0x3e, 0x0e, 0x18, 0x52, + 0x2f, 0x54, 0x4a, 0x67, 0x72, 0x15, 0x30, 0x14, 0x1c, 0x28, 0x0c, 0x1c, + 0x25, 0x04, 0x98, 0x16, 0x15, 0x36, 0x45, 0xfe, 0x86, 0x01, 0xcb, 0x2a, + 0x0b, 0x1d, 0x30, 0x25, 0xfe, 0x88, 0x02, 0x75, 0x57, 0x2b, 0x37, 0x34, + 0x2a, 0x27, 0x37, 0x5e, 0x60, 0xfd, 0xfe, 0x63, 0x72, 0x02, 0x04, 0x90, + 0x0a, 0x04, 0x24, 0x2d, 0x00, 0x01, 0x00, 0xc1, 0x01, 0xdb, 0x03, 0xa4, + 0x05, 0x43, 0x00, 0x23, 0x00, 0x5f, 0xb1, 0x1c, 0x0a, 0xb8, 0x01, 0x56, + 0xb4, 0x07, 0x07, 0x23, 0x16, 0x13, 0xb8, 0x01, 0x63, 0xb2, 0x11, 0x11, + 0x00, 0xbb, 0x01, 0x56, 0x00, 0x23, 0x00, 0x23, 0x02, 0x7c, 0x40, 0x0e, + 0x16, 0x0a, 0x1c, 0x1c, 0x1f, 0x11, 0x07, 0x07, 0x04, 0x95, 0x1f, 0x15, + 0x15, 0x1f, 0xb8, 0x02, 0x80, 0xb2, 0x0c, 0x95, 0x19, 0xbc, 0x02, 0x80, + 0x00, 0x12, 0x02, 0x7c, 0x00, 0x08, 0x02, 0x7c, 0x00, 0x3f, 0x3f, 0x3f, + 0xed, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x12, 0x39, + 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x37, 0x11, 0x33, 0x11, 0x14, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x33, + 0x11, 0x23, 0x11, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x35, 0x11, 0x01, 0x62, 0x10, 0x0e, 0x13, 0x2d, 0x1d, 0xa1, + 0x1f, 0x09, 0x15, 0x18, 0x1d, 0x12, 0xa2, 0xa2, 0x18, 0x43, 0x2c, 0x37, + 0x3e, 0x0e, 0x18, 0x52, 0x2f, 0x54, 0x4a, 0x05, 0x43, 0xfe, 0x36, 0x16, + 0x15, 0x36, 0x45, 0x01, 0x7a, 0xfe, 0x35, 0x2a, 0x0b, 0x1d, 0x30, 0x25, + 0x01, 0x78, 0xfc, 0x98, 0x01, 0x37, 0x26, 0x29, 0x34, 0x2a, 0x27, 0x37, + 0x5e, 0x60, 0x01, 0xc2, 0x00, 0x01, 0x00, 0x92, 0x01, 0xb9, 0x03, 0x44, + 0x05, 0x4e, 0x00, 0x21, 0x00, 0x44, 0xb1, 0x02, 0x13, 0xbb, 0x01, 0x66, + 0x00, 0x00, 0x00, 0x09, 0x01, 0x66, 0x40, 0x0d, 0x0a, 0x0a, 0x00, 0x1b, + 0x1b, 0x00, 0x1b, 0x1e, 0x94, 0x1a, 0x17, 0x17, 0x0a, 0xb8, 0x02, 0x7f, + 0xb4, 0x13, 0x0e, 0x96, 0x02, 0x05, 0xba, 0x02, 0x7b, 0x00, 0x00, 0x02, + 0x7c, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x2f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, + 0x30, 0x31, 0x01, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x11, + 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x14, 0x06, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x01, + 0x23, 0x9e, 0x03, 0x24, 0x4e, 0x2f, 0x66, 0x79, 0xab, 0x20, 0x28, 0x10, + 0x1d, 0x1e, 0x23, 0x15, 0x68, 0x72, 0x15, 0x39, 0x14, 0x1c, 0x28, 0x0c, + 0x1c, 0x25, 0x05, 0x43, 0x3d, 0x26, 0x22, 0x74, 0x76, 0xfe, 0x6a, 0x01, + 0x7a, 0x3d, 0x3b, 0x08, 0x17, 0x27, 0x1e, 0xfe, 0x32, 0x63, 0x72, 0x02, + 0x04, 0x90, 0x0a, 0x04, 0x24, 0x2d, 0x00, 0x01, 0x01, 0x22, 0x01, 0xb9, + 0x03, 0xd5, 0x05, 0x4e, 0x00, 0x23, 0x00, 0x42, 0xb1, 0x1b, 0x16, 0xb8, + 0x01, 0x66, 0xb3, 0x19, 0x06, 0x06, 0x00, 0xb8, 0x01, 0x66, 0xb7, 0x0d, + 0x0d, 0x19, 0x16, 0x11, 0x96, 0x1b, 0x1e, 0xbc, 0x02, 0x7b, 0x00, 0x19, + 0x02, 0x7c, 0x00, 0x18, 0x02, 0x7f, 0xb4, 0x06, 0x03, 0x94, 0x07, 0x0a, + 0xb8, 0x02, 0x81, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, + 0x30, 0x31, 0x01, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x26, 0x35, 0x11, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x11, 0x23, 0x11, 0x33, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x03, 0x44, 0x25, 0x1c, 0x0c, 0x28, 0x1c, 0x14, 0x3a, 0x15, 0x72, 0x67, + 0x20, 0x29, 0x10, 0x1d, 0x1e, 0x23, 0x15, 0xab, 0x9f, 0x02, 0x25, 0x4d, + 0x30, 0x33, 0x52, 0x3a, 0x20, 0x02, 0x92, 0x2d, 0x24, 0x04, 0x0a, 0x90, + 0x04, 0x02, 0x72, 0x63, 0x01, 0xba, 0x3d, 0x3b, 0x08, 0x17, 0x27, 0x1e, + 0xfe, 0x72, 0x02, 0x75, 0x3d, 0x26, 0x22, 0x1d, 0x3a, 0x58, 0x3b, 0x00, + 0x00, 0x01, 0x01, 0x08, 0x02, 0xce, 0x03, 0x5e, 0x05, 0x43, 0x00, 0x09, + 0x00, 0x36, 0xb9, 0x00, 0x09, 0x01, 0x56, 0xb4, 0x01, 0x07, 0x07, 0x06, + 0x02, 0x41, 0x0c, 0x01, 0x56, 0x00, 0x05, 0x00, 0x08, 0x02, 0x7c, 0x00, + 0x02, 0x00, 0x06, 0x02, 0x7c, 0x00, 0x03, 0x02, 0x7f, 0x00, 0x07, 0x00, + 0x01, 0x02, 0x7f, 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x33, 0x3f, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, 0x01, 0x23, 0x03, 0x11, + 0x23, 0x11, 0x33, 0x13, 0x11, 0x33, 0x03, 0x5e, 0xbf, 0xf7, 0xa0, 0xbd, + 0xf9, 0xa0, 0x02, 0xce, 0x01, 0x92, 0xfe, 0x6e, 0x02, 0x75, 0xfe, 0x73, + 0x01, 0x8d, 0x00, 0x03, 0x00, 0xfa, 0x02, 0xc4, 0x03, 0x6c, 0x05, 0x4e, + 0x00, 0x13, 0x00, 0x1c, 0x00, 0x25, 0x00, 0x38, 0xb1, 0x22, 0x1a, 0xb8, + 0x01, 0x65, 0xb2, 0x0a, 0x23, 0x00, 0xb8, 0x01, 0x65, 0x40, 0x0b, 0x19, + 0x19, 0x0a, 0x1a, 0x8d, 0x22, 0x22, 0x14, 0x1d, 0x94, 0x0f, 0xb8, 0x02, + 0x7b, 0xb2, 0x14, 0x94, 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x10, + 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x32, 0x3e, 0x02, + 0x37, 0x21, 0x16, 0x16, 0x13, 0x22, 0x0e, 0x02, 0x07, 0x21, 0x26, 0x26, + 0x03, 0x6c, 0x2e, 0x54, 0x75, 0x47, 0x45, 0x72, 0x51, 0x2c, 0x2e, 0x54, + 0x76, 0x47, 0x45, 0x71, 0x51, 0x2c, 0xfe, 0xc7, 0x21, 0x32, 0x24, 0x15, + 0x03, 0xfe, 0xe2, 0x08, 0x4b, 0x3c, 0x1f, 0x31, 0x23, 0x16, 0x05, 0x01, + 0x20, 0x0c, 0x4d, 0x04, 0x0e, 0x4a, 0x79, 0x57, 0x30, 0x2a, 0x51, 0x78, + 0x4e, 0x49, 0x79, 0x57, 0x30, 0x2a, 0x51, 0x77, 0xfe, 0xf0, 0x16, 0x25, + 0x32, 0x1d, 0x48, 0x42, 0x01, 0x7a, 0x14, 0x22, 0x2e, 0x1b, 0x3d, 0x42, + 0x00, 0x03, 0x00, 0xda, 0x01, 0xdc, 0x03, 0x8c, 0x06, 0x36, 0x00, 0x15, + 0x00, 0x1e, 0x00, 0x25, 0x00, 0x56, 0xb2, 0x25, 0x0d, 0x00, 0xb8, 0x01, + 0x56, 0xb5, 0x1e, 0x0a, 0x01, 0x01, 0x05, 0x10, 0xb8, 0x01, 0x64, 0xb2, + 0x22, 0x22, 0x1b, 0xb8, 0x01, 0x65, 0x40, 0x0a, 0x05, 0x25, 0x16, 0x94, + 0x0a, 0x0d, 0x0a, 0x0b, 0x0b, 0x0a, 0xb8, 0x02, 0x7b, 0x40, 0x09, 0x1f, + 0x1e, 0x95, 0x02, 0x15, 0x02, 0x01, 0x01, 0x02, 0xb8, 0x02, 0x80, 0x00, + 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, + 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x30, 0x31, 0x01, 0x23, 0x35, 0x26, + 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x35, 0x33, 0x15, 0x16, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x03, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x17, 0x33, + 0x36, 0x36, 0x35, 0x34, 0x26, 0x27, 0x02, 0x7f, 0x99, 0x86, 0x86, 0x2b, + 0x49, 0x61, 0x37, 0x99, 0x86, 0x87, 0x2b, 0x4a, 0x61, 0x37, 0x99, 0x1c, + 0x25, 0x17, 0x0a, 0x2b, 0x37, 0x99, 0x39, 0x2b, 0x2a, 0x3a, 0x01, 0xdc, + 0xec, 0x0e, 0xa4, 0x8c, 0x4b, 0x72, 0x50, 0x2f, 0x09, 0xeb, 0xeb, 0x0e, + 0xa3, 0x8c, 0x4c, 0x72, 0x50, 0x2f, 0x09, 0x01, 0xfb, 0x09, 0x21, 0x2f, + 0x3c, 0x23, 0x4c, 0x5e, 0x10, 0x11, 0x60, 0x45, 0x4e, 0x5e, 0x10, 0x00, + 0x00, 0x01, 0x01, 0x30, 0x01, 0xb9, 0x03, 0x36, 0x05, 0x4e, 0x00, 0x3b, + 0x00, 0x7a, 0xb2, 0x06, 0x06, 0x3b, 0xbb, 0x01, 0x63, 0x00, 0x0e, 0x00, + 0x2b, 0x01, 0x64, 0xb5, 0x1c, 0x1c, 0x0e, 0x25, 0x25, 0x33, 0xb8, 0x01, + 0x64, 0x40, 0x2e, 0x14, 0x14, 0x0e, 0x48, 0x17, 0x58, 0x17, 0x02, 0x09, + 0x17, 0x19, 0x17, 0x29, 0x17, 0x03, 0x17, 0x28, 0x38, 0x36, 0x30, 0x46, + 0x30, 0x56, 0x30, 0x03, 0x05, 0x30, 0x15, 0x30, 0x25, 0x30, 0x03, 0x30, + 0x21, 0x0e, 0x11, 0x94, 0x38, 0x06, 0x03, 0x94, 0x07, 0x0a, 0x0a, 0x3b, + 0x38, 0xb8, 0x02, 0x80, 0xb3, 0x25, 0x28, 0x92, 0x21, 0xb8, 0x02, 0x7b, + 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x10, + 0xed, 0x32, 0x11, 0x39, 0x5d, 0x5d, 0x11, 0x12, 0x39, 0x5d, 0x5d, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x10, 0xed, + 0x32, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, + 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x26, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, + 0x17, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x01, + 0xd2, 0x25, 0x1c, 0x0c, 0x28, 0x1c, 0x14, 0x30, 0x15, 0x72, 0x68, 0x3f, + 0x84, 0x33, 0x3d, 0x2b, 0x37, 0x43, 0x2b, 0x50, 0x3d, 0x25, 0x1f, 0x40, + 0x63, 0x44, 0x36, 0x64, 0x39, 0x3d, 0x61, 0x20, 0x41, 0x32, 0x0d, 0x1f, + 0x36, 0x29, 0x6e, 0x5e, 0x29, 0x48, 0x62, 0x39, 0x1d, 0x22, 0x19, 0x02, + 0x92, 0x2d, 0x24, 0x04, 0x0a, 0x90, 0x04, 0x02, 0x72, 0x63, 0xe3, 0x12, + 0x13, 0x16, 0x17, 0x19, 0x21, 0x16, 0x0e, 0x1e, 0x2d, 0x41, 0x31, 0x28, + 0x45, 0x31, 0x1c, 0x09, 0x0c, 0x8e, 0x0e, 0x0f, 0x16, 0x17, 0x0c, 0x13, + 0x12, 0x12, 0x0c, 0x21, 0x61, 0x48, 0x33, 0x49, 0x2d, 0x15, 0x01, 0x02, + 0x00, 0x01, 0x01, 0x0d, 0x01, 0xd6, 0x03, 0x59, 0x06, 0x3d, 0x00, 0x1e, + 0x00, 0x31, 0xb2, 0x18, 0x18, 0x1e, 0xb8, 0x01, 0x66, 0x40, 0x09, 0x0f, + 0x09, 0x09, 0x0f, 0x18, 0x1b, 0x96, 0x17, 0x14, 0xb8, 0x02, 0x76, 0xb4, + 0x09, 0x0b, 0x96, 0x08, 0x05, 0xb8, 0x02, 0x81, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, + 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x02, 0x88, 0x25, 0x43, + 0x5f, 0x3a, 0x1a, 0x43, 0x1d, 0x51, 0x2c, 0x2a, 0x29, 0x25, 0x44, 0x5f, + 0x3a, 0x1b, 0x42, 0x1d, 0x29, 0x3f, 0x16, 0x2a, 0x29, 0x02, 0xc5, 0x3b, + 0x59, 0x3c, 0x1f, 0x09, 0x08, 0x91, 0x15, 0x3a, 0x30, 0x02, 0x81, 0x3a, + 0x59, 0x3d, 0x1f, 0x09, 0x08, 0x93, 0x0c, 0x0a, 0x39, 0x31, 0x00, 0x01, + 0x00, 0xea, 0x01, 0xb9, 0x03, 0x45, 0x06, 0x06, 0x00, 0x23, 0x00, 0x57, + 0xb2, 0x1d, 0x1d, 0x15, 0xb8, 0x01, 0x56, 0xb5, 0x00, 0x00, 0x0f, 0x0f, + 0x0d, 0x10, 0xb8, 0x01, 0x65, 0x40, 0x0e, 0x07, 0x0a, 0x08, 0x08, 0x07, + 0x10, 0x07, 0x90, 0x0a, 0x0d, 0x0a, 0x0c, 0x0c, 0x0a, 0xb8, 0x02, 0x7c, + 0x40, 0x0b, 0x1d, 0x20, 0x94, 0x1c, 0x19, 0x19, 0x15, 0x13, 0x90, 0x00, + 0x03, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, + 0x32, 0x2f, 0x32, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x32, 0x2f, 0xed, 0x33, + 0x2f, 0x30, 0x31, 0x01, 0x06, 0x22, 0x23, 0x22, 0x26, 0x35, 0x11, 0x23, + 0x35, 0x33, 0x35, 0x37, 0x15, 0x21, 0x15, 0x21, 0x11, 0x14, 0x33, 0x32, + 0x37, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x02, 0xac, 0x08, 0x18, 0x08, 0x7c, 0x78, 0xa6, 0xa6, + 0xaa, 0x01, 0x0b, 0xfe, 0xf5, 0x71, 0x3a, 0x60, 0x67, 0x72, 0x15, 0x30, + 0x14, 0x1c, 0x2b, 0x0c, 0x1c, 0x2a, 0x02, 0xc7, 0x01, 0x6d, 0x73, 0x01, + 0x24, 0x79, 0xa0, 0x23, 0xc3, 0x79, 0xfe, 0xe9, 0x6e, 0x19, 0xd0, 0x63, + 0x72, 0x02, 0x04, 0x90, 0x0a, 0x04, 0x24, 0x2d, 0x00, 0x02, 0x00, 0xc2, + 0x02, 0xc4, 0x03, 0xa3, 0x05, 0x43, 0x00, 0x18, 0x00, 0x20, 0x00, 0x5a, + 0xb3, 0x0b, 0x09, 0x09, 0x07, 0xb8, 0x01, 0x65, 0xb5, 0x1d, 0x0e, 0x06, + 0x06, 0x1e, 0x03, 0xb8, 0x01, 0x65, 0x40, 0x14, 0x02, 0x17, 0x02, 0x00, + 0x00, 0x02, 0x1e, 0x0b, 0x18, 0x90, 0x08, 0x04, 0x00, 0x00, 0x02, 0x1c, + 0x19, 0x96, 0x0e, 0x11, 0xbe, 0x02, 0x80, 0x00, 0x0d, 0x02, 0x7f, 0x00, + 0x06, 0x02, 0x7c, 0x00, 0x02, 0x02, 0x7c, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, + 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x33, + 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, 0x13, 0x33, 0x35, 0x33, 0x15, 0x33, + 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x23, 0x27, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x35, 0x23, 0x05, 0x32, 0x36, 0x37, 0x35, 0x23, + 0x15, 0x14, 0xc2, 0x54, 0xaa, 0xe0, 0xaa, 0x59, 0x59, 0x9c, 0x05, 0x26, + 0x4f, 0x33, 0x35, 0x57, 0x3d, 0x22, 0x54, 0x01, 0x55, 0x27, 0x42, 0x20, + 0xe0, 0x04, 0x8d, 0xb6, 0xb6, 0xb6, 0xb6, 0x83, 0xfe, 0xc4, 0x3e, 0x26, + 0x22, 0x1d, 0x3a, 0x58, 0x3b, 0x5c, 0xb8, 0x2a, 0x33, 0x5b, 0x40, 0x78, + 0x00, 0x01, 0x00, 0xe7, 0x02, 0xc4, 0x03, 0x80, 0x05, 0x43, 0x00, 0x2b, + 0x00, 0x51, 0xb2, 0x22, 0x22, 0x27, 0xb8, 0x01, 0x63, 0xb4, 0x1b, 0x0e, + 0x0d, 0x0d, 0x11, 0xb8, 0x01, 0x63, 0x40, 0x14, 0x05, 0x0a, 0x0a, 0x05, + 0x05, 0x1b, 0x1f, 0x1f, 0x1e, 0x1b, 0x0a, 0x22, 0x22, 0x0e, 0x1f, 0x93, + 0x20, 0x0b, 0x0b, 0x20, 0xb8, 0x02, 0x7c, 0xb2, 0x00, 0x95, 0x16, 0xb8, + 0x02, 0x80, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x32, + 0x11, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, + 0x10, 0xed, 0x32, 0x2f, 0x32, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x35, 0x21, 0x15, 0x23, + 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x36, 0x37, 0x23, 0x35, 0x21, 0x15, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, + 0x02, 0x2f, 0x28, 0x39, 0x25, 0x11, 0x0d, 0x18, 0x24, 0x17, 0x01, 0x1a, + 0x69, 0x2d, 0x26, 0x2c, 0x52, 0x73, 0x48, 0x49, 0x73, 0x50, 0x2a, 0x28, + 0x2c, 0x68, 0x01, 0x1a, 0x17, 0x24, 0x1a, 0x0d, 0x11, 0x23, 0x36, 0x03, + 0x4f, 0x1f, 0x33, 0x43, 0x23, 0x1f, 0x3e, 0x35, 0x2a, 0x0b, 0x75, 0x87, + 0x2e, 0x6e, 0x33, 0x46, 0x6e, 0x4d, 0x28, 0x28, 0x4d, 0x6e, 0x46, 0x32, + 0x6f, 0x2e, 0x87, 0x75, 0x0b, 0x2a, 0x37, 0x3f, 0x20, 0x23, 0x40, 0x33, + 0x1e, 0x00, 0x00, 0x01, 0x01, 0x06, 0x02, 0xc4, 0x03, 0x63, 0x05, 0x43, + 0x00, 0x17, 0x00, 0x27, 0xb9, 0x00, 0x17, 0x01, 0x66, 0xb2, 0x16, 0x16, + 0x0c, 0xb8, 0x01, 0x66, 0xb2, 0x0b, 0x16, 0x0b, 0xb8, 0x02, 0x7c, 0xb2, + 0x12, 0x96, 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x35, 0x11, 0x33, 0x03, 0x63, 0x28, 0x4e, 0x72, 0x4a, 0x51, 0x72, + 0x47, 0x21, 0xac, 0x0b, 0x1c, 0x31, 0x27, 0x48, 0x3e, 0xac, 0x03, 0xed, + 0x44, 0x6e, 0x4d, 0x2a, 0x28, 0x4a, 0x68, 0x3f, 0x01, 0x66, 0xfe, 0xb7, + 0x29, 0x3e, 0x2a, 0x16, 0x57, 0x51, 0x01, 0x48, 0x00, 0x01, 0x01, 0x06, + 0x02, 0xc4, 0x03, 0x63, 0x05, 0x4a, 0x00, 0x23, 0x00, 0x35, 0xb3, 0x1d, + 0x1d, 0x0c, 0x23, 0xbb, 0x01, 0x66, 0x00, 0x16, 0x00, 0x0c, 0x01, 0x66, + 0xb5, 0x0b, 0x1c, 0x19, 0x90, 0x1d, 0x20, 0xba, 0x02, 0x7b, 0x00, 0x0b, + 0x02, 0x7c, 0xb2, 0x12, 0x96, 0x05, 0xb8, 0x02, 0x80, 0x00, 0x3f, 0xed, + 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x39, + 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x35, 0x34, + 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, + 0x03, 0x63, 0x28, 0x4e, 0x73, 0x4b, 0x50, 0x70, 0x48, 0x21, 0xac, 0x0b, + 0x1c, 0x32, 0x26, 0x49, 0x3d, 0x2a, 0x2c, 0x0e, 0x20, 0x13, 0x18, 0x30, + 0x1f, 0x6a, 0x72, 0x03, 0xed, 0x44, 0x6e, 0x4d, 0x2a, 0x28, 0x4a, 0x68, + 0x3f, 0x01, 0x66, 0xfe, 0xb6, 0x29, 0x3e, 0x2a, 0x15, 0x56, 0x51, 0x5e, + 0x43, 0x33, 0x04, 0x04, 0x78, 0x05, 0x07, 0x6e, 0x6f, 0x00, 0x00, 0x01, + 0x00, 0xca, 0x02, 0xce, 0x03, 0x9b, 0x05, 0x43, 0x00, 0x06, 0x00, 0x30, + 0xb5, 0x02, 0x01, 0x05, 0x05, 0x00, 0x03, 0xb8, 0x01, 0x7c, 0xb2, 0x04, + 0x04, 0x06, 0xb8, 0x01, 0x7a, 0xb2, 0x00, 0x05, 0x01, 0xbb, 0x02, 0x7c, + 0x00, 0x04, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x3f, 0x32, 0x3f, 0x33, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, + 0x13, 0x01, 0x33, 0x01, 0x23, 0x03, 0x03, 0xca, 0x01, 0x0a, 0xbe, 0x01, + 0x09, 0xc1, 0xaa, 0xaa, 0x02, 0xce, 0x02, 0x75, 0xfd, 0x8b, 0x01, 0xc0, + 0xfe, 0x40, 0x00, 0x01, 0x01, 0x20, 0x02, 0xce, 0x03, 0x46, 0x05, 0x43, + 0x00, 0x09, 0x00, 0x2d, 0x40, 0x0d, 0x03, 0x07, 0x07, 0x09, 0x08, 0x02, + 0x04, 0x04, 0x02, 0x07, 0x04, 0x96, 0x05, 0xb8, 0x02, 0x7c, 0xb3, 0x02, + 0x08, 0x96, 0x00, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x21, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x03, + 0x46, 0xfd, 0xda, 0x01, 0x3c, 0xfe, 0xcc, 0x02, 0x0a, 0xfe, 0xca, 0x01, + 0x4a, 0x02, 0xce, 0x75, 0x01, 0x74, 0x8c, 0x7b, 0xfe, 0x93, 0x00, 0x01, + 0x01, 0x20, 0x01, 0xb7, 0x03, 0xdf, 0x05, 0x43, 0x00, 0x17, 0x00, 0x47, + 0xb6, 0x03, 0x07, 0x07, 0x09, 0x10, 0x10, 0x00, 0xb8, 0x01, 0x56, 0x40, + 0x0b, 0x09, 0x09, 0x08, 0x02, 0x04, 0x04, 0x02, 0x07, 0x04, 0x96, 0x05, + 0xb8, 0x02, 0x7c, 0x40, 0x0a, 0x10, 0x0d, 0x94, 0x11, 0x14, 0x14, 0x02, + 0x08, 0x96, 0x01, 0xb8, 0x02, 0x7f, 0x00, 0x3f, 0xed, 0x32, 0x33, 0x2f, + 0x33, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x21, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x21, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x02, + 0xad, 0xfe, 0x73, 0x01, 0x3c, 0xfe, 0xcc, 0x02, 0x0a, 0xfe, 0xca, 0x01, + 0x4a, 0x2a, 0x1c, 0x0c, 0x2b, 0x1c, 0x14, 0x30, 0x15, 0x72, 0x67, 0x02, + 0xce, 0x75, 0x01, 0x74, 0x8c, 0x7b, 0xfe, 0x93, 0xcb, 0x2d, 0x24, 0x04, + 0x0a, 0x90, 0x04, 0x02, 0x72, 0x63, 0x00, 0x02, 0x01, 0x18, 0x02, 0x7e, + 0x03, 0xc1, 0x05, 0x43, 0x00, 0x1e, 0x00, 0x28, 0x00, 0x63, 0xb2, 0x28, + 0x18, 0x1b, 0xb8, 0x01, 0x63, 0xb5, 0x1e, 0x08, 0x1c, 0x1c, 0x01, 0x22, + 0xb8, 0x01, 0x51, 0x40, 0x0e, 0x12, 0x12, 0x02, 0x06, 0x06, 0x07, 0x01, + 0x03, 0x03, 0x01, 0x06, 0x02, 0x96, 0x04, 0xb8, 0x02, 0x7c, 0x40, 0x15, + 0x25, 0x8d, 0x9f, 0x0d, 0xaf, 0x0d, 0x02, 0x0d, 0x40, 0x1c, 0x20, 0x48, + 0x0d, 0x0d, 0x28, 0x01, 0x07, 0x96, 0x1c, 0x18, 0x00, 0xb8, 0x02, 0x7f, + 0x00, 0x3f, 0x32, 0xce, 0xed, 0x32, 0x32, 0x32, 0x2f, 0x2b, 0x5d, 0xed, + 0x3f, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, 0x2f, 0x33, + 0x33, 0x2f, 0xed, 0x11, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x30, + 0x31, 0x01, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x33, 0x3e, 0x03, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x06, 0x06, + 0x15, 0x23, 0x36, 0x37, 0x37, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x01, 0x18, 0x01, 0x50, 0xfe, 0xb8, 0x02, 0x1e, 0xfe, 0xb6, + 0x5b, 0x0b, 0x20, 0x32, 0x44, 0x2f, 0x1c, 0x3a, 0x2f, 0x1d, 0x19, 0x2d, + 0x3c, 0x24, 0x4d, 0x04, 0x05, 0xa3, 0x03, 0x07, 0xf3, 0x12, 0x13, 0x10, + 0x14, 0x1a, 0x21, 0x0d, 0x02, 0xce, 0x75, 0x01, 0x74, 0x8c, 0x7b, 0xfe, + 0x93, 0x15, 0x37, 0x30, 0x21, 0x0e, 0x22, 0x37, 0x29, 0x26, 0x39, 0x27, + 0x14, 0x0e, 0x28, 0x1a, 0x36, 0x1a, 0x87, 0x0c, 0x0f, 0x0b, 0x11, 0x20, + 0x17, 0x00, 0x00, 0x01, 0x01, 0x2c, 0x02, 0x11, 0x03, 0x3a, 0x05, 0x43, + 0x00, 0x22, 0x00, 0x46, 0xb7, 0x1e, 0x17, 0x17, 0x09, 0x19, 0x1d, 0x1d, + 0x00, 0xb8, 0x01, 0x67, 0x40, 0x10, 0x11, 0x11, 0x09, 0x1a, 0x1a, 0x09, + 0x18, 0x17, 0x90, 0x1e, 0x1e, 0x0c, 0x1d, 0x1a, 0x96, 0x1b, 0xb8, 0x02, + 0x7c, 0xb5, 0x09, 0x0c, 0x96, 0x08, 0x05, 0x60, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x33, 0x01, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, + 0x37, 0x21, 0x35, 0x21, 0x15, 0x07, 0x1e, 0x03, 0x03, 0x3a, 0x36, 0x60, + 0x83, 0x4c, 0x2d, 0x52, 0x2a, 0x33, 0x4f, 0x26, 0x34, 0x46, 0x2b, 0x12, + 0x14, 0x2d, 0x48, 0x35, 0x37, 0xa8, 0xfe, 0xee, 0x01, 0xeb, 0xb3, 0x2d, + 0x4f, 0x39, 0x21, 0x03, 0x1a, 0x4e, 0x66, 0x3d, 0x18, 0x06, 0x05, 0x97, + 0x08, 0x0a, 0x0f, 0x1e, 0x2e, 0x20, 0x1b, 0x2c, 0x1e, 0x10, 0x71, 0xb5, + 0x8c, 0x80, 0xba, 0x08, 0x22, 0x39, 0x53, 0x00, 0x00, 0x03, 0x00, 0xf2, + 0x02, 0xc4, 0x03, 0x60, 0x06, 0x3d, 0x00, 0x13, 0x00, 0x1e, 0x00, 0x29, + 0x00, 0x34, 0xb1, 0x14, 0x00, 0xb8, 0x01, 0x66, 0xb2, 0x29, 0x1e, 0x1f, + 0xb8, 0x01, 0x66, 0x40, 0x09, 0x0a, 0x1f, 0x96, 0x1e, 0x1e, 0x24, 0x19, + 0x96, 0x0f, 0xb8, 0x02, 0x76, 0xb2, 0x24, 0x96, 0x05, 0xb8, 0x02, 0x80, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, + 0x32, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x2e, + 0x03, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x07, 0x1e, 0x03, 0x33, 0x32, 0x3e, + 0x02, 0x37, 0x03, 0x60, 0x2d, 0x52, 0x74, 0x47, 0x44, 0x72, 0x51, 0x2d, + 0x2d, 0x52, 0x75, 0x47, 0x45, 0x71, 0x51, 0x2c, 0xad, 0x04, 0x15, 0x23, + 0x30, 0x1e, 0x21, 0x2f, 0x20, 0x13, 0x04, 0x05, 0x03, 0x14, 0x23, 0x32, + 0x20, 0x24, 0x32, 0x21, 0x11, 0x03, 0x04, 0x86, 0x61, 0xa5, 0x78, 0x44, + 0x36, 0x6d, 0xa4, 0x6e, 0x61, 0xa6, 0x79, 0x44, 0x37, 0x6e, 0xa5, 0x1f, + 0x40, 0x55, 0x32, 0x15, 0x1f, 0x39, 0x52, 0x32, 0x8c, 0x44, 0x5f, 0x3b, + 0x1a, 0x24, 0x42, 0x5b, 0x37, 0x00, 0x00, 0x01, 0x00, 0xfe, 0x02, 0xce, + 0x03, 0x67, 0x06, 0x0b, 0x00, 0x13, 0x00, 0x36, 0xb1, 0x0c, 0x09, 0xbb, + 0x01, 0x66, 0x00, 0x0a, 0x00, 0x00, 0x01, 0x66, 0xb7, 0x01, 0x01, 0x0a, + 0x08, 0x05, 0x96, 0x0e, 0x10, 0xbe, 0x02, 0x7d, 0x00, 0x0b, 0x02, 0x78, + 0x00, 0x0a, 0x02, 0x7f, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, + 0x31, 0x30, 0x01, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x11, + 0x23, 0x11, 0x33, 0x15, 0x07, 0x36, 0x33, 0x32, 0x16, 0x15, 0x03, 0x67, + 0xac, 0x2d, 0x3a, 0x23, 0x59, 0x2e, 0xac, 0xac, 0x05, 0x63, 0x7e, 0x6b, + 0x76, 0x02, 0xce, 0x01, 0x3c, 0x44, 0x38, 0x2b, 0x38, 0xfe, 0xab, 0x03, + 0x3d, 0xf0, 0x53, 0x63, 0x67, 0x71, 0x00, 0x01, 0x00, 0xfe, 0x02, 0xce, + 0x03, 0x67, 0x06, 0x1c, 0x00, 0x22, 0x00, 0x45, 0xb1, 0x1d, 0x09, 0xb8, + 0x01, 0x66, 0xb2, 0x0a, 0x16, 0x00, 0xb8, 0x01, 0x66, 0xb6, 0x01, 0x01, + 0x0a, 0x08, 0x05, 0x96, 0x1f, 0xb8, 0xff, 0xc0, 0xb3, 0x09, 0x0c, 0x48, + 0x1f, 0xb8, 0x02, 0x7d, 0xb4, 0x16, 0x19, 0x91, 0x15, 0x10, 0xbb, 0x02, + 0x78, 0x00, 0x0a, 0x00, 0x00, 0x02, 0x7f, 0x00, 0x3f, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x2b, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0xc4, + 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, 0x23, 0x11, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x15, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x03, 0x67, 0xac, 0x2d, 0x3a, 0x23, 0x59, 0x2e, 0xac, 0x19, + 0x38, 0x5c, 0x44, 0x0f, 0x29, 0x2c, 0x2a, 0x11, 0x22, 0x3e, 0x1d, 0x3d, + 0x2f, 0x63, 0x7e, 0x6b, 0x76, 0x02, 0xce, 0x01, 0x3c, 0x44, 0x38, 0x2b, + 0x38, 0xfe, 0xab, 0x02, 0x67, 0x36, 0x55, 0x3c, 0x20, 0x01, 0x02, 0x03, + 0x02, 0x89, 0x08, 0x04, 0x35, 0x41, 0x59, 0x63, 0x67, 0x71, 0x00, 0x02, + 0x01, 0x0f, 0x01, 0xd7, 0x03, 0x35, 0x06, 0x4f, 0x00, 0x15, 0x00, 0x21, + 0x00, 0x3b, 0xb4, 0x14, 0x14, 0x0b, 0x12, 0x1f, 0xb8, 0x01, 0xf0, 0xb2, + 0x19, 0x19, 0x01, 0xb8, 0x01, 0x66, 0xb7, 0x12, 0x0b, 0x16, 0xc0, 0x1c, + 0x14, 0x96, 0x15, 0xb8, 0x02, 0x7e, 0xb4, 0x0c, 0x0f, 0x96, 0x0b, 0x06, + 0xb8, 0x02, 0x81, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0xde, 0xed, + 0x01, 0x2f, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x11, 0x12, 0x39, 0x2f, 0x31, + 0x30, 0x01, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x21, 0x35, 0x01, 0x32, 0x16, + 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, 0x03, 0x35, 0x2f, + 0x55, 0x78, 0x48, 0x1a, 0x3e, 0x3e, 0x38, 0x14, 0x2d, 0x71, 0x45, 0x51, + 0x44, 0xfe, 0xa5, 0x01, 0x87, 0x3b, 0x3f, 0x3f, 0x3b, 0x3b, 0x3e, 0x3e, + 0x05, 0x1b, 0xfd, 0xbd, 0x3e, 0x5f, 0x42, 0x22, 0x04, 0x08, 0x0b, 0x07, + 0xa1, 0x14, 0x15, 0x54, 0x53, 0x01, 0x76, 0x91, 0x01, 0x34, 0x3a, 0x2b, + 0x2a, 0x3b, 0x3b, 0x2a, 0x2b, 0x3a, 0x00, 0x01, 0x00, 0xfe, 0x02, 0xce, + 0x03, 0x65, 0x05, 0x2b, 0x00, 0x19, 0x00, 0x34, 0xb1, 0x02, 0x18, 0xbb, + 0x01, 0x66, 0x00, 0x19, 0x00, 0x0c, 0x01, 0x64, 0xb3, 0x0d, 0x0d, 0x19, + 0x18, 0xb8, 0x02, 0x7f, 0xb5, 0x17, 0x0d, 0x12, 0x96, 0x02, 0x07, 0xba, + 0x02, 0x7d, 0x00, 0x00, 0x02, 0x7e, 0x00, 0x3f, 0x3f, 0x33, 0xfd, 0xc6, + 0x33, 0x3f, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, + 0x13, 0x33, 0x17, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x23, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0xfe, 0xa1, 0x05, + 0x1f, 0x37, 0x35, 0x37, 0x20, 0x3b, 0x54, 0x36, 0x1a, 0xa8, 0x10, 0x1b, + 0x26, 0x16, 0x17, 0x31, 0x2e, 0x28, 0x0e, 0xac, 0x05, 0x1b, 0x62, 0x1f, + 0x2c, 0x1b, 0x0c, 0x1e, 0x41, 0x67, 0x49, 0x23, 0x2d, 0x1a, 0x0a, 0x0f, + 0x1e, 0x2b, 0x1c, 0xfe, 0xb2, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0xbe, + 0x03, 0x68, 0x05, 0x1b, 0x00, 0x19, 0x00, 0x32, 0xb1, 0x02, 0x18, 0xb8, + 0x01, 0x66, 0xb2, 0x19, 0x19, 0x0d, 0xbb, 0x01, 0x64, 0x00, 0x0c, 0x00, + 0x18, 0x02, 0x7e, 0xb5, 0x17, 0x0c, 0x12, 0x96, 0x02, 0x07, 0xba, 0x02, + 0x80, 0x00, 0x01, 0x02, 0x7f, 0x00, 0x3f, 0x3f, 0x33, 0xfd, 0xc4, 0x33, + 0x3f, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x32, 0x31, 0x30, 0x01, 0x23, + 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x33, 0x03, 0x68, 0xa1, 0x05, 0x20, + 0x34, 0x33, 0x39, 0x24, 0x37, 0x53, 0x37, 0x1c, 0xa8, 0x10, 0x1b, 0x26, + 0x16, 0x17, 0x31, 0x2e, 0x28, 0x0e, 0xac, 0x02, 0xce, 0x62, 0x20, 0x2b, + 0x1b, 0x0c, 0x1e, 0x41, 0x67, 0x49, 0x23, 0x2d, 0x1a, 0x0a, 0x0f, 0x1e, + 0x2b, 0x1c, 0x01, 0x4e, 0x00, 0x01, 0x01, 0x00, 0x01, 0xd4, 0x04, 0x07, + 0x05, 0x1b, 0x00, 0x29, 0x00, 0x40, 0xb1, 0x13, 0x29, 0xb8, 0x01, 0x66, + 0xb5, 0x00, 0x09, 0x09, 0x00, 0x00, 0x1e, 0xbb, 0x01, 0x64, 0x00, 0x1d, + 0x00, 0x29, 0x02, 0x7e, 0xb5, 0x28, 0x1d, 0x23, 0x96, 0x13, 0x18, 0xb8, + 0x02, 0x80, 0xb4, 0x09, 0x06, 0x95, 0x0a, 0x0d, 0xb8, 0x02, 0x81, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xfd, 0xc4, 0x33, 0x3f, 0x01, 0x2f, + 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, 0x11, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x35, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x11, 0x03, 0x67, 0x0a, + 0x17, 0x22, 0x18, 0x0f, 0x25, 0x11, 0x14, 0x3b, 0x33, 0x3e, 0x4c, 0x2c, + 0x0f, 0x1e, 0x34, 0x35, 0x39, 0x23, 0x37, 0x53, 0x37, 0x1c, 0xa8, 0x10, + 0x1b, 0x26, 0x16, 0x17, 0x31, 0x2e, 0x28, 0x0e, 0x05, 0x1b, 0xfd, 0xc0, + 0x29, 0x31, 0x1a, 0x08, 0x04, 0x06, 0x89, 0x05, 0x07, 0x27, 0x40, 0x54, + 0x2d, 0x6e, 0x1e, 0x29, 0x1a, 0x0b, 0x1e, 0x41, 0x67, 0x49, 0x23, 0x2d, + 0x1a, 0x0a, 0x0f, 0x1e, 0x2b, 0x1c, 0x01, 0x4e, 0x00, 0x02, 0x00, 0xfe, + 0x02, 0xce, 0x03, 0x7f, 0x05, 0x1b, 0x00, 0x17, 0x00, 0x24, 0x00, 0x49, + 0xb3, 0x16, 0x17, 0x17, 0x08, 0xb8, 0x01, 0x67, 0xb5, 0x18, 0x05, 0x05, + 0x18, 0x1f, 0x0e, 0xbb, 0x01, 0x66, 0x00, 0x0d, 0x00, 0x16, 0x02, 0x7e, + 0x40, 0x0d, 0x09, 0x05, 0x19, 0x05, 0x29, 0x05, 0x03, 0x05, 0x1e, 0x90, + 0x0f, 0x0f, 0x0d, 0xb8, 0x02, 0x7e, 0xb2, 0x1f, 0x90, 0x0c, 0xb8, 0x02, + 0x7f, 0x00, 0x3f, 0xed, 0x3f, 0x39, 0x2f, 0xed, 0x39, 0x5d, 0x3f, 0x01, + 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x0e, 0x03, 0x07, 0x16, 0x16, 0x15, 0x14, 0x06, 0x23, 0x21, + 0x11, 0x33, 0x15, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x37, 0x33, 0x03, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x15, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x26, 0x11, + 0x1a, 0x19, 0x1b, 0x12, 0x58, 0x49, 0x90, 0xa0, 0xfe, 0xd8, 0xac, 0x3d, + 0x1c, 0x27, 0x1c, 0x13, 0x08, 0x5f, 0xbf, 0xdd, 0x1b, 0x33, 0x48, 0x2c, + 0x36, 0x47, 0x2a, 0x42, 0x2d, 0x18, 0x04, 0x96, 0x1a, 0x25, 0x19, 0x11, + 0x06, 0x13, 0x52, 0x47, 0x5a, 0x53, 0x02, 0x4d, 0xbc, 0x07, 0x0d, 0x13, + 0x0c, 0x89, 0xfe, 0x7a, 0x1b, 0x20, 0x11, 0x06, 0xa4, 0x02, 0x0f, 0x22, + 0x00, 0x01, 0x00, 0x92, 0x02, 0xce, 0x03, 0xd3, 0x05, 0x1b, 0x00, 0x0c, + 0x00, 0x5e, 0xb1, 0x03, 0x0a, 0xb8, 0x01, 0x55, 0x40, 0x09, 0x09, 0x09, + 0x06, 0x0c, 0x0b, 0x02, 0x01, 0x01, 0x00, 0xb8, 0x01, 0x56, 0xb7, 0x0c, + 0x0c, 0x06, 0x08, 0x04, 0x05, 0x05, 0x07, 0xbb, 0x01, 0x63, 0x00, 0x06, + 0x00, 0x0c, 0x02, 0x7e, 0xb4, 0x03, 0x09, 0x09, 0x05, 0x06, 0xb8, 0x02, + 0x7e, 0xb3, 0x0b, 0x08, 0x08, 0x05, 0xba, 0x02, 0x7f, 0x00, 0x02, 0x02, + 0x7f, 0x00, 0x3f, 0x3f, 0x33, 0x11, 0x33, 0x3f, 0x12, 0x39, 0x2f, 0x33, + 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x11, 0x33, 0x33, 0x11, 0x33, 0x2f, 0xed, + 0x32, 0x11, 0x33, 0x33, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x30, 0x31, + 0x01, 0x03, 0x23, 0x03, 0x03, 0x23, 0x03, 0x33, 0x13, 0x13, 0x33, 0x13, + 0x13, 0x03, 0xd3, 0x50, 0xce, 0x88, 0x83, 0xc7, 0x51, 0xa7, 0x2e, 0x81, + 0x91, 0x8e, 0x2b, 0x05, 0x1b, 0xfd, 0xb3, 0x01, 0x38, 0xfe, 0xc8, 0x02, + 0x4d, 0xfe, 0x53, 0x01, 0x3c, 0xfe, 0xc0, 0x01, 0xb1, 0x00, 0x00, 0x01, + 0x00, 0xc1, 0x01, 0xda, 0x03, 0x99, 0x05, 0x1b, 0x00, 0x14, 0x00, 0x45, + 0xb5, 0x10, 0x01, 0x13, 0x13, 0x11, 0x00, 0xb8, 0x01, 0x67, 0xb2, 0x14, + 0x14, 0x12, 0xb8, 0x01, 0x67, 0xb4, 0x11, 0x0a, 0x0a, 0x11, 0x14, 0xb8, + 0x02, 0x7e, 0xb3, 0x13, 0x10, 0x10, 0x11, 0xb8, 0x02, 0x7e, 0xb4, 0x0a, + 0x0d, 0x96, 0x09, 0x06, 0xb8, 0x02, 0x81, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0x39, 0x11, 0x33, 0x3f, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, + 0x2f, 0xed, 0x11, 0x39, 0x11, 0x33, 0x33, 0x31, 0x30, 0x01, 0x03, 0x0e, + 0x03, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, + 0x01, 0x33, 0x13, 0x13, 0x03, 0x99, 0xe8, 0x24, 0x4c, 0x5d, 0x73, 0x4b, + 0x11, 0x31, 0x23, 0x18, 0x2f, 0x15, 0x3f, 0x5c, 0x20, 0xfe, 0xfa, 0xb4, + 0xb7, 0xac, 0x05, 0x1b, 0xfd, 0xf1, 0x51, 0x74, 0x4a, 0x23, 0x01, 0x03, + 0x9d, 0x04, 0x04, 0x39, 0x3d, 0x02, 0x32, 0xfe, 0x53, 0x01, 0xad, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0xeb, 0x03, 0x3d, 0x05, 0xa0, 0x02, 0x06, + 0x09, 0xd5, 0x00, 0x00, 0xff, 0xff, 0xff, 0x07, 0x02, 0xeb, 0x04, 0x37, + 0x05, 0xa0, 0x02, 0x27, 0x09, 0xd5, 0xff, 0x07, 0x00, 0x00, 0x00, 0x07, + 0x09, 0xd5, 0x00, 0xfa, 0x00, 0x00, 0xff, 0xff, 0x01, 0x75, 0x02, 0xc3, + 0x03, 0x93, 0x05, 0x98, 0x02, 0x06, 0x01, 0x67, 0x00, 0x00, 0xff, 0xff, + 0x00, 0xd3, 0x02, 0xc3, 0x02, 0xf2, 0x05, 0x98, 0x02, 0x06, 0x01, 0x68, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x02, 0xc3, 0x03, 0x94, 0x05, 0x98, + 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x2a, 0xb5, 0x16, 0x16, 0x05, 0x1b, 0x1b, + 0x0f, 0xb8, 0x02, 0x4a, 0x40, 0x0b, 0x05, 0x16, 0x0a, 0x1b, 0xc6, 0x00, + 0x00, 0x0a, 0x0a, 0x1c, 0x53, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x2f, 0xed, + 0x11, 0x39, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x39, 0x2f, 0x30, 0x31, + 0x01, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x04, 0x15, 0x14, 0x1e, 0x02, 0x37, 0x01, 0x03, 0x94, + 0x88, 0xcb, 0x88, 0x44, 0x1c, 0x36, 0x4e, 0x31, 0x27, 0x3d, 0x2a, 0x16, + 0x11, 0x1a, 0x1d, 0x1a, 0x11, 0x2c, 0x4d, 0x68, 0x3c, 0xfc, 0x6c, 0x02, + 0xc3, 0x47, 0x7a, 0xa4, 0x5d, 0x36, 0x63, 0x4c, 0x2e, 0x1c, 0x2e, 0x3b, + 0x1f, 0x20, 0x2d, 0x23, 0x1f, 0x21, 0x29, 0x1d, 0x2a, 0x3c, 0x26, 0x12, + 0x02, 0x02, 0x23, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xa3, + 0x05, 0x82, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x23, 0xb9, 0x00, 0x0a, 0x01, + 0x5e, 0x40, 0x0d, 0x03, 0x06, 0x0d, 0x06, 0x99, 0x40, 0x07, 0x80, 0x00, + 0x99, 0x0d, 0x0e, 0x4f, 0x00, 0x3f, 0xde, 0xfd, 0x1a, 0xdc, 0x1a, 0xed, + 0x01, 0x2f, 0x33, 0xdc, 0xed, 0x30, 0x31, 0x01, 0x32, 0x36, 0x35, 0x34, + 0x26, 0x23, 0x35, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x05, 0x01, 0xc6, + 0x2a, 0x2b, 0x29, 0x2f, 0x6b, 0x75, 0x71, 0x6c, 0xfe, 0x3a, 0x04, 0x82, + 0x1d, 0x26, 0x27, 0x21, 0x75, 0x5f, 0x57, 0x58, 0x67, 0x15, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x02, 0xa3, 0x05, 0x82, 0x00, 0x0d, 0x00, 0x0e, + 0x00, 0x23, 0xb2, 0x07, 0x0d, 0x0a, 0xb8, 0x01, 0x5e, 0x40, 0x0b, 0x03, + 0x07, 0x99, 0x40, 0x06, 0x80, 0x0d, 0x99, 0x00, 0x0e, 0x4f, 0x00, 0x3f, + 0xde, 0xfd, 0x1a, 0xdc, 0x1a, 0xed, 0x01, 0x2f, 0xfd, 0xce, 0x32, 0x30, + 0x31, 0x01, 0x22, 0x26, 0x35, 0x34, 0x36, 0x33, 0x15, 0x22, 0x06, 0x15, + 0x14, 0x16, 0x33, 0x05, 0x02, 0xa0, 0x6c, 0x71, 0x75, 0x6b, 0x2f, 0x29, + 0x2b, 0x2a, 0xfd, 0x60, 0x04, 0x0d, 0x67, 0x58, 0x57, 0x5f, 0x75, 0x21, + 0x27, 0x26, 0x1d, 0x8a, 0x00, 0x01, 0x01, 0x3a, 0x02, 0x9d, 0x03, 0x2c, + 0x05, 0xa3, 0x00, 0x18, 0x00, 0x36, 0xb1, 0x06, 0x05, 0xb8, 0x01, 0x67, + 0xb4, 0x07, 0x08, 0x08, 0x12, 0x00, 0xb8, 0x01, 0x7a, 0x40, 0x0f, 0x0c, + 0x0c, 0x12, 0x05, 0xb2, 0x8f, 0x08, 0x01, 0x08, 0x08, 0x06, 0x12, 0xb5, + 0x13, 0x06, 0x00, 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x01, + 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x23, 0x03, 0x33, 0x32, 0x36, 0x35, + 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x2c, + 0x22, 0x40, 0x60, 0x3d, 0x07, 0x9e, 0x0c, 0x5c, 0x55, 0x46, 0x25, 0x44, + 0x61, 0x3c, 0x33, 0x3e, 0x79, 0xa7, 0x67, 0x2d, 0x04, 0x57, 0x3b, 0x66, + 0x50, 0x33, 0x07, 0x8f, 0x01, 0x35, 0x44, 0x35, 0x2d, 0x41, 0x2a, 0x15, + 0xab, 0x3e, 0x60, 0x76, 0x00, 0x01, 0x01, 0x3a, 0x02, 0x9d, 0x03, 0x2c, + 0x05, 0xa3, 0x00, 0x1a, 0x00, 0x34, 0xb1, 0x15, 0x16, 0xb8, 0x01, 0x67, + 0xb5, 0x14, 0x13, 0x13, 0x06, 0x06, 0x0d, 0xb8, 0x01, 0x7a, 0x40, 0x0d, + 0x00, 0x16, 0xb2, 0x8f, 0x12, 0x01, 0x12, 0x12, 0x05, 0x14, 0x08, 0xb5, + 0x05, 0x00, 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x01, 0x2f, + 0xed, 0x32, 0x2f, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x34, + 0x3e, 0x02, 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x33, 0x03, 0x23, 0x27, 0x2e, 0x03, 0x01, 0x3a, 0x2d, 0x67, + 0xa6, 0x7a, 0x3e, 0x33, 0x3c, 0x61, 0x44, 0x25, 0x10, 0x25, 0x3b, 0x2b, + 0x5c, 0x0c, 0x9e, 0x07, 0x3e, 0x5f, 0x40, 0x22, 0x04, 0x57, 0x38, 0x76, + 0x60, 0x3e, 0xab, 0x15, 0x2a, 0x41, 0x2d, 0x1a, 0x2d, 0x20, 0x12, 0xfe, + 0xcb, 0x8f, 0x07, 0x33, 0x50, 0x66, 0xff, 0xff, 0x00, 0x66, 0xff, 0xe9, + 0x03, 0xa4, 0x04, 0x58, 0x02, 0x06, 0x02, 0xb3, 0x00, 0x00, 0xff, 0xff, + 0x00, 0xc3, 0xff, 0xe9, 0x04, 0x00, 0x04, 0x58, 0x02, 0x06, 0x02, 0xb4, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x02, 0xe0, 0x04, 0x66, 0x06, 0x1a, + 0x00, 0x05, 0x00, 0x22, 0x40, 0x0e, 0x01, 0x04, 0x04, 0x03, 0x02, 0x05, + 0x00, 0x00, 0x02, 0x02, 0x05, 0x03, 0x04, 0x01, 0x00, 0x2f, 0x33, 0x2f, + 0x33, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x32, 0x2f, 0x33, 0x39, 0x11, 0x33, + 0x30, 0x31, 0x11, 0x01, 0x01, 0x07, 0x01, 0x01, 0x02, 0x33, 0x02, 0x33, + 0x9e, 0xfe, 0x6d, 0xfe, 0x69, 0x03, 0x78, 0x02, 0xa2, 0xfd, 0x5e, 0x98, + 0x01, 0xf0, 0xfe, 0x10, 0x00, 0x01, 0x00, 0x00, 0x02, 0xf4, 0x04, 0x66, + 0x06, 0x2e, 0x00, 0x05, 0x00, 0x24, 0x40, 0x0f, 0x04, 0x01, 0x01, 0x03, + 0x00, 0x05, 0x02, 0x03, 0x01, 0x04, 0x03, 0x05, 0x05, 0x02, 0x00, 0x00, + 0x2f, 0x32, 0x32, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, + 0x12, 0x39, 0x11, 0x33, 0x30, 0x31, 0x13, 0x01, 0x01, 0x17, 0x01, 0x01, + 0x9e, 0x01, 0x97, 0x01, 0x93, 0x9e, 0xfd, 0xcd, 0xfd, 0xcd, 0x06, 0x2e, + 0xfe, 0x10, 0x01, 0xf0, 0x98, 0xfd, 0x5e, 0x02, 0xa2, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x02, 0x8c, 0x06, 0x1b, 0x00, 0x03, 0x00, 0x04, + 0x00, 0x16, 0xb9, 0x00, 0x01, 0x01, 0x72, 0xb5, 0x02, 0x03, 0x03, 0x02, + 0x04, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x2f, 0x01, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x11, 0x23, 0x11, 0x01, 0x02, 0x8c, 0xb2, 0xfe, 0x26, 0x06, 0x1b, + 0xfe, 0x3f, 0x01, 0xc1, 0xfd, 0xdd, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, + 0x04, 0x08, 0x05, 0x85, 0x02, 0x06, 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x03, 0xf8, 0x02, 0xac, 0x05, 0x85, 0x02, 0x06, 0x01, 0x3c, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xa1, 0x02, 0x8c, 0xff, 0xc4, + 0x02, 0x07, 0x07, 0x32, 0x00, 0x00, 0xf9, 0xa9, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x27, 0x03, 0x4a, 0xff, 0x91, 0x02, 0x07, 0x01, 0x49, 0x00, 0x00, + 0xfa, 0x2f, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xf8, 0x02, 0xac, 0xff, 0x85, + 0x02, 0x07, 0x01, 0x3c, 0x00, 0x00, 0xfa, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfd, 0xf8, 0x04, 0x08, 0xff, 0x85, 0x02, 0x07, 0x01, 0x3e, 0x00, 0x00, + 0xfa, 0x00, 0x00, 0x02, 0x01, 0xae, 0x00, 0x00, 0x02, 0xb7, 0x03, 0xb8, + 0x00, 0x03, 0x00, 0x07, 0x00, 0x2f, 0x40, 0x0d, 0x07, 0x06, 0x06, 0x01, + 0x02, 0x02, 0x03, 0x04, 0x00, 0x00, 0x05, 0x03, 0x06, 0xb8, 0x01, 0x08, + 0xb2, 0x05, 0x51, 0x02, 0xb9, 0x01, 0x08, 0x00, 0x03, 0x00, 0x2f, 0xed, + 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, + 0x33, 0x11, 0x33, 0x30, 0x31, 0x01, 0x07, 0x23, 0x27, 0x01, 0x21, 0x37, + 0x33, 0x02, 0xb7, 0x78, 0x19, 0x78, 0x01, 0x08, 0xfe, 0xf8, 0x78, 0x18, + 0x03, 0xb8, 0xcd, 0xcd, 0xfc, 0x48, 0xcd, 0x00, 0x00, 0x01, 0x01, 0xae, + 0x01, 0x7a, 0x02, 0xb7, 0x02, 0x47, 0x00, 0x03, 0x00, 0x19, 0xb6, 0x01, + 0x02, 0x02, 0x00, 0x00, 0x03, 0x02, 0xb9, 0x01, 0x08, 0x00, 0x03, 0x00, + 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x30, 0x31, 0x01, + 0x07, 0x23, 0x27, 0x02, 0xb7, 0x78, 0x19, 0x78, 0x02, 0x47, 0xcd, 0xcd, + 0xff, 0xff, 0xff, 0xf9, 0x01, 0x10, 0x02, 0x9c, 0x02, 0x9a, 0x03, 0x07, + 0x07, 0x2a, 0xff, 0xf9, 0xfd, 0x18, 0x00, 0x1f, 0x40, 0x17, 0x00, 0x10, + 0x0e, 0x30, 0x0e, 0x02, 0x50, 0x0e, 0x60, 0x0e, 0xb0, 0x0e, 0x03, 0x00, + 0x0e, 0x10, 0x0e, 0x20, 0x0e, 0x30, 0x0e, 0x04, 0x0e, 0x00, 0x11, 0x5d, + 0x5d, 0x71, 0x35, 0x00, 0xff, 0xff, 0xff, 0xf9, 0x01, 0x10, 0x02, 0x9c, + 0x02, 0x9a, 0x03, 0x07, 0x07, 0x2b, 0xff, 0xf9, 0xfd, 0x18, 0x00, 0x1f, + 0x40, 0x17, 0x00, 0x10, 0x0e, 0x30, 0x0e, 0x02, 0x50, 0x0e, 0x60, 0x0e, + 0xb0, 0x0e, 0x03, 0x00, 0x0e, 0x10, 0x0e, 0x20, 0x0e, 0x30, 0x0e, 0x04, + 0x0e, 0x00, 0x11, 0x5d, 0x5d, 0x71, 0x35, 0x00, 0x00, 0x01, 0x01, 0x60, + 0x01, 0x21, 0x03, 0x06, 0x02, 0x93, 0x00, 0x07, 0x00, 0x23, 0xb9, 0x00, + 0x05, 0x01, 0x5e, 0x40, 0x0c, 0x02, 0x02, 0x00, 0x06, 0x00, 0x05, 0x01, + 0x99, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2f, 0x32, 0x2f, 0x10, 0xed, 0x32, + 0x01, 0x2f, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x35, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x15, 0x01, 0x60, 0x9c, 0x6e, 0x9c, 0x01, 0x21, + 0x6b, 0x01, 0x07, 0xfe, 0xf9, 0x6b, 0x00, 0x01, 0x01, 0x60, 0x01, 0x21, + 0x03, 0x06, 0x02, 0x93, 0x00, 0x07, 0x00, 0x21, 0xb9, 0x00, 0x03, 0x01, + 0x5e, 0x40, 0x0b, 0x04, 0x04, 0x00, 0x06, 0x00, 0x02, 0x06, 0x99, 0x07, + 0x07, 0x03, 0x00, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0x2f, 0x12, + 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x15, 0x23, 0x11, 0x23, 0x11, 0x23, + 0x35, 0x03, 0x06, 0x9c, 0x6e, 0x9c, 0x02, 0x93, 0x6b, 0xfe, 0xf9, 0x01, + 0x07, 0x6b, 0x00, 0x01, 0x01, 0x60, 0x01, 0x21, 0x03, 0x06, 0x02, 0x93, + 0x00, 0x0b, 0x00, 0x31, 0xb3, 0x02, 0x00, 0x00, 0x0b, 0xb8, 0x01, 0x5e, + 0x40, 0x10, 0x08, 0x07, 0x07, 0x05, 0x08, 0x04, 0x04, 0x02, 0x05, 0x99, + 0x08, 0x0b, 0x08, 0x09, 0x09, 0x08, 0x00, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x10, 0xed, 0x32, 0x32, 0x2f, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0x32, 0x30, 0x31, 0x01, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, + 0x35, 0x33, 0x35, 0x33, 0x15, 0x03, 0x06, 0x9c, 0x6e, 0x9c, 0x9c, 0x6e, + 0x02, 0x0f, 0x6b, 0x83, 0x83, 0x6b, 0x84, 0x84, 0x00, 0x01, 0x01, 0x60, + 0x01, 0xa4, 0x03, 0x06, 0x02, 0x0f, 0x00, 0x03, 0x00, 0x0e, 0xb4, 0x00, + 0x02, 0x02, 0x99, 0x03, 0x00, 0x2f, 0xed, 0x01, 0x2f, 0x32, 0x30, 0x31, + 0x01, 0x15, 0x21, 0x35, 0x03, 0x06, 0xfe, 0x5a, 0x02, 0x0f, 0x6b, 0x6b, + 0x00, 0x01, 0x01, 0x58, 0x01, 0xa2, 0x03, 0x0d, 0x02, 0xeb, 0x00, 0x13, + 0x00, 0x38, 0xb9, 0x00, 0x00, 0x01, 0x5e, 0x40, 0x0f, 0x11, 0x11, 0x12, + 0x07, 0x07, 0x12, 0x12, 0x11, 0x11, 0x00, 0x08, 0x0b, 0xae, 0x07, 0x04, + 0xb8, 0xff, 0xc0, 0xb6, 0x0e, 0x11, 0x48, 0x04, 0x04, 0x13, 0x00, 0x00, + 0x2f, 0x32, 0x32, 0x2f, 0x2b, 0x33, 0xed, 0x32, 0x11, 0x33, 0x11, 0x33, + 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x17, + 0x16, 0x16, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x27, 0x27, 0x07, 0x35, 0x02, 0x39, 0x19, 0x0d, 0x3c, 0x28, 0x1a, + 0x20, 0x10, 0x1c, 0x2e, 0x17, 0x1b, 0x39, 0x36, 0x2c, 0x0d, 0x0b, 0x86, + 0x02, 0xeb, 0x5c, 0x32, 0x21, 0x06, 0x06, 0x94, 0x09, 0x09, 0x0c, 0x18, + 0x27, 0x1b, 0x16, 0x2e, 0xb4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x02, 0xf5, 0x05, 0xbe, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x53, 0x40, 0x27, + 0x06, 0x0a, 0x0a, 0x09, 0x09, 0x0b, 0x08, 0x02, 0x05, 0x05, 0x07, 0x03, + 0x04, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x07, 0x01, 0x09, 0x09, 0x0a, + 0x0b, 0x05, 0x02, 0x08, 0x08, 0x00, 0x0a, 0x0a, 0x03, 0x07, 0x07, 0x04, + 0x06, 0x0c, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x32, 0x11, 0x33, 0x32, 0x11, + 0x33, 0x39, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x12, 0x39, 0x11, 0x33, + 0x33, 0x33, 0x32, 0x11, 0x33, 0x11, 0x33, 0x30, 0x31, 0x01, 0x17, 0x07, + 0x17, 0x07, 0x27, 0x07, 0x27, 0x37, 0x27, 0x37, 0x17, 0x01, 0x02, 0xa9, + 0x4c, 0x75, 0x75, 0x4e, 0x75, 0x75, 0x4c, 0x75, 0x75, 0x4e, 0x75, 0xfd, + 0xcc, 0x05, 0xbe, 0x4c, 0x75, 0x76, 0x4e, 0x76, 0x76, 0x4c, 0x75, 0x76, + 0x4e, 0x76, 0xfe, 0xb0, 0x00, 0x02, 0x00, 0xbc, 0x01, 0xcc, 0x03, 0xaa, + 0x05, 0x1b, 0x00, 0x13, 0x00, 0x29, 0x00, 0x5c, 0xb6, 0x22, 0x1c, 0x0a, + 0x1f, 0x1f, 0x19, 0x05, 0xb8, 0x01, 0x56, 0xb4, 0x25, 0x25, 0x20, 0x21, + 0x0f, 0xb8, 0x01, 0x56, 0xb4, 0x19, 0x19, 0x1e, 0x1d, 0x20, 0xb8, 0x02, + 0x7e, 0x40, 0x13, 0x22, 0x1f, 0x0a, 0x1c, 0xba, 0x1c, 0xca, 0x1c, 0x02, + 0x99, 0x1c, 0xa9, 0x1c, 0x02, 0x5a, 0x1c, 0x01, 0x1c, 0x1d, 0xb8, 0x02, + 0x7e, 0xb2, 0x00, 0x90, 0x14, 0xb8, 0x02, 0x81, 0x00, 0x3f, 0xed, 0x3f, + 0x39, 0x5d, 0x5d, 0x5d, 0x11, 0x33, 0x33, 0x33, 0x3f, 0x01, 0x2f, 0x33, + 0x33, 0x2f, 0xed, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, + 0x33, 0x33, 0x30, 0x31, 0x01, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x27, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x36, 0x37, 0x01, 0x33, 0x13, 0x13, 0x33, 0x01, 0x16, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x02, 0x33, 0x13, 0x1a, 0x0f, 0x06, 0x0d, 0x14, 0x17, + 0x0a, 0x0a, 0x17, 0x14, 0x0d, 0x06, 0x0f, 0x1a, 0x14, 0x3b, 0x53, 0x36, + 0x19, 0x39, 0x30, 0xfe, 0xfc, 0xb8, 0xc2, 0xbc, 0xb8, 0xfe, 0xfd, 0x30, + 0x38, 0x19, 0x35, 0x53, 0x02, 0x4f, 0x0c, 0x14, 0x17, 0x0c, 0x15, 0x24, + 0x1e, 0x17, 0x09, 0x09, 0x17, 0x1e, 0x24, 0x15, 0x0c, 0x17, 0x14, 0x0c, + 0x83, 0x1d, 0x31, 0x42, 0x24, 0x40, 0x68, 0x33, 0x01, 0xc0, 0xfe, 0x9a, + 0x01, 0x66, 0xfe, 0x45, 0x33, 0x6d, 0x40, 0x24, 0x42, 0x31, 0x1d, 0x00, + 0x00, 0x01, 0x01, 0x24, 0x02, 0xce, 0x03, 0x42, 0x06, 0x0b, 0x00, 0x09, + 0x00, 0x31, 0xb2, 0x05, 0x05, 0x04, 0xb8, 0x01, 0x66, 0x40, 0x0b, 0x09, + 0x08, 0x08, 0x09, 0x01, 0x01, 0x09, 0x04, 0x08, 0x96, 0x07, 0xb8, 0x02, + 0x7f, 0xb2, 0x01, 0x96, 0x02, 0xb8, 0x02, 0x78, 0x00, 0x3f, 0xed, 0x3f, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x2f, 0x31, 0x30, 0x01, 0x23, 0x35, 0x21, 0x11, 0x33, 0x15, 0x21, 0x35, + 0x33, 0x01, 0xe5, 0xae, 0x01, 0x5c, 0xaf, 0xfd, 0xe2, 0xc1, 0x05, 0x7e, + 0x8d, 0xfd, 0x54, 0x91, 0x91, 0x00, 0x00, 0x01, 0x01, 0x29, 0x02, 0xbd, + 0x03, 0x3d, 0x05, 0x2b, 0x00, 0x37, 0x00, 0x98, 0x40, 0x0f, 0x0b, 0x2b, + 0x1b, 0x2b, 0x2b, 0x2b, 0x03, 0x04, 0x0e, 0x14, 0x0e, 0x24, 0x0e, 0x03, + 0x2e, 0xb8, 0x01, 0x63, 0xb6, 0x1d, 0x09, 0x09, 0x1d, 0x28, 0x28, 0x00, + 0xb8, 0x01, 0x66, 0x40, 0x0a, 0x13, 0x77, 0x33, 0x01, 0x06, 0x33, 0x16, + 0x33, 0x02, 0x33, 0xb8, 0xff, 0xf0, 0x40, 0x2c, 0x0b, 0x0e, 0x48, 0x05, + 0x33, 0x01, 0x33, 0x22, 0x0e, 0x08, 0x18, 0x28, 0x18, 0x68, 0x18, 0x03, + 0x58, 0x18, 0x01, 0x49, 0x18, 0x01, 0x38, 0x18, 0x01, 0x09, 0x18, 0x19, + 0x18, 0x02, 0x18, 0x05, 0x0b, 0x28, 0x1b, 0x28, 0x2b, 0x28, 0x03, 0x28, + 0x2b, 0x95, 0x27, 0x22, 0xb8, 0x02, 0x7d, 0x40, 0x0c, 0x04, 0x09, 0x14, + 0x09, 0x24, 0x09, 0x03, 0x09, 0x0e, 0x95, 0x08, 0x05, 0xb8, 0x02, 0x80, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x5d, 0x3f, 0x33, 0xed, 0x32, 0x5d, 0x11, + 0x39, 0x5d, 0x5d, 0x5d, 0x5d, 0x71, 0x11, 0x12, 0x39, 0x5d, 0x2b, 0x71, + 0x71, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x00, + 0x5d, 0x5d, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x27, + 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, + 0x03, 0x3d, 0x2c, 0x4b, 0x64, 0x38, 0x48, 0x80, 0x39, 0x1e, 0x37, 0x38, + 0x3d, 0x25, 0x25, 0x30, 0x1b, 0x0a, 0x15, 0x26, 0x35, 0x20, 0x23, 0x4a, + 0x3d, 0x27, 0x1c, 0x3c, 0x61, 0x45, 0x28, 0x3d, 0x34, 0x31, 0x1b, 0x39, + 0x62, 0x39, 0x3b, 0x2e, 0x12, 0x23, 0x32, 0x21, 0x2d, 0x51, 0x3c, 0x24, + 0x03, 0x79, 0x30, 0x47, 0x2f, 0x16, 0x0e, 0x11, 0x8f, 0x08, 0x0c, 0x0a, + 0x05, 0x09, 0x0f, 0x14, 0x0c, 0x0d, 0x11, 0x0d, 0x0b, 0x06, 0x07, 0x16, + 0x29, 0x41, 0x32, 0x20, 0x41, 0x34, 0x21, 0x03, 0x06, 0x09, 0x06, 0x8d, + 0x0c, 0x10, 0x1d, 0x15, 0x0d, 0x0f, 0x0c, 0x0a, 0x07, 0x0a, 0x17, 0x29, + 0x41, 0x00, 0x00, 0x01, 0x00, 0xed, 0x02, 0xce, 0x03, 0x78, 0x05, 0x1b, + 0x00, 0x0b, 0x00, 0x41, 0x40, 0x18, 0x07, 0x06, 0x06, 0x0b, 0x08, 0x05, + 0x02, 0x02, 0x00, 0x03, 0x04, 0x09, 0x0a, 0x0a, 0x01, 0x00, 0x0b, 0x08, + 0x02, 0x05, 0x05, 0x04, 0x09, 0x06, 0xbb, 0x02, 0x7e, 0x00, 0x01, 0x00, + 0x04, 0x02, 0x7f, 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x11, 0x33, + 0x33, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x32, 0x11, 0x39, + 0x11, 0x33, 0x33, 0x33, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x23, 0x27, + 0x07, 0x23, 0x13, 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x03, 0x78, 0xcb, + 0x7e, 0x7b, 0xc7, 0xc3, 0xb6, 0xc5, 0x79, 0x75, 0xbf, 0xb7, 0x02, 0xce, + 0xd9, 0xd9, 0x01, 0x28, 0x01, 0x25, 0xdb, 0xdb, 0xfe, 0xd8, 0x00, 0x02, + 0x00, 0x00, 0x02, 0xce, 0x03, 0x0c, 0x05, 0x62, 0x00, 0x18, 0x00, 0x19, + 0x00, 0x44, 0xb1, 0x12, 0x11, 0xb8, 0x01, 0x65, 0xb6, 0x13, 0x14, 0x14, + 0x00, 0x07, 0x07, 0x0d, 0xb8, 0x01, 0x67, 0x40, 0x12, 0x00, 0x14, 0x90, + 0x0b, 0x10, 0x1b, 0x10, 0x2b, 0x10, 0x03, 0x10, 0x10, 0x13, 0x08, 0x96, + 0x05, 0x05, 0x19, 0xba, 0x02, 0x7b, 0x00, 0x13, 0x02, 0x7f, 0x00, 0x3f, + 0x3f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x5d, 0xed, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x34, + 0x3e, 0x02, 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, + 0x33, 0x33, 0x03, 0x23, 0x27, 0x2e, 0x03, 0x01, 0x01, 0x2c, 0x31, 0x69, + 0xa7, 0x75, 0x2a, 0x29, 0x35, 0x5f, 0x47, 0x2a, 0x63, 0x72, 0x29, 0x0c, + 0x98, 0x06, 0x3c, 0x61, 0x44, 0x25, 0xfe, 0xd4, 0x04, 0x63, 0x39, 0x5e, + 0x43, 0x25, 0x8e, 0x07, 0x17, 0x2c, 0x25, 0x3c, 0x37, 0xfe, 0xdc, 0xa0, + 0x03, 0x26, 0x40, 0x57, 0x01, 0x20, 0x00, 0x01, 0x01, 0x41, 0x00, 0x00, + 0x03, 0x25, 0x05, 0x6a, 0x00, 0x05, 0x00, 0x19, 0xb9, 0x00, 0x00, 0x01, + 0x5f, 0xb7, 0x01, 0x01, 0x03, 0x03, 0xaf, 0x04, 0x00, 0x51, 0x00, 0x3f, + 0x2f, 0xed, 0x01, 0x2f, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x21, 0x23, 0x11, + 0x21, 0x35, 0x21, 0x03, 0x25, 0x9c, 0xfe, 0xb8, 0x01, 0xe4, 0x04, 0xce, + 0x9c, 0x00, 0x00, 0x01, 0x01, 0x41, 0x00, 0x00, 0x03, 0x25, 0x05, 0x6a, + 0x00, 0x07, 0x00, 0x20, 0xb1, 0x05, 0x00, 0xb8, 0x01, 0x5f, 0x40, 0x0a, + 0x01, 0x01, 0x03, 0x03, 0xaf, 0x04, 0x04, 0x06, 0x00, 0x51, 0x00, 0x3f, + 0x2f, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x32, 0x2f, 0xed, 0x33, 0x30, 0x31, + 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, 0x03, 0x25, 0x9c, 0xfe, + 0xb8, 0x01, 0x48, 0x9c, 0x03, 0xad, 0x9d, 0x01, 0x20, 0x00, 0x00, 0x01, + 0x01, 0x41, 0x00, 0x00, 0x03, 0x25, 0x05, 0x6a, 0x00, 0x07, 0x00, 0x20, + 0xb1, 0x05, 0x00, 0xb8, 0x01, 0x5f, 0x40, 0x0a, 0x01, 0x01, 0x03, 0x03, + 0xaf, 0x04, 0x04, 0x06, 0x00, 0x51, 0x00, 0x3f, 0x2f, 0x39, 0x2f, 0xed, + 0x01, 0x2f, 0x32, 0x2f, 0xed, 0x33, 0x30, 0x31, 0x21, 0x23, 0x11, 0x21, + 0x35, 0x21, 0x11, 0x33, 0x03, 0x25, 0x9c, 0xfe, 0xb8, 0x01, 0x48, 0x9c, + 0x02, 0x68, 0x9b, 0x02, 0x67, 0x00, 0x00, 0x01, 0x01, 0x41, 0x00, 0x00, + 0x03, 0x25, 0x05, 0x6a, 0x00, 0x07, 0x00, 0x20, 0xb1, 0x05, 0x00, 0xb8, + 0x01, 0x5f, 0x40, 0x0a, 0x01, 0x01, 0x03, 0x03, 0xaf, 0x04, 0x04, 0x06, + 0x00, 0x51, 0x00, 0x3f, 0x2f, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x32, 0x2f, + 0xed, 0x33, 0x30, 0x31, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x11, 0x33, + 0x03, 0x25, 0x9c, 0xfe, 0xb8, 0x01, 0x48, 0x9c, 0x01, 0x20, 0x9c, 0x03, + 0xae, 0x00, 0x00, 0x01, 0x01, 0x41, 0x00, 0x00, 0x03, 0x25, 0x05, 0x73, + 0x00, 0x05, 0x00, 0x1b, 0xb9, 0x00, 0x00, 0x01, 0x5e, 0x40, 0x09, 0x03, + 0x03, 0x01, 0x04, 0x53, 0x02, 0xaf, 0x01, 0x51, 0x00, 0x3f, 0xed, 0x3f, + 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x21, 0x21, 0x35, 0x21, 0x11, + 0x33, 0x03, 0x24, 0xfe, 0x1d, 0x01, 0x48, 0x9c, 0x9c, 0x04, 0xd7, 0x00, + 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x01, 0x65, 0x01, 0x2a, 0x9c, + 0x03, 0xd6, 0x01, 0x48, 0x9c, 0xfe, 0xd6, 0x01, 0x2a, 0x00, 0x00, 0x01, + 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x21, 0x35, 0x21, 0x13, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x01, 0xa1, 0xee, 0x9c, 0x02, 0x8f, 0x02, + 0x8f, 0x9c, 0xfe, 0x07, 0x01, 0xf9, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x21, 0x35, 0x21, 0x13, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0xb9, 0x01, 0xa1, 0xee, 0x9c, 0x01, 0x47, 0x03, 0xd7, 0x9c, 0xfd, 0x37, + 0x02, 0xc9, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x21, 0x35, 0x21, 0x13, 0x11, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x01, 0xa1, 0xee, 0x9c, + 0x05, 0x1e, 0x9c, 0xfc, 0x4a, 0x03, 0xb6, 0x00, 0x00, 0x01, 0x00, 0x43, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0x65, 0x53, + 0x01, 0x48, 0x9c, 0x03, 0xd6, 0x01, 0x85, 0x5f, 0xfe, 0xcc, 0x01, 0x34, + 0x00, 0x01, 0x00, 0x43, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, + 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x66, 0x53, 0x01, 0x47, 0x01, 0x48, 0x9c, + 0x05, 0x0a, 0xfe, 0xcc, 0x01, 0x85, 0x5f, 0xfe, 0xcc, 0x01, 0x34, 0x00, + 0x00, 0x01, 0x00, 0x43, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, 0x01, 0x37, 0x01, 0x21, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0x9a, 0xfe, 0x84, 0x53, 0x01, 0x47, 0x01, 0x48, + 0x9c, 0x03, 0xd6, 0x01, 0x85, 0x5f, 0xfe, 0xb8, 0x01, 0x48, 0x00, 0x01, + 0x00, 0x43, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfd, + 0x1e, 0x53, 0x02, 0x8f, 0x9c, 0x02, 0x8f, 0x02, 0xcc, 0x5f, 0xfd, 0x8f, + 0x02, 0x71, 0x00, 0x01, 0x00, 0x43, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x13, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x66, 0x53, 0x01, 0x9a, + 0xf5, 0x9c, 0x01, 0x47, 0x02, 0x8f, 0x01, 0x85, 0x5f, 0xfe, 0x7e, 0xfe, + 0x0f, 0x03, 0x73, 0x00, 0x00, 0x01, 0x00, 0x43, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x37, 0x01, + 0x13, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x66, 0x53, 0x01, + 0xae, 0xe1, 0x9c, 0x03, 0xd6, 0x01, 0x85, 0x5f, 0xfe, 0x6a, 0xfd, 0x5e, + 0x04, 0x38, 0x00, 0x01, 0x00, 0x43, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfd, 0x1e, 0x53, 0x02, 0x8f, 0x9c, 0x02, 0x8f, 0x02, + 0xcc, 0x5f, 0xfd, 0x8f, 0x02, 0x71, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x52, + 0x67, 0x01, 0x47, 0x01, 0x48, 0x9c, 0x04, 0xc4, 0xfd, 0xcb, 0x02, 0xe4, + 0x47, 0xfd, 0xcb, 0x02, 0x35, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0x52, 0x67, 0x01, 0x61, 0x01, 0x2e, 0x9c, 0x03, 0xd6, 0xfe, 0xb9, 0x02, + 0xe4, 0x47, 0xfd, 0xa0, 0x01, 0x40, 0x01, 0x20, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x21, 0x01, 0x37, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xb8, 0xfe, 0x52, 0x67, 0x01, 0x7d, 0x01, 0x12, 0x9c, 0x02, 0x8f, 0x02, + 0xe4, 0x47, 0xfd, 0x71, 0x02, 0x8f, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x17, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0x52, 0x67, 0x01, 0x97, 0xf8, 0x9c, 0x01, 0x47, 0x01, 0x48, 0x02, 0xe4, + 0x47, 0xfd, 0x40, 0xf9, 0x03, 0xb9, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, 0x01, 0x37, + 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfd, 0x0a, 0x67, 0x02, 0x8f, 0x9c, + 0x05, 0x73, 0x47, 0xfb, 0x5b, 0x04, 0xa5, 0x00, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0x51, 0x67, + 0x01, 0x48, 0x9c, 0x01, 0x47, 0x04, 0x3c, 0x37, 0xfc, 0xc9, 0x03, 0x37, + 0x00, 0x01, 0x00, 0x25, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, + 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x48, 0x71, 0x01, 0x47, 0x01, 0x48, 0x9c, + 0x04, 0x6a, 0xfc, 0xdd, 0x04, 0x3c, 0x37, 0xfc, 0xdd, 0x03, 0x23, 0x00, + 0x00, 0x01, 0x00, 0x25, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x35, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x48, 0x71, 0x01, 0x51, 0x01, 0x3e, + 0x9c, 0x03, 0xd6, 0xfd, 0x71, 0x04, 0x3c, 0x37, 0xfc, 0xc5, 0x02, 0x89, + 0xb2, 0x00, 0x00, 0x01, 0x00, 0x25, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x48, 0x71, 0x01, 0x71, + 0x01, 0x1e, 0x9c, 0x02, 0x8f, 0xfe, 0xb8, 0x04, 0x3c, 0x37, 0xfc, 0x82, + 0x01, 0x0d, 0x02, 0x71, 0x00, 0x01, 0x00, 0x25, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, 0x01, 0x37, + 0x01, 0x33, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x48, 0x71, + 0x01, 0x96, 0xf9, 0x9c, 0x01, 0x47, 0x04, 0x3c, 0x37, 0xfc, 0x29, 0x03, + 0xd7, 0x00, 0x00, 0x01, 0x00, 0x25, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x37, 0x01, 0x17, 0x11, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x48, 0x71, 0x01, 0xb4, 0xdb, + 0x9c, 0x01, 0x47, 0x04, 0x3c, 0x37, 0xfb, 0xde, 0xde, 0x05, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x06, + 0x00, 0x00, 0x21, 0x23, 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, + 0xfe, 0x3c, 0x74, 0x01, 0x50, 0x9c, 0x05, 0x8c, 0x2e, 0xfb, 0xdc, 0x04, + 0x24, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, + 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x3d, 0x79, 0x01, 0x55, + 0x01, 0x3d, 0x9c, 0x03, 0xd6, 0xfc, 0x2a, 0x05, 0x8c, 0x2e, 0xfb, 0xc9, + 0x03, 0xb7, 0x80, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, + 0x01, 0x01, 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x3d, 0x79, + 0x01, 0x55, 0x01, 0x3d, 0x9c, 0x03, 0xd6, 0xfc, 0x2a, 0x05, 0x8c, 0x2e, + 0xfb, 0xc9, 0x03, 0xb7, 0x80, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0x3d, 0x76, 0x01, 0x69, 0x01, 0x2c, 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x05, + 0x8c, 0x2e, 0xfb, 0x90, 0x02, 0x6d, 0x02, 0x03, 0x00, 0x01, 0x00, 0x1a, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xb8, 0xfe, 0x3d, 0x79, 0x01, 0x81, 0x01, 0x11, 0x9c, 0x01, 0x47, 0xfe, + 0xb9, 0x05, 0x8c, 0x2e, 0xfb, 0x43, 0x01, 0x04, 0x03, 0xb9, 0x00, 0x01, + 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, + 0x21, 0x21, 0x01, 0x37, 0x01, 0x33, 0x11, 0x33, 0x03, 0xc1, 0xfe, 0x1c, + 0xfe, 0x3d, 0x79, 0x01, 0xa1, 0xf1, 0x9c, 0x05, 0x8c, 0x2e, 0xfa, 0xe2, + 0x05, 0x1e, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, + 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x33, 0x02, + 0x7a, 0x9c, 0xfe, 0xaf, 0x4b, 0x01, 0x9c, 0x9c, 0x05, 0x14, 0xfe, 0xc2, + 0x6b, 0x01, 0x79, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, 0x01, 0x27, + 0x01, 0x21, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, 0xb5, 0x51, 0x01, 0x7e, + 0x02, 0x01, 0x05, 0x1e, 0xfe, 0xb8, 0x6b, 0x01, 0x79, 0x00, 0x00, 0x01, + 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xb8, 0xfe, 0xb0, 0x4b, 0x01, 0x9b, 0x01, 0x48, 0x9c, 0x03, + 0xd6, 0x01, 0x34, 0xfe, 0xcc, 0x6b, 0x01, 0x79, 0xfe, 0xcc, 0x01, 0x34, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xa5, 0xfe, 0xc0, 0x48, 0x01, 0x9b, 0x01, 0x48, + 0x9c, 0x02, 0x8f, 0x02, 0x6a, 0xfe, 0xdd, 0x6b, 0x01, 0x79, 0xfd, 0xc1, + 0x02, 0x3f, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0x8e, 0xfe, 0xda, 0x4b, 0x01, 0x9b, + 0x01, 0x48, 0x9c, 0x01, 0x47, 0x03, 0x95, 0xfe, 0xfa, 0x6b, 0x01, 0x79, + 0xfc, 0xd3, 0x03, 0x2d, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x05, 0x27, 0x01, + 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0x81, 0xfe, 0xe7, 0x4b, 0x01, + 0x9b, 0x01, 0x48, 0x9c, 0x04, 0xce, 0xf8, 0x6b, 0x01, 0x79, 0xfb, 0xe6, + 0x04, 0x1a, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xd6, 0xfe, 0x9b, 0x01, 0x47, 0x01, 0x48, + 0x9c, 0x05, 0x00, 0xfe, 0xd6, 0x9c, 0x01, 0x48, 0x00, 0x01, 0x00, 0x96, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xb8, 0xfe, 0xb9, 0x01, 0x65, 0x01, 0x2a, 0x9c, 0x02, 0x8f, 0x01, 0x47, + 0x9c, 0xfe, 0xd7, 0x02, 0x71, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x21, 0x35, 0x21, 0x13, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0xb9, 0x01, 0xa1, 0xee, 0x9c, 0x01, 0x47, 0x02, 0x8f, 0x9c, 0xfe, 0x07, + 0x03, 0x41, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x21, 0x35, 0x21, 0x13, 0x11, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x01, 0xa1, 0xee, 0x9c, + 0x03, 0xd6, 0x9c, 0xfd, 0x38, 0x04, 0x10, 0x00, 0x00, 0x01, 0x00, 0x42, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0x64, 0x48, + 0x01, 0x54, 0x9c, 0x02, 0x8f, 0x01, 0x9c, 0x5d, 0xfe, 0xad, 0x02, 0x85, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, + 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, 0x64, 0x54, 0x01, 0x2e, 0x01, 0x61, 0x9c, + 0x04, 0xc4, 0xfd, 0xcb, 0x01, 0x9c, 0x6f, 0xfe, 0xc0, 0x02, 0x60, 0x00, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x65, 0x51, 0x01, 0x4a, 0x01, 0x48, + 0x9c, 0x03, 0xd6, 0xfe, 0xb9, 0x01, 0x9c, 0x5e, 0xfe, 0xb6, 0x01, 0x47, + 0x01, 0x34, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, 0x01, 0x37, 0x01, 0x21, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0x9a, 0xfe, 0x83, 0x51, 0x01, 0x4a, + 0x01, 0x48, 0x9c, 0x02, 0x8f, 0x01, 0x9c, 0x62, 0xfe, 0x9e, 0x02, 0x8f, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x07, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfd, 0x1d, 0x54, 0x02, 0x8f, 0x9c, 0x01, 0x47, 0x02, 0xe4, 0x65, + 0xfd, 0x71, 0x03, 0xb9, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x37, 0x01, + 0x13, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x65, 0x4b, 0x01, + 0xb7, 0xe1, 0x9c, 0x02, 0x8f, 0x01, 0x9c, 0x64, 0xfe, 0x4e, 0xfe, 0x55, + 0x04, 0x88, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfd, 0x1d, 0x54, 0x02, 0x8f, 0x9c, 0x01, 0x47, 0x02, + 0xe4, 0x65, 0xfd, 0x71, 0x03, 0xb9, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, 0x51, + 0x5d, 0x01, 0x48, 0x01, 0x51, 0x9c, 0x04, 0x6a, 0xfc, 0xdd, 0x03, 0x47, + 0x3e, 0xfd, 0x77, 0x03, 0x77, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0x52, 0x5d, 0x01, 0x51, 0x01, 0x48, 0x9c, 0x03, 0xd6, 0xfd, 0x71, 0x03, + 0x47, 0x3e, 0xfd, 0x71, 0x02, 0x8f, 0xee, 0x00, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xb8, 0xfe, 0x52, 0x5d, 0x01, 0x6b, 0x01, 0x2e, 0x9c, 0x02, 0x8f, 0xfe, + 0xb8, 0x03, 0x47, 0x3e, 0xfd, 0x46, 0x01, 0x41, 0x02, 0x67, 0x00, 0x01, + 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x21, 0x01, 0x37, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xb8, 0xfe, 0x52, 0x5d, 0x01, 0x87, 0x01, 0x12, 0x9c, 0x01, + 0x47, 0x03, 0x4a, 0x3b, 0xfd, 0x17, 0x03, 0xd7, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, + 0x01, 0x01, 0x37, 0x01, 0x17, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, + 0xfe, 0x52, 0x5d, 0x01, 0xa1, 0xf8, 0x9c, 0x01, 0x47, 0x03, 0x47, 0x3e, + 0xfc, 0xe6, 0xf8, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x02, 0x7a, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, 0x01, 0x37, + 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0x51, 0x6a, 0x01, 0x45, 0x9c, + 0x05, 0x10, 0x27, 0xfc, 0x23, 0x04, 0x60, 0x00, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, + 0xfe, 0x51, 0x6a, 0x01, 0x3a, 0x01, 0x52, 0x9c, 0x04, 0x10, 0xfb, 0xf0, + 0x05, 0x10, 0x2a, 0xfc, 0x49, 0x04, 0x37, 0x00, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xb8, 0xfe, 0x52, 0x6a, 0x01, 0x44, 0x01, 0x48, 0x9c, 0x03, 0xd6, 0xfc, + 0x2a, 0x05, 0x10, 0x24, 0xfc, 0x3a, 0x03, 0xcc, 0x80, 0x00, 0x00, 0x01, + 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xb8, 0xfe, 0x52, 0x6a, 0x01, 0x5a, 0x01, 0x32, 0x9c, 0x02, + 0x8f, 0xfd, 0x71, 0x05, 0x10, 0x2d, 0xfc, 0x19, 0x02, 0x6b, 0x01, 0xf9, + 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x52, 0x6a, 0x01, 0x7b, 0x01, 0x11, + 0x9c, 0x01, 0x47, 0xfe, 0xb9, 0x05, 0x10, 0x2d, 0xfb, 0xc4, 0x01, 0x00, + 0x03, 0xb9, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x07, 0x00, 0x00, 0x21, 0x21, 0x01, 0x37, 0x01, 0x33, 0x11, 0x33, + 0x03, 0xc1, 0xfe, 0x1c, 0xfe, 0x52, 0x6a, 0x01, 0x9d, 0xef, 0x9c, 0x05, + 0x10, 0x2a, 0xfb, 0x62, 0x05, 0x1e, 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, + 0x02, 0x7a, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x27, 0x01, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0xb2, 0x6a, 0x01, 0xb8, 0x9c, + 0x04, 0xba, 0xfd, 0xd7, 0x4e, 0x02, 0xdb, 0x00, 0x00, 0x01, 0x00, 0x26, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x21, 0x01, 0x27, 0x01, 0x21, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, + 0xb2, 0x6a, 0x01, 0x5e, 0x02, 0x3d, 0x05, 0x1e, 0xfd, 0x71, 0x50, 0x02, + 0xdb, 0x00, 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xd6, 0xfe, 0x95, 0x6a, 0x01, 0xb8, + 0x01, 0x47, 0x9c, 0x03, 0xd6, 0x01, 0x23, 0xfd, 0x99, 0x4d, 0x02, 0xdb, + 0xfe, 0xcc, 0x01, 0x34, 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, + 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb3, 0x6a, + 0x01, 0xb7, 0x01, 0x48, 0x9c, 0x02, 0x8f, 0x02, 0x35, 0xfd, 0xcb, 0x50, + 0x02, 0xdb, 0xfd, 0xcb, 0x02, 0x35, 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xa2, 0xfe, + 0xc9, 0x6a, 0x01, 0xb7, 0x01, 0x48, 0x9c, 0x01, 0x47, 0x03, 0x57, 0xfd, + 0xf9, 0x48, 0x02, 0xdb, 0xfc, 0xdd, 0x03, 0x23, 0x00, 0x01, 0x00, 0x26, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, + 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0x96, + 0xfe, 0xd5, 0x6a, 0x01, 0xb8, 0x01, 0x47, 0x9c, 0x04, 0x81, 0xfe, 0x19, + 0x45, 0x02, 0xdb, 0xfb, 0xf0, 0x04, 0x10, 0x00, 0x00, 0x01, 0x00, 0x42, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x27, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0xb8, 0x54, + 0x01, 0x9c, 0x9c, 0x03, 0xd6, 0xfe, 0xd2, 0x51, 0x01, 0x83, 0x01, 0x3e, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x06, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x33, 0x03, 0xc1, 0x9c, + 0xfd, 0x71, 0x54, 0x02, 0xe3, 0x9c, 0x05, 0x00, 0xfd, 0x8f, 0x6a, 0x02, + 0xc1, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, 0x01, 0x27, 0x01, 0x21, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, 0xb8, 0x54, 0x01, 0x7e, + 0x01, 0x65, 0x9c, 0x03, 0xd6, 0xfe, 0xbc, 0x67, 0x01, 0x79, 0x01, 0x48, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x54, 0x01, 0x9b, 0x01, 0x48, + 0x9c, 0x02, 0x8f, 0x01, 0x47, 0xfe, 0xc9, 0x5a, 0x01, 0x8d, 0xfe, 0xb9, + 0x02, 0x7b, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xa5, 0xfe, 0xcc, 0x54, 0x01, 0x9b, + 0x01, 0x48, 0x9c, 0x01, 0x47, 0x02, 0x8f, 0xfe, 0xc9, 0x5a, 0x01, 0x9e, + 0xfd, 0x9c, 0x03, 0x87, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x27, 0x01, + 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0x8f, 0xfe, 0xe2, 0x54, 0x01, + 0x9c, 0x01, 0x47, 0x9c, 0x03, 0xd6, 0xfe, 0xc9, 0x5a, 0x01, 0xd2, 0xfc, + 0x85, 0x04, 0x6a, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, 0x21, 0x35, + 0x21, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xee, 0xfe, 0x5f, 0x01, 0x47, 0x01, + 0x48, 0x9c, 0x04, 0x88, 0xfe, 0x07, 0x9c, 0x02, 0x8f, 0x00, 0x00, 0x01, + 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xd6, 0xfe, 0x9b, 0x01, 0x47, 0x01, 0x48, 0x9c, 0x03, 0xd6, + 0xfe, 0xb9, 0x9c, 0x01, 0x65, 0x01, 0x2a, 0x00, 0x00, 0x01, 0x00, 0x96, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xb8, 0xfe, 0xb9, 0x01, 0x65, 0x01, 0x2a, 0x9c, 0x01, 0x47, 0x01, 0x48, + 0x9c, 0xfe, 0xd6, 0x03, 0xb9, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x21, + 0x35, 0x21, 0x13, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, + 0x01, 0xa1, 0xee, 0x9c, 0x02, 0x8f, 0x9c, 0xfe, 0x07, 0x04, 0x88, 0x00, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, + 0x9c, 0xfe, 0x64, 0x54, 0x01, 0x48, 0x9c, 0x01, 0x47, 0x01, 0x9c, 0x52, + 0xfe, 0xb8, 0x03, 0xcd, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, + 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x65, 0x54, 0x01, + 0x1d, 0x01, 0x72, 0x9c, 0x04, 0x74, 0xfc, 0xd3, 0x01, 0x9c, 0x70, 0xfe, + 0xd2, 0x03, 0x95, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, + 0x01, 0x01, 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, 0x64, 0x54, + 0x01, 0x2e, 0x01, 0x61, 0x9c, 0x03, 0xd6, 0xfd, 0x71, 0x01, 0x9c, 0x70, + 0xfe, 0xd3, 0x02, 0xba, 0xda, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0x65, 0x54, 0x01, 0x51, 0x01, 0x3e, 0x9c, 0x02, 0x8f, 0xfe, 0xb8, 0x01, + 0x9c, 0x70, 0xfe, 0xaa, 0x01, 0x42, 0x02, 0x7b, 0x00, 0x01, 0x00, 0x42, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x21, 0x01, 0x37, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0x9a, 0xfe, 0x83, 0x54, 0x01, 0x47, 0x01, 0x48, 0x9c, 0x01, 0x47, 0x01, + 0x9c, 0x61, 0xfe, 0x9f, 0x03, 0xd7, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, 0x01, 0x37, + 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfd, 0x1d, 0x54, 0x02, 0x8f, 0x9c, + 0x02, 0xe3, 0x66, 0xfd, 0x71, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x26, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, + 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0x48, 0x70, 0x01, + 0x48, 0x9c, 0x03, 0x6e, 0x4f, 0xfd, 0x57, 0x04, 0xa6, 0x00, 0x00, 0x01, + 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, + 0xfe, 0xb9, 0xfe, 0x48, 0x70, 0x01, 0x2c, 0x01, 0x63, 0x9c, 0x04, 0x10, + 0xfb, 0xf0, 0x03, 0x6e, 0x49, 0xfd, 0x93, 0x04, 0x70, 0x00, 0x00, 0x01, + 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x35, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xb9, 0xfe, 0x48, 0x70, 0x01, 0x32, 0x01, 0x5d, 0x9c, 0x03, + 0xd6, 0xfc, 0x2a, 0x03, 0x6e, 0x4c, 0xfd, 0x9c, 0x03, 0xee, 0x76, 0x00, + 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x49, 0x70, 0x01, 0x47, 0x01, 0x48, + 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x03, 0x6e, 0x52, 0xfd, 0x59, 0x02, 0xad, + 0x01, 0xf4, 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x49, 0x70, 0x01, 0x65, + 0x01, 0x2a, 0x9c, 0x01, 0x47, 0xfe, 0xb9, 0x03, 0x6e, 0x49, 0xfd, 0x2e, + 0x01, 0x3a, 0x03, 0x9b, 0x00, 0x01, 0x00, 0x26, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x21, 0x01, 0x37, 0x01, 0x33, + 0x11, 0x33, 0x03, 0xc1, 0xfe, 0x1c, 0xfe, 0x49, 0x70, 0x01, 0x91, 0xfe, + 0x9c, 0x03, 0x6e, 0x49, 0xfc, 0xe5, 0x05, 0x1e, 0x00, 0x01, 0x00, 0x23, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x27, 0x01, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0xb8, 0x73, 0x01, + 0xbb, 0x9c, 0x04, 0x74, 0xfc, 0xd3, 0x38, 0x04, 0x3b, 0x00, 0x00, 0x01, + 0x00, 0x23, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x23, 0x01, 0x27, 0x01, 0x21, 0x03, 0xc1, 0x9c, 0xef, + 0xfe, 0x60, 0x73, 0x01, 0xba, 0x01, 0xe4, 0x05, 0x1e, 0xfc, 0x29, 0x48, + 0x04, 0x2b, 0x00, 0x01, 0x00, 0x23, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x25, 0x01, 0x27, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xef, 0xfe, 0x82, 0x73, 0x01, 0xba, + 0x01, 0x48, 0x9c, 0x03, 0xd6, 0xe3, 0xfc, 0x8e, 0x41, 0x04, 0x32, 0xfe, + 0xea, 0x01, 0x16, 0x00, 0x00, 0x01, 0x00, 0x23, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, + 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xcb, 0xfe, 0xa6, 0x73, + 0x01, 0xba, 0x01, 0x48, 0x9c, 0x02, 0x8f, 0x02, 0x02, 0xfc, 0xb6, 0x3b, + 0x04, 0x38, 0xfd, 0xe9, 0x02, 0x17, 0x00, 0x01, 0x00, 0x23, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0xb9, 0x73, 0x01, 0xba, 0x01, 0x48, 0x9c, 0x01, 0x47, 0x03, 0x05, 0xfc, + 0xfb, 0x3e, 0x04, 0x35, 0xfc, 0xdd, 0x03, 0x23, 0x00, 0x01, 0x00, 0x23, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, + 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xae, + 0xfe, 0xc3, 0x73, 0x01, 0xbb, 0x01, 0x47, 0x9c, 0x04, 0x37, 0xfd, 0x10, + 0x3e, 0x04, 0x35, 0xfb, 0xf0, 0x04, 0x10, 0x00, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x27, 0x01, 0x35, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0xb8, 0x67, + 0x01, 0xaf, 0x9c, 0x03, 0xd6, 0xfd, 0x71, 0x44, 0x03, 0x7d, 0xb2, 0x00, + 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, 0x01, 0x27, 0x01, 0x01, 0x33, 0x03, + 0xc1, 0x9c, 0xf8, 0xfe, 0x69, 0x67, 0x01, 0xae, 0x01, 0x48, 0x9c, 0x04, + 0xf6, 0xfe, 0xe0, 0xfd, 0x71, 0x51, 0x02, 0xbd, 0x01, 0x65, 0x00, 0x01, + 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x21, 0x01, 0x27, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xee, 0xfe, 0x83, 0x67, 0x01, 0xae, 0x01, 0x48, 0x9c, 0x03, + 0xd6, 0xfd, 0x71, 0x4e, 0x02, 0xdd, 0x01, 0x48, 0x00, 0x01, 0x00, 0x2f, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xd2, 0xfe, 0x9f, 0x67, 0x01, 0xae, 0x01, 0x48, 0x9c, 0x02, 0x8f, 0x01, + 0x47, 0xfd, 0x71, 0x41, 0x03, 0x19, 0xfe, 0xa8, 0x02, 0x71, 0x00, 0x01, + 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x67, 0x01, 0xae, 0x01, 0x48, 0x9c, 0x01, + 0x47, 0x02, 0x8f, 0xfd, 0x71, 0x32, 0x03, 0x67, 0xfd, 0x5d, 0x03, 0x7d, + 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, + 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, + 0xc1, 0x9c, 0xfe, 0xa3, 0xfe, 0xce, 0x67, 0x01, 0xaf, 0x01, 0x47, 0x9c, + 0x03, 0xd6, 0xfd, 0x71, 0x41, 0x03, 0x9a, 0xfc, 0x4c, 0x04, 0x4c, 0x00, + 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x11, 0x33, 0x02, 0x7a, + 0x9c, 0xfe, 0xb8, 0x4b, 0x01, 0x93, 0x9c, 0x02, 0x8f, 0xfe, 0xb8, 0x5a, + 0x01, 0x94, 0x02, 0x85, 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, 0x01, 0x27, + 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xff, 0xfe, 0x70, 0x4b, 0x01, 0x7d, + 0x01, 0x5d, 0x9c, 0x04, 0x88, 0xfe, 0x07, 0xfe, 0xb8, 0x73, 0x01, 0x40, + 0x02, 0xc0, 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfd, 0x71, 0x4b, 0x02, 0xda, 0x9c, 0x03, 0xd6, 0xfd, + 0x71, 0x6d, 0x02, 0xdc, 0x01, 0x2a, 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, + 0x01, 0x27, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0xb9, 0x4b, 0x01, 0x7e, 0x01, 0x5c, 0x9c, 0x02, 0x8f, 0xfe, 0xb8, 0x67, + 0x01, 0x7d, 0x02, 0x8f, 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, + 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x4b, + 0x01, 0x92, 0x01, 0x48, 0x9c, 0x01, 0x47, 0x01, 0x48, 0xfe, 0xb8, 0x63, + 0x01, 0x95, 0xfe, 0xb8, 0x03, 0xc3, 0x00, 0x01, 0x00, 0x4b, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, + 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0x9f, 0xfe, 0xd2, + 0x4b, 0x01, 0x93, 0x01, 0x47, 0x9c, 0x02, 0x8f, 0xfe, 0xb8, 0x70, 0x01, + 0xa3, 0xfd, 0x9c, 0x04, 0xc4, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, + 0x21, 0x35, 0x21, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xee, 0xfe, 0x5f, 0x01, + 0x47, 0x01, 0x48, 0x9c, 0x04, 0x10, 0xfd, 0x37, 0x9c, 0x03, 0xd7, 0x00, + 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, 0x21, 0x35, 0x21, 0x01, 0x35, 0x33, + 0x03, 0xc1, 0x9c, 0xf8, 0xfe, 0x69, 0x01, 0x51, 0x01, 0x3e, 0x9c, 0x03, + 0xd6, 0xfd, 0x71, 0x9c, 0x03, 0x39, 0x9e, 0x00, 0x00, 0x01, 0x00, 0x96, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xd6, 0xfe, 0x9b, 0x01, 0x47, 0x01, 0x48, 0x9c, 0x02, 0x8f, 0xfe, 0xb8, + 0x9c, 0x01, 0x66, 0x02, 0x71, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x21, + 0x35, 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, + 0x01, 0x65, 0x01, 0x2a, 0x9c, 0x01, 0x47, 0x9c, 0xfe, 0xd7, 0x05, 0x00, + 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, 0x00, 0x06, + 0x00, 0x00, 0x21, 0x23, 0x01, 0x37, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, + 0xfe, 0x64, 0x54, 0x01, 0x48, 0x9c, 0x01, 0x9b, 0x66, 0xfe, 0xb9, 0x05, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb9, 0xfe, 0x64, 0x54, 0x01, 0x11, 0x01, + 0x7e, 0x9c, 0x04, 0x10, 0xfb, 0xf0, 0x01, 0x9b, 0x66, 0xfe, 0xfc, 0x04, + 0xbd, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, 0x01, 0x01, + 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x65, 0x54, 0x01, 0x1d, + 0x01, 0x72, 0x9c, 0x03, 0xd6, 0xfc, 0x2a, 0x01, 0x9b, 0x66, 0xfe, 0xe7, + 0x04, 0x5c, 0x76, 0x00, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x37, + 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0x65, 0x54, + 0x01, 0x34, 0x01, 0x5b, 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x01, 0x9b, 0x66, + 0xfe, 0xca, 0x02, 0xc4, 0x02, 0x2b, 0x00, 0x01, 0x00, 0x42, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x01, 0x37, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, + 0x65, 0x54, 0x01, 0x47, 0x01, 0x48, 0x9c, 0x01, 0x47, 0xfe, 0xb9, 0x01, + 0x9b, 0x66, 0xfe, 0xb9, 0x01, 0x47, 0x03, 0xb9, 0x00, 0x01, 0x00, 0x42, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x21, + 0x01, 0x37, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, 0xfd, 0xff, 0xfe, 0x82, + 0x54, 0x01, 0x48, 0x01, 0x47, 0x9c, 0x01, 0xa4, 0x5d, 0xfe, 0x9b, 0x05, + 0x1e, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, + 0x00, 0x06, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x33, 0x02, + 0x7a, 0x9c, 0xfe, 0xb8, 0x7c, 0x01, 0xc4, 0x9c, 0x04, 0x24, 0xfb, 0xdc, + 0x2e, 0x05, 0x8c, 0x00, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x23, 0x01, 0x27, + 0x01, 0x21, 0x03, 0xc1, 0x9c, 0xf1, 0xfe, 0x62, 0x7c, 0x01, 0xc3, 0x01, + 0xe4, 0x05, 0x1e, 0xfa, 0xe2, 0x2e, 0x05, 0x8c, 0x00, 0x01, 0x00, 0x1a, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x25, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xf1, 0xfe, 0x80, 0x7c, 0x01, 0xc3, 0x01, 0x48, 0x9c, 0x03, 0xd6, 0xf1, + 0xfb, 0x39, 0x2e, 0x05, 0x8c, 0xfe, 0xe0, 0x01, 0x20, 0x00, 0x00, 0x01, + 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, + 0x9c, 0xfe, 0xd8, 0xfe, 0x99, 0x7c, 0x01, 0xc3, 0x01, 0x48, 0x9c, 0x02, + 0x8f, 0x01, 0xed, 0xfb, 0x84, 0x2e, 0x05, 0x8c, 0xfd, 0xdf, 0x02, 0x21, + 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xc7, 0xfe, 0xaa, 0x7c, 0x01, 0xc3, 0x01, 0x48, + 0x9c, 0x01, 0x47, 0x02, 0xf8, 0xfb, 0xc1, 0x2e, 0x05, 0x8c, 0xfc, 0xd3, + 0x03, 0x2d, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xb8, 0xfe, 0xb9, 0x7c, 0x01, 0xc3, 0x01, + 0x48, 0x9c, 0x04, 0x10, 0xfb, 0xf0, 0x2e, 0x05, 0x8c, 0xfb, 0xf0, 0x04, + 0x10, 0x00, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, + 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x35, 0x33, + 0x02, 0x7a, 0x9c, 0xfe, 0xb8, 0x72, 0x01, 0xba, 0x9c, 0x03, 0xd6, 0xfc, + 0x2a, 0x32, 0x05, 0x26, 0x62, 0x00, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, + 0x01, 0x27, 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xdb, 0xfe, 0x4c, 0x72, + 0x01, 0xb9, 0x01, 0x48, 0x9c, 0x04, 0xf6, 0xfe, 0xe0, 0xfc, 0x2a, 0x32, + 0x03, 0xf5, 0x01, 0x93, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x23, 0x01, 0x27, + 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xf9, 0xfe, 0x6a, 0x72, 0x01, + 0xb9, 0x01, 0x48, 0x9c, 0x03, 0xd6, 0xfc, 0x2a, 0x32, 0x04, 0x40, 0x01, + 0x48, 0x00, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xe2, 0xfe, 0x8f, 0x72, 0x01, 0xb9, + 0x01, 0x48, 0x9c, 0x02, 0x8f, 0x01, 0x47, 0xfc, 0x2a, 0x32, 0x04, 0x99, + 0xfe, 0x88, 0x02, 0x67, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, + 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xd9, 0xfe, 0x98, 0x72, + 0x01, 0xc3, 0x01, 0x3e, 0x9c, 0x01, 0x47, 0x02, 0x8f, 0xfc, 0x2a, 0x32, + 0x04, 0xf8, 0xfd, 0x45, 0x03, 0x4b, 0x00, 0x01, 0x00, 0x24, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, + 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xcc, 0xfe, 0xa5, + 0x72, 0x01, 0xcd, 0x01, 0x34, 0x9c, 0x03, 0xd6, 0xfc, 0x2a, 0x32, 0x05, + 0x1c, 0xfc, 0x20, 0x04, 0x4c, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x02, 0x7a, 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, + 0x27, 0x01, 0x11, 0x33, 0x02, 0x7a, 0x9c, 0xfe, 0xb8, 0x67, 0x01, 0xaf, + 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x4f, 0x03, 0x54, 0x02, 0x17, 0x00, 0x01, + 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x06, 0x00, 0x00, + 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xfd, 0x71, + 0x67, 0x02, 0xf6, 0x9c, 0x04, 0xa5, 0xfb, 0x5b, 0x4f, 0x05, 0x6b, 0x00, + 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xf8, 0xfe, 0x69, 0x67, 0x01, 0xae, 0x01, 0x48, 0x9c, + 0x03, 0xd6, 0xfe, 0xb9, 0xfd, 0x71, 0x4f, 0x02, 0xab, 0x01, 0xaa, 0x01, + 0x16, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x21, 0x01, 0x27, 0x01, 0x21, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xee, 0xfe, 0x83, 0x67, 0x01, 0xa4, + 0x01, 0x52, 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x4f, 0x02, 0xdc, 0x02, 0x8f, + 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xf0, 0xfe, 0x81, 0x67, 0x01, 0xd1, 0x01, 0x25, + 0x9c, 0x01, 0x47, 0x01, 0x48, 0xfd, 0x71, 0x4f, 0x03, 0x1f, 0xfe, 0x9d, + 0x03, 0xaf, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, + 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, 0x27, 0x01, 0x01, 0x11, + 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xcc, 0xfe, 0xa5, 0x67, 0x01, 0xc5, 0x01, + 0x31, 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x4f, 0x03, 0x54, 0xfd, 0x85, 0x04, + 0x92, 0x00, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x02, 0x7a, 0x05, 0xba, + 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, 0x11, 0x33, + 0x02, 0x7a, 0x9c, 0xfe, 0xb8, 0x48, 0x01, 0x90, 0x9c, 0x01, 0x47, 0xfe, + 0xb9, 0x7b, 0x01, 0x86, 0x03, 0xb9, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, + 0x01, 0x27, 0x01, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xe1, 0xfe, 0x52, 0x48, + 0x01, 0x95, 0x01, 0x42, 0x9c, 0x04, 0x38, 0xfd, 0x0f, 0xfe, 0xb9, 0x7b, + 0x01, 0x32, 0x04, 0x0d, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, 0x01, 0x27, + 0x01, 0x01, 0x35, 0x33, 0x03, 0xc1, 0x9c, 0xf5, 0xfe, 0x66, 0x48, 0x01, + 0x8f, 0x01, 0x48, 0x9c, 0x03, 0xd6, 0xfd, 0x71, 0xfe, 0xb9, 0x7b, 0x01, + 0x2e, 0x03, 0x73, 0x9e, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x07, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x27, 0x01, + 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfd, 0x71, 0x48, 0x02, 0xd7, 0x9c, 0x02, + 0x8f, 0xfd, 0x71, 0x7b, 0x02, 0xce, 0x02, 0x71, 0x00, 0x01, 0x00, 0x4e, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x21, 0x01, 0x27, 0x01, 0x21, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, + 0xe0, 0xfe, 0x91, 0x48, 0x01, 0x99, 0x01, 0x3e, 0x9c, 0x01, 0x47, 0xfe, + 0xb9, 0x7b, 0x01, 0x68, 0x03, 0xd7, 0x00, 0x01, 0x00, 0x4e, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x01, 0x01, + 0x27, 0x01, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xcc, 0xfe, 0xa5, + 0x48, 0x01, 0xa7, 0x01, 0x30, 0x9c, 0x01, 0x47, 0xfe, 0xb9, 0x7b, 0x01, + 0x7c, 0xfe, 0xcd, 0x04, 0xf6, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xc1, 0x05, 0xba, 0x00, 0x08, 0x00, 0x00, 0x21, 0x23, 0x11, 0x03, + 0x21, 0x35, 0x21, 0x01, 0x33, 0x03, 0xc1, 0x9c, 0xee, 0xfe, 0x5f, 0x01, + 0x47, 0x01, 0x48, 0x9c, 0x03, 0xb6, 0xfc, 0x4a, 0x9c, 0x05, 0x1e, 0x00, + 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, + 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x21, 0x35, 0x21, 0x01, 0x35, 0x33, + 0x03, 0xc1, 0x9c, 0xfe, 0xfe, 0xfe, 0x73, 0x01, 0x47, 0x01, 0x48, 0x9c, + 0x03, 0xd6, 0xfc, 0x2a, 0x9c, 0x04, 0xd0, 0x4e, 0x00, 0x01, 0x00, 0x96, + 0x00, 0x00, 0x03, 0xc1, 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, + 0x11, 0x03, 0x21, 0x35, 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xee, + 0xfe, 0x5f, 0x01, 0x5b, 0x01, 0x34, 0x9c, 0x02, 0x8f, 0xfd, 0x71, 0x9c, + 0x03, 0x61, 0x01, 0xbd, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x03, 0xc1, + 0x05, 0xba, 0x00, 0x09, 0x00, 0x00, 0x21, 0x23, 0x11, 0x01, 0x21, 0x35, + 0x21, 0x01, 0x11, 0x33, 0x03, 0xc1, 0x9c, 0xfe, 0xd6, 0xfe, 0x9b, 0x01, + 0x47, 0x01, 0x48, 0x9c, 0x01, 0x47, 0xfe, 0xb9, 0x9c, 0x01, 0x65, 0x03, + 0xb9, 0x00, 0x00, 0x01, 0x01, 0x40, 0x00, 0x00, 0x03, 0x26, 0x03, 0x70, + 0x00, 0x05, 0x00, 0x17, 0xb9, 0x00, 0x04, 0x01, 0x5e, 0xb6, 0x00, 0x01, + 0x02, 0x04, 0x99, 0x01, 0x51, 0x00, 0x3f, 0xed, 0x2f, 0x01, 0x2f, 0x33, + 0xed, 0x30, 0x31, 0x21, 0x21, 0x11, 0x33, 0x11, 0x21, 0x03, 0x26, 0xfe, + 0x1a, 0x5e, 0x01, 0x88, 0x03, 0x70, 0xfc, 0xee, 0x00, 0x01, 0x01, 0x40, + 0x00, 0x00, 0x03, 0x26, 0x03, 0x70, 0x00, 0x07, 0x00, 0x20, 0xb1, 0x06, + 0x02, 0xb8, 0x01, 0x5e, 0x40, 0x0a, 0x00, 0x03, 0x01, 0x99, 0x06, 0x06, + 0x02, 0x04, 0x02, 0x51, 0x00, 0x3f, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x21, 0x11, 0x23, 0x11, 0x33, + 0x11, 0x21, 0x03, 0x26, 0xfe, 0x78, 0x5e, 0x5e, 0x01, 0x88, 0x01, 0x89, + 0xfe, 0x77, 0x03, 0x70, 0xfe, 0x78, 0xff, 0xff, 0x00, 0x00, 0xfd, 0xf7, + 0x03, 0x85, 0xff, 0x84, 0x03, 0x07, 0x01, 0x42, 0x00, 0x00, 0xf9, 0xff, + 0x00, 0x2f, 0xb1, 0x00, 0x01, 0xb8, 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, + 0x01, 0xb8, 0xff, 0x80, 0x40, 0x18, 0x0a, 0x0b, 0x48, 0x30, 0x01, 0x50, + 0x01, 0x02, 0x00, 0x01, 0x30, 0x01, 0x40, 0x01, 0x60, 0x01, 0x80, 0x01, + 0x90, 0x01, 0xf0, 0x01, 0x07, 0x01, 0x00, 0x11, 0x5d, 0x71, 0x2b, 0x2b, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x04, 0x8c, 0x04, 0x66, 0x06, 0x62, + 0x02, 0x27, 0x02, 0x4f, 0x00, 0x00, 0x07, 0x3b, 0x01, 0x07, 0x02, 0x4f, + 0x00, 0x00, 0x06, 0x26, 0x00, 0x19, 0x40, 0x11, 0x00, 0x01, 0x40, 0x1b, + 0x1c, 0x48, 0x01, 0x40, 0x0f, 0x13, 0x48, 0x0f, 0x01, 0x1f, 0x01, 0x02, + 0x01, 0x00, 0x11, 0x5d, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, 0x00, 0x37, + 0x03, 0x2b, 0x04, 0x14, 0x05, 0x98, 0x02, 0x06, 0x01, 0x6a, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x64, 0xfe, 0x82, 0x03, 0x01, 0xff, 0x9a, 0x00, 0x06, + 0x00, 0x29, 0x40, 0x12, 0x05, 0x04, 0x01, 0x01, 0x03, 0x00, 0x06, 0x02, + 0x03, 0x06, 0x07, 0x01, 0x99, 0x40, 0x05, 0x80, 0x02, 0x00, 0x00, 0x2f, + 0x32, 0x1a, 0xdd, 0x1a, 0xed, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, + 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x05, 0x17, 0x37, 0x33, 0x03, + 0x23, 0x03, 0x01, 0xcf, 0x64, 0x64, 0x6a, 0xb4, 0x34, 0xb5, 0x66, 0xaa, + 0xaa, 0xfe, 0xe8, 0x01, 0x18, 0x00, 0x00, 0x01, 0x01, 0x64, 0xfe, 0x82, + 0x03, 0x01, 0xff, 0x9a, 0x00, 0x06, 0x00, 0x27, 0x40, 0x11, 0x03, 0x02, + 0x06, 0x06, 0x01, 0x05, 0x04, 0x00, 0x01, 0x05, 0x00, 0x80, 0x06, 0x99, + 0x02, 0x02, 0x07, 0x11, 0x00, 0x33, 0x2f, 0xed, 0x1a, 0xcd, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x01, + 0x23, 0x13, 0x33, 0x13, 0x23, 0x27, 0x01, 0xcf, 0x6b, 0xb5, 0x34, 0xb4, + 0x6a, 0x64, 0xfe, 0x82, 0x01, 0x18, 0xfe, 0xe8, 0xaa, 0x00, 0x00, 0x01, + 0x01, 0xa7, 0xfe, 0x40, 0x02, 0xbf, 0xff, 0xdd, 0x00, 0x06, 0x00, 0x2e, + 0xb3, 0x05, 0x00, 0x80, 0x06, 0xb8, 0x01, 0x5e, 0x40, 0x0f, 0x40, 0x02, + 0x03, 0x02, 0x06, 0x06, 0x00, 0x01, 0x80, 0x05, 0x0f, 0x04, 0x01, 0x04, + 0x07, 0x00, 0x10, 0xde, 0x5d, 0x32, 0x1a, 0xce, 0x32, 0x39, 0x11, 0x33, + 0x33, 0x01, 0x2f, 0x1a, 0xed, 0x1a, 0xcd, 0x32, 0x30, 0x31, 0x01, 0x15, + 0x25, 0x35, 0x25, 0x15, 0x07, 0x02, 0xbf, 0xfe, 0xe8, 0x01, 0x18, 0xaa, + 0xfe, 0xaa, 0x6a, 0xb4, 0x34, 0xb5, 0x6b, 0x64, 0x00, 0x01, 0x01, 0xa7, + 0xfe, 0x40, 0x02, 0xbf, 0xff, 0xdd, 0x00, 0x06, 0x00, 0x30, 0xb9, 0x00, + 0x01, 0x01, 0x5e, 0x40, 0x13, 0x40, 0x04, 0x02, 0x00, 0x00, 0x02, 0x05, + 0x04, 0x01, 0x01, 0x00, 0x06, 0x80, 0x02, 0x0f, 0x03, 0x01, 0x03, 0x07, + 0x00, 0x10, 0xde, 0x5d, 0x32, 0x1a, 0xce, 0x32, 0x39, 0x11, 0x33, 0x33, + 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xdd, 0x1a, 0xed, 0x30, 0x31, 0x01, 0x37, + 0x27, 0x35, 0x05, 0x15, 0x05, 0x01, 0xa7, 0xaa, 0xaa, 0x01, 0x18, 0xfe, + 0xe8, 0xfe, 0xaa, 0x64, 0x64, 0x6b, 0xb5, 0x34, 0xb4, 0x00, 0x00, 0x02, + 0x01, 0x6e, 0xfe, 0x44, 0x02, 0xf7, 0xff, 0xad, 0x00, 0x11, 0x00, 0x1d, + 0x00, 0x3a, 0xb9, 0x00, 0x12, 0x01, 0x5e, 0xb3, 0x40, 0x00, 0xc0, 0x18, + 0xb8, 0x01, 0x5e, 0x40, 0x17, 0x0a, 0x00, 0x1b, 0x01, 0x1b, 0x8c, 0x40, + 0x0f, 0x05, 0x1f, 0x05, 0x2f, 0x05, 0x03, 0x05, 0xc0, 0x0f, 0x15, 0x01, + 0x15, 0x8c, 0x0f, 0x1e, 0x00, 0x10, 0xde, 0xed, 0x71, 0x1a, 0xdc, 0x5d, + 0x1a, 0xed, 0x71, 0x01, 0x2f, 0xed, 0x1a, 0xdc, 0x1a, 0xed, 0x30, 0x31, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x02, 0xf7, 0x1c, 0x34, 0x4a, 0x2f, 0x31, 0x49, 0x2f, + 0x17, 0x1a, 0x33, 0x4b, 0x30, 0x5c, 0x65, 0x6a, 0x2b, 0x31, 0x2c, 0x2d, + 0x29, 0x33, 0x2c, 0x2d, 0xfe, 0xfd, 0x29, 0x43, 0x32, 0x1b, 0x1a, 0x2f, + 0x41, 0x28, 0x28, 0x44, 0x31, 0x1a, 0x5f, 0x58, 0x29, 0x39, 0x33, 0x29, + 0x2c, 0x37, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x15, 0x02, 0xac, + 0x02, 0xa2, 0x03, 0x07, 0x01, 0x3c, 0x00, 0x00, 0xfd, 0x1d, 0x00, 0x1f, + 0x40, 0x17, 0x00, 0x10, 0x04, 0x30, 0x04, 0x02, 0x50, 0x04, 0x60, 0x04, + 0xb0, 0x04, 0x03, 0x00, 0x04, 0x10, 0x04, 0x20, 0x04, 0x30, 0x04, 0x04, + 0x04, 0x00, 0x11, 0x5d, 0x5d, 0x71, 0x35, 0x00, 0x00, 0x02, 0xff, 0xfe, + 0x01, 0x9b, 0x03, 0xa4, 0x02, 0xa1, 0x00, 0x03, 0x00, 0x07, 0x00, 0x61, + 0x40, 0x37, 0x05, 0x07, 0x04, 0x06, 0x06, 0x04, 0x03, 0x01, 0x02, 0x02, + 0x00, 0x00, 0x04, 0x04, 0x00, 0x40, 0x0e, 0x13, 0x48, 0x00, 0x03, 0x80, + 0x07, 0x07, 0xdf, 0x03, 0x01, 0x20, 0x03, 0x01, 0x1f, 0x03, 0x01, 0xff, + 0x03, 0x01, 0x30, 0x03, 0x80, 0x03, 0xa0, 0x03, 0x03, 0x00, 0x03, 0x10, + 0x03, 0xa0, 0x03, 0xb0, 0x03, 0xc0, 0x03, 0x05, 0x03, 0xb8, 0xff, 0xc0, + 0xb3, 0x0d, 0x10, 0x48, 0x03, 0x00, 0x2f, 0x2b, 0x5d, 0x71, 0x71, 0x72, + 0x72, 0x72, 0x33, 0x2f, 0x1a, 0x10, 0xcd, 0x2b, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x32, 0x2f, 0x39, 0x39, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, + 0x31, 0x01, 0x21, 0x13, 0x23, 0x01, 0x21, 0x13, 0x23, 0x01, 0xc5, 0x01, + 0x16, 0xc9, 0xd9, 0xfd, 0x33, 0x01, 0x2f, 0xec, 0xdd, 0x02, 0xa1, 0xfe, + 0xfa, 0x01, 0x06, 0xfe, 0xfa, 0x00, 0xff, 0xff, 0x00, 0x00, 0x01, 0x15, + 0x04, 0x9e, 0x02, 0xa2, 0x03, 0x07, 0x01, 0x50, 0x00, 0x00, 0xfd, 0x1d, + 0x00, 0x21, 0x40, 0x18, 0x01, 0x00, 0x10, 0x08, 0x30, 0x08, 0x02, 0x50, + 0x08, 0x60, 0x08, 0xb0, 0x08, 0x03, 0x00, 0x08, 0x10, 0x08, 0x20, 0x08, + 0x30, 0x08, 0x04, 0x08, 0x00, 0x11, 0x5d, 0x5d, 0x71, 0x35, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfd, 0xfa, 0x03, 0xac, 0xff, 0x9b, 0x03, 0x07, + 0x01, 0x45, 0x00, 0x00, 0xfa, 0x02, 0x00, 0x29, 0xb1, 0x00, 0x0f, 0xb8, + 0xff, 0x80, 0xb3, 0x0e, 0x0e, 0x48, 0x0f, 0xb8, 0xff, 0x80, 0x40, 0x12, + 0x0a, 0x0b, 0x48, 0x30, 0x0f, 0x50, 0x0f, 0x02, 0x00, 0x0f, 0x30, 0x0f, + 0x60, 0x0f, 0x90, 0x0f, 0x04, 0x0f, 0x00, 0x11, 0x5d, 0x71, 0x2b, 0x2b, + 0x35, 0x00, 0xff, 0xff, 0x01, 0x7f, 0x01, 0x16, 0x02, 0xe7, 0x05, 0x2f, + 0x02, 0x07, 0x01, 0x5b, 0x00, 0x00, 0x01, 0x2d, 0x00, 0x01, 0x01, 0x76, + 0x03, 0xf3, 0x02, 0xf0, 0x05, 0x6b, 0x00, 0x05, 0x00, 0x21, 0xb9, 0x00, + 0x02, 0x01, 0x5e, 0x40, 0x0c, 0x03, 0x00, 0x00, 0x03, 0x40, 0x02, 0x01, + 0x02, 0x02, 0x01, 0x99, 0x04, 0x00, 0x2f, 0xed, 0x33, 0x2f, 0x5d, 0x01, + 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x30, 0x31, 0x01, 0x21, 0x11, 0x23, 0x11, + 0x21, 0x02, 0xf0, 0xfe, 0xf0, 0x6a, 0x01, 0x7a, 0x05, 0x03, 0xfe, 0xf0, + 0x01, 0x78, 0x00, 0x01, 0x01, 0x76, 0x03, 0xf3, 0x02, 0xf0, 0x05, 0x6b, + 0x00, 0x05, 0x00, 0x19, 0x40, 0x0b, 0x03, 0x03, 0x00, 0x40, 0x03, 0x01, + 0x03, 0x03, 0x00, 0x99, 0x01, 0x00, 0x2f, 0xed, 0x33, 0x2f, 0x5d, 0x01, + 0x2f, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x35, 0x21, 0x11, 0x23, 0x11, 0x01, + 0x76, 0x01, 0x7a, 0x6a, 0x05, 0x03, 0x68, 0xfe, 0x88, 0x01, 0x10, 0x00, + 0x00, 0x01, 0x01, 0x76, 0x00, 0x00, 0x02, 0xf0, 0x01, 0x79, 0x00, 0x05, + 0x00, 0x24, 0xb9, 0x00, 0x05, 0x01, 0x5e, 0x40, 0x0e, 0x02, 0x00, 0x00, + 0x02, 0x05, 0x99, 0x02, 0x4f, 0x03, 0x01, 0x03, 0x03, 0x02, 0x51, 0x00, + 0x3f, 0x33, 0x2f, 0x5d, 0x10, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x30, 0x31, 0x25, 0x15, 0x21, 0x11, 0x33, 0x11, 0x02, 0xf0, 0xfe, 0x86, + 0x6a, 0x68, 0x68, 0x01, 0x79, 0xfe, 0xef, 0x00, 0x00, 0x01, 0x01, 0x76, + 0x00, 0x00, 0x02, 0xf0, 0x01, 0x79, 0x00, 0x05, 0x00, 0x20, 0xb9, 0x00, + 0x01, 0x01, 0x5e, 0x40, 0x0c, 0x04, 0x04, 0x00, 0x4f, 0x02, 0x01, 0x02, + 0x02, 0x00, 0x99, 0x05, 0x51, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x5d, 0x01, + 0x2f, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x21, 0x11, 0x33, 0x11, 0x21, + 0x01, 0x76, 0x01, 0x10, 0x6a, 0xfe, 0x86, 0x68, 0x01, 0x11, 0xfe, 0x87, + 0x00, 0x01, 0x00, 0x1e, 0xfe, 0x66, 0x04, 0x48, 0xff, 0xcb, 0x00, 0x07, + 0x00, 0x22, 0xbc, 0x00, 0x04, 0x01, 0x5e, 0x00, 0x03, 0x00, 0x07, 0x01, + 0x5e, 0xb7, 0x00, 0x05, 0xac, 0x02, 0x02, 0x07, 0x03, 0x08, 0x00, 0x10, + 0xce, 0x32, 0x32, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x30, 0x31, + 0x05, 0x11, 0x21, 0x11, 0x33, 0x15, 0x21, 0x35, 0x04, 0x48, 0xfb, 0xd6, + 0x7d, 0x03, 0x30, 0x35, 0xfe, 0x9b, 0x01, 0x65, 0xd6, 0xd6, 0x00, 0x01, + 0x00, 0x1e, 0xfe, 0x66, 0x04, 0x48, 0xff, 0xcb, 0x00, 0x05, 0x00, 0x1a, + 0xb1, 0x05, 0x04, 0xb8, 0x01, 0x5e, 0xb6, 0x01, 0x04, 0xac, 0x01, 0x01, + 0x02, 0x06, 0x00, 0x10, 0xce, 0x32, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x2f, + 0x30, 0x31, 0x01, 0x21, 0x11, 0x33, 0x15, 0x21, 0x04, 0x48, 0xfb, 0xd6, + 0x7d, 0x03, 0xad, 0xfe, 0x66, 0x01, 0x65, 0xd6, 0x00, 0x01, 0x01, 0x48, + 0xfe, 0x40, 0x03, 0x1a, 0xff, 0xdd, 0x00, 0x09, 0x00, 0x49, 0x40, 0x29, + 0x06, 0x09, 0x09, 0x00, 0x00, 0x04, 0x04, 0x03, 0x07, 0x07, 0x03, 0x00, + 0xbf, 0x01, 0x01, 0x01, 0x01, 0x02, 0x09, 0x99, 0x03, 0x7f, 0x06, 0x01, + 0xaf, 0x06, 0xbf, 0x06, 0x02, 0x06, 0x06, 0x05, 0x0f, 0x04, 0x1f, 0x04, + 0x2f, 0x04, 0x03, 0x04, 0x0a, 0x00, 0x10, 0xce, 0x5d, 0x32, 0x32, 0x2f, + 0x5d, 0x71, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x5d, 0x33, 0x01, 0x2f, 0x33, + 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x11, 0x39, 0x11, 0x33, 0x30, 0x31, 0x01, + 0x15, 0x27, 0x35, 0x37, 0x15, 0x07, 0x21, 0x15, 0x21, 0x02, 0x10, 0xc8, + 0xc8, 0x56, 0x01, 0x60, 0xfe, 0xa5, 0xfe, 0xa0, 0x60, 0xaa, 0x48, 0xab, + 0x61, 0x41, 0x5e, 0x00, 0x00, 0x02, 0x01, 0x32, 0x03, 0xf5, 0x03, 0x33, + 0x06, 0x87, 0x00, 0x13, 0x00, 0x17, 0x00, 0x2a, 0xb9, 0x00, 0x14, 0x01, + 0x5f, 0xb2, 0x15, 0x15, 0x0f, 0xbb, 0x02, 0x27, 0x00, 0x05, 0x00, 0x0a, + 0x01, 0x43, 0xb6, 0x00, 0x00, 0x15, 0x16, 0x16, 0x15, 0x4f, 0x00, 0x3f, + 0x33, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, + 0x30, 0x31, 0x01, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x05, 0x23, 0x11, 0x33, 0x01, 0xbc, + 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, + 0x16, 0x25, 0x32, 0x01, 0x5b, 0x9d, 0x9d, 0x04, 0xb5, 0x15, 0x26, 0x32, + 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, + 0x15, 0xc0, 0x02, 0x92, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x7c, + 0x06, 0x94, 0x00, 0x13, 0x00, 0x17, 0x00, 0x18, 0x00, 0x34, 0xb6, 0x17, + 0x14, 0x14, 0x15, 0x16, 0x16, 0x0a, 0xb8, 0x02, 0x27, 0xb5, 0x00, 0x14, + 0x17, 0x17, 0x15, 0x05, 0xb8, 0x01, 0x43, 0xb6, 0x0f, 0x0f, 0x16, 0x15, + 0x15, 0x18, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x11, + 0x33, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, + 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x01, 0x27, 0x01, 0x01, 0xe9, + 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, + 0x1c, 0x32, 0x26, 0x15, 0x02, 0x93, 0xfe, 0x32, 0x79, 0x01, 0xce, 0xfc, + 0xfd, 0x06, 0x0a, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, + 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x0f, 0xfe, 0x3a, 0x78, 0x01, 0xc6, + 0xfd, 0xa1, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x7c, 0x06, 0x94, + 0x00, 0x13, 0x00, 0x17, 0x00, 0x18, 0x00, 0x32, 0xb9, 0x00, 0x0a, 0x02, + 0x27, 0xb6, 0x00, 0x00, 0x15, 0x16, 0x16, 0x15, 0x05, 0xb8, 0x01, 0x43, + 0x40, 0x0d, 0x0f, 0x40, 0x09, 0x0c, 0x48, 0x0f, 0x0f, 0x15, 0xaf, 0x14, + 0x14, 0x18, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x2b, 0xed, + 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x03, 0x35, 0x21, 0x15, 0x05, 0x01, 0xaa, 0x15, 0x26, 0x32, + 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, + 0x15, 0xc0, 0x02, 0x92, 0xfc, 0x84, 0x06, 0x0a, 0x1c, 0x33, 0x25, 0x16, + 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0xfe, + 0xa5, 0x9d, 0x9d, 0x9b, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x74, + 0x05, 0x4b, 0x00, 0x05, 0x00, 0x06, 0x00, 0x26, 0xb9, 0x00, 0x03, 0x01, + 0x5e, 0x40, 0x10, 0x00, 0x00, 0x01, 0x04, 0x04, 0x02, 0x99, 0x0f, 0x01, + 0x1f, 0x01, 0x02, 0x01, 0x01, 0x06, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x5d, + 0xed, 0x32, 0x2f, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x21, + 0x35, 0x21, 0x35, 0x33, 0x01, 0x03, 0x74, 0xfd, 0x7d, 0x02, 0x15, 0x6e, + 0xfc, 0x8c, 0x04, 0x5c, 0x6b, 0x84, 0xfe, 0xad, 0x00, 0x01, 0x00, 0x3c, + 0x01, 0xa7, 0x04, 0x2a, 0x05, 0x0e, 0x00, 0x09, 0x00, 0x4c, 0xb6, 0x02, + 0x05, 0x06, 0x01, 0x06, 0x06, 0x07, 0xb8, 0x01, 0x5d, 0xb2, 0x08, 0x02, + 0x03, 0xb8, 0x01, 0x5d, 0x40, 0x15, 0x04, 0x05, 0x05, 0x04, 0x04, 0x00, + 0x08, 0x01, 0x00, 0x06, 0x09, 0x04, 0x04, 0x07, 0x09, 0x01, 0x00, 0x00, + 0x09, 0x41, 0x07, 0x00, 0x2f, 0x3f, 0x33, 0x2f, 0x32, 0x11, 0x12, 0x39, + 0x2f, 0x11, 0x33, 0x01, 0x2f, 0x2f, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x2f, + 0x10, 0xed, 0x32, 0x10, 0xed, 0x32, 0x2f, 0x7d, 0x87, 0x04, 0xc4, 0xc4, + 0x30, 0x31, 0x01, 0x15, 0x25, 0x11, 0x23, 0x11, 0x25, 0x11, 0x23, 0x11, + 0x04, 0x2a, 0xfe, 0x7b, 0x9c, 0xfe, 0xcf, 0x9c, 0x04, 0x2f, 0x92, 0x56, + 0xfe, 0xab, 0x01, 0x77, 0x44, 0xfd, 0x4e, 0x03, 0x67, 0x00, 0x00, 0x01, + 0x00, 0x3c, 0xfe, 0x95, 0x04, 0x2a, 0x02, 0xd2, 0x00, 0x09, 0x00, 0x3a, + 0xb5, 0x04, 0x07, 0x08, 0x03, 0x08, 0x07, 0xb8, 0x01, 0x5d, 0xb4, 0x04, + 0x04, 0x00, 0x08, 0x03, 0xb8, 0x01, 0x5d, 0x40, 0x0b, 0x00, 0x08, 0x09, + 0x05, 0x05, 0x01, 0x03, 0x00, 0x09, 0x46, 0x01, 0x00, 0x2f, 0x3f, 0x33, + 0x32, 0x12, 0x39, 0x2f, 0x11, 0x33, 0x01, 0x2f, 0xed, 0x2f, 0x12, 0x39, + 0x2f, 0xed, 0x10, 0x7d, 0x87, 0x04, 0xc4, 0xc4, 0x30, 0x31, 0x17, 0x11, + 0x33, 0x11, 0x05, 0x11, 0x33, 0x11, 0x05, 0x15, 0x3c, 0x9c, 0x01, 0x31, + 0x9c, 0x01, 0x85, 0x88, 0x03, 0x5a, 0xfd, 0x22, 0x44, 0x01, 0xa8, 0xfe, + 0x36, 0x57, 0xa2, 0x00, 0xff, 0xff, 0x01, 0x13, 0xff, 0x21, 0x03, 0x52, + 0x01, 0xab, 0x03, 0x07, 0x06, 0x9f, 0x00, 0x00, 0xfc, 0x5d, 0x00, 0x0b, + 0xb4, 0x01, 0x00, 0x04, 0x5f, 0x04, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x21, 0x03, 0x66, 0x01, 0xa9, 0x03, 0x07, + 0x06, 0xa5, 0x00, 0x00, 0xfc, 0x5d, 0x00, 0x0b, 0xb4, 0x01, 0x00, 0x10, + 0x5f, 0x10, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0xf9, + 0xff, 0x21, 0x03, 0x6d, 0x01, 0xab, 0x03, 0x07, 0x06, 0xae, 0x00, 0x00, + 0xfc, 0x5d, 0x00, 0x0b, 0xb4, 0x01, 0x00, 0x05, 0x5f, 0x05, 0x00, 0x11, + 0x3f, 0x35, 0x35, 0x00, 0x00, 0x01, 0x00, 0xec, 0xff, 0x2a, 0x03, 0x7a, + 0x01, 0x96, 0x00, 0x0b, 0x00, 0x65, 0x40, 0x3f, 0x0b, 0x05, 0x02, 0x08, + 0x08, 0x0a, 0x07, 0x06, 0x06, 0x09, 0x0a, 0x0a, 0x01, 0x00, 0x00, 0x03, + 0x04, 0x0b, 0x08, 0x02, 0x05, 0x05, 0x04, 0x09, 0x20, 0x06, 0x40, 0x06, + 0x70, 0x06, 0x90, 0x06, 0x04, 0x90, 0x06, 0xb0, 0x06, 0xe0, 0x06, 0x03, + 0x0f, 0x06, 0x6f, 0x06, 0x02, 0x2f, 0x06, 0x5f, 0x06, 0x6f, 0x06, 0x7f, + 0x06, 0x04, 0xcf, 0x06, 0xdf, 0x06, 0x02, 0x06, 0x01, 0x04, 0x5e, 0x00, + 0x3f, 0x33, 0x2f, 0x5d, 0x71, 0x72, 0x71, 0x72, 0x33, 0x12, 0x39, 0x11, + 0x33, 0x33, 0x33, 0x01, 0x2f, 0x32, 0x32, 0x2f, 0x33, 0x33, 0x2f, 0x33, + 0x32, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, 0x05, + 0x23, 0x27, 0x07, 0x23, 0x13, 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x03, + 0x7a, 0xc1, 0x8a, 0x87, 0xbc, 0xc8, 0xbd, 0xbb, 0x84, 0x83, 0xb7, 0xc1, + 0xd6, 0xea, 0xea, 0x01, 0x36, 0x01, 0x36, 0xeb, 0xeb, 0xfe, 0xc9, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x21, 0x03, 0x67, 0x01, 0xa9, 0x03, 0x07, + 0x06, 0xa6, 0x00, 0x00, 0xfc, 0x5d, 0x00, 0x0b, 0xb4, 0x01, 0x00, 0x1a, + 0x5f, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x02, 0xba, 0x05, 0xb4, 0x02, 0x06, 0x09, 0x26, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xba, 0x05, 0xb4, 0x02, 0x06, + 0x09, 0x26, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xb8, + 0x05, 0xb4, 0x02, 0x06, 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x02, 0xb8, 0x05, 0xb4, 0x02, 0x06, 0x09, 0x27, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x22, 0x05, 0x9d, 0x02, 0x06, + 0x09, 0x28, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x22, + 0x05, 0x9d, 0x02, 0x06, 0x09, 0x28, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x02, 0xe5, 0x05, 0x9d, 0x02, 0x06, 0x09, 0x29, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xe5, 0x05, 0x9d, 0x02, 0x06, + 0x09, 0x29, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, + 0x05, 0x99, 0x02, 0x06, 0x01, 0x45, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xac, 0x05, 0x99, 0x02, 0x06, 0x09, 0x2a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, 0x05, 0xb4, 0x02, 0x06, + 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, + 0x05, 0xb4, 0x02, 0x06, 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x9a, 0x05, 0xb4, 0x02, 0x06, 0x09, 0x2c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, 0x05, 0xb4, 0x02, 0x06, + 0x09, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, + 0x07, 0x04, 0x02, 0x06, 0x09, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xac, 0x07, 0x04, 0x02, 0x06, 0x09, 0x2d, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, 0x05, 0xb4, 0x02, 0x06, + 0x09, 0x2e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, + 0x05, 0xb4, 0x02, 0x06, 0x09, 0x2e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x9a, 0x05, 0xb4, 0x02, 0x06, 0x09, 0x2f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, 0x05, 0xb4, 0x02, 0x06, + 0x09, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, + 0x07, 0x04, 0x02, 0x06, 0x09, 0x30, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xac, 0x07, 0x04, 0x02, 0x06, 0x09, 0x30, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x02, 0x05, 0x9a, 0x02, 0x06, + 0x09, 0x31, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x02, + 0x05, 0x9a, 0x02, 0x06, 0x09, 0x31, 0x00, 0x00, 0xff, 0xff, 0x00, 0x05, + 0x03, 0xf6, 0x04, 0x02, 0x05, 0x9a, 0x02, 0x06, 0x09, 0x32, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x05, 0x03, 0xf6, 0x04, 0x02, 0x05, 0x9a, 0x02, 0x06, + 0x09, 0x32, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, + 0x06, 0xa6, 0x02, 0x06, 0x09, 0x33, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xac, 0x06, 0xa6, 0x02, 0x06, 0x09, 0x33, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x4a, 0x05, 0x62, 0x02, 0x06, + 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x53, + 0x05, 0x85, 0x02, 0x06, 0x01, 0x4b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x02, 0xbc, 0x05, 0x91, 0x02, 0x06, 0x03, 0xc8, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xbc, 0x05, 0x91, 0x02, 0x06, + 0x03, 0xc8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x49, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x15, 0x40, 0x0d, 0x03, 0x02, 0x14, 0x40, + 0x1c, 0x1f, 0x48, 0x14, 0x40, 0x11, 0x14, 0x48, 0x14, 0x00, 0x11, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x49, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x15, 0x40, 0x0d, 0x03, 0x02, 0x14, 0x40, + 0x1c, 0x1f, 0x48, 0x14, 0x40, 0x11, 0x14, 0x48, 0x14, 0x00, 0x11, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x49, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x15, 0x40, 0x0d, 0x03, 0x02, 0x13, 0x40, + 0x1c, 0x1f, 0x48, 0x13, 0x40, 0x11, 0x14, 0x48, 0x13, 0x00, 0x11, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x49, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x15, 0x40, 0x0d, 0x03, 0x02, 0x13, 0x40, + 0x1c, 0x1f, 0x48, 0x13, 0x40, 0x11, 0x14, 0x48, 0x13, 0x00, 0x11, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x4b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x2d, 0x40, 0x21, 0x03, 0x02, 0x24, 0x40, + 0x20, 0x25, 0x48, 0x24, 0x80, 0x1d, 0x1f, 0x48, 0x24, 0x40, 0x1c, 0x1c, + 0x48, 0x24, 0x40, 0x1a, 0x1a, 0x48, 0x24, 0x40, 0x10, 0x14, 0x48, 0x24, + 0x40, 0x0d, 0x0d, 0x48, 0x24, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x4b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x2d, 0x40, 0x21, 0x03, 0x02, 0x24, 0x40, + 0x20, 0x25, 0x48, 0x24, 0x80, 0x1d, 0x1f, 0x48, 0x24, 0x40, 0x1c, 0x1c, + 0x48, 0x24, 0x40, 0x1a, 0x1a, 0x48, 0x24, 0x40, 0x10, 0x14, 0x48, 0x24, + 0x40, 0x0d, 0x0d, 0x48, 0x24, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x4b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x2d, 0x40, 0x21, 0x03, 0x02, 0x23, 0x40, + 0x20, 0x25, 0x48, 0x23, 0x80, 0x1d, 0x1f, 0x48, 0x23, 0x40, 0x1c, 0x1c, + 0x48, 0x23, 0x40, 0x1a, 0x1a, 0x48, 0x23, 0x40, 0x10, 0x14, 0x48, 0x23, + 0x40, 0x0d, 0x0d, 0x48, 0x23, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, + 0x07, 0x14, 0x02, 0x26, 0x01, 0x4b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, + 0x00, 0x00, 0x01, 0x60, 0x00, 0x2d, 0x40, 0x21, 0x03, 0x02, 0x24, 0x40, + 0x20, 0x25, 0x48, 0x24, 0x80, 0x1d, 0x1f, 0x48, 0x24, 0x40, 0x1c, 0x1c, + 0x48, 0x24, 0x40, 0x1a, 0x1a, 0x48, 0x24, 0x40, 0x10, 0x14, 0x48, 0x24, + 0x40, 0x0d, 0x0d, 0x48, 0x24, 0x00, 0x11, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, + 0x2b, 0x35, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x02, + 0x06, 0xc1, 0x02, 0x26, 0x09, 0x31, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, + 0x00, 0x00, 0x01, 0x5f, 0x00, 0x13, 0x40, 0x0c, 0x04, 0x2e, 0x40, 0x1a, + 0x1a, 0x48, 0x2e, 0x40, 0x0c, 0x10, 0x48, 0x2e, 0x00, 0x11, 0x2b, 0x2b, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf6, 0x04, 0x02, 0x06, 0xc1, + 0x02, 0x26, 0x09, 0x32, 0x00, 0x00, 0x01, 0x07, 0x01, 0x49, 0x00, 0x00, + 0x01, 0x5f, 0x00, 0x13, 0x40, 0x0c, 0x04, 0x2e, 0x40, 0x1a, 0x1a, 0x48, + 0x2e, 0x40, 0x0c, 0x10, 0x48, 0x2e, 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x02, 0x07, 0x2d, 0x02, 0x26, + 0x09, 0x31, 0x00, 0x00, 0x01, 0x07, 0x01, 0x4c, 0x00, 0x00, 0x00, 0x9e, + 0x00, 0x15, 0xb6, 0x04, 0x37, 0x40, 0x12, 0x12, 0x48, 0x37, 0xb8, 0xff, + 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x37, 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf6, 0x04, 0x02, 0x07, 0x2d, 0x02, 0x26, + 0x09, 0x32, 0x00, 0x00, 0x01, 0x07, 0x01, 0x4c, 0x00, 0x00, 0x00, 0x9e, + 0x00, 0x15, 0xb6, 0x04, 0x37, 0x40, 0x12, 0x12, 0x48, 0x37, 0xb8, 0xff, + 0xc0, 0xb3, 0x0f, 0x0f, 0x48, 0x37, 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x00, + 0xff, 0xff, 0x01, 0x66, 0xfe, 0x74, 0x02, 0xf3, 0xff, 0xec, 0x02, 0x06, + 0x03, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x01, 0x66, 0xfe, 0x74, 0x02, 0xf3, + 0xff, 0xec, 0x02, 0x06, 0x03, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x25, + 0xff, 0xe9, 0x04, 0x42, 0x05, 0x31, 0x02, 0x06, 0x02, 0x12, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x52, 0xff, 0xee, 0x03, 0xec, 0x05, 0x2d, 0x02, 0x06, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x7a, 0xff, 0xee, 0x04, 0x14, + 0x05, 0x2d, 0x00, 0x25, 0x00, 0x2d, 0xb9, 0x00, 0x08, 0x02, 0x1d, 0xb5, + 0x1b, 0x25, 0x25, 0x13, 0x13, 0x16, 0xb8, 0x01, 0x12, 0xb4, 0x12, 0x0d, + 0x44, 0x25, 0x20, 0xb8, 0x01, 0x16, 0xb2, 0x00, 0x03, 0x42, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x2f, + 0xed, 0x30, 0x31, 0x13, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x02, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x7a, 0x58, 0xa2, 0x58, 0x8d, 0xd9, 0x95, 0x4d, 0x54, 0x9c, 0xdf, 0x8b, + 0x2d, 0x4f, 0x4d, 0x4d, 0x2a, 0x55, 0x9a, 0x3f, 0x5d, 0x84, 0x55, 0x28, + 0x29, 0x56, 0x86, 0x5c, 0x21, 0x4d, 0x4f, 0x4d, 0x21, 0x04, 0xe8, 0x23, + 0x22, 0x53, 0xa4, 0xf4, 0xa0, 0xa5, 0xfe, 0xff, 0xb1, 0x5d, 0x04, 0x0a, + 0x13, 0x0e, 0xf4, 0x28, 0x22, 0x43, 0x79, 0xa7, 0x64, 0x6a, 0xa7, 0x74, + 0x3d, 0x0d, 0x16, 0x1c, 0x0f, 0x00, 0xff, 0xff, 0x00, 0x52, 0xff, 0xee, + 0x03, 0xec, 0x05, 0x2d, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, 0x01, 0x07, + 0x01, 0x7d, 0x00, 0x84, 0x00, 0x60, 0x00, 0x0f, 0xb1, 0x01, 0x26, 0xb8, + 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, 0x26, 0x00, 0x11, 0x2b, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x7a, 0xff, 0xee, 0x04, 0x14, 0x05, 0x2d, 0x02, 0x26, + 0x08, 0x2a, 0x00, 0x00, 0x01, 0x07, 0x01, 0x7d, 0xff, 0x77, 0x00, 0x60, + 0x00, 0x0f, 0xb1, 0x01, 0x26, 0xb8, 0xff, 0xc0, 0xb3, 0x0e, 0x0e, 0x48, + 0x26, 0x00, 0x11, 0x2b, 0x35, 0x00, 0x00, 0x01, 0x00, 0x2f, 0x00, 0x00, + 0x04, 0x32, 0x05, 0x24, 0x00, 0x1d, 0x00, 0x3f, 0x40, 0x0c, 0x00, 0x00, + 0x08, 0x1f, 0x11, 0x11, 0x09, 0x1e, 0x18, 0x17, 0x17, 0x08, 0xb8, 0x01, + 0xf9, 0xb2, 0x09, 0x00, 0x11, 0xb8, 0x01, 0x13, 0x40, 0x0a, 0x07, 0x0a, + 0x17, 0x0a, 0x08, 0x1d, 0x12, 0x41, 0x08, 0x43, 0x00, 0x3f, 0x3f, 0x33, + 0x12, 0x39, 0x39, 0x11, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x39, 0x11, + 0x33, 0x11, 0x12, 0x39, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, + 0x22, 0x0e, 0x04, 0x15, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x04, 0x23, 0x35, + 0x1e, 0x03, 0x17, 0x33, 0x3e, 0x03, 0x33, 0x04, 0x32, 0x32, 0x61, 0x56, + 0x49, 0x35, 0x1e, 0xfa, 0x1e, 0x35, 0x48, 0x57, 0x60, 0x32, 0x64, 0xaf, + 0x86, 0x56, 0x0c, 0x12, 0x0e, 0x5f, 0x89, 0xa8, 0x58, 0x04, 0x4a, 0x19, + 0x3d, 0x6a, 0xa1, 0xdf, 0x95, 0xfe, 0x8b, 0x01, 0x75, 0x96, 0xe0, 0xa1, + 0x69, 0x3d, 0x18, 0xda, 0x01, 0x2c, 0x6a, 0xb2, 0x86, 0x86, 0xb2, 0x6a, + 0x2b, 0x00, 0xff, 0xff, 0xfc, 0xd7, 0x00, 0x00, 0x04, 0x32, 0x05, 0x9a, + 0x02, 0x26, 0x08, 0x2d, 0x00, 0x00, 0x00, 0x07, 0x01, 0xd8, 0xfc, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x32, 0x06, 0x9a, + 0x02, 0x26, 0x08, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xb8, 0x00, 0x00, 0x03, 0xbc, 0x05, 0x1b, 0x00, 0x12, + 0x00, 0x31, 0xb4, 0x0b, 0x0b, 0x05, 0x07, 0x01, 0xb8, 0x01, 0xf9, 0x40, + 0x0a, 0x02, 0x0b, 0x0d, 0x0d, 0x00, 0xdf, 0x07, 0x07, 0x01, 0x06, 0xb8, + 0x01, 0x0b, 0xb3, 0x03, 0x41, 0x01, 0x43, 0x00, 0x3f, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, + 0x2f, 0x30, 0x31, 0x01, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, + 0x32, 0x16, 0x15, 0x15, 0x23, 0x2e, 0x03, 0x23, 0x01, 0xb2, 0xfa, 0x03, + 0x04, 0xfd, 0xf6, 0x01, 0x2c, 0x59, 0x50, 0x14, 0x0c, 0x1e, 0x2d, 0x40, + 0x2d, 0x02, 0x17, 0xfd, 0xe9, 0x05, 0x1b, 0xd0, 0xfe, 0x96, 0x4e, 0x4d, + 0xa7, 0x17, 0x2b, 0x22, 0x14, 0x00, 0x00, 0x02, 0x00, 0x20, 0x00, 0x00, + 0x04, 0x46, 0x05, 0x31, 0x00, 0x13, 0x00, 0x23, 0x00, 0x3a, 0xb9, 0x00, + 0x06, 0x01, 0xc3, 0xb3, 0x07, 0x07, 0x0a, 0x00, 0xb8, 0x02, 0x00, 0xb2, + 0x14, 0x14, 0x1c, 0xb8, 0x02, 0x01, 0xb7, 0x0a, 0x08, 0x05, 0xe3, 0x1f, + 0x1f, 0x06, 0x17, 0xb8, 0x01, 0x14, 0xb3, 0x0f, 0x42, 0x06, 0x43, 0x00, + 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, + 0x07, 0x11, 0x23, 0x11, 0x24, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x05, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x04, 0x46, 0x36, 0x6b, 0x9e, 0x68, 0xe2, 0xfe, 0x63, + 0x49, 0x8b, 0xc9, 0x80, 0x7d, 0xc2, 0x85, 0x45, 0xfe, 0xfe, 0x83, 0x8c, + 0x4b, 0x68, 0x42, 0x1d, 0x8c, 0x86, 0x49, 0x67, 0x41, 0x1e, 0x03, 0x27, + 0x69, 0xb4, 0x89, 0x59, 0x0f, 0xfe, 0xe7, 0x01, 0x15, 0x38, 0x01, 0xcc, + 0x72, 0xc4, 0x90, 0x52, 0x49, 0x87, 0xc2, 0x7e, 0x9f, 0x96, 0x30, 0x53, + 0x72, 0x42, 0xa0, 0x98, 0x2f, 0x54, 0x73, 0x00, 0x00, 0x01, 0x00, 0x46, + 0x00, 0x00, 0x04, 0x20, 0x05, 0x1b, 0x00, 0x07, 0x00, 0x2b, 0x40, 0x14, + 0x05, 0x06, 0x02, 0x01, 0x06, 0x01, 0x07, 0x07, 0x04, 0x03, 0x00, 0x00, + 0xdf, 0x03, 0x03, 0x01, 0x06, 0x43, 0x01, 0x41, 0x00, 0x3f, 0x3f, 0x12, + 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x32, 0x2f, 0x33, 0x11, 0x39, 0x39, 0x11, + 0x33, 0x11, 0x33, 0x30, 0x31, 0x13, 0x01, 0x33, 0x01, 0x21, 0x01, 0x23, + 0x01, 0x46, 0x01, 0x60, 0xfe, 0xfe, 0xf7, 0x02, 0x85, 0xfe, 0x98, 0xff, + 0x01, 0x0d, 0x02, 0x17, 0x03, 0x04, 0xfd, 0xc6, 0xfd, 0x1f, 0x02, 0x17, + 0x00, 0x01, 0x00, 0x46, 0x00, 0x00, 0x04, 0x20, 0x05, 0x1b, 0x00, 0x0c, + 0x00, 0x4a, 0xb1, 0x08, 0x05, 0xb8, 0x01, 0x9c, 0xb6, 0x06, 0x03, 0x02, + 0x09, 0x09, 0x06, 0x0c, 0xb8, 0x01, 0xa2, 0x40, 0x19, 0x0a, 0x00, 0x00, + 0x06, 0x09, 0x03, 0x01, 0x04, 0x20, 0x03, 0x80, 0x03, 0x90, 0x03, 0x03, + 0x03, 0x04, 0x03, 0x04, 0x0a, 0x07, 0x41, 0x06, 0x00, 0x43, 0x00, 0x3f, + 0x32, 0x3f, 0x33, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x11, 0x33, 0x11, 0x33, + 0x01, 0x2f, 0x33, 0x2f, 0x32, 0xed, 0x11, 0x39, 0x11, 0x33, 0x33, 0x10, + 0xed, 0x32, 0x30, 0x31, 0x21, 0x11, 0x03, 0x23, 0x03, 0x11, 0x23, 0x11, + 0x21, 0x13, 0x13, 0x21, 0x11, 0x03, 0x47, 0xd8, 0x9a, 0xbe, 0xd1, 0x01, + 0x03, 0xe4, 0xe9, 0x01, 0x0a, 0x03, 0xe2, 0xfe, 0xc5, 0x01, 0x3b, 0xfc, + 0x1e, 0x05, 0x1b, 0xfe, 0x92, 0x01, 0x6e, 0xfa, 0xe5, 0x00, 0x00, 0x01, + 0x00, 0x46, 0x00, 0x00, 0x04, 0x48, 0x05, 0x31, 0x00, 0x26, 0x00, 0x5d, + 0xb6, 0x24, 0x21, 0x1e, 0x03, 0x05, 0x15, 0x10, 0xb8, 0x01, 0xf9, 0x40, + 0x24, 0x16, 0x1b, 0x22, 0x23, 0x23, 0x05, 0x1c, 0x1d, 0x1d, 0x05, 0x24, + 0x21, 0x23, 0x22, 0x1e, 0x1b, 0x1d, 0x1c, 0x17, 0x22, 0x01, 0x09, 0x22, + 0x01, 0x17, 0x1c, 0x01, 0x1c, 0x1b, 0x22, 0x21, 0x04, 0x16, 0x43, 0x05, + 0x00, 0xb8, 0x01, 0x15, 0xb2, 0x06, 0x0b, 0x42, 0x00, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x17, 0x39, 0x5d, 0x5d, 0x5d, 0x11, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x12, 0x17, 0x39, 0x30, 0x31, 0x01, 0x22, 0x0e, + 0x02, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x04, 0x16, 0x12, 0x15, 0x14, + 0x0e, 0x02, 0x07, 0x21, 0x3e, 0x03, 0x37, 0x01, 0x27, 0x01, 0x26, 0x26, + 0x27, 0x01, 0x27, 0x01, 0x26, 0x26, 0x01, 0x6d, 0x36, 0x5c, 0x4b, 0x39, + 0x11, 0x12, 0x3b, 0x4e, 0x60, 0x36, 0x9d, 0x01, 0x09, 0xc0, 0x6b, 0x22, + 0x38, 0x46, 0x24, 0xfe, 0xd6, 0x2f, 0x56, 0x42, 0x2a, 0x03, 0xfe, 0x75, + 0x67, 0x01, 0xd6, 0x0a, 0x1b, 0x13, 0xfe, 0x16, 0x67, 0x01, 0xc3, 0x33, + 0x7e, 0x04, 0x55, 0x11, 0x19, 0x1d, 0x0b, 0xea, 0x0a, 0x18, 0x15, 0x0d, + 0x51, 0xab, 0xfe, 0xf9, 0xb7, 0x6b, 0xbf, 0xa1, 0x80, 0x2c, 0x30, 0x82, + 0x98, 0xa9, 0x58, 0xfe, 0xfb, 0x9b, 0x01, 0x3a, 0x23, 0x42, 0x1d, 0xfe, + 0xb9, 0x9b, 0x01, 0x2d, 0x1a, 0x1d, 0x00, 0x01, 0x00, 0x5c, 0xfe, 0x78, + 0x04, 0x29, 0x05, 0x5b, 0x00, 0x33, 0x00, 0x55, 0xb2, 0x1a, 0x1a, 0x30, + 0xbb, 0x01, 0xf7, 0x00, 0x03, 0x00, 0x33, 0x01, 0xce, 0xb4, 0x00, 0x00, + 0x03, 0x03, 0x24, 0xb8, 0x02, 0x01, 0x40, 0x11, 0x0f, 0x77, 0x1d, 0x01, + 0x66, 0x1d, 0x01, 0x59, 0x1d, 0x01, 0x1d, 0x14, 0x78, 0x14, 0x01, 0x14, + 0x1a, 0xb8, 0x01, 0x41, 0x40, 0x0a, 0x19, 0x19, 0x34, 0x41, 0x2b, 0xd6, + 0x08, 0x43, 0x00, 0x45, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x33, 0x2f, 0xed, + 0x33, 0x5d, 0x11, 0x33, 0x5d, 0x5d, 0x5d, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x36, 0x36, + 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x05, 0x35, 0x34, 0x3e, 0x02, 0x37, + 0x3e, 0x03, 0x37, 0x11, 0x06, 0x06, 0x07, 0x0e, 0x05, 0x15, 0x14, 0x1e, + 0x04, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x06, 0x07, 0x02, 0xcf, 0x2a, 0x21, + 0x29, 0x4c, 0x6f, 0x46, 0x31, 0x62, 0x5a, 0x4e, 0x39, 0x20, 0x5b, 0xa3, + 0xe2, 0x88, 0x4d, 0x6e, 0x51, 0x3d, 0x1c, 0x3c, 0x95, 0x4e, 0x35, 0x69, + 0x5f, 0x51, 0x3b, 0x22, 0x1a, 0x2e, 0x3f, 0x4a, 0x53, 0x2b, 0x45, 0x80, + 0x63, 0x3c, 0x2b, 0x2a, 0xfe, 0x78, 0x45, 0x68, 0x27, 0x31, 0x3a, 0x24, + 0x19, 0x11, 0x0b, 0x29, 0x41, 0x5a, 0x7b, 0x9f, 0x63, 0x93, 0xd0, 0x90, + 0x5f, 0x23, 0x14, 0x25, 0x24, 0x25, 0x13, 0xfe, 0xf6, 0x29, 0x2d, 0x13, + 0x0d, 0x1c, 0x28, 0x37, 0x50, 0x6e, 0x4a, 0x50, 0x74, 0x54, 0x37, 0x25, + 0x17, 0x0a, 0x10, 0x26, 0x45, 0x71, 0x5b, 0x36, 0x89, 0x45, 0xff, 0xff, + 0x00, 0x87, 0x00, 0x00, 0x04, 0x12, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x62, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x52, 0xff, 0xed, 0x04, 0x22, 0x05, 0x9b, + 0x00, 0x21, 0x00, 0x38, 0x00, 0x49, 0x00, 0x43, 0xb1, 0x45, 0x32, 0xbb, + 0x02, 0x16, 0x00, 0x07, 0x00, 0x39, 0x02, 0x0b, 0xb2, 0x13, 0x13, 0x1d, + 0xb8, 0x02, 0x16, 0x40, 0x14, 0x18, 0x27, 0x27, 0x07, 0x2c, 0x18, 0x31, + 0xff, 0x47, 0x45, 0x45, 0x22, 0x3e, 0xfc, 0x0e, 0x54, 0x22, 0xf8, 0x00, + 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0xed, 0x10, 0xed, + 0x32, 0x30, 0x31, 0x05, 0x22, 0x2e, 0x04, 0x35, 0x34, 0x3e, 0x04, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, + 0x0e, 0x02, 0x27, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x15, 0x14, 0x1e, 0x04, 0x13, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x04, 0x07, 0x3e, 0x03, 0x02, 0x3a, 0x62, 0x95, 0x6c, 0x48, + 0x2b, 0x12, 0x2a, 0x4b, 0x68, 0x7c, 0x8d, 0x4a, 0x60, 0x83, 0x4f, 0x22, + 0x23, 0x3a, 0x4e, 0x2a, 0x45, 0x6c, 0x49, 0x27, 0x43, 0x7e, 0xb5, 0x6f, + 0x3a, 0x56, 0x39, 0x1d, 0x10, 0x28, 0x42, 0x32, 0x23, 0x4e, 0x4e, 0x4a, + 0x1d, 0x06, 0x12, 0x21, 0x34, 0x4b, 0xd9, 0x0c, 0x1f, 0x34, 0x28, 0x15, + 0x32, 0x34, 0x34, 0x2c, 0x22, 0x08, 0x71, 0x98, 0x5c, 0x27, 0x13, 0x34, + 0x5c, 0x7c, 0x91, 0x9e, 0x4f, 0x9e, 0xf2, 0xb2, 0x79, 0x4a, 0x1f, 0x37, + 0x59, 0x71, 0x3a, 0x41, 0x66, 0x4b, 0x31, 0x0d, 0x0e, 0x3d, 0x60, 0x85, + 0x57, 0x60, 0xa3, 0x77, 0x42, 0xbc, 0x28, 0x46, 0x5e, 0x36, 0x32, 0x61, + 0x4c, 0x2f, 0x0b, 0x11, 0x15, 0x0a, 0x25, 0x2d, 0x63, 0x60, 0x57, 0x42, + 0x27, 0x03, 0xa7, 0x1d, 0x33, 0x25, 0x16, 0x0d, 0x22, 0x3b, 0x5b, 0x7f, + 0x56, 0x16, 0x37, 0x43, 0x4f, 0x00, 0x00, 0x01, 0x00, 0x85, 0xff, 0xee, + 0x03, 0xca, 0x04, 0x08, 0x00, 0x24, 0x00, 0x4b, 0xb6, 0x60, 0x19, 0x70, + 0x19, 0x02, 0x19, 0x1c, 0xb8, 0x02, 0x19, 0x40, 0x09, 0x08, 0x1b, 0x1b, + 0x00, 0x08, 0x11, 0x11, 0x00, 0x1c, 0xb8, 0x01, 0x02, 0xb4, 0x19, 0x19, + 0x21, 0x11, 0x14, 0xb8, 0x01, 0x31, 0xb4, 0x10, 0x0d, 0x50, 0x24, 0x21, + 0xb8, 0x01, 0x34, 0xb2, 0x00, 0x03, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, + 0x2f, 0x12, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x00, 0x5d, 0x30, 0x31, 0x25, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x21, 0x15, + 0x21, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x03, 0xca, 0x3f, 0x7f, 0x45, + 0x77, 0xd3, 0x9d, 0x5b, 0x5b, 0xa0, 0xdd, 0x81, 0x35, 0x7f, 0x38, 0x33, + 0x7c, 0x41, 0x39, 0x70, 0x5c, 0x40, 0x0a, 0x01, 0xda, 0xfe, 0x24, 0x0a, + 0x41, 0x5f, 0x71, 0x3a, 0x40, 0x7b, 0x31, 0x01, 0x09, 0x0a, 0x2e, 0x75, + 0xc6, 0x99, 0x96, 0xcd, 0x7e, 0x37, 0x0a, 0x0a, 0xe0, 0x0e, 0x15, 0x14, + 0x31, 0x51, 0x3c, 0xc7, 0x41, 0x55, 0x31, 0x14, 0x12, 0x0a, 0x00, 0x01, + 0x00, 0x9c, 0xff, 0xee, 0x03, 0xe1, 0x04, 0x08, 0x00, 0x24, 0x00, 0x49, + 0xb5, 0x60, 0x0a, 0x70, 0x0a, 0x02, 0x1c, 0xb8, 0x02, 0x19, 0x40, 0x09, + 0x0b, 0x08, 0x13, 0x13, 0x00, 0x09, 0x09, 0x00, 0x09, 0xb8, 0x01, 0x02, + 0xb4, 0x0a, 0x0a, 0x17, 0x00, 0x03, 0xb8, 0x01, 0x34, 0xb4, 0x24, 0x21, + 0x52, 0x13, 0x10, 0xb8, 0x01, 0x31, 0xb2, 0x14, 0x17, 0x50, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x2f, 0x33, 0xed, 0x00, 0x5d, 0x30, + 0x31, 0x37, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x21, 0x35, 0x21, + 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x9c, 0x31, 0x7b, + 0x40, 0x3a, 0x71, 0x5f, 0x41, 0x0a, 0xfe, 0x24, 0x01, 0xda, 0x0a, 0x40, + 0x5c, 0x70, 0x39, 0x41, 0x7c, 0x33, 0x38, 0x7f, 0x35, 0x81, 0xdd, 0xa0, + 0x5b, 0x5b, 0x9d, 0xd3, 0x77, 0x45, 0x7f, 0x3f, 0xdf, 0x0a, 0x12, 0x14, + 0x31, 0x55, 0x41, 0xc7, 0x3c, 0x51, 0x31, 0x14, 0x15, 0x0e, 0xe0, 0x0a, + 0x0a, 0x37, 0x7e, 0xcd, 0x96, 0x99, 0xc6, 0x75, 0x2e, 0x0a, 0x09, 0x00, + 0x00, 0x02, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x62, 0x05, 0x90, 0x00, 0x3f, + 0x00, 0x4a, 0x00, 0x6b, 0xb1, 0x3e, 0x43, 0xb8, 0x01, 0xae, 0xb6, 0x35, + 0x35, 0x0c, 0x3f, 0x3f, 0x3d, 0x00, 0xb8, 0x01, 0xe2, 0xb3, 0x46, 0x30, + 0x30, 0x26, 0xb8, 0x01, 0xe2, 0xb3, 0x18, 0x0c, 0x18, 0x16, 0xb8, 0x01, + 0x3b, 0x40, 0x1c, 0x1c, 0x19, 0x1c, 0x3d, 0x30, 0xf2, 0x00, 0xcf, 0x46, + 0x00, 0x1c, 0x10, 0x1c, 0x50, 0x1c, 0x60, 0x1c, 0x04, 0x1c, 0x46, 0x1c, + 0x46, 0x29, 0x40, 0xaf, 0x3a, 0x54, 0x29, 0xb8, 0x01, 0x08, 0xb1, 0x07, + 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5d, + 0x10, 0xed, 0xed, 0x33, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xc6, + 0xed, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, + 0x2f, 0x30, 0x31, 0x01, 0x0e, 0x05, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x07, 0x35, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, + 0x3e, 0x04, 0x35, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x33, 0x15, 0x01, 0x22, 0x06, 0x15, 0x14, 0x16, 0x33, 0x34, 0x2e, + 0x02, 0x03, 0xfc, 0x01, 0x0d, 0x25, 0x42, 0x6d, 0x9d, 0x6c, 0x62, 0x91, + 0x60, 0x2f, 0x01, 0x02, 0x01, 0x07, 0x13, 0x25, 0x1e, 0x17, 0x1f, 0x18, + 0x3a, 0x26, 0x42, 0x5b, 0x3b, 0x20, 0x0f, 0x03, 0x04, 0x53, 0x59, 0x34, + 0x4b, 0x32, 0x1e, 0x10, 0x04, 0x7d, 0xb8, 0x78, 0x3a, 0x30, 0x52, 0x70, + 0x3f, 0xc6, 0xd3, 0x08, 0x6a, 0xfe, 0x11, 0x3c, 0x36, 0x8d, 0x82, 0x1b, + 0x2b, 0x39, 0x03, 0x46, 0x70, 0xd6, 0xbf, 0xa1, 0x75, 0x42, 0x2f, 0x64, + 0x9b, 0x6d, 0x17, 0x21, 0x27, 0x38, 0x2d, 0x21, 0x32, 0x23, 0x12, 0x06, + 0xd6, 0x05, 0x08, 0x1c, 0x2f, 0x3e, 0x42, 0x42, 0x1c, 0x28, 0x5c, 0x46, + 0x8c, 0x78, 0x38, 0x60, 0x80, 0x91, 0x9a, 0x4a, 0x01, 0x32, 0x55, 0x73, + 0x42, 0x48, 0x67, 0x42, 0x1f, 0xcb, 0xcd, 0xb2, 0x01, 0xaf, 0x38, 0x30, + 0x50, 0x45, 0x48, 0x61, 0x3b, 0x19, 0x00, 0x01, 0x00, 0x06, 0xff, 0xe4, + 0x04, 0x60, 0x04, 0x0c, 0x00, 0x37, 0x00, 0x5c, 0xb1, 0x33, 0x30, 0xb8, + 0x01, 0xdb, 0x40, 0x0d, 0x1f, 0x1f, 0x39, 0x18, 0x19, 0x19, 0x39, 0x35, + 0x36, 0x36, 0x0b, 0x16, 0x13, 0xb8, 0x01, 0xd4, 0x40, 0x09, 0x04, 0x04, + 0x0b, 0x36, 0x16, 0x35, 0x52, 0x27, 0x24, 0xb8, 0x01, 0x08, 0x40, 0x09, + 0x28, 0x2b, 0x52, 0x33, 0x19, 0x18, 0x50, 0x0a, 0x07, 0xb8, 0x01, 0x01, + 0xb2, 0x0b, 0x0e, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x33, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x33, 0x01, 0x2f, 0x33, 0x10, 0xed, + 0x32, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, + 0xed, 0x32, 0x30, 0x31, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, + 0x17, 0x01, 0x17, 0x07, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x37, 0x17, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, + 0x37, 0x27, 0x01, 0x27, 0x37, 0x7e, 0x34, 0x21, 0x0e, 0x38, 0x46, 0x18, + 0x2d, 0x11, 0x07, 0x24, 0x3f, 0x1d, 0x5e, 0x7a, 0x47, 0x1c, 0x22, 0x13, + 0x04, 0x01, 0xf0, 0xc0, 0x11, 0x2d, 0x3e, 0x26, 0x11, 0x0c, 0x1d, 0x2d, + 0x21, 0x18, 0x2c, 0x11, 0x07, 0x24, 0x3f, 0x1d, 0x5c, 0x79, 0x48, 0x1e, + 0x20, 0x16, 0x04, 0xfe, 0x26, 0xbc, 0x16, 0xbe, 0x74, 0x85, 0x90, 0x44, + 0x58, 0x64, 0x08, 0x03, 0xc7, 0x05, 0x04, 0x2d, 0x4d, 0x66, 0x39, 0x4e, + 0xa0, 0x45, 0x07, 0x02, 0x4d, 0x87, 0x13, 0x33, 0x78, 0x83, 0x8a, 0x45, + 0x27, 0x43, 0x32, 0x1c, 0x08, 0x03, 0xcd, 0x05, 0x06, 0x2d, 0x4e, 0x67, + 0x3b, 0x46, 0x93, 0x44, 0x07, 0xfd, 0xb9, 0x98, 0x1a, 0x00, 0x00, 0x02, + 0xff, 0xb9, 0xff, 0xe9, 0x04, 0x93, 0x04, 0x3b, 0x00, 0x28, 0x00, 0x44, + 0x00, 0x65, 0xb1, 0x19, 0x44, 0xb8, 0x01, 0xae, 0xb2, 0x43, 0x37, 0x3a, + 0xb8, 0x01, 0xd4, 0xb4, 0x25, 0x0c, 0x0d, 0x0d, 0x13, 0xb8, 0x01, 0xd4, + 0x40, 0x0d, 0x33, 0x33, 0x25, 0x03, 0x04, 0x04, 0x00, 0x25, 0x43, 0x37, + 0x2e, 0x19, 0x3d, 0xb8, 0x01, 0x32, 0x40, 0x09, 0x16, 0x1e, 0x52, 0x10, + 0x0d, 0x03, 0x03, 0x00, 0x37, 0xb8, 0x01, 0x01, 0xb5, 0x09, 0x0c, 0x0c, + 0x04, 0x09, 0x4f, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x32, + 0x2f, 0x32, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x32, 0x10, 0xce, 0x01, 0x2f, + 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x10, + 0xed, 0x32, 0x2f, 0xed, 0x39, 0x30, 0x31, 0x13, 0x22, 0x06, 0x07, 0x27, + 0x3e, 0x03, 0x33, 0x21, 0x32, 0x37, 0x17, 0x06, 0x06, 0x07, 0x16, 0x16, + 0x15, 0x14, 0x02, 0x23, 0x22, 0x26, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x2e, + 0x04, 0x35, 0x34, 0x36, 0x37, 0x01, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x26, 0x27, 0x21, 0x06, 0x06, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x35, 0x33, 0x60, 0x1d, 0x2d, 0x11, 0x4c, 0x0d, + 0x21, 0x2d, 0x3e, 0x2b, 0x03, 0x57, 0x3b, 0x20, 0x64, 0x11, 0x48, 0x41, + 0x11, 0x13, 0x9b, 0x9a, 0x5d, 0x55, 0x09, 0x09, 0x1d, 0x2c, 0x3d, 0x2a, + 0x45, 0x62, 0x43, 0x28, 0x15, 0x07, 0x12, 0x11, 0x02, 0x37, 0x03, 0x0d, + 0x1a, 0x17, 0x13, 0x22, 0x1a, 0x0e, 0x17, 0x12, 0xfe, 0x36, 0x12, 0x13, + 0x28, 0x36, 0x17, 0x1a, 0x0c, 0x03, 0xdc, 0x03, 0x32, 0x26, 0x23, 0xa7, + 0x17, 0x26, 0x1c, 0x0f, 0x43, 0xa9, 0x28, 0x31, 0x06, 0x4a, 0xa4, 0x5e, + 0xf6, 0xfe, 0xf8, 0x55, 0x58, 0x28, 0x40, 0x2d, 0x18, 0x2c, 0x4a, 0x62, + 0x6e, 0x72, 0x34, 0x64, 0xad, 0x4c, 0xfe, 0x6b, 0x38, 0x54, 0x38, 0x1d, + 0x14, 0x3f, 0x75, 0x60, 0x55, 0xab, 0x4e, 0x50, 0xa9, 0x51, 0x90, 0x9c, + 0x1d, 0x39, 0x55, 0x39, 0xf5, 0x00, 0x00, 0x02, 0x00, 0x89, 0xfe, 0x69, + 0x04, 0x1b, 0x04, 0x0e, 0x00, 0x2c, 0x00, 0x3d, 0x00, 0x46, 0xb1, 0x08, + 0x36, 0xb8, 0x02, 0x0b, 0xb3, 0x23, 0x14, 0x14, 0x00, 0xb8, 0x02, 0x15, + 0xb3, 0x2d, 0x2d, 0x23, 0x32, 0xb8, 0x01, 0x09, 0xb4, 0x28, 0x50, 0x11, + 0x0e, 0x14, 0xb8, 0x01, 0x38, 0xb5, 0x1d, 0x18, 0x15, 0x57, 0x36, 0x39, + 0xb8, 0x01, 0x09, 0xb2, 0x08, 0x05, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, + 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x11, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x04, 0x1b, 0x4b, 0x7f, 0xaa, 0x5f, 0x33, 0x6e, 0x2a, 0x18, + 0x30, 0x48, 0x30, 0x33, 0x69, 0x36, 0x26, 0x60, 0x2d, 0x41, 0x8d, 0x3f, + 0x0f, 0x3e, 0x4c, 0x4f, 0x20, 0x44, 0x6d, 0x4b, 0x28, 0x36, 0x71, 0xb1, + 0x7b, 0x74, 0xa9, 0x6d, 0x35, 0xfe, 0x1a, 0x35, 0x4e, 0x34, 0x64, 0x6b, + 0x2a, 0x63, 0x39, 0x2a, 0x4f, 0x3d, 0x24, 0x02, 0x10, 0x8d, 0xcd, 0x85, + 0x3f, 0x11, 0x14, 0x3e, 0x2c, 0x36, 0x1d, 0x09, 0x06, 0x09, 0x0b, 0xda, + 0x15, 0x10, 0x02, 0x02, 0x02, 0x1c, 0x4b, 0x82, 0x66, 0x02, 0x2f, 0x73, + 0xc0, 0x89, 0x4c, 0x48, 0x85, 0xbd, 0x7e, 0x48, 0x74, 0x52, 0x2c, 0x8c, + 0x99, 0xfe, 0xcf, 0x16, 0x14, 0x22, 0x4c, 0x7d, 0x00, 0x02, 0x00, 0x00, + 0xfe, 0x73, 0x04, 0x1b, 0x04, 0x0e, 0x00, 0x1e, 0x00, 0x2f, 0x00, 0x60, + 0xb3, 0x18, 0x18, 0x16, 0x0c, 0xb8, 0x02, 0x15, 0xb3, 0x1f, 0x28, 0x1a, + 0x16, 0xb8, 0x02, 0x0b, 0x40, 0x0e, 0x02, 0x1c, 0x02, 0x00, 0x00, 0x02, + 0x17, 0x30, 0x00, 0x01, 0x80, 0x00, 0x01, 0x00, 0xb8, 0xff, 0xc0, 0x40, + 0x0c, 0x09, 0x0c, 0x48, 0x00, 0xc8, 0x1a, 0x1e, 0x1e, 0x1c, 0x55, 0x28, + 0x2b, 0xb8, 0x01, 0x09, 0xb3, 0x16, 0x11, 0x52, 0x24, 0xb8, 0x01, 0x09, + 0xb1, 0x07, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0x2f, 0x33, 0xed, 0x2b, 0x5d, 0x71, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x30, 0x31, + 0x15, 0x33, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x27, 0x26, 0x26, 0x27, 0x15, 0x21, 0x15, 0x21, + 0x15, 0x23, 0x35, 0x23, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, + 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x89, 0x36, 0x71, 0xb1, 0x7b, + 0x74, 0xa9, 0x6d, 0x35, 0x4b, 0x7f, 0xaa, 0x5f, 0x30, 0x3d, 0x1f, 0x2f, + 0x10, 0x01, 0x45, 0xfe, 0xbb, 0xf4, 0x89, 0x03, 0x1d, 0x1a, 0x35, 0x4e, + 0x34, 0x64, 0x6b, 0x2a, 0x63, 0x39, 0x2a, 0x4f, 0x3d, 0x24, 0x75, 0x02, + 0x7b, 0x73, 0xc0, 0x89, 0x4c, 0x48, 0x85, 0xbd, 0x74, 0x8d, 0xd0, 0x87, + 0x42, 0x0d, 0x07, 0x0f, 0x0a, 0x8c, 0xa4, 0x74, 0x74, 0x03, 0x1f, 0x48, + 0x74, 0x52, 0x2c, 0x8c, 0x99, 0xfe, 0xcf, 0x16, 0x1c, 0x24, 0x50, 0x7f, + 0xff, 0xff, 0x00, 0x85, 0xff, 0xee, 0x03, 0xc1, 0x04, 0x08, 0x02, 0x06, + 0x00, 0x85, 0x00, 0x00, 0xff, 0xff, 0x00, 0xa5, 0xff, 0xee, 0x03, 0xe1, + 0x04, 0x08, 0x02, 0x06, 0x05, 0xfb, 0x00, 0x00, 0xff, 0xff, 0x00, 0x6f, + 0xff, 0xee, 0x03, 0xc1, 0x04, 0x08, 0x02, 0x26, 0x00, 0x85, 0x00, 0x00, + 0x01, 0x07, 0x01, 0x52, 0x00, 0x6f, 0xfc, 0xfb, 0x00, 0x0c, 0xb6, 0x01, + 0x33, 0x40, 0x0f, 0x10, 0x48, 0x33, 0x00, 0x11, 0x2b, 0x35, 0xff, 0xff, + 0xff, 0x96, 0xff, 0xee, 0x03, 0xe1, 0x04, 0x08, 0x02, 0x26, 0x05, 0xfb, + 0x00, 0x00, 0x01, 0x07, 0x01, 0x52, 0xff, 0x96, 0xfc, 0xfb, 0x00, 0x0c, + 0xb6, 0x01, 0x33, 0x40, 0x0f, 0x10, 0x48, 0x33, 0x00, 0x11, 0x2b, 0x35, + 0x00, 0x02, 0x00, 0x2f, 0xfe, 0x96, 0x04, 0x3d, 0x04, 0x0e, 0x00, 0x0d, + 0x00, 0x35, 0x00, 0x4f, 0xb4, 0x15, 0x16, 0x16, 0x1e, 0x19, 0xb8, 0x01, + 0xd9, 0xb2, 0x0e, 0x09, 0x2f, 0xb8, 0x01, 0xa7, 0xb4, 0x1e, 0x30, 0x30, + 0x0e, 0x29, 0xb8, 0x01, 0xaa, 0xb6, 0x00, 0x00, 0x0e, 0x30, 0x55, 0x1e, + 0x09, 0xb8, 0x01, 0x06, 0xb3, 0x31, 0x2e, 0x52, 0x03, 0xb8, 0x01, 0x01, + 0xb4, 0x24, 0x50, 0x16, 0x15, 0x50, 0x00, 0x3f, 0x33, 0x3f, 0xed, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, + 0x33, 0xed, 0x32, 0x10, 0xed, 0x11, 0x39, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x11, 0x3e, 0x03, 0x25, 0x34, + 0x3e, 0x04, 0x37, 0x17, 0x06, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x11, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x11, 0x23, 0x11, 0x2e, 0x03, 0x03, 0x66, 0x31, 0x43, 0x1b, 0x21, 0x14, + 0x07, 0x34, 0x4d, 0x32, 0x18, 0xfc, 0xc9, 0x1d, 0x2f, 0x39, 0x38, 0x30, + 0x0f, 0x85, 0x58, 0x44, 0x18, 0x2e, 0x45, 0x2c, 0x22, 0x47, 0x6d, 0x4a, + 0x5f, 0x82, 0x4f, 0x22, 0x31, 0x66, 0x9d, 0x6c, 0xd2, 0x70, 0x9c, 0x63, + 0x2d, 0x02, 0x12, 0x9b, 0x9c, 0x11, 0x28, 0x41, 0x31, 0xfe, 0x1b, 0x03, + 0x34, 0x59, 0x7c, 0x4f, 0x4b, 0x80, 0x6a, 0x55, 0x3f, 0x28, 0x09, 0x8d, + 0x40, 0xb8, 0x78, 0x48, 0x7a, 0x5a, 0x35, 0x04, 0x02, 0x02, 0x58, 0x7f, + 0x52, 0x27, 0x46, 0x7e, 0xaf, 0x69, 0x78, 0xcc, 0x99, 0x5e, 0x09, 0xfe, + 0xa8, 0x01, 0x58, 0x0a, 0x59, 0x90, 0xc1, 0x00, 0x00, 0x01, 0x00, 0xb8, + 0xfe, 0xcb, 0x03, 0xac, 0x04, 0x08, 0x00, 0x20, 0x00, 0x38, 0xb4, 0x04, + 0x04, 0x18, 0x00, 0x0d, 0xb8, 0x02, 0x11, 0xb2, 0x0e, 0x18, 0x1b, 0xb8, + 0x01, 0x31, 0xb4, 0x14, 0x04, 0x06, 0x06, 0x0c, 0xb8, 0x01, 0x05, 0xb6, + 0x00, 0x00, 0x0e, 0x17, 0x14, 0x50, 0x0e, 0x00, 0x2f, 0x3f, 0x33, 0x12, + 0x39, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x32, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x21, 0x32, 0x16, 0x15, 0x15, + 0x23, 0x2e, 0x03, 0x23, 0x23, 0x11, 0x23, 0x11, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x01, + 0xb2, 0x01, 0x2c, 0x59, 0x50, 0x14, 0x0c, 0x1e, 0x2d, 0x40, 0x2d, 0xfd, + 0xfa, 0x3f, 0x7a, 0xb3, 0x74, 0x4e, 0x87, 0x3f, 0x42, 0x86, 0x48, 0x4a, + 0x5b, 0x33, 0x12, 0x01, 0xac, 0x4e, 0x4d, 0xa7, 0x17, 0x2b, 0x22, 0x14, + 0xfd, 0xe9, 0x03, 0x70, 0x78, 0xae, 0x71, 0x36, 0x16, 0x19, 0xe3, 0x22, + 0x1f, 0x24, 0x4a, 0x6e, 0x49, 0x00, 0x00, 0x02, 0x00, 0x48, 0xfe, 0x70, + 0x04, 0x1e, 0x04, 0x0e, 0x00, 0x16, 0x00, 0x25, 0x00, 0x3a, 0xb9, 0x00, + 0x06, 0x01, 0xd6, 0xb3, 0x07, 0x07, 0x0d, 0x00, 0xb8, 0x02, 0x15, 0xb2, + 0x17, 0x17, 0x1e, 0xbb, 0x02, 0x15, 0x00, 0x0d, 0x00, 0x19, 0x01, 0x32, + 0xb2, 0x12, 0x50, 0x21, 0xb8, 0x01, 0x02, 0xb4, 0x05, 0x08, 0x52, 0x07, + 0x55, 0x00, 0x3f, 0x3f, 0x33, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, + 0x07, 0x11, 0x23, 0x11, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x07, 0x10, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x04, 0x1e, 0x31, 0x61, 0x8f, 0x5e, 0xe2, 0x5a, 0x8c, + 0x5e, 0x31, 0x45, 0x81, 0xba, 0x75, 0x72, 0xb2, 0x7c, 0x41, 0xfe, 0xeb, + 0x40, 0x5a, 0x3a, 0x1b, 0x80, 0x6f, 0x3d, 0x59, 0x3a, 0x1b, 0x02, 0x04, + 0x66, 0xb0, 0x89, 0x5c, 0x10, 0xfe, 0x77, 0x01, 0x85, 0x0c, 0x50, 0x83, + 0xb3, 0x6f, 0x79, 0xc6, 0x8c, 0x4d, 0x43, 0x84, 0xc3, 0x86, 0x01, 0x3d, + 0x32, 0x57, 0x74, 0x42, 0x9f, 0xa1, 0x31, 0x57, 0x76, 0x00, 0x00, 0x01, + 0x00, 0x46, 0xfe, 0x6f, 0x04, 0x20, 0x03, 0xf8, 0x00, 0x07, 0x00, 0x2e, + 0x40, 0x0c, 0x05, 0x06, 0x02, 0x01, 0x06, 0x01, 0x07, 0x07, 0x04, 0x03, + 0x00, 0x00, 0xb8, 0x01, 0x05, 0xb6, 0x03, 0x03, 0x01, 0x05, 0x55, 0x01, + 0x4f, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x32, 0x2f, + 0x33, 0x11, 0x39, 0x39, 0x11, 0x33, 0x11, 0x33, 0x30, 0x31, 0x37, 0x01, + 0x33, 0x03, 0x21, 0x01, 0x23, 0x01, 0x46, 0x01, 0x3f, 0xf7, 0xe8, 0x02, + 0x8c, 0xfe, 0x84, 0xf8, 0x01, 0x24, 0xf4, 0x03, 0x04, 0xfd, 0xc6, 0xfc, + 0xb1, 0x02, 0x85, 0x00, 0x00, 0x01, 0x00, 0x64, 0xfe, 0x6f, 0x04, 0x02, + 0x03, 0xf8, 0x00, 0x0c, 0x00, 0x45, 0xb6, 0x03, 0x02, 0x09, 0x09, 0x01, + 0x08, 0x04, 0xbb, 0x01, 0x8d, 0x00, 0x07, 0x00, 0x0b, 0x01, 0xa6, 0x40, + 0x15, 0x0a, 0x01, 0x01, 0x07, 0x01, 0x04, 0x04, 0x07, 0x09, 0x00, 0x03, + 0x01, 0x03, 0x03, 0x0a, 0x07, 0x4f, 0x06, 0x55, 0x00, 0x51, 0x00, 0x3f, + 0x3f, 0x3f, 0x33, 0x39, 0x2f, 0x5d, 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x10, 0xed, 0x32, 0x11, 0x39, 0x11, 0x33, + 0x33, 0x30, 0x31, 0x21, 0x11, 0x03, 0x23, 0x03, 0x11, 0x23, 0x11, 0x21, + 0x13, 0x13, 0x21, 0x11, 0x03, 0x32, 0xc3, 0x9a, 0xa9, 0xc8, 0x01, 0x03, + 0xc6, 0xcb, 0x01, 0x0a, 0x02, 0xd1, 0xfe, 0xc6, 0x01, 0x3a, 0xfb, 0x9e, + 0x05, 0x89, 0xfe, 0x92, 0x01, 0x6e, 0xfc, 0x08, 0x00, 0x01, 0x00, 0x3b, + 0xfe, 0x7e, 0x04, 0x46, 0x05, 0x31, 0x00, 0x2b, 0x00, 0x4c, 0xb6, 0x29, + 0x26, 0x23, 0x03, 0x05, 0x15, 0x10, 0xb8, 0x02, 0x16, 0x40, 0x19, 0x16, + 0x1d, 0x28, 0x27, 0x27, 0x22, 0x21, 0x21, 0x05, 0x28, 0x27, 0x22, 0x21, + 0x27, 0x21, 0x05, 0x1d, 0x23, 0x26, 0x29, 0x04, 0x15, 0x55, 0x05, 0x00, + 0xb8, 0x01, 0x3a, 0xb1, 0x06, 0x0b, 0x00, 0x2f, 0x33, 0xed, 0x32, 0x3f, + 0x17, 0x39, 0x12, 0x39, 0x39, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x32, + 0x11, 0x33, 0x32, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x12, 0x17, 0x39, + 0x30, 0x31, 0x01, 0x22, 0x0e, 0x02, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, + 0x04, 0x16, 0x12, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x21, 0x3e, 0x05, 0x35, + 0x34, 0x34, 0x27, 0x01, 0x27, 0x01, 0x26, 0x26, 0x27, 0x01, 0x27, 0x01, + 0x26, 0x26, 0x01, 0x6d, 0x2d, 0x57, 0x50, 0x44, 0x1a, 0x10, 0x3e, 0x52, + 0x64, 0x38, 0x9d, 0x01, 0x08, 0xbf, 0x6b, 0x26, 0x41, 0x58, 0x31, 0xfe, + 0xe8, 0x11, 0x34, 0x3b, 0x3b, 0x30, 0x1e, 0x01, 0xfe, 0xbb, 0x79, 0x01, + 0xa6, 0x0a, 0x1d, 0x16, 0xfe, 0x51, 0x79, 0x01, 0xb8, 0x33, 0x87, 0x04, + 0x55, 0x0d, 0x1a, 0x24, 0x16, 0xf2, 0x0b, 0x1a, 0x17, 0x0f, 0x6f, 0xe0, + 0xfe, 0xad, 0xe4, 0x82, 0xdf, 0xc5, 0xb2, 0x55, 0x1b, 0x52, 0x6e, 0x88, + 0xa2, 0xbb, 0x69, 0x08, 0x12, 0x0a, 0xfe, 0xe3, 0x8d, 0x01, 0x70, 0x2f, + 0x5e, 0x2d, 0xfe, 0x8f, 0x8e, 0x01, 0x76, 0x2a, 0x33, 0x00, 0x00, 0x01, + 0x00, 0x85, 0xfe, 0x79, 0x03, 0xdf, 0x04, 0x35, 0x00, 0x35, 0x00, 0x50, + 0xb9, 0x00, 0x26, 0x01, 0xe2, 0xb3, 0x27, 0x27, 0x0d, 0x21, 0xb8, 0x02, + 0x12, 0xb2, 0x2c, 0x2c, 0x17, 0xb8, 0x02, 0x1b, 0x40, 0x11, 0x00, 0x89, + 0x12, 0x01, 0x68, 0x12, 0x01, 0x12, 0x07, 0x78, 0x07, 0x01, 0x17, 0x07, + 0x01, 0x07, 0x0d, 0xb8, 0x01, 0x40, 0x40, 0x09, 0x0c, 0x0c, 0x36, 0x4f, + 0x1c, 0x31, 0x51, 0x27, 0x55, 0x00, 0x3f, 0x3f, 0x33, 0x3f, 0x33, 0x2f, + 0xed, 0x33, 0x5d, 0x5d, 0x11, 0x33, 0x5d, 0x5d, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x04, + 0x37, 0x3e, 0x03, 0x37, 0x15, 0x0e, 0x03, 0x07, 0x0e, 0x03, 0x15, 0x14, + 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x23, 0x3e, + 0x03, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x85, 0x26, 0x43, 0x5b, + 0x6b, 0x76, 0x3c, 0x29, 0x59, 0x58, 0x54, 0x24, 0x1b, 0x4c, 0x4e, 0x48, + 0x19, 0x42, 0x68, 0x48, 0x25, 0x2e, 0x4d, 0x66, 0x38, 0x3d, 0x71, 0x58, + 0x35, 0x13, 0x1f, 0x26, 0x13, 0xef, 0x13, 0x23, 0x1a, 0x0f, 0x22, 0x42, + 0x60, 0x3e, 0x3e, 0x7d, 0x64, 0x3e, 0x01, 0xf3, 0x53, 0x7f, 0x5f, 0x44, + 0x31, 0x22, 0x0e, 0x09, 0x14, 0x19, 0x20, 0x16, 0xf2, 0x0c, 0x19, 0x15, + 0x11, 0x05, 0x0e, 0x1f, 0x37, 0x59, 0x46, 0x54, 0x69, 0x3f, 0x1f, 0x0c, + 0x0d, 0x27, 0x47, 0x6e, 0x53, 0x2d, 0x4a, 0x42, 0x3c, 0x1f, 0x1f, 0x39, + 0x37, 0x37, 0x1f, 0x34, 0x35, 0x1c, 0x10, 0x10, 0x10, 0x3c, 0x71, 0xaf, + 0xff, 0xff, 0x00, 0x77, 0xfe, 0x5c, 0x03, 0x87, 0x05, 0xae, 0x02, 0x06, + 0x00, 0x8c, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa1, 0xfe, 0x5c, 0x04, 0x1d, + 0x05, 0x98, 0x00, 0x33, 0x00, 0x44, 0x00, 0x53, 0xb2, 0x21, 0x21, 0x00, + 0xb8, 0x02, 0x17, 0xb3, 0x34, 0x2a, 0x08, 0x3d, 0xb8, 0x02, 0x0b, 0xb5, + 0x18, 0x10, 0x10, 0x18, 0x3c, 0x39, 0xb8, 0x01, 0x31, 0x40, 0x0b, 0x2a, + 0x2f, 0x50, 0x21, 0x24, 0xfb, 0x20, 0x1e, 0x54, 0x10, 0x13, 0xb8, 0x01, + 0x01, 0x40, 0x09, 0x0f, 0x0c, 0x56, 0x3d, 0x40, 0xfc, 0x08, 0x05, 0x52, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, + 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x27, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, 0x3e, 0x03, + 0x33, 0x32, 0x1e, 0x02, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x11, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x04, 0x1d, 0x4f, 0x8d, 0xc0, + 0x71, 0x26, 0x4c, 0x1f, 0xa2, 0xa9, 0x2b, 0x48, 0x20, 0x1c, 0x37, 0x19, + 0x21, 0x30, 0x1f, 0x0e, 0x2d, 0x5a, 0x86, 0x58, 0x71, 0x50, 0x26, 0x50, + 0x20, 0x28, 0x3b, 0x26, 0x13, 0x1c, 0x3f, 0x47, 0x53, 0x32, 0x5a, 0x8c, + 0x5f, 0x32, 0xff, 0x00, 0x18, 0x2d, 0x41, 0x2a, 0x3e, 0x71, 0x3f, 0x1d, + 0x54, 0x2d, 0x3a, 0x5f, 0x43, 0x24, 0x02, 0x0e, 0x8c, 0xcc, 0x87, 0x41, + 0x0a, 0x08, 0x25, 0xc8, 0xb7, 0x09, 0x08, 0xc4, 0x07, 0x09, 0x0c, 0x2c, + 0x54, 0x47, 0x04, 0x04, 0x77, 0xa0, 0x60, 0x29, 0x18, 0xbf, 0x0c, 0x0c, + 0x14, 0x2f, 0x4f, 0x3b, 0x8a, 0x20, 0x34, 0x24, 0x14, 0x48, 0x85, 0xbd, + 0x80, 0x54, 0x76, 0x4c, 0x23, 0x64, 0x56, 0xfe, 0x44, 0x0b, 0x0e, 0x30, + 0x58, 0x7f, 0x00, 0x01, 0x00, 0x06, 0xfe, 0x5e, 0x04, 0x60, 0x04, 0x0c, + 0x00, 0x46, 0x00, 0x65, 0xb2, 0x31, 0x31, 0x3a, 0xb8, 0x01, 0x8e, 0x40, + 0x0c, 0x27, 0x42, 0x18, 0x19, 0x19, 0x27, 0x44, 0x45, 0x45, 0x0b, 0x16, + 0x13, 0xb8, 0x01, 0xd4, 0x40, 0x09, 0x04, 0x04, 0x0b, 0x45, 0x16, 0x44, + 0x52, 0x27, 0x24, 0xb8, 0x01, 0x03, 0x40, 0x0e, 0x3a, 0x52, 0x31, 0x34, + 0xf2, 0x30, 0x2d, 0x56, 0x42, 0x19, 0x18, 0x18, 0x0a, 0x07, 0xb8, 0x01, + 0x01, 0xb2, 0x0b, 0x0e, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x33, 0x11, + 0x33, 0x33, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0x33, + 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x33, + 0x2f, 0x33, 0x33, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x3e, 0x03, 0x35, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x06, 0x07, 0x17, 0x01, 0x17, 0x07, 0x0e, 0x03, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, + 0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, 0x27, 0x01, 0x27, 0x37, 0x7e, 0x34, + 0x21, 0x0e, 0x38, 0x46, 0x18, 0x2d, 0x11, 0x07, 0x24, 0x3f, 0x1d, 0x5e, + 0x7a, 0x47, 0x1c, 0x22, 0x13, 0x04, 0x01, 0xf0, 0xc0, 0x11, 0x2d, 0x3e, + 0x26, 0x11, 0x0c, 0x1d, 0x2d, 0x21, 0x18, 0x33, 0x11, 0x25, 0x43, 0x60, + 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0x46, + 0x5d, 0x38, 0x17, 0x20, 0x16, 0x04, 0xfe, 0x26, 0xbc, 0x16, 0xbe, 0x74, + 0x85, 0x90, 0x44, 0x58, 0x64, 0x08, 0x03, 0xc7, 0x05, 0x04, 0x2d, 0x4d, + 0x66, 0x39, 0x4e, 0xa0, 0x45, 0x07, 0x02, 0x4d, 0x87, 0x13, 0x33, 0x78, + 0x83, 0x8a, 0x45, 0x27, 0x43, 0x32, 0x1c, 0x08, 0x03, 0xfe, 0xd9, 0x63, + 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, + 0x43, 0x09, 0x32, 0x4b, 0x5e, 0x34, 0x46, 0x93, 0x44, 0x07, 0xfd, 0xb9, + 0x98, 0x1a, 0xff, 0xff, 0xfe, 0x4e, 0x00, 0x00, 0x04, 0x62, 0x05, 0x33, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, 0x09, 0x26, 0xfe, 0x4e, + 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x02, 0x16, 0x42, 0x16, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0xfd, 0x93, 0x00, 0x00, 0x04, 0x62, 0x05, 0x33, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, 0xfd, 0x93, + 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x02, 0x0d, 0x41, 0x0d, 0x03, 0x1a, 0x42, + 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x68, + 0x00, 0x00, 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x01, 0x07, 0x09, 0x2c, 0xfd, 0x68, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x02, + 0x0b, 0x41, 0x0b, 0x03, 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, + 0x3f, 0x35, 0xff, 0xff, 0xfe, 0x4e, 0x00, 0x00, 0x04, 0x62, 0x06, 0x7f, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2d, 0xfe, 0x4e, + 0xff, 0x7b, 0x00, 0x0b, 0xb4, 0x02, 0x03, 0x2e, 0x42, 0x2e, 0x00, 0x11, + 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0xfe, 0x4e, 0x00, 0x00, 0x04, 0x62, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, + 0xfe, 0x4e, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x02, 0x15, 0x42, 0x15, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x93, 0x00, 0x00, 0x04, 0x62, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, + 0xfd, 0x93, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x02, 0x0d, 0x41, 0x0d, 0x03, + 0x19, 0x42, 0x19, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfd, 0x67, 0x00, 0x00, 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, 0xfd, 0x67, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x02, 0x0b, 0x41, 0x0b, 0x03, 0x19, 0x42, 0x19, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfe, 0x4e, 0x00, 0x00, 0x04, 0x62, + 0x06, 0x7f, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, 0x09, 0x30, + 0xfe, 0x4e, 0xff, 0x7b, 0x00, 0x0b, 0xb4, 0x02, 0x03, 0x2d, 0x42, 0x2d, + 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0xfe, 0x1e, 0x00, 0x00, + 0x04, 0x62, 0x05, 0x1c, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, + 0x09, 0x28, 0xfe, 0x1e, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x02, 0x0d, 0x41, + 0x0d, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfe, 0x1b, 0x00, 0x00, + 0x04, 0x62, 0x05, 0x1c, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x01, 0x07, + 0x09, 0x29, 0xfe, 0x1b, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x02, 0x0b, 0x41, + 0x0b, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x62, 0x06, 0x64, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, + 0x06, 0x8f, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x04, 0xfe, 0x79, 0x04, 0x62, 0x05, 0x1b, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x28, 0x00, + 0xff, 0xff, 0xfe, 0x4e, 0xfe, 0x79, 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x09, 0x26, 0xfe, 0x4e, 0xff, 0x7f, + 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x09, 0xb3, 0x02, 0x16, 0x42, + 0x16, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x9a, 0xfe, 0x79, + 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x2b, 0xfd, 0x9a, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, + 0x00, 0x10, 0xb7, 0x02, 0x0d, 0x41, 0x0d, 0x03, 0x1a, 0x42, 0x1a, 0x00, + 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x68, 0xfe, 0x79, + 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x2c, 0xfd, 0x68, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, + 0x00, 0x10, 0xb7, 0x02, 0x0b, 0x41, 0x0b, 0x03, 0x1a, 0x42, 0x1a, 0x00, + 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfe, 0x4e, 0xfe, 0x79, + 0x04, 0x62, 0x06, 0x7f, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x2d, 0xfe, 0x4e, 0xff, 0x7b, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, + 0x00, 0x0b, 0xb4, 0x03, 0x02, 0x2e, 0x42, 0x2e, 0x00, 0x11, 0x3f, 0x35, + 0x35, 0x00, 0xff, 0xff, 0xfe, 0x4e, 0xfe, 0x79, 0x04, 0x62, 0x05, 0x33, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x09, 0x27, 0xfe, 0x4e, + 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x09, 0xb3, 0x02, + 0x15, 0x42, 0x15, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x93, + 0xfe, 0x79, 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x27, 0x09, 0x2e, 0xfd, 0x93, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, + 0x28, 0x00, 0x00, 0x10, 0xb7, 0x02, 0x0d, 0x41, 0x0d, 0x03, 0x19, 0x42, + 0x19, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x67, + 0xfe, 0x79, 0x04, 0x62, 0x05, 0x33, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x27, 0x09, 0x2f, 0xfd, 0x67, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, + 0x28, 0x00, 0x00, 0x10, 0xb7, 0x02, 0x0b, 0x41, 0x0b, 0x03, 0x19, 0x42, + 0x19, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfe, 0x4e, + 0xfe, 0x79, 0x04, 0x62, 0x06, 0x7f, 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x27, 0x09, 0x30, 0xfe, 0x4e, 0xff, 0x7b, 0x01, 0x06, 0x09, 0x37, + 0x28, 0x00, 0x00, 0x0b, 0xb4, 0x03, 0x02, 0x2d, 0x42, 0x2d, 0x00, 0x11, + 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0xfd, 0xc0, 0x00, 0x00, 0x03, 0xcb, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, 0x09, 0x34, + 0xfd, 0xc0, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x17, 0x42, 0x17, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfc, 0xe4, 0x00, 0x00, 0x03, 0xcb, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, + 0xfc, 0xe4, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0e, 0x41, 0x0e, 0x02, + 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfc, 0xf1, 0x00, 0x00, 0x03, 0xcb, 0x05, 0x33, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, 0xfc, 0xf1, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x01, 0x0c, 0x41, 0x0c, 0x02, 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0xc4, 0x00, 0x00, 0x03, 0xcb, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, + 0xfd, 0xc4, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x16, 0x42, 0x16, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfc, 0xe3, 0x00, 0x00, 0x03, 0xcb, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, + 0xfc, 0xe3, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0e, 0x41, 0x0e, 0x02, + 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfc, 0xf0, 0x00, 0x00, 0x03, 0xcb, 0x05, 0x33, 0x02, 0x26, 0x00, 0x08, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, 0xfc, 0xf0, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x01, 0x0c, 0x41, 0x0c, 0x02, 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x70, 0x00, 0x00, 0x03, 0xcb, + 0x05, 0x1c, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, 0x09, 0x28, + 0xfd, 0x70, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x0e, 0x41, 0x0e, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x98, 0x00, 0x00, 0x03, 0xcb, + 0x05, 0x1c, 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x01, 0x07, 0x09, 0x29, + 0xfd, 0x98, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x0c, 0x41, 0x0c, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x68, 0x00, 0x00, 0x04, 0x07, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x34, + 0xfd, 0x68, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x17, 0x42, 0x17, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfc, 0x8d, 0x00, 0x00, 0x04, 0x07, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, + 0xfc, 0x8d, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0e, 0x41, 0x0e, 0x02, + 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfc, 0x97, 0x00, 0x00, 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, 0xfc, 0x97, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x01, 0x0c, 0x41, 0x0c, 0x02, 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x6d, 0x00, 0x00, 0x04, 0x07, + 0x06, 0x7f, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2d, + 0xfd, 0x6d, 0xff, 0x7b, 0x00, 0x0b, 0xb4, 0x02, 0x01, 0x2f, 0x42, 0x2f, + 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x6a, 0x00, 0x00, + 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, + 0x09, 0x27, 0xfd, 0x6a, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x16, 0x42, + 0x16, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfc, 0x8d, 0x00, 0x00, + 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, + 0x09, 0x2e, 0xfc, 0x8d, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0e, 0x41, + 0x0e, 0x02, 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, + 0xff, 0xff, 0xfc, 0x97, 0x00, 0x00, 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, + 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, 0xfc, 0x97, 0xff, 0x7f, + 0x00, 0x10, 0xb7, 0x01, 0x0c, 0x41, 0x0c, 0x02, 0x1a, 0x42, 0x1a, 0x00, + 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x6e, 0x00, 0x00, + 0x04, 0x07, 0x06, 0x7f, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x01, 0x07, + 0x09, 0x30, 0xfd, 0x6e, 0xff, 0x7b, 0x00, 0x0b, 0xb4, 0x02, 0x01, 0x2e, + 0x42, 0x2e, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x18, + 0x00, 0x00, 0x04, 0x07, 0x05, 0x1c, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, + 0x01, 0x07, 0x09, 0x28, 0xfd, 0x18, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, + 0x0e, 0x41, 0x0e, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x4f, + 0x00, 0x00, 0x04, 0x07, 0x05, 0x1c, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, + 0x01, 0x07, 0x09, 0x29, 0xfd, 0x4f, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, + 0x0c, 0x41, 0x0c, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0x00, 0x5f, + 0xfe, 0x79, 0x04, 0x07, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x68, 0xfe, 0x79, + 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x34, 0xfd, 0x68, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, + 0x00, 0x09, 0xb3, 0x01, 0x17, 0x42, 0x17, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0xfc, 0x8d, 0xfe, 0x79, 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2b, 0xfc, 0x8d, 0xff, 0x7f, + 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x10, 0xb7, 0x01, 0x0e, 0x41, + 0x0e, 0x02, 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, + 0xff, 0xff, 0xfc, 0x97, 0xfe, 0x79, 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2c, 0xfc, 0x97, 0xff, 0x7f, + 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x10, 0xb7, 0x01, 0x0c, 0x41, + 0x0c, 0x02, 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, + 0xff, 0xff, 0xfd, 0x6d, 0xfe, 0x79, 0x04, 0x07, 0x06, 0x7f, 0x02, 0x26, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2d, 0xfd, 0x6d, 0xff, 0x7b, + 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x0b, 0xb4, 0x02, 0x01, 0x2f, + 0x42, 0x2f, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x6a, + 0xfe, 0x79, 0x04, 0x07, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, + 0x00, 0x27, 0x09, 0x27, 0xfd, 0x6a, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, + 0x28, 0x00, 0x00, 0x09, 0xb3, 0x01, 0x16, 0x42, 0x16, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0xfc, 0x8d, 0xfe, 0x79, 0x04, 0x07, 0x05, 0x33, + 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2e, 0xfc, 0x8d, + 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x10, 0xb7, 0x01, + 0x0e, 0x41, 0x0e, 0x02, 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, + 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x97, 0xfe, 0x79, 0x04, 0x07, 0x05, 0x33, + 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2f, 0xfc, 0x97, + 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x10, 0xb7, 0x01, + 0x0c, 0x41, 0x0c, 0x02, 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, + 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x6e, 0xfe, 0x79, 0x04, 0x07, 0x06, 0x7f, + 0x02, 0x26, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x27, 0x09, 0x30, 0xfd, 0x6e, + 0xff, 0x7b, 0x01, 0x06, 0x09, 0x37, 0x28, 0x00, 0x00, 0x0b, 0xb4, 0x02, + 0x01, 0x2e, 0x42, 0x2e, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x97, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0c, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x34, 0xfd, 0x97, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x01, 0x17, 0x42, 0x17, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfc, 0xc8, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0c, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, 0xfc, 0xc8, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x01, 0x0e, 0x41, 0x0e, 0x02, 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0xf0, 0x00, 0x00, 0x03, 0xd0, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, + 0xfc, 0xf0, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0c, 0x41, 0x0c, 0x02, + 0x1b, 0x42, 0x1b, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfd, 0x9c, 0x00, 0x00, 0x03, 0xd0, 0x06, 0x83, 0x02, 0x26, 0x00, 0x0c, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2d, 0xfd, 0x9c, 0xff, 0x7f, 0x00, 0x0b, + 0xb4, 0x02, 0x01, 0x2f, 0x42, 0x2f, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, + 0xff, 0xff, 0xfd, 0x9a, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x33, 0x02, 0x26, + 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, 0xfd, 0x9a, 0xff, 0x7f, + 0x00, 0x09, 0xb3, 0x01, 0x17, 0x42, 0x17, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0xfc, 0xc8, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x33, 0x02, 0x26, + 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, 0xfc, 0xc8, 0xff, 0x7f, + 0x00, 0x10, 0xb7, 0x01, 0x0e, 0x41, 0x0e, 0x02, 0x1a, 0x42, 0x1a, 0x00, + 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0xf0, 0x00, 0x00, + 0x03, 0xd0, 0x05, 0x33, 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, + 0x09, 0x2f, 0xfc, 0xf0, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0c, 0x41, + 0x0c, 0x02, 0x1a, 0x42, 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, + 0xff, 0xff, 0xfd, 0x9d, 0x00, 0x00, 0x03, 0xd0, 0x06, 0x7f, 0x02, 0x26, + 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x30, 0xfd, 0x9d, 0xff, 0x7b, + 0x00, 0x0b, 0xb4, 0x02, 0x01, 0x2e, 0x42, 0x2e, 0x00, 0x11, 0x3f, 0x35, + 0x35, 0x00, 0xff, 0xff, 0xfd, 0x53, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x1c, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x28, 0xfd, 0x53, + 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x0e, 0x41, 0x0e, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0xfd, 0xa5, 0x00, 0x00, 0x03, 0xd0, 0x05, 0x1c, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x29, 0xfd, 0xa5, + 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, 0x0c, 0x41, 0x0c, 0x00, 0x11, 0x3f, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, 0x06, 0x64, + 0x02, 0x26, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xd0, 0x06, 0x8f, 0x02, 0x26, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, + 0xfd, 0x86, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x33, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x34, 0xfd, 0x86, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x02, 0x2b, 0x42, 0x2b, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x11, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2b, 0xfd, 0x11, 0xff, 0x7b, 0x00, 0x10, + 0xb7, 0x02, 0x22, 0x41, 0x22, 0x03, 0x2f, 0x42, 0x2f, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x87, 0xff, 0xe9, 0x04, 0x41, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, + 0xfc, 0x87, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x02, 0x20, 0x41, 0x20, 0x03, + 0x2f, 0x42, 0x2f, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfd, 0x88, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x33, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, 0xfd, 0x88, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x02, 0x2a, 0x42, 0x2a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x11, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, 0xfd, 0x11, 0xff, 0x7b, 0x00, 0x10, + 0xb7, 0x02, 0x22, 0x41, 0x22, 0x03, 0x2e, 0x42, 0x2e, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x87, 0xff, 0xe9, 0x04, 0x41, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x12, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, + 0xfc, 0x87, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x02, 0x20, 0x41, 0x20, 0x03, + 0x2e, 0x42, 0x2e, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfd, 0xad, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x28, 0xfd, 0xad, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x02, 0x22, 0x41, 0x22, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x59, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x02, 0x26, 0x00, 0x12, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x29, 0xfd, 0x59, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x02, 0x20, 0x41, 0x20, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x93, 0x00, 0x00, 0x04, 0x12, 0x05, 0x33, 0x02, 0x26, 0x00, 0x13, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, 0xfd, 0x93, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x02, 0x26, 0x42, 0x26, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x2b, 0x00, 0x00, 0x04, 0x5a, 0x05, 0x33, 0x02, 0x26, 0x00, 0x1c, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, 0xfd, 0x2b, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x01, 0x15, 0x42, 0x15, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfc, 0x31, 0x00, 0x00, 0x04, 0x5a, 0x05, 0x33, 0x02, 0x26, 0x00, 0x1c, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, 0xfc, 0x31, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x01, 0x0d, 0x41, 0x0d, 0x02, 0x19, 0x42, 0x19, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0xa0, 0x00, 0x00, 0x04, 0x5a, + 0x05, 0x33, 0x02, 0x26, 0x00, 0x1c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, + 0xfc, 0xa0, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x0b, 0x41, 0x0b, 0x02, + 0x19, 0x42, 0x19, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfd, 0x2f, 0x00, 0x00, 0x04, 0x5a, 0x06, 0x83, 0x02, 0x26, 0x00, 0x1c, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x30, 0xfd, 0x2f, 0xff, 0x7f, 0x00, 0x0b, + 0xb4, 0x02, 0x01, 0x2d, 0x42, 0x2d, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, + 0xff, 0xff, 0xfc, 0xcb, 0x00, 0x00, 0x04, 0x5a, 0x05, 0x1c, 0x02, 0x26, + 0x00, 0x1c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x28, 0xfc, 0xcb, 0xff, 0x7f, + 0x00, 0x09, 0xb3, 0x01, 0x0d, 0x41, 0x0d, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0xfd, 0x4d, 0x00, 0x00, 0x04, 0x5a, 0x05, 0x1c, 0x02, 0x26, + 0x00, 0x1c, 0x00, 0x00, 0x01, 0x07, 0x09, 0x29, 0xfd, 0x4d, 0xff, 0x7f, + 0x00, 0x09, 0xb3, 0x01, 0x0b, 0x41, 0x0b, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x06, 0x64, 0x02, 0x26, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x5a, 0x06, 0x8f, 0x02, 0x26, 0x00, 0x1c, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, 0xff, 0xff, 0xfd, 0x99, + 0x00, 0x00, 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, + 0x01, 0x07, 0x09, 0x34, 0xfd, 0x99, 0xff, 0x7f, 0x00, 0x09, 0xb3, 0x01, + 0x3b, 0x42, 0x3b, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x22, + 0x00, 0x00, 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, + 0x01, 0x07, 0x09, 0x2b, 0xfd, 0x22, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, + 0x32, 0x41, 0x32, 0x02, 0x3f, 0x42, 0x3f, 0x00, 0x11, 0x3f, 0x35, 0x11, + 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x9b, 0x00, 0x00, 0x04, 0x43, 0x05, 0x33, + 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2c, 0xfc, 0x9b, + 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x30, 0x41, 0x30, 0x02, 0x3f, 0x42, + 0x3f, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x9e, + 0x00, 0x00, 0x04, 0x43, 0x06, 0x83, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, + 0x01, 0x07, 0x09, 0x2d, 0xfd, 0x9e, 0xff, 0x7f, 0x00, 0x0b, 0xb4, 0x02, + 0x01, 0x53, 0x42, 0x53, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x9b, 0x00, 0x00, 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x27, 0xfd, 0x9b, 0xff, 0x7f, 0x00, 0x09, + 0xb3, 0x01, 0x3a, 0x42, 0x3a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, + 0xfd, 0x22, 0x00, 0x00, 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x2e, 0xfd, 0x22, 0xff, 0x7f, 0x00, 0x10, + 0xb7, 0x01, 0x32, 0x41, 0x32, 0x02, 0x3e, 0x42, 0x3e, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x9b, 0x00, 0x00, 0x04, 0x43, + 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x01, 0x07, 0x09, 0x2f, + 0xfc, 0x9b, 0xff, 0x7f, 0x00, 0x10, 0xb7, 0x01, 0x30, 0x41, 0x30, 0x02, + 0x3e, 0x42, 0x3e, 0x00, 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, + 0xfd, 0x9e, 0x00, 0x00, 0x04, 0x43, 0x06, 0x83, 0x02, 0x26, 0x01, 0xa7, + 0x00, 0x00, 0x01, 0x07, 0x09, 0x30, 0xfd, 0x9e, 0xff, 0x7f, 0x00, 0x0b, + 0xb4, 0x02, 0x01, 0x52, 0x42, 0x52, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, + 0xff, 0xff, 0xfd, 0xac, 0x00, 0x00, 0x04, 0x43, 0x05, 0x31, 0x02, 0x26, + 0x01, 0xa7, 0x00, 0x00, 0x01, 0x07, 0x09, 0x28, 0xfd, 0xac, 0xff, 0x7f, + 0x00, 0x09, 0xb3, 0x01, 0x32, 0x41, 0x32, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0xfd, 0x4f, 0x00, 0x00, 0x04, 0x43, 0x05, 0x31, 0x02, 0x26, + 0x01, 0xa7, 0x00, 0x00, 0x01, 0x07, 0x09, 0x29, 0xfd, 0x4f, 0xff, 0x7f, + 0x00, 0x09, 0xb3, 0x01, 0x30, 0x41, 0x30, 0x00, 0x11, 0x3f, 0x35, 0x00, + 0xff, 0xff, 0x00, 0x23, 0xfe, 0x79, 0x04, 0x43, 0x05, 0x31, 0x02, 0x26, + 0x01, 0xa7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x37, 0x00, 0xff, 0xff, + 0xfd, 0x99, 0xfe, 0x79, 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, + 0x00, 0x00, 0x00, 0x27, 0x09, 0x34, 0xfd, 0x99, 0xff, 0x7f, 0x01, 0x06, + 0x09, 0x37, 0x37, 0x00, 0x00, 0x09, 0xb3, 0x01, 0x3b, 0x42, 0x3b, 0x00, + 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x22, 0xfe, 0x79, 0x04, 0x43, + 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2b, + 0xfd, 0x22, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, 0x00, 0x10, + 0xb7, 0x01, 0x32, 0x41, 0x32, 0x02, 0x3f, 0x42, 0x3f, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x9b, 0xfe, 0x79, 0x04, 0x43, + 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2c, + 0xfc, 0x9b, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, 0x00, 0x10, + 0xb7, 0x01, 0x30, 0x41, 0x30, 0x02, 0x3f, 0x42, 0x3f, 0x00, 0x11, 0x3f, + 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x9e, 0xfe, 0x79, 0x04, 0x43, + 0x06, 0x83, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, 0x09, 0x2d, + 0xfd, 0x9e, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, 0x00, 0x0b, + 0xb4, 0x02, 0x01, 0x53, 0x42, 0x53, 0x00, 0x11, 0x3f, 0x35, 0x35, 0x00, + 0xff, 0xff, 0xfd, 0x9b, 0xfe, 0x79, 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, + 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, 0x09, 0x27, 0xfd, 0x9b, 0xff, 0x7f, + 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, 0x00, 0x09, 0xb3, 0x01, 0x3a, 0x42, + 0x3a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0xff, 0xff, 0xfd, 0x22, 0xfe, 0x79, + 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x2e, 0xfd, 0x22, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, + 0x00, 0x10, 0xb7, 0x01, 0x32, 0x41, 0x32, 0x02, 0x3e, 0x42, 0x3e, 0x00, + 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfc, 0x9b, 0xfe, 0x79, + 0x04, 0x43, 0x05, 0x33, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x2f, 0xfc, 0x9b, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, + 0x00, 0x10, 0xb7, 0x01, 0x30, 0x41, 0x30, 0x02, 0x3e, 0x42, 0x3e, 0x00, + 0x11, 0x3f, 0x35, 0x11, 0x3f, 0x35, 0xff, 0xff, 0xfd, 0x9e, 0xfe, 0x79, + 0x04, 0x43, 0x06, 0x83, 0x02, 0x26, 0x01, 0xa7, 0x00, 0x00, 0x00, 0x27, + 0x09, 0x30, 0xfd, 0x9e, 0xff, 0x7f, 0x01, 0x06, 0x09, 0x37, 0x37, 0x00, + 0x00, 0x0b, 0xb4, 0x02, 0x01, 0x52, 0x42, 0x52, 0x00, 0x11, 0x3f, 0x35, + 0x35, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x09, 0x26, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, + 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xdc, 0x04, 0x5c, 0x07, 0x04, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, + 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x07, 0x04, 0x02, 0x26, + 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x09, 0x30, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xb1, + 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xdc, 0x04, 0x5c, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x29, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, + 0x04, 0x5c, 0x05, 0x99, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x2a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, + 0x05, 0x62, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xdc, 0x04, 0x5c, 0x05, 0x85, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x2d, 0xfe, 0x79, 0x04, 0x5c, 0x04, 0x0e, 0x02, 0x26, + 0x01, 0xb1, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x37, 0x00, 0x00, 0x00, 0x06, 0x09, 0x26, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, 0x09, 0x2b, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, + 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, + 0x09, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x07, 0x04, 0x02, 0x26, 0x01, 0xb1, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, 0x09, 0x27, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, + 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, + 0x09, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb1, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x07, 0x04, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, 0x09, 0x30, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, + 0x04, 0x5c, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, + 0x09, 0x28, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb1, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x29, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x5c, 0x05, 0x99, + 0x02, 0x26, 0x01, 0xb1, 0x00, 0x00, 0x00, 0x26, 0x09, 0x37, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xf2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb6, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x34, 0x00, 0x00, 0xff, 0xff, 0x00, 0x27, 0xff, 0xe9, 0x03, 0xf2, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb6, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2b, + 0x27, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xf2, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb6, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xf2, 0x05, 0xb4, 0x02, 0x26, + 0x01, 0xb6, 0x00, 0x00, 0x00, 0x06, 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x14, 0xff, 0xe9, 0x03, 0xf2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb6, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x2e, 0x14, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xf2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb6, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xf2, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xb6, 0x00, 0x00, 0x00, 0x06, + 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xf2, + 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb6, 0x00, 0x00, 0x00, 0x06, 0x09, 0x29, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, 0x09, 0x34, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0xb4, 0x02, 0x26, + 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x73, 0x03, 0xe2, 0x07, 0x04, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, + 0x03, 0xe2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2e, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2f, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x07, 0x04, 0x02, 0x26, + 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, 0x09, 0x30, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x00, 0x00, 0xff, 0xff, 0xff, 0xbd, + 0xfe, 0x73, 0x03, 0xe2, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x29, 0xbd, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, + 0x03, 0xe2, 0x05, 0x99, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x2a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x79, 0xfe, 0x73, 0x03, 0xe2, + 0x04, 0x0e, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, + 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x26, 0x09, 0x34, + 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2b, 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x26, 0x09, 0x2c, + 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x07, 0x04, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2d, 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x26, 0x09, 0x27, + 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2e, 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x26, 0x09, 0x2f, + 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, 0x07, 0x04, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x30, 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, + 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x00, 0x32, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x26, 0x09, 0x28, + 0x32, 0x00, 0x00, 0x07, 0x09, 0x37, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xc7, 0xfe, 0x73, 0x03, 0xe2, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xb8, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x29, 0xc7, 0x00, 0x00, 0x07, 0x09, 0x37, + 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x73, 0x03, 0xe2, + 0x05, 0x99, 0x02, 0x26, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x26, 0x09, 0x2a, + 0x00, 0x00, 0x00, 0x07, 0x09, 0x37, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xbb, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x34, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x07, 0x04, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2d, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x09, 0x27, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, + 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2e, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xbb, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xec, 0x07, 0x04, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x30, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x21, 0x05, 0x9a, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, + 0x01, 0xda, 0x00, 0x00, 0xff, 0xff, 0x00, 0x05, 0xff, 0xe9, 0x04, 0x02, + 0x05, 0x9a, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x09, 0x32, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe9, 0x03, 0xec, 0x06, 0xa6, + 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x09, 0x33, 0xff, 0x00, + 0xff, 0xff, 0x00, 0x35, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x9d, 0x02, 0x26, + 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x09, 0x28, 0x35, 0x00, 0xff, 0xff, + 0xff, 0xca, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xbb, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x29, 0xca, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0x99, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0x62, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x05, 0x85, 0x02, 0x26, 0x01, 0xbb, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0xb4, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x09, 0x34, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0xb4, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0xb4, 0x02, 0x26, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x1e, 0x05, 0xb4, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x1e, 0x05, 0xb4, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x2e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, + 0x05, 0xb4, 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2f, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x0e, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x9a, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0xd8, 0x0e, 0x00, + 0xff, 0xff, 0xff, 0xcc, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x9d, 0x02, 0x26, + 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x09, 0x29, 0xcc, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x73, 0x04, 0x1b, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc3, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x26, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xfe, 0x73, 0x04, 0x1b, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc3, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x34, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x07, 0x04, 0x02, 0x26, + 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2d, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x27, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x07, 0x04, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x30, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x02, 0x05, 0xa8, + 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x31, 0x00, 0x0e, + 0xff, 0xff, 0x00, 0x05, 0xff, 0xe9, 0x04, 0x02, 0x05, 0xa8, 0x02, 0x26, + 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x32, 0x00, 0x0e, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x06, 0xa6, 0x02, 0x26, 0x01, 0xc7, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x33, 0x00, 0x00, 0xff, 0xff, 0x00, 0x1f, + 0xff, 0xe9, 0x03, 0xec, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x28, 0x1f, 0x00, 0xff, 0xff, 0xff, 0xda, 0xff, 0xe9, + 0x03, 0xec, 0x05, 0xbf, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x29, 0xda, 0x22, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, + 0x05, 0x99, 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2a, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x62, + 0x02, 0x26, 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x49, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xec, 0x05, 0x85, 0x02, 0x26, + 0x01, 0xc7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x34, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x2b, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x2c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, + 0x07, 0x04, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2d, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x09, 0x27, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, + 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2e, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, + 0x00, 0x00, 0x00, 0x06, 0x09, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x4d, 0x07, 0x04, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x30, 0x00, 0x00, 0xff, 0xff, 0x00, 0x19, 0xff, 0xe9, + 0x04, 0x4d, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, + 0x09, 0x28, 0x3c, 0x00, 0xff, 0xff, 0xff, 0xda, 0xff, 0xe9, 0x04, 0x4d, + 0x05, 0x9d, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x09, 0x29, + 0xda, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x4d, 0x05, 0x99, + 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x09, 0x2a, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x19, 0xfe, 0x79, 0x04, 0x4d, 0x03, 0xf8, 0x02, 0x26, + 0x01, 0xcc, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x34, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, 0x09, 0x2b, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, + 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, + 0x09, 0x2c, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x07, 0x04, 0x02, 0x26, 0x01, 0xcc, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2d, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x05, 0xb4, + 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, 0x09, 0x27, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, + 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, + 0x09, 0x2e, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x05, 0xb4, 0x02, 0x26, 0x01, 0xcc, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x07, 0x04, + 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, 0x09, 0x30, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, 0x00, 0x19, 0xfe, 0x79, + 0x04, 0x4d, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, + 0x09, 0x28, 0x32, 0x00, 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0xff, 0xff, + 0xff, 0xc8, 0xfe, 0x79, 0x04, 0x4d, 0x05, 0x9d, 0x02, 0x26, 0x01, 0xcc, + 0x00, 0x00, 0x00, 0x26, 0x09, 0x29, 0xc8, 0x00, 0x00, 0x06, 0x09, 0x37, + 0x41, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x79, 0x04, 0x4d, 0x05, 0x99, + 0x02, 0x26, 0x01, 0xcc, 0x00, 0x00, 0x00, 0x26, 0x09, 0x2a, 0x00, 0x00, + 0x00, 0x06, 0x09, 0x37, 0x41, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x02, 0xba, 0x05, 0xb4, 0x00, 0x15, 0x00, 0x16, 0x00, 0x28, 0xb2, 0x03, + 0x03, 0x10, 0xb8, 0x02, 0x1c, 0xb5, 0x08, 0x15, 0x00, 0x00, 0x08, 0x03, + 0xb8, 0x01, 0x3b, 0xb4, 0x0b, 0x00, 0x15, 0x16, 0x4f, 0x00, 0x3f, 0xde, + 0x32, 0xdd, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x10, 0xed, 0x39, 0x2f, + 0x30, 0x31, 0x01, 0x36, 0x36, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x05, 0x01, 0xe9, 0x15, + 0x1f, 0x04, 0x20, 0x2a, 0x1b, 0x0b, 0x3a, 0x42, 0x27, 0x36, 0x21, 0x0f, + 0x17, 0x27, 0x35, 0x1e, 0xfd, 0xd7, 0x04, 0x6d, 0x17, 0x33, 0x20, 0x03, + 0x14, 0x1d, 0x23, 0x11, 0x39, 0x3c, 0x17, 0x27, 0x34, 0x1e, 0x20, 0x3e, + 0x3b, 0x3a, 0x1c, 0x3d, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xb8, + 0x05, 0xb4, 0x00, 0x15, 0x00, 0x16, 0x00, 0x28, 0xb5, 0x00, 0x15, 0x15, + 0x12, 0x12, 0x0d, 0xbb, 0x02, 0x1c, 0x00, 0x05, 0x00, 0x12, 0x01, 0x3b, + 0xb5, 0x0a, 0x0a, 0x15, 0x00, 0x16, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x32, + 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x39, 0x2f, 0x32, 0x2f, 0x33, 0x30, 0x31, + 0x01, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, + 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x05, 0x02, 0x40, 0x1e, 0x35, 0x27, + 0x17, 0x0f, 0x21, 0x36, 0x27, 0x42, 0x3a, 0x0b, 0x1b, 0x2b, 0x1f, 0x04, + 0x1f, 0x15, 0xfd, 0x80, 0x04, 0x35, 0x1c, 0x3a, 0x3b, 0x3e, 0x20, 0x1e, + 0x34, 0x27, 0x17, 0x3c, 0x39, 0x11, 0x23, 0x1d, 0x14, 0x03, 0x20, 0x33, + 0x17, 0x75, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x22, 0x05, 0x9d, + 0x00, 0x03, 0x00, 0x04, 0x00, 0x1b, 0x40, 0x0b, 0x00, 0x02, 0x01, 0x03, + 0x03, 0x01, 0x02, 0x80, 0x01, 0x04, 0x4f, 0x00, 0x3f, 0xde, 0x1a, 0xcd, + 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x23, 0x13, + 0x21, 0x01, 0x02, 0x57, 0xd6, 0x8e, 0x01, 0x13, 0xfc, 0xde, 0x04, 0x74, + 0x01, 0x29, 0xfe, 0x5b, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x02, 0xe5, + 0x05, 0x9d, 0x00, 0x03, 0x00, 0x04, 0x00, 0x1b, 0x40, 0x0b, 0x03, 0x01, + 0x02, 0x02, 0x00, 0x00, 0x00, 0x80, 0x03, 0x04, 0x4f, 0x00, 0x3f, 0xde, + 0x1a, 0xcd, 0x2f, 0x01, 0x2f, 0x32, 0x2f, 0x39, 0x39, 0x30, 0x31, 0x01, + 0x21, 0x13, 0x23, 0x05, 0x01, 0x44, 0x01, 0x13, 0x8e, 0xd6, 0xfd, 0xf1, + 0x05, 0x9d, 0xfe, 0xd7, 0x7c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x03, 0xac, 0x05, 0x99, 0x00, 0x17, 0x00, 0x18, 0x00, 0x2b, 0x40, 0x14, + 0x0b, 0x0c, 0x17, 0x00, 0x0c, 0x0b, 0x0b, 0x03, 0x00, 0x17, 0x17, 0x0f, + 0xce, 0x08, 0x08, 0x14, 0xce, 0x03, 0x18, 0x4f, 0x00, 0x3f, 0xde, 0xed, + 0xcc, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x01, 0x03, 0xac, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, + 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, + 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfc, 0xc1, 0x05, 0x19, 0x51, 0x4d, 0x22, + 0x2a, 0x22, 0x2e, 0x2c, 0x6d, 0x50, 0x4d, 0x23, 0x28, 0x23, 0x2f, 0x2b, + 0xfe, 0x73, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, 0x05, 0xb4, + 0x00, 0x03, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x48, 0x40, 0x0c, 0x07, 0x07, + 0x14, 0x0c, 0x00, 0x02, 0x01, 0x03, 0x03, 0x01, 0x01, 0x14, 0xb8, 0x02, + 0x1c, 0x40, 0x0b, 0x0c, 0x40, 0x19, 0x04, 0x04, 0x0c, 0x01, 0x80, 0x02, + 0x02, 0x07, 0xb8, 0x01, 0x3b, 0xb5, 0x0f, 0x0f, 0x04, 0x19, 0x1a, 0x4f, + 0x00, 0x3f, 0xce, 0x32, 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x1a, 0xcd, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0x1a, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x12, + 0x39, 0x39, 0x11, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x23, 0x13, 0x21, + 0x01, 0x36, 0x36, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x05, 0x02, 0xe2, 0xd6, 0x8e, 0x01, + 0x13, 0xfd, 0x70, 0x15, 0x1f, 0x04, 0x20, 0x2a, 0x1b, 0x0b, 0x3f, 0x3d, + 0x27, 0x36, 0x21, 0x0f, 0x17, 0x27, 0x35, 0x1e, 0xfe, 0xa3, 0x04, 0x74, + 0x01, 0x29, 0xfe, 0xd0, 0x17, 0x33, 0x20, 0x03, 0x14, 0x1d, 0x23, 0x11, + 0x39, 0x3c, 0x17, 0x27, 0x34, 0x1e, 0x20, 0x3e, 0x3b, 0x3a, 0x1c, 0x3d, + 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x9a, 0x05, 0xb4, 0x00, 0x03, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x48, 0x40, 0x0c, 0x07, 0x07, 0x0c, 0x14, + 0x03, 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x14, 0xb8, 0x02, 0x1c, 0x40, + 0x0b, 0x0c, 0x40, 0x19, 0x04, 0x04, 0x0c, 0x03, 0x80, 0x00, 0x00, 0x07, + 0xb8, 0x01, 0x3b, 0xb5, 0x0f, 0x0f, 0x04, 0x19, 0x1a, 0x4f, 0x00, 0x3f, + 0xce, 0x32, 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x1a, 0xcd, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x1a, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, + 0x11, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x21, 0x13, 0x23, 0x05, 0x36, + 0x36, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x05, 0x01, 0xf9, 0x01, 0x13, 0x8e, 0xd6, 0xfe, + 0x41, 0x15, 0x1f, 0x04, 0x20, 0x2a, 0x1b, 0x0b, 0x3f, 0x3d, 0x27, 0x36, + 0x21, 0x0f, 0x17, 0x27, 0x35, 0x1e, 0xfe, 0xbb, 0x05, 0x9d, 0xfe, 0xd7, + 0x07, 0x17, 0x33, 0x20, 0x03, 0x14, 0x1d, 0x23, 0x11, 0x39, 0x3c, 0x17, + 0x27, 0x34, 0x1e, 0x20, 0x3e, 0x3b, 0x3a, 0x1c, 0x3d, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, 0x07, 0x04, 0x00, 0x17, 0x00, 0x2d, + 0x00, 0x2e, 0x00, 0x55, 0xb2, 0x1b, 0x1b, 0x28, 0xb8, 0x02, 0x1c, 0x40, + 0x1c, 0x20, 0x2d, 0x18, 0x18, 0x20, 0x20, 0x0c, 0x17, 0x00, 0x00, 0x0b, + 0x0c, 0x0c, 0x0b, 0x0b, 0x03, 0x00, 0x17, 0x17, 0x0f, 0xcb, 0x08, 0x08, + 0x14, 0xcb, 0x03, 0x03, 0x1b, 0xb8, 0x01, 0x3b, 0xb5, 0x23, 0x23, 0x18, + 0x2d, 0x2e, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x32, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x33, 0x10, + 0xed, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x01, 0x36, 0x36, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x05, 0x03, 0xac, + 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, + 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfe, + 0xa5, 0x15, 0x1f, 0x04, 0x20, 0x2a, 0x1b, 0x0b, 0x3f, 0x3d, 0x27, 0x36, + 0x21, 0x0f, 0x17, 0x27, 0x35, 0x1e, 0xfd, 0xdc, 0x06, 0x8f, 0x51, 0x4d, + 0x20, 0x27, 0x20, 0x2f, 0x2b, 0x68, 0x51, 0x4d, 0x20, 0x27, 0x20, 0x2f, + 0x2b, 0xfd, 0x76, 0x17, 0x33, 0x20, 0x03, 0x14, 0x1d, 0x23, 0x11, 0x39, + 0x3c, 0x17, 0x27, 0x34, 0x1e, 0x20, 0x3e, 0x3b, 0x3a, 0x1c, 0x3d, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xad, 0x05, 0xb4, 0x00, 0x03, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x45, 0x40, 0x0f, 0x04, 0x19, 0x19, 0x16, + 0x16, 0x11, 0x09, 0x00, 0x02, 0x01, 0x03, 0x03, 0x01, 0x01, 0x11, 0xb8, + 0x02, 0x1c, 0xb6, 0x40, 0x09, 0x01, 0x80, 0x02, 0x02, 0x16, 0xb8, 0x01, + 0x3b, 0xb5, 0x0e, 0x0e, 0x19, 0x04, 0x1a, 0x4f, 0x00, 0x3f, 0xce, 0x32, + 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x1a, 0xcd, 0x01, 0x2f, 0x1a, 0xed, 0x32, + 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x11, 0x12, 0x39, 0x2f, 0x32, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x23, 0x13, 0x21, 0x01, 0x2e, 0x03, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, + 0x17, 0x05, 0x02, 0xe2, 0xd6, 0x8e, 0x01, 0x13, 0xfd, 0xc9, 0x1e, 0x35, + 0x27, 0x17, 0x0f, 0x21, 0x36, 0x27, 0x3d, 0x3f, 0x0b, 0x1b, 0x2b, 0x1f, + 0x04, 0x1f, 0x15, 0xfe, 0x4a, 0x04, 0x74, 0x01, 0x29, 0xfe, 0x98, 0x1c, + 0x3a, 0x3b, 0x3e, 0x20, 0x1e, 0x34, 0x27, 0x17, 0x3c, 0x39, 0x11, 0x23, + 0x1d, 0x14, 0x03, 0x20, 0x33, 0x17, 0x75, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x9a, 0x05, 0xb4, 0x00, 0x03, 0x00, 0x19, 0x00, 0x1a, + 0x00, 0x45, 0x40, 0x0f, 0x04, 0x19, 0x19, 0x16, 0x16, 0x11, 0x09, 0x03, + 0x01, 0x00, 0x02, 0x02, 0x00, 0x00, 0x11, 0xb8, 0x02, 0x1c, 0xb6, 0x40, + 0x09, 0x03, 0x80, 0x00, 0x00, 0x16, 0xb8, 0x01, 0x3b, 0xb5, 0x0e, 0x0e, + 0x19, 0x04, 0x1a, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x32, 0x2f, 0xed, 0x33, + 0x2f, 0x1a, 0xcd, 0x01, 0x2f, 0x1a, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x12, + 0x39, 0x39, 0x11, 0x12, 0x39, 0x2f, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x21, 0x13, 0x23, 0x05, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x05, 0x01, 0xf9, + 0x01, 0x13, 0x8e, 0xd6, 0xfe, 0x9b, 0x1e, 0x35, 0x27, 0x17, 0x0f, 0x21, + 0x36, 0x27, 0x3d, 0x3f, 0x0b, 0x1b, 0x2b, 0x1f, 0x04, 0x1f, 0x15, 0xfe, + 0x61, 0x05, 0x9d, 0xfe, 0xd7, 0x3f, 0x1c, 0x3a, 0x3b, 0x3e, 0x20, 0x1e, + 0x34, 0x27, 0x17, 0x3c, 0x39, 0x11, 0x23, 0x1d, 0x14, 0x03, 0x20, 0x33, + 0x17, 0x75, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, 0x07, 0x04, + 0x00, 0x17, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x4f, 0xb5, 0x18, 0x2d, 0x2d, + 0x2a, 0x2a, 0x25, 0xb8, 0x02, 0x1c, 0x40, 0x16, 0x1d, 0x1d, 0x00, 0x0b, + 0x0c, 0x17, 0x00, 0x0c, 0x0b, 0x0b, 0x03, 0x00, 0x17, 0x17, 0x0f, 0xcb, + 0x08, 0x14, 0xcb, 0x03, 0x03, 0x2a, 0xb8, 0x01, 0x3b, 0xb5, 0x22, 0x22, + 0x2d, 0x18, 0x2e, 0x4f, 0x00, 0x3f, 0xce, 0x32, 0x32, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0xdc, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x2f, 0x32, 0x2f, + 0x33, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x01, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x16, 0x16, 0x17, 0x05, 0x03, 0xac, 0x2a, 0x70, + 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, + 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfe, 0xfd, 0x1e, + 0x35, 0x27, 0x17, 0x0f, 0x21, 0x36, 0x27, 0x3d, 0x3f, 0x0b, 0x1b, 0x2b, + 0x1f, 0x04, 0x1f, 0x15, 0xfd, 0x84, 0x06, 0x8f, 0x51, 0x4d, 0x20, 0x27, + 0x20, 0x2f, 0x2b, 0x68, 0x51, 0x4d, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0xfd, + 0x3e, 0x1c, 0x3a, 0x3b, 0x3e, 0x20, 0x1e, 0x34, 0x27, 0x17, 0x3c, 0x39, + 0x11, 0x23, 0x1d, 0x14, 0x03, 0x20, 0x33, 0x17, 0x75, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x03, 0xf8, 0x04, 0x02, 0x05, 0x9a, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x43, 0xb4, 0x28, 0x2a, 0x2b, 0x29, 0x14, + 0xb8, 0x02, 0x28, 0xb6, 0x1e, 0x1e, 0x2b, 0x2b, 0x29, 0x29, 0x00, 0xb8, + 0x02, 0x28, 0xb2, 0x0a, 0x23, 0x0f, 0xb8, 0x01, 0x42, 0x40, 0x0a, 0x40, + 0x19, 0x05, 0x05, 0x2a, 0x80, 0x29, 0x29, 0x2c, 0x4f, 0x00, 0x3f, 0xce, + 0x2f, 0x1a, 0xcd, 0x33, 0x2f, 0x33, 0x1a, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x11, 0x12, 0x39, 0x39, 0x30, + 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x23, 0x13, + 0x21, 0x01, 0x01, 0x77, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, + 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x02, 0x8b, 0x16, 0x25, + 0x32, 0x1c, 0x1d, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1d, 0x1c, 0x32, + 0x25, 0x16, 0xfe, 0x64, 0xcd, 0x44, 0x01, 0x0a, 0xfd, 0x19, 0x04, 0xfc, + 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, + 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, + 0x1c, 0x32, 0x26, 0x15, 0x15, 0x26, 0x32, 0xa7, 0x01, 0x29, 0xfe, 0x5e, + 0x00, 0x04, 0x00, 0x05, 0x03, 0xf6, 0x04, 0x02, 0x05, 0x9a, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x46, 0xb4, 0x29, 0x2b, 0x2a, + 0x28, 0x14, 0xb8, 0x02, 0x28, 0xb7, 0x20, 0x1e, 0x1e, 0x2a, 0x2a, 0x28, + 0x28, 0x00, 0xb8, 0x02, 0x28, 0xb2, 0x0a, 0x23, 0x0f, 0xb8, 0x01, 0x42, + 0x40, 0x0a, 0x40, 0x19, 0x05, 0x05, 0x28, 0x80, 0x2b, 0x2b, 0x2c, 0x4f, + 0x00, 0x3f, 0xce, 0x2f, 0x1a, 0xcd, 0x33, 0x2f, 0x33, 0x1a, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x19, 0x2f, 0x1a, 0xed, + 0x11, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x25, 0x21, 0x13, 0x23, 0x05, 0x01, 0x77, 0x16, 0x25, 0x33, + 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, + 0x16, 0x02, 0x8b, 0x16, 0x25, 0x32, 0x1c, 0x1d, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1d, 0x1c, 0x32, 0x25, 0x16, 0xfd, 0x7b, 0x01, 0x0a, 0x44, + 0xcd, 0xfe, 0x07, 0x04, 0xfc, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, + 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, + 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x15, 0x26, 0x32, + 0x82, 0xfe, 0xd7, 0x7b, 0x00, 0x04, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, + 0x06, 0xa6, 0x00, 0x17, 0x00, 0x2b, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x4d, + 0xb3, 0x17, 0x00, 0x00, 0x2c, 0xb8, 0x02, 0x27, 0xb2, 0x36, 0x36, 0x18, + 0xb8, 0x02, 0x27, 0x40, 0x14, 0x22, 0x0b, 0x0c, 0x0c, 0x22, 0x0c, 0x0b, + 0x0b, 0x03, 0x00, 0x17, 0x17, 0x0f, 0xcb, 0x08, 0x14, 0xcb, 0x03, 0x3b, + 0x27, 0xb8, 0x01, 0x43, 0xb3, 0x31, 0x1d, 0x40, 0x4f, 0x00, 0x3f, 0xde, + 0x32, 0xfd, 0x32, 0xd6, 0xed, 0xdc, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x2f, 0xed, + 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, + 0x03, 0xac, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, + 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, + 0x1b, 0xfe, 0xac, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, 0x15, 0x26, 0x32, + 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, + 0x15, 0xfc, 0x73, 0x06, 0x31, 0x51, 0x4d, 0x20, 0x27, 0x20, 0x2f, 0x2b, + 0x68, 0x51, 0x4d, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0xfe, 0x37, 0x1c, 0x32, + 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, + 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, + 0x25, 0x16, 0x16, 0x25, 0x33, 0xf4, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, + 0x02, 0xba, 0x05, 0xb4, 0x00, 0x15, 0x00, 0x16, 0x00, 0x22, 0xb3, 0x15, + 0x00, 0x00, 0x10, 0xbb, 0x02, 0x1c, 0x00, 0x08, 0x00, 0x03, 0x01, 0x3b, + 0xb4, 0x0b, 0x00, 0x15, 0x16, 0x4f, 0x00, 0x3f, 0xde, 0x32, 0xdd, 0xed, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x36, 0x36, 0x37, + 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x05, 0x01, 0xe9, 0x15, 0x1f, 0x04, 0x20, 0x2a, 0x1b, 0x0b, + 0x3f, 0x3d, 0x27, 0x36, 0x21, 0x0f, 0x17, 0x27, 0x35, 0x1e, 0xfd, 0xd7, + 0x04, 0x6d, 0x17, 0x33, 0x20, 0x03, 0x14, 0x1d, 0x23, 0x11, 0x39, 0x3c, + 0x17, 0x27, 0x34, 0x1e, 0x20, 0x3e, 0x3b, 0x3a, 0x1c, 0x3d, 0xff, 0xff, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0x4a, 0x05, 0x62, 0x02, 0x06, 0x01, 0x49, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x53, 0x05, 0x85, + 0x02, 0x06, 0x01, 0x4b, 0x00, 0x00, 0x00, 0x01, 0x01, 0xa8, 0xfe, 0x79, + 0x03, 0x06, 0xff, 0xc3, 0x00, 0x11, 0x00, 0x21, 0x40, 0x0a, 0x11, 0x06, + 0x10, 0x0f, 0x10, 0x01, 0x10, 0x12, 0x03, 0x0a, 0xb8, 0xff, 0xc0, 0xb3, + 0x0a, 0x0d, 0x48, 0x0a, 0x00, 0x2f, 0x2b, 0xcd, 0x10, 0xce, 0x5d, 0x01, + 0x2f, 0xcc, 0xcd, 0x31, 0x30, 0x05, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, + 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x35, 0x33, 0x02, 0x5c, + 0x31, 0x25, 0x14, 0x2a, 0x16, 0x23, 0x41, 0x20, 0x30, 0x50, 0x3a, 0x20, + 0xb4, 0x90, 0x30, 0x24, 0x07, 0x05, 0xa4, 0x05, 0x06, 0x14, 0x35, 0x5c, + 0x48, 0x5d, 0xff, 0xff, 0x01, 0x0b, 0xff, 0xf8, 0x03, 0x46, 0x02, 0x75, + 0x03, 0x07, 0x07, 0x01, 0x00, 0x00, 0xfd, 0x32, 0x00, 0x09, 0xb3, 0x00, + 0x03, 0x52, 0x03, 0x00, 0x11, 0x3f, 0x35, 0x00, 0x00, 0x02, 0x00, 0x5d, + 0xfe, 0xbd, 0x04, 0x6b, 0x06, 0x77, 0x00, 0x0f, 0x00, 0x23, 0x00, 0x63, + 0xb9, 0x00, 0x23, 0x01, 0xc1, 0xb2, 0x10, 0x10, 0x19, 0xb8, 0x01, 0xc1, + 0xb3, 0x18, 0x18, 0x03, 0x06, 0xbb, 0x01, 0xf7, 0x00, 0x05, 0x00, 0x0d, + 0x01, 0xc1, 0xb3, 0x0e, 0x0e, 0x0c, 0x0b, 0xb8, 0x01, 0xf7, 0x40, 0x15, + 0x40, 0x0f, 0x09, 0x00, 0x23, 0x18, 0x80, 0x1e, 0xa5, 0x13, 0x01, 0x09, + 0x41, 0x06, 0x41, 0x07, 0x03, 0x43, 0x0e, 0x0e, 0x0b, 0xb8, 0x01, 0x0e, + 0xb1, 0x00, 0x43, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0x33, 0x3f, 0x3f, + 0x33, 0xde, 0xed, 0x1a, 0xcd, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x1a, 0xed, + 0x32, 0x33, 0x2f, 0xed, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x21, 0x11, 0x23, 0x01, 0x23, 0x11, 0x33, 0x11, 0x33, + 0x01, 0x33, 0x11, 0x33, 0x03, 0x23, 0x13, 0x13, 0x14, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x03, 0x11, 0x02, 0xfe, 0x3c, 0xee, 0xf8, 0x02, 0x01, 0xc5, 0xed, 0x62, + 0x7a, 0xdf, 0x53, 0x24, 0xbb, 0x9f, 0x5c, 0x80, 0x51, 0x25, 0xdf, 0x0d, + 0x1c, 0x2c, 0x21, 0x20, 0x2e, 0x1c, 0x0e, 0x03, 0x44, 0xfc, 0xbc, 0x05, + 0x1b, 0xfc, 0xbc, 0x03, 0x44, 0xfb, 0xba, 0xfd, 0xe8, 0x01, 0x43, 0x06, + 0x77, 0x89, 0x98, 0x2c, 0x4e, 0x69, 0x3e, 0x21, 0x37, 0x26, 0x15, 0x18, + 0x28, 0x37, 0x1c, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2b, + 0x05, 0x1b, 0x00, 0x14, 0x00, 0x21, 0x00, 0x51, 0xb3, 0x12, 0x00, 0x00, + 0x21, 0xbb, 0x01, 0xf3, 0x00, 0x0c, 0x00, 0x08, 0x02, 0x05, 0x40, 0x21, + 0x1a, 0x1a, 0x11, 0x0c, 0x0e, 0x0e, 0x0c, 0x01, 0x0e, 0xd2, 0x0f, 0x13, + 0x0f, 0x20, 0xdc, 0x02, 0x0f, 0x0f, 0x1f, 0x0f, 0xff, 0x0f, 0x03, 0x0f, + 0x02, 0x0f, 0x02, 0x11, 0x41, 0x21, 0xdc, 0x0c, 0x43, 0x00, 0x3f, 0xed, + 0x3f, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x10, 0xed, 0x11, 0x33, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x33, 0x2f, 0xed, 0x10, 0xed, + 0x32, 0x2f, 0x32, 0x30, 0x31, 0x01, 0x21, 0x15, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x04, 0x21, 0x21, 0x11, 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, + 0x21, 0x03, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, + 0x02, 0x86, 0xfe, 0xef, 0xcf, 0x80, 0xb8, 0x77, 0x38, 0xfe, 0xfc, 0xfe, + 0xfc, 0xfe, 0x5e, 0x81, 0x81, 0xf4, 0x01, 0x11, 0x53, 0x3f, 0x5b, 0x3a, + 0x1c, 0x1c, 0x3d, 0x63, 0x46, 0xac, 0x03, 0xd3, 0xac, 0x3b, 0x68, 0x90, + 0x54, 0xd1, 0xcf, 0x03, 0xd3, 0xb6, 0x92, 0x92, 0xfc, 0x3c, 0x22, 0x3b, + 0x4e, 0x2c, 0x2c, 0x49, 0x34, 0x1d, 0xfe, 0x63, 0xff, 0xff, 0x00, 0x87, + 0x00, 0x00, 0x04, 0x12, 0x05, 0x1b, 0x02, 0x26, 0x00, 0x13, 0x00, 0x00, + 0x01, 0x06, 0x0a, 0x61, 0x0a, 0xce, 0x00, 0x18, 0xb1, 0x02, 0x1d, 0xb8, + 0xff, 0xc0, 0xb3, 0x10, 0x10, 0x48, 0x1d, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, + 0x0b, 0x48, 0x1d, 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xe7, 0x05, 0x1b, 0x00, 0x0d, 0x00, 0x39, 0xb4, 0x07, + 0x07, 0x04, 0x09, 0x05, 0xb8, 0x01, 0xf4, 0x40, 0x10, 0x02, 0x0c, 0x02, + 0x00, 0x00, 0x02, 0x09, 0x0d, 0xda, 0x06, 0x00, 0x00, 0x02, 0x0a, 0x43, + 0x05, 0xb8, 0x01, 0x10, 0xb1, 0x02, 0x41, 0x00, 0x3f, 0xed, 0x3f, 0x12, + 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, + 0xed, 0x32, 0x2f, 0x39, 0x2f, 0x31, 0x30, 0x11, 0x33, 0x11, 0x21, 0x15, + 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x23, 0xc5, 0x03, 0x22, + 0xfd, 0xd3, 0x01, 0x30, 0xfe, 0xd0, 0xf5, 0xc5, 0x03, 0x02, 0x02, 0x19, + 0xd7, 0xfe, 0xbe, 0xc3, 0xfd, 0xc1, 0x02, 0x3f, 0x00, 0x01, 0x00, 0x81, + 0xfe, 0x66, 0x04, 0x2c, 0x05, 0x1b, 0x00, 0x2b, 0x00, 0x4a, 0xb3, 0x14, + 0x00, 0x00, 0x1a, 0xb8, 0x01, 0xf3, 0xb3, 0x17, 0x19, 0x19, 0x23, 0xb8, + 0x01, 0xf5, 0xb4, 0x0a, 0x0a, 0x17, 0x00, 0x05, 0xb8, 0x01, 0x13, 0xb4, + 0x2b, 0x28, 0x45, 0x14, 0x11, 0xb8, 0x01, 0x0b, 0x40, 0x0a, 0x1b, 0x1e, + 0x1e, 0x16, 0x1a, 0xde, 0x17, 0x41, 0x16, 0x43, 0x00, 0x3f, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, + 0x05, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x04, 0x23, + 0x22, 0x06, 0x07, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x11, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x01, 0x9f, 0x16, 0x22, 0x1f, 0x1e, 0x13, 0x50, 0x69, 0x3d, 0x19, 0x1a, + 0x2d, 0x3c, 0x45, 0x49, 0x24, 0x28, 0x4b, 0x19, 0xf4, 0x03, 0x22, 0xfd, + 0xd2, 0x1d, 0x54, 0x30, 0x7a, 0xc5, 0x8c, 0x4b, 0x33, 0x71, 0xb1, 0x7e, + 0x39, 0x5b, 0x26, 0xb2, 0x05, 0x05, 0x03, 0x01, 0x39, 0x70, 0xa9, 0x70, + 0x4d, 0x6f, 0x4e, 0x31, 0x1b, 0x09, 0x04, 0x03, 0xfd, 0xa6, 0x05, 0x1b, + 0xc9, 0xfe, 0xd6, 0x03, 0x06, 0x37, 0x83, 0xd7, 0x9f, 0x93, 0xf5, 0xb1, + 0x62, 0x07, 0x08, 0x00, 0x00, 0x01, 0xff, 0xf8, 0xfe, 0xe5, 0x04, 0x76, + 0x05, 0x1b, 0x00, 0x15, 0x00, 0x68, 0xb3, 0x15, 0x06, 0x06, 0x11, 0xb8, + 0x01, 0xa5, 0xb6, 0x0c, 0x09, 0x09, 0x10, 0x10, 0x16, 0x14, 0xb8, 0x01, + 0xcb, 0xb3, 0x13, 0x13, 0x00, 0x01, 0xb8, 0x01, 0x89, 0xb4, 0x04, 0x04, + 0x0a, 0x16, 0x0e, 0xb8, 0x01, 0xcc, 0x40, 0x14, 0x0d, 0x13, 0x41, 0x10, + 0x41, 0x15, 0x12, 0x0f, 0x0c, 0x0c, 0x0a, 0x0d, 0x41, 0x03, 0x03, 0x0a, + 0x43, 0x08, 0x43, 0x00, 0xb8, 0x01, 0x0e, 0xb1, 0x05, 0x43, 0x00, 0x3f, + 0xed, 0x3f, 0x3f, 0x33, 0x2f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, + 0x3f, 0x3f, 0x01, 0x2f, 0xed, 0x10, 0xcd, 0x33, 0x2f, 0xed, 0x32, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0x11, 0x33, 0xed, 0x32, 0x11, 0x33, + 0x30, 0x31, 0x25, 0x33, 0x03, 0x23, 0x11, 0x23, 0x03, 0x11, 0x23, 0x11, + 0x03, 0x23, 0x13, 0x03, 0x33, 0x13, 0x11, 0x33, 0x11, 0x13, 0x33, 0x03, + 0x04, 0x0d, 0x69, 0x10, 0xbe, 0x49, 0xc7, 0xdd, 0xc7, 0xfc, 0xfc, 0xec, + 0xec, 0xc7, 0xdd, 0xc7, 0xeb, 0xeb, 0xd5, 0xfe, 0x10, 0x01, 0x1b, 0x02, + 0x93, 0xfd, 0x6d, 0x02, 0x93, 0xfd, 0x6d, 0x02, 0xac, 0x02, 0x6f, 0xfd, + 0x8f, 0x02, 0x71, 0xfd, 0x8f, 0x02, 0x71, 0xfd, 0x91, 0x00, 0xff, 0xff, + 0x00, 0x5c, 0xfe, 0x6b, 0x03, 0xfc, 0x05, 0x31, 0x02, 0x26, 0x01, 0xe7, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x62, 0xff, 0x00, 0x00, 0x01, 0x00, 0x81, + 0xfe, 0xe5, 0x04, 0x3e, 0x05, 0x1b, 0x00, 0x0e, 0x00, 0x48, 0xb2, 0x0a, + 0x06, 0x03, 0xb8, 0x01, 0xf9, 0xb5, 0x04, 0x08, 0x09, 0x09, 0x0b, 0x0c, + 0xb8, 0x01, 0xc2, 0x40, 0x12, 0x01, 0x00, 0x00, 0x04, 0x08, 0x41, 0x07, + 0x02, 0x0a, 0x0a, 0x04, 0x05, 0x41, 0x04, 0x43, 0x0e, 0x0e, 0x0b, 0xb8, + 0x01, 0x0e, 0xb1, 0x01, 0x43, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0x3f, + 0x12, 0x39, 0x11, 0x33, 0x33, 0x3f, 0x01, 0x2f, 0x32, 0x2f, 0x33, 0xed, + 0x32, 0x32, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x32, 0x30, 0x31, 0x21, 0x23, + 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, 0x21, 0x01, 0x01, 0x33, 0x03, + 0x23, 0x03, 0x5e, 0x5a, 0xfe, 0x77, 0xfa, 0xfa, 0x01, 0x87, 0x01, 0x29, + 0xfe, 0x44, 0x01, 0x43, 0x8c, 0x10, 0xd0, 0x02, 0x78, 0xfd, 0x88, 0x05, + 0x1b, 0xfd, 0xad, 0x02, 0x53, 0xfd, 0x91, 0xfe, 0x29, 0xfe, 0x10, 0x00, + 0x00, 0x01, 0x00, 0x81, 0x00, 0x00, 0x04, 0x42, 0x05, 0x1b, 0x00, 0x14, + 0x00, 0x5f, 0xb1, 0x0a, 0x07, 0xb8, 0x01, 0xf9, 0xb6, 0x08, 0x13, 0x10, + 0x01, 0x01, 0x0e, 0x03, 0xb8, 0x01, 0x5c, 0x40, 0x22, 0x0d, 0x04, 0x04, + 0x08, 0x14, 0x00, 0x11, 0x11, 0x00, 0x00, 0x08, 0x11, 0x41, 0x13, 0x0b, + 0x04, 0x04, 0x01, 0x06, 0xdd, 0x0b, 0x10, 0x0b, 0x0d, 0x0d, 0x0b, 0x0b, + 0x08, 0x09, 0x41, 0x08, 0x43, 0x00, 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0x12, + 0x39, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x11, + 0x39, 0x3f, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x33, 0x10, 0xed, 0x32, 0x30, + 0x31, 0x21, 0x03, 0x23, 0x15, 0x23, 0x35, 0x23, 0x11, 0x23, 0x11, 0x33, + 0x11, 0x33, 0x35, 0x33, 0x15, 0x33, 0x13, 0x21, 0x01, 0x01, 0x03, 0x04, + 0xb7, 0x1a, 0x95, 0x23, 0xfa, 0xfa, 0x23, 0x95, 0x1b, 0xb4, 0x01, 0x29, + 0xfe, 0xee, 0x01, 0x29, 0x02, 0x3c, 0xde, 0xde, 0xfd, 0xc4, 0x05, 0x1b, + 0xfd, 0xe9, 0xde, 0xde, 0x02, 0x17, 0xfd, 0x91, 0xfd, 0x54, 0x00, 0x01, + 0x00, 0x10, 0x00, 0x00, 0x04, 0x42, 0x05, 0x1b, 0x00, 0x12, 0x00, 0x4f, + 0xb5, 0x11, 0x0d, 0x0b, 0x0b, 0x01, 0x09, 0xb8, 0x01, 0xf9, 0x40, 0x1f, + 0x08, 0x10, 0x0f, 0x0f, 0x12, 0x00, 0x00, 0x06, 0x06, 0x04, 0x08, 0x0f, + 0x41, 0x0e, 0x01, 0x11, 0x11, 0x08, 0x03, 0x0d, 0x05, 0xda, 0x0b, 0x06, + 0x06, 0x08, 0x41, 0x03, 0x43, 0x00, 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0x33, + 0x2f, 0x33, 0xed, 0x32, 0x11, 0x12, 0x39, 0x11, 0x33, 0x33, 0x3f, 0x01, + 0x2f, 0x32, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x10, 0xed, + 0x32, 0x32, 0x2f, 0x32, 0x32, 0x30, 0x31, 0x21, 0x01, 0x11, 0x23, 0x11, + 0x23, 0x35, 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x01, 0x21, + 0x01, 0x01, 0x03, 0x04, 0xfe, 0x77, 0xfa, 0x71, 0x71, 0xfa, 0x80, 0x80, + 0x01, 0x87, 0x01, 0x29, 0xfe, 0x44, 0x01, 0xd3, 0x02, 0x78, 0xfd, 0x88, + 0x03, 0xd2, 0xc3, 0x86, 0x86, 0xc3, 0xfe, 0xf6, 0x02, 0x53, 0xfd, 0x91, + 0xfd, 0x54, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x05, 0x1b, + 0x00, 0x0c, 0x00, 0x3d, 0xb2, 0x0b, 0x08, 0x02, 0xb8, 0x01, 0xf9, 0x40, + 0x19, 0x03, 0x0a, 0x09, 0x09, 0x0c, 0x00, 0x00, 0x05, 0x05, 0x03, 0x09, + 0x41, 0x08, 0x01, 0x0b, 0x0b, 0x03, 0x04, 0xda, 0x06, 0x41, 0x03, 0x43, + 0x00, 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, + 0x3f, 0x01, 0x2f, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x10, + 0xed, 0x32, 0x32, 0x30, 0x31, 0x21, 0x01, 0x11, 0x23, 0x11, 0x23, 0x35, + 0x21, 0x11, 0x01, 0x21, 0x01, 0x01, 0x03, 0x04, 0xfe, 0x9f, 0xfa, 0xa9, + 0x01, 0xa3, 0x01, 0x5f, 0x01, 0x29, 0xfe, 0x68, 0x01, 0xaf, 0x02, 0x78, + 0xfd, 0x88, 0x04, 0x58, 0xc3, 0xfd, 0xad, 0x02, 0x53, 0xfd, 0x91, 0xfd, + 0x54, 0x00, 0x00, 0x01, 0x00, 0x5f, 0xfe, 0xe5, 0x04, 0x66, 0x05, 0x1b, + 0x00, 0x0f, 0x00, 0x47, 0xb9, 0x00, 0x0d, 0x01, 0xcc, 0xb2, 0x00, 0x00, + 0x0b, 0xb8, 0x01, 0xf5, 0xb4, 0x02, 0x0a, 0x0a, 0x03, 0x07, 0xb8, 0x01, + 0xf5, 0xb3, 0x06, 0x0a, 0x41, 0x03, 0xb8, 0x01, 0x0e, 0xb6, 0x08, 0x08, + 0x06, 0x41, 0x05, 0x43, 0x0c, 0xb8, 0x01, 0x0e, 0xb4, 0x01, 0x0f, 0x0f, + 0x01, 0x43, 0x00, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x3f, 0x3f, 0x39, 0x2f, + 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x21, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x21, 0x11, 0x33, 0x11, 0x33, 0x03, 0x23, 0x03, 0x7a, 0x69, 0xfe, 0x44, + 0xf6, 0xf6, 0x01, 0xbc, 0xf6, 0x5f, 0x10, 0xdc, 0x02, 0x39, 0xfd, 0xc7, + 0x05, 0x1b, 0xfd, 0xf3, 0x02, 0x0d, 0xfb, 0xba, 0xfe, 0x10, 0x00, 0x01, + 0x00, 0x5f, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x0d, 0x00, 0x36, + 0xb2, 0x0b, 0x0b, 0x0c, 0xb8, 0x01, 0xf5, 0xb3, 0x01, 0x09, 0x02, 0x06, + 0xbb, 0x01, 0xf5, 0x00, 0x05, 0x00, 0x02, 0x01, 0x0e, 0x40, 0x0a, 0x07, + 0x07, 0x00, 0x0c, 0x09, 0x05, 0x41, 0x04, 0x00, 0x43, 0x00, 0x3f, 0x32, + 0x3f, 0x33, 0xc4, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, + 0x33, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, + 0x33, 0x11, 0x21, 0x11, 0x21, 0x15, 0x23, 0x11, 0x02, 0xc1, 0xfe, 0x94, + 0xf6, 0xf6, 0x01, 0x6c, 0x01, 0xa5, 0xaf, 0x02, 0x39, 0xfd, 0xc7, 0x05, + 0x1b, 0xfd, 0xf3, 0x02, 0x0d, 0xc3, 0xfb, 0xa8, 0x00, 0x01, 0x00, 0x35, + 0xfe, 0x66, 0x04, 0x29, 0x05, 0x1b, 0x00, 0x28, 0x00, 0x4d, 0xb3, 0x28, + 0x19, 0x19, 0x07, 0xb8, 0x01, 0x9f, 0xb3, 0x02, 0x02, 0x06, 0x10, 0xb8, + 0x01, 0xa2, 0xb2, 0x20, 0x20, 0x03, 0xb8, 0x01, 0x9f, 0x40, 0x16, 0x06, + 0x19, 0x1b, 0xe0, 0x18, 0x15, 0x45, 0x28, 0x25, 0xdc, 0x08, 0x0b, 0x0b, + 0x05, 0x03, 0xda, 0x06, 0x41, 0x05, 0x43, 0x01, 0x43, 0x00, 0x3f, 0x3f, + 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x2f, + 0x32, 0x30, 0x31, 0x21, 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x02, 0x06, 0x06, 0x23, + 0x22, 0x26, 0x27, 0x35, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x02, 0x8f, 0xd6, 0xae, 0xd6, 0x02, 0x5a, + 0x10, 0x29, 0x0f, 0x4e, 0x7e, 0x57, 0x2f, 0x1f, 0x4a, 0x7b, 0x5c, 0x17, + 0x31, 0x1b, 0x23, 0x18, 0x35, 0x3a, 0x1b, 0x04, 0x10, 0x22, 0x33, 0x22, + 0x0d, 0x1c, 0x10, 0x04, 0x58, 0xfb, 0xa8, 0x05, 0x1b, 0xfe, 0x06, 0x02, + 0x02, 0x37, 0x7e, 0xcf, 0x98, 0xba, 0xfe, 0xff, 0xa0, 0x48, 0x05, 0x05, + 0xc9, 0x08, 0x2f, 0x6e, 0xb2, 0x83, 0x6d, 0x89, 0x4c, 0x1b, 0x03, 0x02, + 0x00, 0x02, 0x00, 0x2f, 0xff, 0xee, 0x04, 0x5f, 0x05, 0x2b, 0x00, 0x33, + 0x00, 0x43, 0x00, 0x5c, 0xb6, 0x24, 0x0a, 0x32, 0x03, 0x27, 0x03, 0x2f, + 0xbb, 0x01, 0xc6, 0x00, 0x34, 0x00, 0x3e, 0x01, 0xca, 0x40, 0x09, 0x27, + 0x16, 0x27, 0x16, 0x11, 0x34, 0x34, 0x45, 0x1c, 0xb8, 0x02, 0x02, 0xb3, + 0x11, 0x41, 0x21, 0x39, 0xb8, 0x01, 0x0d, 0xb3, 0x2c, 0x2c, 0x21, 0x17, + 0xb8, 0x01, 0x16, 0x40, 0x0a, 0x16, 0x42, 0x21, 0xdf, 0x0c, 0x44, 0x00, + 0xd5, 0x07, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x11, 0x39, 0x01, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x11, 0x17, 0x39, 0x31, 0x30, + 0x25, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x15, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x26, 0x26, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x03, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x36, + 0x36, 0x04, 0x08, 0x11, 0x2c, 0x1a, 0x13, 0x25, 0x11, 0x4b, 0x82, 0x39, + 0x64, 0x83, 0x81, 0xbe, 0x7e, 0x3d, 0x46, 0x84, 0xc0, 0x7a, 0x51, 0x64, + 0x37, 0x14, 0x1d, 0x3f, 0x60, 0x44, 0x09, 0x13, 0x09, 0x48, 0x49, 0x25, + 0x4e, 0x7c, 0x57, 0x90, 0x8f, 0x40, 0x3f, 0x2a, 0x90, 0x05, 0x0f, 0x1b, + 0x15, 0x1a, 0x20, 0x12, 0x06, 0x2a, 0x2c, 0x20, 0x20, 0xaa, 0x02, 0x04, + 0xbe, 0x02, 0x02, 0x1d, 0x1b, 0x38, 0x5c, 0xad, 0xfa, 0x9f, 0xa6, 0xfb, + 0xa6, 0x54, 0xdd, 0x43, 0x79, 0xa7, 0x64, 0x67, 0xaa, 0x7a, 0x44, 0x01, + 0x01, 0x5b, 0xed, 0x89, 0x81, 0xbe, 0x7d, 0x3d, 0xf5, 0xfc, 0x8f, 0xf3, + 0x5b, 0x0c, 0x01, 0xd0, 0x41, 0x72, 0x54, 0x30, 0x31, 0x55, 0x74, 0x42, + 0x5e, 0xa7, 0x40, 0x37, 0xa3, 0x00, 0xff, 0xff, 0x00, 0x52, 0xfe, 0x6b, + 0x03, 0xec, 0x05, 0x2d, 0x02, 0x26, 0x00, 0x06, 0x00, 0x00, 0x00, 0x06, + 0x0a, 0x62, 0x51, 0x00, 0x00, 0x01, 0x00, 0x4f, 0xfe, 0xe5, 0x04, 0x17, + 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x39, 0xb9, 0x00, 0x01, 0x01, 0xf5, 0xb5, + 0x04, 0x04, 0x05, 0x0a, 0x0a, 0x00, 0xb8, 0x01, 0xfb, 0x40, 0x0c, 0x05, + 0x07, 0x07, 0x05, 0x0b, 0x07, 0xe2, 0x08, 0x41, 0x03, 0x03, 0x00, 0xb8, + 0x01, 0x0e, 0xb1, 0x05, 0x43, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x25, 0x33, 0x03, 0x23, 0x11, 0x23, 0x11, 0x21, 0x35, + 0x21, 0x15, 0x21, 0x02, 0xb1, 0x82, 0x10, 0xe6, 0x88, 0xfe, 0x9a, 0x03, + 0xc8, 0xfe, 0x9a, 0xd5, 0xfe, 0x10, 0x01, 0x1b, 0x04, 0x4e, 0xcd, 0xcd, + 0xff, 0xff, 0x00, 0x0a, 0x00, 0x00, 0x04, 0x5a, 0x05, 0x1b, 0x02, 0x06, + 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x04, 0x5a, + 0x05, 0x1b, 0x00, 0x12, 0x00, 0x46, 0x40, 0x09, 0x08, 0x09, 0x09, 0x06, + 0x10, 0x0c, 0x0c, 0x0b, 0x0f, 0xb8, 0x01, 0xf9, 0x40, 0x16, 0x10, 0x04, + 0x03, 0x03, 0x01, 0x10, 0x00, 0x00, 0x10, 0x0e, 0x12, 0xda, 0x0b, 0x06, + 0x00, 0x00, 0x03, 0x0f, 0x43, 0x08, 0x03, 0x41, 0x00, 0x3f, 0x33, 0x3f, + 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x33, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x11, 0x39, 0x32, + 0x2f, 0x33, 0x30, 0x31, 0x13, 0x33, 0x35, 0x01, 0x21, 0x13, 0x17, 0x37, + 0x13, 0x21, 0x01, 0x15, 0x33, 0x15, 0x23, 0x15, 0x23, 0x35, 0x23, 0xbe, + 0xf5, 0xfe, 0x57, 0x01, 0x11, 0xc0, 0x58, 0x58, 0xc9, 0x01, 0x06, 0xfe, + 0x53, 0xfb, 0xfb, 0xfa, 0xf5, 0x01, 0xb2, 0x1b, 0x03, 0x4e, 0xfe, 0x6c, + 0xc6, 0xcc, 0x01, 0x8e, 0xfc, 0xb4, 0x1d, 0xc3, 0xef, 0xef, 0x00, 0x01, + 0x00, 0x08, 0xfe, 0xe5, 0x04, 0x67, 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x55, + 0x40, 0x0f, 0x0f, 0x09, 0x06, 0x0c, 0x0c, 0x0e, 0x0b, 0x0a, 0x0a, 0x10, + 0x0d, 0x0e, 0x0e, 0x00, 0x01, 0xb8, 0x01, 0xf5, 0x40, 0x14, 0x05, 0x04, + 0x04, 0x07, 0x10, 0x0d, 0x41, 0x0f, 0x0c, 0x06, 0x09, 0x09, 0x07, 0x0a, + 0x41, 0x07, 0x43, 0x03, 0x03, 0x00, 0xb8, 0x01, 0x0e, 0xb1, 0x05, 0x43, + 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, + 0x33, 0x3f, 0x11, 0x01, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, + 0x33, 0x11, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, + 0x31, 0x25, 0x33, 0x03, 0x23, 0x11, 0x23, 0x03, 0x03, 0x21, 0x01, 0x01, + 0x21, 0x13, 0x13, 0x21, 0x01, 0x03, 0xe1, 0x86, 0x10, 0xe6, 0x4c, 0xfc, + 0xf8, 0xfe, 0xd7, 0x01, 0x79, 0xfe, 0xa0, 0x01, 0x21, 0xed, 0xe5, 0x01, + 0x21, 0xfe, 0xa2, 0xd5, 0xfe, 0x10, 0x01, 0x1b, 0x01, 0xe1, 0xfe, 0x1f, + 0x02, 0x9e, 0x02, 0x7d, 0xfe, 0x39, 0x01, 0xc7, 0xfd, 0x83, 0x00, 0x01, + 0xff, 0xff, 0xfe, 0xe5, 0x04, 0x5c, 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x49, + 0xb9, 0x00, 0x09, 0x01, 0xf5, 0xb2, 0x0c, 0x0c, 0x08, 0xb8, 0x01, 0xf6, + 0xb5, 0x05, 0x05, 0x0e, 0x02, 0x02, 0x03, 0xb8, 0x01, 0xf7, 0xb5, 0x0e, + 0x0f, 0x0f, 0x0e, 0x08, 0x04, 0xb8, 0x01, 0x10, 0x40, 0x0b, 0x0d, 0x0b, + 0x0b, 0x0d, 0x43, 0x03, 0x0f, 0xda, 0x06, 0x00, 0x41, 0x00, 0x3f, 0x32, + 0xed, 0x32, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, + 0x10, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, + 0x31, 0x03, 0x21, 0x15, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x03, + 0x23, 0x11, 0x21, 0x11, 0x23, 0x01, 0x02, 0x4a, 0xb6, 0x01, 0x5f, 0xf7, + 0x73, 0x10, 0xe6, 0xfd, 0x35, 0x9c, 0x05, 0x1b, 0xc3, 0xfc, 0x7f, 0x04, + 0x44, 0xfb, 0xbc, 0xfe, 0x0e, 0x01, 0x1b, 0x04, 0x58, 0x00, 0x00, 0x01, + 0x00, 0x50, 0xfe, 0xe5, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x17, 0x00, 0x40, + 0xb9, 0x00, 0x01, 0x01, 0xf5, 0xb2, 0x04, 0x04, 0x17, 0xb8, 0x01, 0xf7, + 0xb3, 0x06, 0x16, 0x16, 0x0e, 0xb8, 0x01, 0xf7, 0x40, 0x0a, 0x0d, 0x16, + 0x41, 0x06, 0xe0, 0x15, 0x15, 0x0d, 0x41, 0x00, 0xb8, 0x01, 0x0e, 0xb4, + 0x05, 0x03, 0x03, 0x05, 0x43, 0x00, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x3f, + 0x39, 0x2f, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x33, + 0x2f, 0xed, 0x30, 0x31, 0x25, 0x33, 0x03, 0x23, 0x11, 0x23, 0x11, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x33, + 0x11, 0x33, 0x04, 0x00, 0x66, 0x10, 0xe6, 0x68, 0xd9, 0x82, 0xb6, 0x73, + 0x34, 0xf8, 0x17, 0x38, 0x5b, 0x45, 0xd1, 0xf8, 0xd5, 0xfe, 0x10, 0x01, + 0x1b, 0x01, 0xf8, 0x3e, 0x78, 0xaf, 0x70, 0x01, 0x4e, 0xfe, 0xc6, 0x47, + 0x6b, 0x48, 0x24, 0x02, 0x58, 0x00, 0x00, 0x01, 0x00, 0x50, 0x00, 0x00, + 0x04, 0x0a, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x46, 0xb1, 0x1b, 0x12, 0xb8, + 0x01, 0x5d, 0xb5, 0x00, 0x11, 0x11, 0x08, 0x19, 0x16, 0xb8, 0x01, 0xf7, + 0xb2, 0x15, 0x15, 0x09, 0xb8, 0x01, 0xf7, 0xb3, 0x08, 0x01, 0x00, 0x1a, + 0xb8, 0x01, 0x0b, 0x40, 0x0a, 0x13, 0x11, 0x10, 0x10, 0x08, 0x17, 0x43, + 0x15, 0x08, 0x41, 0x00, 0x3f, 0x33, 0x3f, 0x12, 0x39, 0x2f, 0xcd, 0x33, + 0xfd, 0xcd, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x35, 0x26, 0x27, 0x2e, 0x02, + 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x16, 0x17, 0x16, 0x17, 0x35, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x23, 0x11, 0x23, 0x15, 0x01, 0xf0, 0x5c, + 0x43, 0x5a, 0x72, 0x35, 0xf8, 0x18, 0x37, 0x2d, 0x13, 0x19, 0x9f, 0x83, + 0xf8, 0xf8, 0x83, 0x01, 0x42, 0xb8, 0x06, 0x18, 0x20, 0x76, 0xad, 0x72, + 0x01, 0x4e, 0xfe, 0xc6, 0x49, 0x6a, 0x45, 0x13, 0x09, 0x05, 0xfe, 0xfe, + 0xfd, 0x02, 0x58, 0xfa, 0xe5, 0x01, 0xf8, 0xb6, 0x00, 0x01, 0x00, 0x5c, + 0x00, 0x00, 0x04, 0x16, 0x05, 0x1b, 0x00, 0x17, 0x00, 0x2d, 0xb9, 0x00, + 0x0a, 0x01, 0xf7, 0xb3, 0x0b, 0x0b, 0x15, 0x00, 0xb8, 0x01, 0xf7, 0x40, + 0x0c, 0x17, 0x14, 0x11, 0xe0, 0x01, 0x04, 0x04, 0x16, 0x0a, 0x43, 0x00, + 0x41, 0x00, 0x3f, 0x3f, 0x33, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0xed, 0x32, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x11, 0x23, 0x11, 0x01, 0x54, 0x37, 0x79, 0x4b, 0x79, 0xad, + 0x6e, 0x33, 0xf8, 0x17, 0x38, 0x5b, 0x45, 0x37, 0x6e, 0x36, 0xf8, 0x05, + 0x1b, 0xfd, 0xe6, 0x12, 0x16, 0x3e, 0x78, 0xaf, 0x70, 0xfe, 0xac, 0x01, + 0x40, 0x47, 0x6b, 0x48, 0x24, 0x17, 0x11, 0xfd, 0xca, 0x05, 0x1b, 0x00, + 0x00, 0x02, 0xff, 0xc0, 0xff, 0xee, 0x04, 0x42, 0x05, 0x2a, 0x00, 0x35, + 0x00, 0x40, 0x00, 0x5a, 0xb1, 0x04, 0x40, 0xb8, 0x02, 0x02, 0xb3, 0x2a, + 0x0e, 0x0e, 0x00, 0xb8, 0x02, 0x00, 0xb4, 0x36, 0x36, 0x2a, 0x22, 0x25, + 0xb8, 0x01, 0x85, 0x40, 0x16, 0x21, 0x1e, 0x1e, 0x19, 0x2a, 0x19, 0x04, + 0xd2, 0x40, 0x2a, 0x40, 0x22, 0x22, 0x40, 0x40, 0x09, 0x3b, 0xdf, 0x2f, + 0x42, 0x0e, 0x09, 0xb8, 0x01, 0x16, 0xb2, 0x0f, 0x14, 0x44, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x11, 0x33, + 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x14, + 0x06, 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x36, + 0x37, 0x33, 0x06, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x3e, 0x03, 0x33, + 0x32, 0x1e, 0x04, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x04, 0x42, 0x02, 0x02, 0xfd, 0xa3, 0x12, 0x38, 0x68, 0x56, 0x35, 0x56, + 0x4a, 0x42, 0x21, 0x28, 0x49, 0x4e, 0x59, 0x39, 0x91, 0xba, 0x6e, 0x31, + 0x07, 0x44, 0x6b, 0x49, 0x27, 0x10, 0x09, 0xca, 0x0b, 0x11, 0x0b, 0x16, + 0x20, 0x15, 0x04, 0x2b, 0x64, 0xaa, 0x82, 0x5c, 0x86, 0x5d, 0x3b, 0x20, + 0x0c, 0xfe, 0xfe, 0x09, 0x22, 0x46, 0x3d, 0x36, 0x44, 0x28, 0x0f, 0x02, + 0xa1, 0x30, 0x41, 0x1c, 0x51, 0x7b, 0x53, 0x2a, 0x0e, 0x17, 0x1b, 0x0d, + 0xe4, 0x10, 0x1a, 0x12, 0x0a, 0x4a, 0x8c, 0xcc, 0x82, 0x05, 0x24, 0x46, + 0x6b, 0x4d, 0x1d, 0x45, 0x1b, 0x1c, 0x42, 0x1c, 0x13, 0x23, 0x1c, 0x12, + 0x77, 0xd7, 0xa4, 0x60, 0x2c, 0x52, 0x75, 0x90, 0xa9, 0x34, 0x64, 0x98, + 0x66, 0x34, 0x34, 0x66, 0x98, 0x64, 0x00, 0x02, 0xff, 0xc0, 0xfe, 0xe5, + 0x04, 0x42, 0x05, 0x2a, 0x00, 0x38, 0x00, 0x43, 0x00, 0x6d, 0xb1, 0x04, + 0x43, 0xbb, 0x02, 0x02, 0x00, 0x2d, 0x00, 0x14, 0x01, 0xce, 0xb6, 0x17, + 0x17, 0x39, 0x2d, 0x0e, 0x0e, 0x00, 0xb8, 0x02, 0x00, 0xb4, 0x39, 0x39, + 0x2d, 0x25, 0x28, 0xb8, 0x01, 0x85, 0x40, 0x18, 0x24, 0x21, 0x21, 0x1c, + 0x2d, 0x1c, 0x04, 0xd2, 0x43, 0x2d, 0x43, 0x25, 0x25, 0x43, 0x43, 0x09, + 0x3e, 0xdf, 0x32, 0x42, 0x15, 0x49, 0x0e, 0x09, 0xb8, 0x01, 0x16, 0xb3, + 0x17, 0x0f, 0x14, 0x44, 0x00, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x3f, 0x3f, + 0xed, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x14, 0x06, 0x07, 0x21, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, + 0x15, 0x0e, 0x03, 0x07, 0x03, 0x23, 0x11, 0x2e, 0x03, 0x27, 0x2e, 0x03, + 0x35, 0x34, 0x36, 0x37, 0x33, 0x06, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x04, 0x05, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x04, 0x42, 0x02, 0x02, 0xfd, 0xa3, 0x12, 0x38, 0x68, + 0x56, 0x35, 0x56, 0x4a, 0x42, 0x21, 0x20, 0x3b, 0x3c, 0x42, 0x26, 0x09, + 0xe6, 0x60, 0x7d, 0x4d, 0x24, 0x06, 0x44, 0x6b, 0x49, 0x27, 0x10, 0x09, + 0xca, 0x0b, 0x11, 0x0b, 0x16, 0x20, 0x15, 0x04, 0x2b, 0x64, 0xaa, 0x82, + 0x5c, 0x86, 0x5d, 0x3b, 0x20, 0x0c, 0xfe, 0xfe, 0x09, 0x22, 0x46, 0x3d, + 0x36, 0x44, 0x28, 0x0f, 0x02, 0xa1, 0x30, 0x41, 0x1c, 0x51, 0x7b, 0x53, + 0x2a, 0x0e, 0x17, 0x1b, 0x0d, 0xe4, 0x0d, 0x15, 0x11, 0x0f, 0x01, 0xfe, + 0xf4, 0x01, 0x17, 0x13, 0x59, 0x88, 0xb4, 0x6e, 0x05, 0x24, 0x46, 0x6b, + 0x4d, 0x1d, 0x45, 0x1b, 0x1c, 0x42, 0x1c, 0x13, 0x23, 0x1c, 0x12, 0x77, + 0xd7, 0xa4, 0x60, 0x2c, 0x52, 0x75, 0x90, 0xa9, 0x34, 0x64, 0x98, 0x66, + 0x34, 0x34, 0x66, 0x98, 0x64, 0x00, 0xff, 0xff, 0x00, 0x96, 0x00, 0x00, + 0x03, 0xd0, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xf8, 0x00, 0x00, 0x04, 0x6f, 0x06, 0x77, 0x02, 0x26, 0x01, 0xe6, + 0x00, 0x00, 0x00, 0x06, 0x02, 0x4a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x81, + 0xfe, 0x66, 0x04, 0x2c, 0x05, 0x1b, 0x00, 0x25, 0x00, 0x49, 0xb3, 0x05, + 0x06, 0x06, 0x0c, 0xb8, 0x01, 0xf5, 0xb7, 0x1f, 0x1f, 0x02, 0x15, 0x15, + 0x07, 0x00, 0x03, 0xb8, 0x01, 0xf9, 0xb2, 0x02, 0x15, 0x1a, 0xb8, 0x01, + 0x13, 0x40, 0x0f, 0x14, 0x11, 0x45, 0x05, 0x41, 0x25, 0xe0, 0x07, 0x04, + 0x04, 0x01, 0x02, 0x41, 0x01, 0x43, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, + 0x33, 0xed, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x32, + 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x21, + 0x23, 0x11, 0x33, 0x11, 0x01, 0x21, 0x01, 0x1e, 0x03, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x01, 0x7b, 0xfa, 0xfa, 0x01, 0x87, + 0x01, 0x29, 0xfe, 0x53, 0x5b, 0x9e, 0x73, 0x42, 0x33, 0x71, 0xb1, 0x7e, + 0x39, 0x5b, 0x26, 0x16, 0x22, 0x1f, 0x1e, 0x13, 0x50, 0x69, 0x3d, 0x19, + 0x3d, 0x66, 0x87, 0x4b, 0x46, 0x05, 0x1b, 0xfd, 0xc1, 0x02, 0x3f, 0xfd, + 0xba, 0x08, 0x43, 0x7f, 0xbe, 0x82, 0x87, 0xe1, 0xa3, 0x5a, 0x07, 0x08, + 0xd9, 0x05, 0x05, 0x03, 0x01, 0x31, 0x63, 0x94, 0x62, 0x64, 0x80, 0x48, + 0x1b, 0x00, 0x00, 0x01, 0x00, 0x08, 0xfe, 0xbd, 0x04, 0x5a, 0x05, 0x1b, + 0x00, 0x19, 0x00, 0x44, 0xb9, 0x00, 0x07, 0x01, 0xc3, 0xb4, 0x18, 0x18, + 0x0e, 0x01, 0x00, 0xb8, 0x01, 0xf7, 0xb6, 0x04, 0x03, 0x05, 0x05, 0x1b, + 0x0e, 0x07, 0xb8, 0x01, 0x12, 0xb2, 0x19, 0x41, 0x10, 0xb8, 0x01, 0x1e, + 0xb4, 0x0d, 0x44, 0x03, 0x03, 0x00, 0xb8, 0x01, 0x0e, 0xb1, 0x05, 0x43, + 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0x11, + 0x33, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, + 0x25, 0x33, 0x03, 0x23, 0x13, 0x23, 0x11, 0x23, 0x02, 0x02, 0x0e, 0x03, + 0x27, 0x37, 0x16, 0x3e, 0x05, 0x12, 0x37, 0x21, 0x03, 0xf8, 0x62, 0x7a, + 0xdf, 0x53, 0x54, 0xf0, 0x09, 0x28, 0x3f, 0x56, 0x6e, 0x85, 0x4f, 0x0c, + 0x1d, 0x34, 0x2f, 0x29, 0x24, 0x1d, 0x19, 0x12, 0x06, 0x02, 0xc9, 0xd5, + 0xfd, 0xe8, 0x01, 0x43, 0x04, 0x42, 0xff, 0x00, 0xfe, 0x8e, 0xfe, 0x95, + 0x46, 0x03, 0x14, 0xd5, 0x02, 0x06, 0x1f, 0x3e, 0x6b, 0xa0, 0xe3, 0x01, + 0x2d, 0xc2, 0x00, 0x01, 0x00, 0x5f, 0xfe, 0x65, 0x04, 0x07, 0x05, 0x1b, + 0x00, 0x19, 0x00, 0x42, 0xb3, 0x0e, 0x04, 0x04, 0x12, 0xbb, 0x01, 0xf5, + 0x00, 0x11, 0x00, 0x17, 0x01, 0xf5, 0xb6, 0x15, 0x0c, 0x0c, 0x11, 0x15, + 0x41, 0x0e, 0xb8, 0x01, 0x0e, 0x40, 0x09, 0x13, 0x13, 0x10, 0x11, 0x41, + 0x10, 0x43, 0x04, 0x07, 0xb8, 0x01, 0x11, 0xb1, 0x00, 0x45, 0x00, 0x3f, + 0xed, 0x32, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x3f, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, 0x01, 0x22, + 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x21, + 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, 0x14, 0x06, 0x02, + 0x23, 0x28, 0x58, 0x30, 0x2a, 0x49, 0x21, 0x50, 0x67, 0x3c, 0x17, 0xfe, + 0x44, 0xf6, 0xf6, 0x01, 0xbc, 0xf6, 0xee, 0xfe, 0x65, 0x08, 0x0b, 0xd7, + 0x0b, 0x07, 0x1d, 0x43, 0x6c, 0x4f, 0x01, 0xe1, 0xfd, 0xc7, 0x05, 0x1b, + 0xfd, 0xf3, 0x02, 0x0d, 0xfb, 0x14, 0xea, 0xe0, 0x00, 0x01, 0x00, 0x5f, + 0xfe, 0xbd, 0x04, 0x68, 0x05, 0x1b, 0x00, 0x0f, 0x00, 0x4c, 0xb7, 0x0e, + 0x0f, 0x0f, 0x0a, 0x0d, 0x00, 0x00, 0x0b, 0xb8, 0x01, 0xf5, 0xb4, 0x02, + 0x0a, 0x0a, 0x03, 0x07, 0xb8, 0x01, 0xf5, 0xb3, 0x06, 0x0a, 0x41, 0x03, + 0xb8, 0x01, 0x0e, 0x40, 0x0a, 0x08, 0x08, 0x05, 0x06, 0x41, 0x0f, 0x0f, + 0x05, 0x43, 0x0c, 0xb8, 0x01, 0x0e, 0xb1, 0x01, 0x43, 0x00, 0x3f, 0xed, + 0x3f, 0x33, 0x2f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x3f, 0x01, 0x2f, 0xed, + 0x32, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x30, 0x31, 0x21, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, + 0x11, 0x33, 0x11, 0x33, 0x03, 0x23, 0x03, 0x62, 0x51, 0xfe, 0x44, 0xf6, + 0xf6, 0x01, 0xbc, 0xf6, 0x61, 0x7a, 0xdf, 0x02, 0x39, 0xfd, 0xc7, 0x05, + 0x1b, 0xfd, 0xf3, 0x02, 0x0d, 0xfb, 0xba, 0xfd, 0xe8, 0x00, 0x00, 0x01, + 0x00, 0x50, 0xfe, 0xe5, 0x04, 0x0a, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x40, + 0xb9, 0x00, 0x00, 0x01, 0xf5, 0xb3, 0x03, 0x03, 0x0e, 0x1a, 0xb8, 0x01, + 0xf7, 0xb2, 0x05, 0x19, 0x0f, 0xb8, 0x01, 0xf7, 0x40, 0x0a, 0x0e, 0x19, + 0x41, 0x05, 0xe0, 0x18, 0x18, 0x0e, 0x41, 0x03, 0xb8, 0x01, 0x0e, 0xb4, + 0x00, 0x02, 0x02, 0x00, 0x43, 0x00, 0x3f, 0x32, 0x2f, 0x10, 0xed, 0x3f, + 0x39, 0x2f, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x2f, 0x33, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x30, 0x31, 0x21, 0x11, 0x23, 0x03, 0x21, 0x11, 0x22, 0x22, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x32, 0x33, 0x11, 0x33, 0x11, 0x02, 0xf4, 0xe6, 0x10, 0x01, 0x14, + 0x36, 0x76, 0x37, 0x84, 0xb4, 0x72, 0x35, 0xf8, 0x18, 0x37, 0x5a, 0x46, + 0x35, 0x6f, 0x37, 0xf8, 0xfe, 0xe5, 0x01, 0xf0, 0x01, 0x23, 0x40, 0x76, + 0xad, 0x72, 0x01, 0x4e, 0xfe, 0xc6, 0x49, 0x6a, 0x45, 0x26, 0x02, 0x58, + 0xfa, 0xe5, 0x00, 0x01, 0x00, 0x2d, 0xfe, 0xbd, 0x04, 0xb4, 0x05, 0x1b, + 0x00, 0x16, 0x00, 0x65, 0x40, 0x1b, 0x0a, 0x09, 0x13, 0x13, 0x16, 0x11, + 0x0c, 0x10, 0x10, 0x0f, 0x01, 0x04, 0x04, 0x05, 0x02, 0x03, 0x03, 0x05, + 0x15, 0x07, 0x16, 0x16, 0x00, 0x00, 0x05, 0x05, 0x0e, 0xb8, 0x01, 0x9c, + 0x40, 0x10, 0x0f, 0x07, 0x15, 0x41, 0x13, 0x0a, 0x0a, 0x0e, 0x0c, 0x10, + 0x41, 0x03, 0x03, 0x0e, 0x43, 0x00, 0xb8, 0x01, 0x0e, 0xb1, 0x05, 0x43, + 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x2f, 0x3f, 0x33, 0x12, 0x39, 0x2f, 0x33, + 0x3f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x33, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, + 0x33, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x25, 0x33, 0x03, + 0x23, 0x13, 0x23, 0x03, 0x03, 0x07, 0x03, 0x23, 0x03, 0x27, 0x03, 0x03, + 0x23, 0x13, 0x21, 0x13, 0x17, 0x37, 0x13, 0x21, 0x04, 0x2e, 0x86, 0x7a, + 0xdf, 0x53, 0x4e, 0x18, 0x09, 0x3f, 0x91, 0x9a, 0x83, 0x37, 0x07, 0x16, + 0xd1, 0x40, 0x01, 0x16, 0x73, 0x37, 0x37, 0x79, 0x01, 0x1b, 0xd5, 0xfd, + 0xe8, 0x01, 0x43, 0x02, 0xe3, 0x01, 0x27, 0xc8, 0xfe, 0x43, 0x01, 0xbd, + 0xc8, 0xfe, 0xdf, 0xfd, 0x17, 0x05, 0x1b, 0xfe, 0x8d, 0xd1, 0xc5, 0x01, + 0x7f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x8f, + 0x02, 0x26, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x62, 0x06, 0x9a, 0x02, 0x26, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xd7, 0x00, 0x00, 0x04, 0x3d, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x28, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xcb, 0x06, 0x8f, + 0x02, 0x26, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4c, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x2a, 0xff, 0xee, 0x04, 0x3c, 0x05, 0x2d, 0x00, 0x1d, + 0x00, 0x28, 0x00, 0x3d, 0xb1, 0x15, 0x06, 0xbb, 0x02, 0x22, 0x00, 0x23, + 0x00, 0x24, 0x02, 0x07, 0x40, 0x0a, 0x14, 0x1d, 0x1d, 0x14, 0x24, 0xe0, + 0x14, 0x14, 0x03, 0x1e, 0xb8, 0x01, 0x12, 0xb3, 0x0b, 0x44, 0x1d, 0x18, + 0xb8, 0x01, 0x16, 0xb2, 0x00, 0x03, 0x42, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x2f, 0xed, 0x33, 0x30, 0x31, 0x13, 0x36, 0x36, 0x33, 0x20, 0x00, 0x11, + 0x14, 0x02, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x04, 0x35, 0x34, 0x37, 0x21, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x01, 0x32, 0x3e, 0x02, 0x37, + 0x21, 0x14, 0x1e, 0x02, 0x61, 0x58, 0xc6, 0x7b, 0x01, 0x19, 0x01, 0x29, + 0x4c, 0x8b, 0xc3, 0x77, 0x3c, 0x7b, 0x72, 0x63, 0x4a, 0x2b, 0x03, 0x02, + 0xfd, 0x05, 0xad, 0xa5, 0x3d, 0x6a, 0x5c, 0x4e, 0x21, 0x01, 0xca, 0x38, + 0x57, 0x3f, 0x27, 0x08, 0xfe, 0x0f, 0x27, 0x42, 0x59, 0x04, 0xe3, 0x23, + 0x27, 0xfe, 0xb6, 0xfe, 0xbf, 0xa5, 0xfe, 0xff, 0xb1, 0x5d, 0x14, 0x36, + 0x5d, 0x91, 0xcc, 0x8a, 0x35, 0x39, 0xb6, 0xb0, 0x0f, 0x17, 0x1e, 0x0f, + 0xfc, 0xca, 0x31, 0x5a, 0x7f, 0x4e, 0x69, 0x86, 0x4c, 0x1d, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xee, 0x04, 0x3c, 0x06, 0x9a, 0x02, 0x26, 0x09, 0x5f, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, 0xff, 0xf8, + 0x00, 0x00, 0x04, 0x6f, 0x06, 0x9a, 0x02, 0x26, 0x01, 0x48, 0x00, 0x00, + 0x00, 0x06, 0x01, 0xe6, 0x00, 0x00, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xe9, + 0x03, 0xfc, 0x06, 0x9a, 0x02, 0x26, 0x01, 0xe7, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x48, 0xe3, 0x00, 0x00, 0x01, 0x00, 0x5c, 0xff, 0xe9, 0x03, 0xfc, + 0x05, 0x1b, 0x00, 0x24, 0x00, 0x51, 0xb7, 0x15, 0x0e, 0x0e, 0x00, 0x10, + 0x14, 0x14, 0x1c, 0xb8, 0x02, 0x05, 0x40, 0x15, 0x08, 0x08, 0x00, 0x11, + 0x11, 0x00, 0x0f, 0x15, 0xc3, 0x80, 0x0e, 0x90, 0x0e, 0xa0, 0x0e, 0x03, + 0x0e, 0x0e, 0x12, 0x00, 0x03, 0xb8, 0x01, 0x0c, 0xb4, 0x24, 0x21, 0x44, + 0x14, 0x11, 0xb8, 0x01, 0x17, 0xb1, 0x12, 0x41, 0x00, 0x3f, 0xed, 0x32, + 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x5d, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x13, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, 0x21, 0x35, 0x21, 0x15, 0x01, 0x32, + 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x5c, 0x6c, + 0xcf, 0x6d, 0x3b, 0x5a, 0x3c, 0x1f, 0x16, 0x44, 0x7d, 0x67, 0x84, 0x01, + 0x51, 0xfd, 0xfc, 0x03, 0x47, 0xfe, 0x86, 0x53, 0x81, 0x60, 0x42, 0x28, + 0x12, 0x43, 0x83, 0xc3, 0x7f, 0x73, 0xc3, 0x62, 0x01, 0x00, 0x21, 0x25, + 0x20, 0x38, 0x4a, 0x2a, 0x2a, 0x4f, 0x3d, 0x24, 0xbc, 0x01, 0x21, 0xde, + 0xcf, 0xfe, 0xc4, 0x21, 0x37, 0x4b, 0x53, 0x59, 0x2a, 0x65, 0x9f, 0x6f, + 0x3b, 0x1d, 0x1f, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, + 0x06, 0x64, 0x02, 0x26, 0x01, 0xe8, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4a, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x09, 0x06, 0x9a, + 0x02, 0x26, 0x01, 0xe8, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x9a, 0x02, 0x26, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x25, 0xff, 0xe9, 0x04, 0x41, 0x05, 0x31, 0x00, 0x0f, 0x00, 0x16, + 0x00, 0x1d, 0x00, 0x39, 0xb1, 0x1a, 0x14, 0xb8, 0x02, 0x04, 0xb2, 0x08, + 0x1b, 0x00, 0xb8, 0x02, 0x04, 0x40, 0x09, 0x13, 0x13, 0x08, 0x14, 0xda, + 0x1a, 0x1a, 0x10, 0x17, 0xb8, 0x01, 0x17, 0xb2, 0x0d, 0x42, 0x10, 0xb8, + 0x01, 0x17, 0xb1, 0x05, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x10, 0xed, 0x32, 0x30, + 0x31, 0x01, 0x14, 0x02, 0x06, 0x06, 0x23, 0x20, 0x00, 0x11, 0x34, 0x12, + 0x36, 0x36, 0x33, 0x20, 0x00, 0x01, 0x32, 0x36, 0x37, 0x21, 0x16, 0x16, + 0x13, 0x22, 0x06, 0x07, 0x21, 0x26, 0x26, 0x04, 0x41, 0x53, 0x91, 0xc3, + 0x6f, 0xfe, 0xfe, 0xfe, 0xfc, 0x53, 0x91, 0xc3, 0x6f, 0x01, 0x02, 0x01, + 0x04, 0xfd, 0xf2, 0x81, 0x7d, 0x0a, 0xfd, 0xf0, 0x0a, 0x7e, 0x80, 0x7a, + 0x7e, 0x0e, 0x02, 0x0b, 0x0f, 0x7c, 0x02, 0x93, 0xb2, 0xfe, 0xfe, 0xa6, + 0x50, 0x01, 0x57, 0x01, 0x47, 0xb2, 0x01, 0x02, 0xa6, 0x50, 0xfe, 0xaa, + 0xfc, 0xec, 0xc2, 0xb6, 0xbe, 0xba, 0x03, 0x8c, 0xae, 0xa3, 0xab, 0xa6, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x41, 0x06, 0x9a, 0x02, 0x26, + 0x09, 0x67, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, + 0xff, 0xc9, 0xff, 0xe9, 0x04, 0x17, 0x06, 0x9a, 0x02, 0x26, 0x01, 0xfd, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0xc9, 0x00, 0xff, 0xff, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x58, 0x06, 0x64, 0x02, 0x26, 0x01, 0xf3, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x4a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, + 0x04, 0x58, 0x06, 0x9a, 0x02, 0x26, 0x01, 0xf3, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x48, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x9c, + 0x06, 0x87, 0x02, 0x26, 0x01, 0xf3, 0x00, 0x00, 0x00, 0x06, 0x01, 0x51, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x06, 0x9a, + 0x02, 0x26, 0x01, 0xf7, 0x00, 0x00, 0x00, 0x06, 0x01, 0x48, 0x00, 0x00, + 0x00, 0x01, 0x00, 0xc5, 0xfe, 0xe5, 0x03, 0xe7, 0x05, 0x1b, 0x00, 0x09, + 0x00, 0x2f, 0xb1, 0x04, 0x07, 0xb8, 0x01, 0xf5, 0xb2, 0x00, 0x00, 0x05, + 0xbb, 0x01, 0xf4, 0x00, 0x02, 0x00, 0x05, 0x01, 0x10, 0xb4, 0x02, 0x41, + 0x09, 0x09, 0x06, 0xb8, 0x01, 0x0e, 0xb1, 0x01, 0x43, 0x00, 0x3f, 0xed, + 0x33, 0x2f, 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x2f, 0x30, + 0x31, 0x21, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x03, 0x23, 0x01, + 0xcf, 0xfe, 0xf6, 0x03, 0x22, 0xfd, 0xd3, 0x01, 0x0b, 0x10, 0xe6, 0x05, + 0x1b, 0xd7, 0xfc, 0x91, 0xfe, 0x10, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x2d, 0x06, 0x9a, 0x02, 0x26, 0x01, 0xfb, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfe, 0x5e, 0x03, 0xe7, + 0x05, 0x1b, 0x00, 0x21, 0x00, 0x58, 0xb3, 0x03, 0x15, 0x15, 0x0b, 0xb8, + 0x01, 0x86, 0xb5, 0x1e, 0x1e, 0x09, 0x07, 0x07, 0x05, 0xb8, 0x01, 0xf4, + 0x40, 0x0e, 0x02, 0x20, 0x02, 0x00, 0x00, 0x02, 0x09, 0x21, 0xda, 0x06, + 0x00, 0x00, 0x02, 0x0a, 0xb8, 0x01, 0x17, 0x40, 0x09, 0x1f, 0x43, 0x15, + 0x18, 0xd1, 0x14, 0x11, 0x45, 0x05, 0xb8, 0x01, 0x10, 0xb1, 0x02, 0x41, + 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, + 0x2f, 0x32, 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x2f, 0x31, 0x30, 0x11, 0x33, + 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x33, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x35, 0x21, 0x11, 0x23, 0xc5, 0x03, 0x22, 0xfd, 0xd3, 0x01, + 0x30, 0xfe, 0xd0, 0xdc, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, + 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xfe, 0xf8, 0xc5, 0x03, 0x02, 0x02, + 0x19, 0xd7, 0xfe, 0xbe, 0xc3, 0xfe, 0x9f, 0xfe, 0xbd, 0x63, 0x7c, 0x45, + 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x02, + 0x3f, 0x00, 0x00, 0x01, 0x00, 0x08, 0xfe, 0x5e, 0x04, 0x66, 0x05, 0x1b, + 0x00, 0x1f, 0x00, 0x67, 0xb6, 0x0a, 0x04, 0x01, 0x07, 0x07, 0x09, 0x06, + 0xb8, 0x02, 0x23, 0x40, 0x0b, 0x05, 0x05, 0x20, 0x16, 0x16, 0x0b, 0x00, + 0x00, 0x02, 0x20, 0x08, 0xb8, 0x02, 0x23, 0xb2, 0x09, 0x09, 0x0c, 0xb8, + 0x01, 0x86, 0x40, 0x14, 0x1f, 0x16, 0x19, 0xd1, 0x15, 0x12, 0x45, 0x08, + 0x41, 0x0a, 0x07, 0x01, 0x04, 0x04, 0x02, 0x05, 0x41, 0x02, 0x43, 0x0b, + 0xb8, 0x01, 0x17, 0xb1, 0x00, 0x43, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x12, + 0x39, 0x11, 0x33, 0x33, 0x33, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0xed, 0x32, 0x2f, 0xed, 0x10, 0xc4, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, 0x21, + 0x03, 0x03, 0x21, 0x01, 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, 0x01, 0x33, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x35, 0x03, 0x25, 0xfc, 0xf8, 0xfe, 0xd7, 0x01, + 0x79, 0xfe, 0xa0, 0x01, 0x21, 0xed, 0xe5, 0x01, 0x21, 0xfe, 0xa2, 0x01, + 0x05, 0x8a, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, + 0x16, 0x23, 0x1a, 0x0e, 0x01, 0xe1, 0xfe, 0x1f, 0x02, 0x9e, 0x02, 0x7d, + 0xfe, 0x39, 0x01, 0xc7, 0xfd, 0x83, 0xfe, 0x40, 0xfe, 0xbd, 0x63, 0x7c, + 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, + 0x00, 0x01, 0x00, 0x08, 0x00, 0x00, 0x04, 0x5e, 0x05, 0x1b, 0x00, 0x11, + 0x00, 0x62, 0x40, 0x0c, 0x0a, 0x07, 0x07, 0x04, 0x10, 0x01, 0x01, 0x0d, + 0x04, 0x04, 0x02, 0x05, 0xb8, 0x02, 0x23, 0xb7, 0x06, 0x06, 0x0c, 0x13, + 0x08, 0x08, 0x13, 0x03, 0xb8, 0x02, 0x23, 0x40, 0x18, 0x02, 0x02, 0x0e, + 0x12, 0x00, 0x00, 0x12, 0x0d, 0x0a, 0x11, 0xda, 0x07, 0x04, 0x00, 0x00, + 0x02, 0x0e, 0x43, 0x0c, 0x43, 0x05, 0x41, 0x02, 0x41, 0x00, 0x3f, 0x3f, + 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x11, 0x01, + 0x33, 0x2f, 0x10, 0xc4, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x10, 0xc4, + 0x33, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x11, 0x33, 0x30, 0x31, 0x13, 0x21, 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, + 0x21, 0x15, 0x21, 0x01, 0x21, 0x03, 0x03, 0x21, 0x01, 0x21, 0x1e, 0x01, + 0x2b, 0xfe, 0xd8, 0x01, 0x21, 0xed, 0xe5, 0x01, 0x21, 0xfe, 0xd9, 0x01, + 0x3a, 0xfe, 0xc6, 0x01, 0x50, 0xfe, 0xc7, 0xfc, 0xf8, 0xfe, 0xd7, 0x01, + 0x43, 0xfe, 0xd3, 0x03, 0x02, 0x02, 0x19, 0xfe, 0x39, 0x01, 0xc7, 0xfd, + 0xe7, 0xc3, 0xfd, 0xc1, 0x01, 0xe1, 0xfe, 0x1f, 0x02, 0x3f, 0x00, 0x02, + 0x00, 0x3b, 0x00, 0x00, 0x03, 0xe5, 0x05, 0x1b, 0x00, 0x0c, 0x00, 0x19, + 0x00, 0x2a, 0xb9, 0x00, 0x14, 0x02, 0x05, 0xb2, 0x07, 0x0e, 0x02, 0xb8, + 0x01, 0xf3, 0x40, 0x0c, 0x01, 0x0f, 0xdc, 0x0c, 0x0c, 0x01, 0x19, 0xdc, + 0x04, 0x43, 0x01, 0x41, 0x00, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, + 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, 0x33, 0x11, + 0x21, 0x20, 0x24, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x13, 0x11, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x02, 0xf1, 0xf4, 0xfe, 0x5e, + 0xfe, 0xfc, 0xfe, 0xfc, 0x38, 0x77, 0xb8, 0x80, 0xcf, 0xac, 0x46, 0x63, + 0x3d, 0x1c, 0x1c, 0x3a, 0x5b, 0x3f, 0x03, 0x27, 0x01, 0xf4, 0xfa, 0xe5, + 0xcf, 0xd1, 0x54, 0x90, 0x68, 0x3b, 0xfd, 0x9e, 0x01, 0x9d, 0x1d, 0x34, + 0x49, 0x2c, 0x2c, 0x4e, 0x3b, 0x22, 0x00, 0x02, 0x00, 0x2c, 0xff, 0xec, + 0x04, 0x34, 0x05, 0x1b, 0x00, 0x20, 0x00, 0x2f, 0x00, 0x42, 0xb1, 0x13, + 0x01, 0xb8, 0x01, 0xc7, 0xb4, 0x2f, 0x00, 0x00, 0x1a, 0x0c, 0xb8, 0x01, + 0xc0, 0xb2, 0x0b, 0x0b, 0x27, 0xb8, 0x01, 0xce, 0x40, 0x10, 0x1a, 0x22, + 0xdd, 0x0b, 0x1f, 0x1f, 0x00, 0x05, 0x2a, 0xde, 0x13, 0x10, 0x15, 0x44, + 0x00, 0x41, 0x00, 0x3f, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, + 0x33, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, + 0xed, 0x39, 0x30, 0x31, 0x01, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x06, 0x23, 0x22, 0x26, 0x27, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, 0x15, 0x23, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x01, + 0xd6, 0xe6, 0x29, 0x26, 0x13, 0x1c, 0x13, 0x09, 0xde, 0x90, 0xa3, 0x4d, + 0x5f, 0x1c, 0x50, 0x83, 0x54, 0x77, 0x4c, 0x23, 0x2a, 0x5f, 0x97, 0x6d, + 0x1d, 0x2f, 0x2d, 0x37, 0x1e, 0x0a, 0x22, 0x30, 0x16, 0x26, 0x1d, 0x10, + 0x05, 0x1b, 0xfc, 0x24, 0x4e, 0x3c, 0x0c, 0x1f, 0x33, 0x27, 0x01, 0xee, + 0xfd, 0xdf, 0x8e, 0x8d, 0x2d, 0x21, 0x4e, 0x33, 0x64, 0x92, 0x5f, 0x57, + 0x9d, 0x78, 0x47, 0xc8, 0x1a, 0x37, 0x59, 0x3f, 0x64, 0x5d, 0x0e, 0x22, + 0x37, 0x2a, 0x00, 0x01, 0x00, 0x2e, 0xff, 0xf4, 0x04, 0x2a, 0x05, 0x31, + 0x00, 0x3c, 0x00, 0x47, 0xb9, 0x00, 0x1c, 0x01, 0xff, 0xb2, 0x0b, 0x0b, + 0x24, 0xb8, 0x01, 0xf9, 0xb3, 0x00, 0x00, 0x13, 0x31, 0xb8, 0x01, 0xc7, + 0x40, 0x15, 0x30, 0x05, 0x05, 0x13, 0x1f, 0x04, 0xd5, 0x30, 0x05, 0x05, + 0x17, 0x2a, 0xd8, 0x37, 0x44, 0x13, 0x10, 0xdb, 0x14, 0x17, 0x42, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xc4, 0xed, 0x39, + 0x01, 0x2f, 0x33, 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x01, 0x34, 0x26, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0xaf, 0x7f, 0x8c, 0x4a, + 0x46, 0x36, 0x54, 0x3b, 0x1f, 0x1d, 0x31, 0x42, 0x24, 0x29, 0x53, 0x26, + 0x30, 0x77, 0x3c, 0x53, 0x89, 0x61, 0x36, 0x66, 0x71, 0x35, 0x5c, 0x44, + 0x27, 0x0d, 0x16, 0x1c, 0x0e, 0x0f, 0x1d, 0x15, 0x0d, 0xe6, 0x1d, 0x47, + 0x77, 0x5a, 0x5a, 0x7c, 0x4e, 0x22, 0x01, 0x90, 0x5e, 0x54, 0xbc, 0x0f, + 0x2a, 0x4c, 0x3c, 0x31, 0x43, 0x29, 0x11, 0x11, 0x0e, 0xc0, 0x11, 0x12, + 0x2b, 0x55, 0x80, 0x54, 0x6a, 0x9a, 0x25, 0x09, 0x26, 0x41, 0x60, 0x44, + 0x77, 0x22, 0x2d, 0x1b, 0x0b, 0x0b, 0x1b, 0x2f, 0x24, 0x01, 0xf9, 0xfd, + 0xff, 0x47, 0x71, 0x4f, 0x2a, 0x29, 0x4b, 0x67, 0x3e, 0x00, 0x00, 0x01, + 0x00, 0x2d, 0xfe, 0xe5, 0x04, 0x47, 0x05, 0x31, 0x00, 0x2c, 0x00, 0x4e, + 0xb3, 0x0d, 0x0d, 0x1b, 0x24, 0xb8, 0x01, 0xff, 0xb3, 0x13, 0x13, 0x27, + 0x00, 0xb8, 0x02, 0x00, 0xb2, 0x05, 0x05, 0x01, 0xb8, 0x01, 0xf5, 0x40, + 0x0e, 0x04, 0x1b, 0x18, 0xdc, 0x1f, 0x27, 0x0c, 0xd5, 0x0d, 0x0d, 0x1c, + 0x1f, 0x42, 0x00, 0xb8, 0x01, 0x0e, 0xb4, 0x05, 0x03, 0x03, 0x05, 0x43, + 0x00, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x3f, 0x33, 0x39, 0x2f, 0xed, 0x39, + 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x33, 0x2f, + 0xed, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x25, 0x21, 0x03, 0x23, 0x11, 0x21, + 0x11, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x03, 0x36, 0x01, + 0x11, 0x10, 0xe6, 0xfe, 0xe3, 0x20, 0x40, 0x61, 0x41, 0xca, 0xbb, 0x3d, + 0x57, 0x38, 0x1a, 0x1f, 0x35, 0x48, 0x2a, 0x43, 0x93, 0x40, 0x4c, 0x9f, + 0x4d, 0x55, 0x99, 0x73, 0x43, 0x5b, 0x66, 0x31, 0x57, 0x41, 0x25, 0xd5, + 0xfe, 0x10, 0x01, 0x1b, 0x01, 0x83, 0x2a, 0x47, 0x32, 0x1c, 0xbc, 0x1f, + 0x36, 0x47, 0x27, 0x30, 0x41, 0x28, 0x11, 0x23, 0x19, 0xcd, 0x1a, 0x1b, + 0x25, 0x52, 0x82, 0x5d, 0x6f, 0x91, 0x23, 0x08, 0x2e, 0x4c, 0x6b, 0x44, + 0x00, 0x01, 0x00, 0x01, 0xff, 0xf4, 0x04, 0x2f, 0x05, 0x1b, 0x00, 0x2e, + 0x00, 0x43, 0xb9, 0x00, 0x01, 0x01, 0xa0, 0xb3, 0x15, 0x15, 0x2f, 0x17, + 0xb8, 0x01, 0xa4, 0xb3, 0x2e, 0x2e, 0x0a, 0x24, 0xb8, 0x01, 0xa0, 0xb5, + 0x21, 0x0a, 0x22, 0x22, 0x1c, 0x01, 0xb8, 0x01, 0x12, 0xb4, 0x15, 0x41, + 0x1c, 0x29, 0x0e, 0xb8, 0x01, 0x19, 0xb1, 0x08, 0x43, 0x00, 0x3f, 0xed, + 0x33, 0xc4, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x01, 0x2f, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x23, 0x06, + 0x02, 0x0e, 0x03, 0x23, 0x22, 0x27, 0x37, 0x16, 0x32, 0x33, 0x32, 0x3e, + 0x03, 0x12, 0x37, 0x21, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x01, 0xff, 0x82, 0x05, 0x0c, 0x15, 0x24, 0x3a, 0x55, 0x3c, 0x2e, 0x39, + 0x0c, 0x07, 0x0c, 0x05, 0x1f, 0x28, 0x17, 0x0c, 0x08, 0x07, 0x08, 0x02, + 0x35, 0x07, 0x0f, 0x16, 0x10, 0x12, 0x18, 0x10, 0x07, 0xd7, 0x15, 0x3e, + 0x6f, 0x5a, 0x5a, 0x6d, 0x3a, 0x13, 0x04, 0x42, 0xd1, 0xfe, 0xbc, 0xf3, + 0xa8, 0x68, 0x2e, 0x0c, 0xd5, 0x01, 0x19, 0x4f, 0x92, 0xf1, 0x01, 0x60, + 0xf4, 0xfc, 0x0e, 0x22, 0x2d, 0x1b, 0x0b, 0x0b, 0x1b, 0x2f, 0x24, 0x01, + 0xf9, 0xfd, 0xff, 0x47, 0x71, 0x4f, 0x2a, 0x2a, 0x4b, 0x68, 0x3e, 0x00, + 0x00, 0x01, 0x00, 0x49, 0xff, 0xf4, 0x04, 0x1d, 0x05, 0x1b, 0x00, 0x21, + 0x00, 0x43, 0xbc, 0x00, 0x16, 0x01, 0xa0, 0x00, 0x15, 0x00, 0x09, 0x01, + 0xa4, 0xb3, 0x00, 0x08, 0x01, 0x05, 0xbb, 0x01, 0xa4, 0x00, 0x04, 0x00, + 0x01, 0x01, 0x0e, 0x40, 0x10, 0x06, 0x15, 0x06, 0x15, 0x06, 0x04, 0x0f, + 0xd8, 0x1c, 0x44, 0x08, 0x41, 0x04, 0x41, 0x03, 0x43, 0x00, 0x3f, 0x3f, + 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x01, 0x2f, + 0xed, 0x32, 0x2f, 0x33, 0xed, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x23, 0x11, + 0x23, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x01, 0xed, 0xc8, 0xdc, 0xdc, 0xc8, 0xdc, 0x07, 0x0f, + 0x16, 0x10, 0x12, 0x18, 0x10, 0x07, 0xd7, 0x15, 0x3e, 0x6f, 0x5a, 0x5a, + 0x6d, 0x3a, 0x13, 0x02, 0x39, 0xfd, 0xc7, 0x05, 0x1b, 0xfd, 0xf3, 0x02, + 0x0d, 0xfc, 0x0e, 0x22, 0x2d, 0x1b, 0x0b, 0x0b, 0x1b, 0x2f, 0x24, 0x01, + 0xf9, 0xfd, 0xff, 0x47, 0x71, 0x4f, 0x2a, 0x2a, 0x4b, 0x68, 0x3e, 0x00, + 0x00, 0x01, 0x00, 0x2f, 0xff, 0xe9, 0x04, 0x2f, 0x05, 0x31, 0x00, 0x2b, + 0x00, 0x41, 0xb2, 0x18, 0x18, 0x03, 0xb8, 0x01, 0xce, 0xb5, 0x2b, 0x01, + 0x01, 0x2b, 0x2b, 0x20, 0xb8, 0x02, 0x04, 0xb2, 0x0f, 0x18, 0x1b, 0xb8, + 0x01, 0x15, 0x40, 0x09, 0x14, 0x00, 0xe0, 0x01, 0x01, 0x17, 0x14, 0x42, + 0x25, 0xb8, 0x01, 0x15, 0xb1, 0x0a, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0x33, + 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x39, + 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x35, 0x21, 0x11, 0x14, + 0x0e, 0x04, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x02, 0x5e, 0x01, 0xd1, + 0x2a, 0x46, 0x5d, 0x67, 0x69, 0x30, 0x80, 0xcf, 0x94, 0x50, 0x55, 0xa3, + 0xed, 0x98, 0x5a, 0x9d, 0x55, 0x4b, 0xa4, 0x5b, 0x5c, 0x8d, 0x5f, 0x31, + 0x25, 0x4a, 0x71, 0x4d, 0x34, 0x52, 0x39, 0x1f, 0x01, 0xe3, 0xcb, 0xfe, + 0xfa, 0x66, 0x92, 0x63, 0x3b, 0x1f, 0x0a, 0x54, 0xa6, 0xf6, 0xa2, 0xa3, + 0x01, 0x02, 0xb3, 0x5e, 0x1a, 0x1a, 0xf3, 0x23, 0x28, 0x3f, 0x78, 0xab, + 0x6c, 0x68, 0xa7, 0x75, 0x3e, 0x15, 0x37, 0x5e, 0x48, 0x2c, 0x00, 0x01, + 0x00, 0x31, 0xff, 0xf4, 0x03, 0xef, 0x05, 0x1b, 0x00, 0x1d, 0x00, 0x34, + 0xb9, 0x00, 0x12, 0x01, 0xcc, 0xb3, 0x11, 0x04, 0x04, 0x05, 0xb8, 0x01, + 0xd1, 0x40, 0x10, 0x00, 0x01, 0x01, 0x00, 0x11, 0x11, 0x02, 0x0b, 0xd8, + 0x18, 0x44, 0x05, 0x01, 0xe2, 0x02, 0x41, 0x00, 0x3f, 0xed, 0x32, 0x3f, + 0xed, 0x11, 0x39, 0x2f, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, + 0x2f, 0xed, 0x30, 0x31, 0x01, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0x80, 0xfe, 0xb1, 0x03, 0xbe, + 0xfe, 0x83, 0x0a, 0x13, 0x1a, 0x10, 0x11, 0x1c, 0x13, 0x0a, 0xec, 0x1d, + 0x47, 0x77, 0x5a, 0x5a, 0x78, 0x49, 0x1e, 0x04, 0x4e, 0xcd, 0xcd, 0xfc, + 0xdb, 0x22, 0x2d, 0x1b, 0x0b, 0x0b, 0x1b, 0x2f, 0x24, 0x01, 0xf9, 0xfe, + 0x06, 0x48, 0x74, 0x51, 0x2b, 0x28, 0x4e, 0x74, 0x4d, 0x00, 0x00, 0x01, + 0x00, 0x6a, 0xff, 0xe9, 0x04, 0x0a, 0x05, 0x31, 0x00, 0x3a, 0x00, 0x45, + 0xb7, 0x2a, 0x2a, 0x3a, 0x19, 0x19, 0x3a, 0x0b, 0x30, 0xbb, 0x02, 0x05, + 0x00, 0x06, 0x00, 0x23, 0x01, 0xff, 0x40, 0x14, 0x10, 0x10, 0x06, 0x0b, + 0x2b, 0xd5, 0x28, 0x28, 0x35, 0x19, 0x1e, 0xdb, 0x18, 0x13, 0x42, 0x3a, + 0x35, 0xe1, 0x03, 0x44, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x12, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, + 0x32, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x30, 0x31, 0x25, 0x06, 0x06, + 0x23, 0x20, 0x24, 0x35, 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x21, 0x15, 0x21, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x04, 0x0a, 0x62, + 0xc3, 0x73, 0xfe, 0xff, 0xfe, 0xf9, 0x27, 0x43, 0x58, 0x32, 0x33, 0x49, + 0x2f, 0x16, 0xe8, 0xe9, 0x2c, 0x61, 0x62, 0x60, 0x2a, 0x36, 0x5b, 0x54, + 0x53, 0x2e, 0x3e, 0x57, 0x36, 0x19, 0x1a, 0x38, 0x57, 0x3d, 0x01, 0x29, + 0xfe, 0xc8, 0x41, 0x61, 0x40, 0x20, 0x2f, 0x4f, 0x69, 0x39, 0x34, 0x6c, + 0x63, 0x56, 0x1f, 0x25, 0x1f, 0x1d, 0xc5, 0xc3, 0x43, 0x6e, 0x53, 0x37, + 0x0c, 0x12, 0x38, 0x46, 0x52, 0x2b, 0xbb, 0xb1, 0x07, 0x0d, 0x14, 0x0d, + 0xcd, 0x0f, 0x17, 0x10, 0x08, 0x1a, 0x2e, 0x3f, 0x25, 0x27, 0x47, 0x36, + 0x1f, 0xbc, 0x1c, 0x32, 0x47, 0x2a, 0x3c, 0x4f, 0x2f, 0x14, 0x0d, 0x14, + 0x19, 0x0b, 0x00, 0x01, 0x00, 0x08, 0xfe, 0x5e, 0x04, 0x66, 0x05, 0x1b, + 0x00, 0x29, 0x00, 0x51, 0xb9, 0x00, 0x22, 0x01, 0xc3, 0xb4, 0x09, 0x09, + 0x1f, 0x2a, 0x0b, 0xb8, 0x01, 0xf7, 0xb5, 0x20, 0x20, 0x1f, 0x16, 0x16, + 0x0c, 0xbb, 0x01, 0x86, 0x00, 0x1f, 0x00, 0x00, 0x01, 0x1d, 0xb2, 0x28, + 0x43, 0x0b, 0xb8, 0x01, 0x17, 0x40, 0x09, 0x20, 0x43, 0x16, 0x19, 0xd1, + 0x15, 0x12, 0x45, 0x22, 0xb8, 0x01, 0x12, 0xb1, 0x09, 0x41, 0x00, 0x3f, + 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x2f, 0x12, 0x39, 0x2f, 0xed, 0x30, + 0x31, 0x37, 0x16, 0x3e, 0x05, 0x12, 0x37, 0x21, 0x11, 0x33, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x35, 0x23, 0x11, 0x23, 0x02, 0x02, 0x0e, 0x03, 0x27, 0x14, + 0x1d, 0x34, 0x2f, 0x29, 0x24, 0x1d, 0x19, 0x12, 0x06, 0x02, 0x83, 0xb4, + 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, + 0x1a, 0x0e, 0xe3, 0xaa, 0x09, 0x28, 0x3f, 0x56, 0x6e, 0x85, 0x4f, 0xdd, + 0x02, 0x06, 0x1f, 0x3e, 0x6b, 0xa0, 0xe3, 0x01, 0x2d, 0xc2, 0xfb, 0xc3, + 0xfe, 0xbd, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, + 0x22, 0x3b, 0x30, 0x54, 0x04, 0x42, 0xff, 0x00, 0xfe, 0x8e, 0xfe, 0x95, + 0x46, 0x03, 0x14, 0x00, 0x00, 0x02, 0x00, 0x7e, 0xff, 0x00, 0x04, 0x5c, + 0x05, 0x85, 0x00, 0x0f, 0x00, 0x23, 0x00, 0x61, 0xb9, 0x00, 0x23, 0x01, + 0xd4, 0xb2, 0x10, 0x10, 0x19, 0xb8, 0x01, 0xd4, 0xb3, 0x18, 0x18, 0x08, + 0x0b, 0xb8, 0x01, 0xe3, 0xb2, 0x0a, 0x01, 0x00, 0xb8, 0x01, 0xe3, 0xb3, + 0x0e, 0x04, 0x05, 0x02, 0xb8, 0x01, 0xa8, 0x40, 0x13, 0x40, 0x03, 0x06, + 0x0e, 0x4f, 0x23, 0x18, 0x80, 0x1e, 0xac, 0x13, 0x0a, 0x4f, 0x0c, 0x09, + 0x51, 0x03, 0x03, 0x00, 0xb8, 0x01, 0x04, 0xb1, 0x05, 0x51, 0x00, 0x3f, + 0xed, 0x33, 0x2f, 0x3f, 0x33, 0x3f, 0xde, 0xed, 0x1a, 0xcd, 0x32, 0x3f, + 0x33, 0x01, 0x2f, 0x1a, 0xed, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x2f, 0xed, + 0x32, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x33, 0x03, + 0x23, 0x13, 0x23, 0x11, 0x23, 0x01, 0x23, 0x11, 0x33, 0x11, 0x33, 0x01, + 0x33, 0x03, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x33, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x03, 0xe8, 0x74, 0xa5, 0xd3, 0x67, + 0x53, 0x02, 0xfe, 0x6f, 0xe7, 0xf0, 0x02, 0x01, 0x90, 0xe8, 0x5f, 0xbb, + 0x9f, 0x5c, 0x80, 0x51, 0x25, 0xdf, 0x0d, 0x1c, 0x2c, 0x21, 0x20, 0x2e, + 0x1c, 0x0e, 0xc9, 0xfe, 0x37, 0x01, 0x00, 0x02, 0x7b, 0xfd, 0x85, 0x03, + 0xf8, 0xfd, 0x85, 0x02, 0x7b, 0x01, 0x8d, 0x89, 0x98, 0x2c, 0x4e, 0x69, + 0x3e, 0x21, 0x37, 0x26, 0x15, 0x18, 0x28, 0x37, 0x1c, 0x00, 0x00, 0x02, + 0x00, 0x00, 0xff, 0xee, 0x04, 0x37, 0x05, 0xaf, 0x00, 0x1a, 0x00, 0x29, + 0x00, 0x51, 0xb3, 0x00, 0x00, 0x19, 0x0a, 0xb8, 0x02, 0x18, 0xb4, 0x1e, + 0x1e, 0x26, 0x01, 0x19, 0xb8, 0x01, 0xe1, 0x40, 0x1b, 0x16, 0x14, 0x14, + 0x13, 0x16, 0x01, 0x14, 0xf3, 0x19, 0x15, 0x15, 0x18, 0x26, 0x23, 0xf8, + 0x02, 0x05, 0x05, 0x17, 0x18, 0x6c, 0x27, 0x1b, 0xf8, 0x12, 0x0f, 0x52, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x10, + 0xed, 0x32, 0x32, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x30, 0x31, 0x01, + 0x21, 0x11, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x11, 0x23, 0x35, 0x33, 0x35, 0x37, 0x15, 0x21, + 0x03, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x11, + 0x16, 0x16, 0x02, 0x90, 0xfe, 0xe5, 0x32, 0x66, 0x3f, 0x88, 0xb9, 0x72, + 0x38, 0x40, 0x7d, 0xb9, 0x9a, 0x52, 0xf4, 0x5a, 0x87, 0x87, 0xee, 0x01, + 0x1b, 0x43, 0x78, 0x70, 0x18, 0x38, 0x63, 0x5c, 0x31, 0x5a, 0x26, 0x28, + 0x66, 0x04, 0x30, 0xfe, 0x59, 0x03, 0x03, 0x33, 0x5a, 0x75, 0x41, 0x4d, + 0x80, 0x5d, 0x34, 0x0d, 0x0b, 0x04, 0x2a, 0xb6, 0x87, 0x42, 0xc9, 0xfb, + 0xc4, 0x58, 0x3e, 0x20, 0x34, 0x27, 0x18, 0x04, 0x04, 0xfe, 0xed, 0x06, + 0x08, 0x00, 0xff, 0xff, 0x00, 0x8b, 0xfe, 0x73, 0x04, 0x1d, 0x04, 0x0e, + 0x02, 0x26, 0x00, 0x92, 0x00, 0x00, 0x01, 0x07, 0x0a, 0x61, 0x00, 0x30, + 0xfe, 0x1d, 0x00, 0x0f, 0xb1, 0x02, 0x29, 0xb8, 0xff, 0xc0, 0xb3, 0x0a, + 0x0a, 0x48, 0x29, 0x00, 0x11, 0x2b, 0x35, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0x00, 0x03, 0xe1, 0x03, 0xf8, 0x00, 0x0d, 0x00, 0x39, 0xb4, 0x07, + 0x07, 0x03, 0x09, 0x05, 0xb8, 0x02, 0x0b, 0x40, 0x10, 0x02, 0x0c, 0x02, + 0x00, 0x00, 0x02, 0x09, 0x0d, 0xfa, 0x06, 0x00, 0x00, 0x02, 0x0a, 0x51, + 0x05, 0xb8, 0x01, 0x31, 0xb1, 0x02, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0x12, + 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x10, + 0xed, 0x32, 0x2f, 0x39, 0x2f, 0x31, 0x30, 0x13, 0x33, 0x11, 0x21, 0x15, + 0x21, 0x15, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x23, 0x0a, 0xc3, 0x03, + 0x14, 0xfd, 0xe0, 0x01, 0x0b, 0xfe, 0xf5, 0xf4, 0xc3, 0x02, 0x61, 0x01, + 0x97, 0xd1, 0xc6, 0xbe, 0xfe, 0x5d, 0x01, 0xa3, 0x00, 0x01, 0x00, 0x87, + 0xfe, 0x68, 0x04, 0x1f, 0x03, 0xf8, 0x00, 0x25, 0x00, 0x4a, 0xb3, 0x0f, + 0x00, 0x00, 0x14, 0xb8, 0x02, 0x0b, 0xb3, 0x11, 0x13, 0x13, 0x1d, 0xb8, + 0x01, 0xdf, 0xb4, 0x06, 0x06, 0x11, 0x00, 0x03, 0xb8, 0x01, 0x06, 0x40, + 0x0b, 0x25, 0x22, 0x57, 0x0e, 0x0b, 0xff, 0x15, 0x18, 0x18, 0x10, 0x14, + 0xb8, 0x01, 0x31, 0xb3, 0x11, 0x4f, 0x10, 0x51, 0x00, 0x3f, 0x3f, 0xed, + 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, + 0x05, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x11, 0x23, 0x11, 0x21, 0x15, 0x21, 0x15, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x01, + 0xa5, 0x29, 0x44, 0x2d, 0x70, 0x84, 0x32, 0x52, 0x68, 0x37, 0x2a, 0x47, + 0x24, 0xf4, 0x03, 0x14, 0xfd, 0xe0, 0x2e, 0x4f, 0x2a, 0x70, 0xbb, 0x87, + 0x4b, 0x3f, 0x77, 0xad, 0x6f, 0x32, 0x4b, 0x2b, 0xbe, 0x08, 0x07, 0x9d, + 0x9c, 0x68, 0x7d, 0x43, 0x15, 0x03, 0x05, 0xfe, 0x5f, 0x03, 0xf8, 0xd2, + 0xc5, 0x05, 0x06, 0x2a, 0x71, 0xc8, 0x9e, 0x7d, 0xc0, 0x83, 0x43, 0x07, + 0x06, 0x00, 0x00, 0x01, 0xff, 0xfa, 0xff, 0x00, 0x04, 0x64, 0x03, 0xf8, + 0x00, 0x15, 0x00, 0x70, 0xb3, 0x11, 0x02, 0x02, 0x0d, 0xb8, 0x01, 0xac, + 0xb6, 0x08, 0x05, 0x05, 0x0c, 0x0c, 0x0f, 0x0a, 0xb8, 0x01, 0xe1, 0xb4, + 0x09, 0x09, 0x07, 0x12, 0x13, 0xbb, 0x01, 0x8b, 0x00, 0x00, 0x00, 0x10, + 0x01, 0xe0, 0xb4, 0x0f, 0x0f, 0x00, 0x00, 0x06, 0xb8, 0x02, 0x15, 0x40, + 0x12, 0x07, 0x11, 0x05, 0x02, 0x08, 0x08, 0x01, 0x0f, 0x0c, 0x09, 0x4f, + 0x07, 0x51, 0x04, 0x51, 0x15, 0x15, 0x12, 0xb8, 0x01, 0x08, 0xb1, 0x01, + 0x51, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0x12, + 0x39, 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, + 0xed, 0x10, 0xed, 0x32, 0x11, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, + 0x11, 0x33, 0xed, 0x32, 0x11, 0x33, 0x31, 0x30, 0x21, 0x23, 0x03, 0x11, + 0x23, 0x11, 0x03, 0x23, 0x13, 0x03, 0x33, 0x13, 0x11, 0x33, 0x11, 0x13, + 0x33, 0x03, 0x13, 0x33, 0x03, 0x23, 0x03, 0xa0, 0x45, 0xc5, 0xd9, 0xc5, + 0xfe, 0xf2, 0xe2, 0xee, 0xc5, 0xd9, 0xc5, 0xed, 0xe1, 0x92, 0x6b, 0x0f, + 0xb5, 0x02, 0x00, 0xfe, 0x00, 0x02, 0x00, 0xfe, 0x00, 0x02, 0x14, 0x01, + 0xe4, 0xfe, 0x1c, 0x01, 0xe4, 0xfe, 0x1c, 0x01, 0xe4, 0xfe, 0x1c, 0xfe, + 0xb9, 0xfe, 0x33, 0x00, 0xff, 0xff, 0x00, 0x69, 0xfe, 0x6b, 0x03, 0xfc, + 0x04, 0x0e, 0x02, 0x26, 0x02, 0x1b, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x62, + 0xff, 0x00, 0x00, 0x01, 0x00, 0x96, 0xff, 0x00, 0x04, 0x3a, 0x03, 0xf8, + 0x00, 0x0e, 0x00, 0x46, 0xb2, 0x0a, 0x03, 0x06, 0xb8, 0x01, 0xe3, 0xb5, + 0x05, 0x08, 0x09, 0x09, 0x0b, 0x0c, 0xb8, 0x01, 0xd8, 0x40, 0x11, 0x01, + 0x00, 0x00, 0x05, 0x08, 0x4f, 0x07, 0x02, 0x0a, 0x0a, 0x04, 0x05, 0x4f, + 0x04, 0x51, 0x0e, 0x0b, 0xb8, 0x01, 0x08, 0xb1, 0x01, 0x51, 0x00, 0x3f, + 0xed, 0x33, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x3f, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x32, + 0x30, 0x31, 0x21, 0x23, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, 0x21, + 0x01, 0x01, 0x33, 0x03, 0x23, 0x03, 0x56, 0x52, 0xfe, 0x82, 0xf0, 0xf0, + 0x01, 0x68, 0x01, 0x2d, 0xfe, 0x64, 0x01, 0x19, 0xa2, 0x0c, 0xd8, 0x01, + 0xfc, 0xfe, 0x04, 0x03, 0xf8, 0xfe, 0x52, 0x01, 0xae, 0xfe, 0x31, 0xfe, + 0xa4, 0xfe, 0x33, 0x00, 0x00, 0x01, 0x00, 0x96, 0x00, 0x00, 0x04, 0x3d, + 0x03, 0xf8, 0x00, 0x14, 0x00, 0x65, 0x40, 0x0a, 0x0e, 0x0d, 0x0d, 0x11, + 0x0f, 0x0c, 0x12, 0x12, 0x0a, 0x14, 0xb8, 0x01, 0x5e, 0x40, 0x0a, 0x00, + 0x00, 0x09, 0x09, 0x05, 0x10, 0x11, 0x11, 0x03, 0x06, 0xb8, 0x01, 0xe3, + 0x40, 0x19, 0x05, 0x0f, 0x07, 0x13, 0x00, 0x00, 0x02, 0xf8, 0x07, 0x0b, + 0x07, 0x1f, 0x09, 0x01, 0x09, 0x09, 0x07, 0x07, 0x03, 0x0d, 0x05, 0x4f, + 0x11, 0x03, 0x51, 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x2f, 0x33, + 0x2f, 0x5d, 0x11, 0x33, 0x10, 0xed, 0x32, 0x2f, 0x32, 0x11, 0x39, 0x01, + 0x2f, 0xed, 0x32, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0xed, + 0x32, 0x32, 0x11, 0x33, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x25, + 0x35, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x35, 0x33, 0x15, 0x33, + 0x13, 0x21, 0x03, 0x01, 0x21, 0x03, 0x23, 0x15, 0x01, 0xa9, 0x23, 0xf0, + 0xf0, 0x23, 0x95, 0x18, 0xa4, 0x01, 0x21, 0xe8, 0x01, 0x0a, 0xfe, 0xd3, + 0xb8, 0x1a, 0xe9, 0xdc, 0xfe, 0x3b, 0x03, 0xf8, 0xfe, 0x89, 0xce, 0xce, + 0x01, 0x77, 0xfe, 0x31, 0xfd, 0xd7, 0x01, 0xc5, 0xdc, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x3d, 0x05, 0x85, 0x00, 0x12, 0x00, 0x59, + 0xb6, 0x11, 0x09, 0x09, 0x0e, 0x0c, 0x0c, 0x02, 0xb8, 0x01, 0xe3, 0x40, + 0x25, 0x03, 0x10, 0x0f, 0x0f, 0x12, 0x00, 0x00, 0x08, 0x03, 0x05, 0x05, + 0x03, 0x0d, 0x05, 0xf9, 0x0a, 0x20, 0x06, 0x30, 0x06, 0x02, 0x06, 0x06, + 0x08, 0x0f, 0x4f, 0x0e, 0x01, 0x11, 0x11, 0x03, 0x08, 0x53, 0x03, 0x51, + 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x3f, + 0x12, 0x39, 0x2f, 0x5d, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x10, 0xed, 0x32, 0x2f, 0x32, + 0x32, 0x11, 0x33, 0x31, 0x30, 0x21, 0x01, 0x11, 0x23, 0x11, 0x23, 0x35, + 0x33, 0x35, 0x33, 0x15, 0x33, 0x15, 0x23, 0x11, 0x01, 0x21, 0x01, 0x01, + 0x03, 0x04, 0xfe, 0x82, 0xf0, 0x96, 0x96, 0xf0, 0xcf, 0xcf, 0x01, 0x68, + 0x01, 0x2d, 0xfe, 0x64, 0x01, 0xbe, 0x01, 0xfc, 0xfe, 0x04, 0x04, 0x5e, + 0xb6, 0x71, 0x71, 0xb6, 0xfd, 0xec, 0x01, 0xae, 0xfe, 0x31, 0xfd, 0xd7, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3d, 0x03, 0xf8, 0x00, 0x0c, + 0x00, 0x3d, 0xb2, 0x0b, 0x01, 0x07, 0xb8, 0x01, 0xe3, 0x40, 0x18, 0x04, + 0x0a, 0x09, 0x09, 0x0c, 0x00, 0x00, 0x04, 0x05, 0x05, 0x04, 0x0b, 0x01, + 0x08, 0x08, 0x00, 0x09, 0x05, 0xf9, 0x06, 0x4f, 0x03, 0x00, 0x51, 0x00, + 0x3f, 0x32, 0x3f, 0xed, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x32, 0x32, 0x11, 0x33, 0x10, 0xed, 0x32, + 0x32, 0x30, 0x31, 0x21, 0x01, 0x11, 0x23, 0x11, 0x23, 0x35, 0x21, 0x11, + 0x01, 0x21, 0x01, 0x01, 0x03, 0x04, 0xfe, 0x96, 0xf0, 0xaa, 0x01, 0x9a, + 0x01, 0x54, 0x01, 0x2d, 0xfe, 0x71, 0x01, 0xb1, 0x01, 0xfc, 0xfe, 0x04, + 0x03, 0x3b, 0xbd, 0xfe, 0x52, 0x01, 0xae, 0xfe, 0x31, 0xfd, 0xd7, 0x00, + 0x00, 0x01, 0x00, 0x7f, 0xff, 0x00, 0x04, 0x54, 0x03, 0xf8, 0x00, 0x0f, + 0x00, 0x45, 0xb9, 0x00, 0x0d, 0x01, 0xe1, 0xb2, 0x00, 0x00, 0x0b, 0xb8, + 0x01, 0xe2, 0xb3, 0x02, 0x0a, 0x03, 0x07, 0xb8, 0x01, 0xe3, 0xb3, 0x06, + 0x0a, 0x4f, 0x03, 0xb8, 0x01, 0x0a, 0xb6, 0x08, 0x08, 0x06, 0x4f, 0x05, + 0x51, 0x0c, 0xb8, 0x01, 0x08, 0xb4, 0x01, 0x0f, 0x0f, 0x01, 0x51, 0x00, + 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x3f, 0x3f, 0x39, 0x2f, 0xed, 0x3f, 0x01, + 0x2f, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x21, + 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, 0x11, + 0x33, 0x03, 0x23, 0x03, 0x66, 0x6c, 0xfe, 0x75, 0xf0, 0xf0, 0x01, 0x8b, + 0xef, 0x6b, 0x0c, 0xe2, 0x01, 0xac, 0xfe, 0x54, 0x03, 0xf8, 0xfe, 0x83, + 0x01, 0x7d, 0xfc, 0xd5, 0xfe, 0x33, 0x00, 0x01, 0x00, 0x7f, 0x00, 0x00, + 0x04, 0x66, 0x03, 0xf8, 0x00, 0x0d, 0x00, 0x36, 0xb2, 0x0b, 0x0b, 0x0c, + 0xb8, 0x01, 0xe2, 0xb3, 0x01, 0x09, 0x02, 0x06, 0xbb, 0x01, 0xe3, 0x00, + 0x05, 0x00, 0x02, 0x01, 0x0a, 0x40, 0x0a, 0x07, 0x07, 0x00, 0x0c, 0x09, + 0x05, 0x4f, 0x04, 0x00, 0x51, 0x00, 0x3f, 0x32, 0x3f, 0x33, 0xc4, 0x12, + 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x32, 0x2f, + 0x30, 0x31, 0x21, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, + 0x21, 0x15, 0x23, 0x11, 0x02, 0xc4, 0xfe, 0xab, 0xf0, 0xf0, 0x01, 0x55, + 0x01, 0xa2, 0xb3, 0x01, 0xac, 0xfe, 0x54, 0x03, 0xf8, 0xfe, 0x83, 0x01, + 0x7d, 0xbe, 0xfc, 0xc6, 0x00, 0x01, 0x00, 0x41, 0xfe, 0x6a, 0x04, 0x2d, + 0x03, 0xf8, 0x00, 0x29, 0x00, 0x4d, 0xb3, 0x29, 0x19, 0x19, 0x07, 0xb8, + 0x01, 0xa8, 0xb3, 0x02, 0x02, 0x06, 0x10, 0xb8, 0x01, 0x8e, 0xb2, 0x21, + 0x21, 0x03, 0xb8, 0x01, 0xa8, 0x40, 0x16, 0x06, 0x19, 0x1c, 0xcb, 0x18, + 0x15, 0x57, 0x29, 0x26, 0xc8, 0x08, 0x0b, 0x0b, 0x05, 0x03, 0xf8, 0x06, + 0x4f, 0x05, 0x51, 0x01, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x30, 0x31, 0x21, + 0x23, 0x11, 0x23, 0x11, 0x23, 0x11, 0x21, 0x11, 0x36, 0x36, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x02, 0xa8, 0xd4, 0xbf, 0xd4, 0x02, 0x67, 0x10, 0x35, 0x1d, 0x4a, + 0x6e, 0x48, 0x23, 0x20, 0x49, 0x79, 0x59, 0x16, 0x2e, 0x1a, 0x13, 0x22, + 0x0d, 0x35, 0x3a, 0x1b, 0x04, 0x0e, 0x1e, 0x2e, 0x20, 0x11, 0x26, 0x0b, + 0x03, 0x3c, 0xfc, 0xc4, 0x03, 0xf8, 0xfe, 0x71, 0x02, 0x05, 0x2e, 0x72, + 0xc3, 0x94, 0x99, 0xca, 0x7a, 0x32, 0x03, 0x02, 0xad, 0x03, 0x02, 0x24, + 0x54, 0x89, 0x65, 0x6b, 0x83, 0x47, 0x18, 0x05, 0x02, 0x00, 0x00, 0x02, + 0x00, 0x5c, 0xff, 0xee, 0x04, 0x3d, 0x04, 0x06, 0x00, 0x35, 0x00, 0x44, + 0x00, 0x5a, 0xb9, 0x00, 0x40, 0x01, 0xa7, 0x40, 0x0c, 0x33, 0x0a, 0x23, + 0x03, 0x17, 0x26, 0x17, 0x26, 0x17, 0x12, 0x03, 0x30, 0xb8, 0x01, 0xa7, + 0xb3, 0x36, 0x36, 0x46, 0x1d, 0xb8, 0x02, 0x14, 0x40, 0x09, 0x12, 0x42, + 0x20, 0x3b, 0xf6, 0x2b, 0x2b, 0x20, 0x18, 0xb8, 0x01, 0x34, 0xb2, 0x17, + 0x50, 0x20, 0xb8, 0x01, 0x03, 0xb5, 0x0d, 0x52, 0x00, 0xf2, 0x07, 0x52, + 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x11, + 0x39, 0x01, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x11, 0x39, 0x39, + 0x2f, 0x2f, 0x11, 0x17, 0x39, 0xed, 0x31, 0x30, 0x25, 0x32, 0x36, 0x37, + 0x15, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x15, 0x0e, 0x03, 0x15, 0x14, 0x16, + 0x33, 0x32, 0x32, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x03, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x17, 0x36, 0x36, 0x04, 0x03, 0x0e, + 0x1d, 0x0f, 0x10, 0x2a, 0x0e, 0x41, 0x71, 0x32, 0x35, 0x74, 0x3f, 0x6c, + 0xab, 0x77, 0x3f, 0x3a, 0x75, 0xb1, 0x77, 0x42, 0x55, 0x30, 0x13, 0x75, + 0x65, 0x07, 0x0e, 0x07, 0x2e, 0x2f, 0x1d, 0x42, 0x6b, 0x4f, 0x45, 0x67, + 0x43, 0x21, 0x31, 0x2c, 0x10, 0x22, 0xa7, 0x04, 0x0d, 0x19, 0x14, 0x18, + 0x1c, 0x0f, 0x04, 0x49, 0x1c, 0x20, 0xa3, 0x03, 0x02, 0xb7, 0x02, 0x01, + 0x17, 0x15, 0x17, 0x15, 0x43, 0x82, 0xc0, 0x7d, 0x75, 0xc4, 0x8e, 0x4f, + 0xd5, 0x04, 0x34, 0x54, 0x6f, 0x3e, 0x9d, 0xa5, 0x01, 0x41, 0x9e, 0x5a, + 0x59, 0x90, 0x66, 0x37, 0x34, 0x5e, 0x83, 0x4f, 0x77, 0xb2, 0x41, 0x02, + 0x03, 0x01, 0x55, 0x2a, 0x48, 0x34, 0x1e, 0x1d, 0x36, 0x4c, 0x2f, 0x8f, + 0x57, 0x25, 0x73, 0x00, 0xff, 0xff, 0x00, 0x85, 0xfe, 0x6b, 0x03, 0xc1, + 0x04, 0x08, 0x02, 0x26, 0x00, 0x85, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x62, + 0x3f, 0x00, 0x00, 0x01, 0x00, 0x55, 0xff, 0x00, 0x04, 0x11, 0x03, 0xf8, + 0x00, 0x0b, 0x00, 0x3b, 0xb2, 0x06, 0x06, 0x07, 0xbb, 0x02, 0x0f, 0x00, + 0x02, 0x00, 0x09, 0x01, 0xe1, 0xb7, 0x00, 0x03, 0x03, 0x00, 0x00, 0x02, + 0x07, 0x03, 0xb8, 0x01, 0x08, 0xb4, 0x04, 0x4f, 0x0b, 0x0b, 0x08, 0xb8, + 0x01, 0x08, 0xb1, 0x01, 0x51, 0x00, 0x3f, 0xed, 0x33, 0x2f, 0x3f, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x32, + 0x2f, 0x31, 0x30, 0x21, 0x23, 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x11, + 0x33, 0x03, 0x23, 0x02, 0x4a, 0x93, 0xfe, 0x9e, 0x03, 0xbc, 0xfe, 0x9e, + 0x89, 0x0c, 0xe2, 0x03, 0x2b, 0xcd, 0xcd, 0xfd, 0xa2, 0xfe, 0x33, 0x00, + 0x00, 0x01, 0x00, 0x14, 0xfe, 0x6f, 0x04, 0x50, 0x03, 0xf8, 0x00, 0x08, + 0x00, 0x31, 0x40, 0x09, 0x05, 0x04, 0x04, 0x03, 0x07, 0x08, 0x08, 0x06, + 0x00, 0xb8, 0x02, 0x11, 0x40, 0x0b, 0x03, 0x06, 0x00, 0x03, 0x03, 0x01, + 0x07, 0x04, 0x4f, 0x01, 0x55, 0x00, 0x3f, 0x3f, 0x33, 0x12, 0x39, 0x11, + 0x33, 0x33, 0x01, 0x2f, 0xed, 0x39, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x25, 0x11, 0x23, 0x11, 0x01, 0x21, 0x01, 0x01, 0x21, + 0x02, 0xad, 0xfa, 0xfe, 0x61, 0x01, 0x11, 0x01, 0x0e, 0x01, 0x17, 0x01, + 0x06, 0x02, 0xfe, 0x6d, 0x01, 0x91, 0x03, 0xf8, 0xfd, 0x10, 0x02, 0xf0, + 0x00, 0x01, 0x00, 0x14, 0xfe, 0x6f, 0x04, 0x50, 0x03, 0xf8, 0x00, 0x0e, + 0x00, 0x46, 0x40, 0x09, 0x05, 0x06, 0x06, 0x04, 0x0c, 0x09, 0x09, 0x07, + 0x0b, 0xb8, 0x02, 0x11, 0x40, 0x16, 0x0c, 0x03, 0x02, 0x02, 0x0c, 0x0e, + 0x0e, 0x01, 0x0c, 0x0a, 0x0e, 0xfa, 0x07, 0x04, 0x00, 0x00, 0x02, 0x0b, + 0x55, 0x05, 0x02, 0x4f, 0x00, 0x3f, 0x33, 0x3f, 0x12, 0x39, 0x2f, 0x33, + 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, + 0x10, 0xed, 0x32, 0x32, 0x2f, 0x11, 0x39, 0x32, 0x2f, 0x33, 0x30, 0x31, + 0x33, 0x33, 0x01, 0x21, 0x01, 0x01, 0x21, 0x01, 0x33, 0x15, 0x23, 0x15, + 0x23, 0x35, 0x23, 0xd2, 0xe1, 0xfe, 0x61, 0x01, 0x11, 0x01, 0x0e, 0x01, + 0x17, 0x01, 0x06, 0xfe, 0x5d, 0xe7, 0xe7, 0xfa, 0xe1, 0x03, 0xf8, 0xfd, + 0x14, 0x02, 0xec, 0xfc, 0x08, 0xbe, 0xd3, 0xd3, 0x00, 0x01, 0x00, 0x21, + 0xff, 0x00, 0x04, 0x59, 0x03, 0xf8, 0x00, 0x0f, 0x00, 0x55, 0x40, 0x0f, + 0x0f, 0x09, 0x06, 0x0c, 0x0c, 0x0e, 0x0b, 0x0a, 0x0a, 0x08, 0x0d, 0x0e, + 0x0e, 0x00, 0x01, 0xb8, 0x01, 0xe1, 0x40, 0x14, 0x05, 0x04, 0x04, 0x07, + 0x08, 0x0d, 0x4f, 0x0f, 0x0c, 0x06, 0x09, 0x09, 0x07, 0x0a, 0x4f, 0x07, + 0x51, 0x03, 0x03, 0x00, 0xb8, 0x01, 0x08, 0xb1, 0x04, 0x51, 0x00, 0x3f, + 0xed, 0x33, 0x2f, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x3f, + 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x11, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, 0x25, + 0x33, 0x03, 0x23, 0x11, 0x23, 0x03, 0x03, 0x21, 0x01, 0x01, 0x21, 0x13, + 0x13, 0x21, 0x01, 0x03, 0xb6, 0xa3, 0x0c, 0xe2, 0x52, 0xe8, 0xe9, 0xfe, + 0xd9, 0x01, 0x7d, 0xfe, 0x97, 0x01, 0x29, 0xe4, 0xe1, 0x01, 0x12, 0xfe, + 0xa2, 0xcd, 0xfe, 0x33, 0x01, 0x00, 0x01, 0x56, 0xfe, 0xaa, 0x02, 0x00, + 0x01, 0xf8, 0xfe, 0xb2, 0x01, 0x4e, 0xfe, 0x0a, 0x00, 0x01, 0x00, 0x00, + 0xff, 0x00, 0x04, 0x48, 0x03, 0xf8, 0x00, 0x0f, 0x00, 0x49, 0xb9, 0x00, + 0x09, 0x01, 0xe1, 0xb2, 0x0c, 0x0c, 0x08, 0xb8, 0x01, 0xe3, 0xb5, 0x05, + 0x05, 0x0e, 0x01, 0x01, 0x03, 0xb8, 0x01, 0xe3, 0xb5, 0x0e, 0x0f, 0x0f, + 0x0e, 0x08, 0x04, 0xb8, 0x01, 0x08, 0x40, 0x0b, 0x0d, 0x0b, 0x0b, 0x0d, + 0x51, 0x03, 0x0f, 0xfa, 0x06, 0x00, 0x4f, 0x00, 0x3f, 0x32, 0xed, 0x32, + 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x11, + 0x21, 0x15, 0x23, 0x11, 0x21, 0x11, 0x33, 0x11, 0x33, 0x03, 0x23, 0x11, + 0x21, 0x11, 0x23, 0x02, 0x36, 0xa3, 0x01, 0x4c, 0xf0, 0x79, 0x0d, 0xe1, + 0xfd, 0x49, 0xa3, 0x03, 0xf8, 0xbe, 0xfd, 0x93, 0x03, 0x2b, 0xfc, 0xd5, + 0xfe, 0x33, 0x01, 0x00, 0x03, 0x3a, 0x00, 0x01, 0x00, 0x50, 0xff, 0x00, + 0x04, 0x5e, 0x03, 0xf8, 0x00, 0x1b, 0x00, 0x46, 0xb9, 0x00, 0x19, 0x01, + 0xe1, 0xb2, 0x00, 0x00, 0x17, 0xb8, 0x01, 0xe2, 0xb3, 0x01, 0x16, 0x16, + 0x0c, 0xb8, 0x01, 0xe2, 0xb4, 0x0b, 0x16, 0x4f, 0x02, 0x05, 0xb8, 0x01, + 0x01, 0xb5, 0x15, 0x12, 0x12, 0x0b, 0x4f, 0x18, 0xb8, 0x01, 0x08, 0xb4, + 0x01, 0x1b, 0x1b, 0x01, 0x51, 0x00, 0x3f, 0x33, 0x2f, 0x10, 0xed, 0x3f, + 0x39, 0x2f, 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, + 0xed, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x21, 0x23, 0x11, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x37, 0x11, 0x33, 0x11, 0x33, 0x03, 0x23, 0x03, 0x70, 0x76, 0x36, + 0x72, 0x39, 0x7c, 0xae, 0x6d, 0x32, 0xef, 0x16, 0x35, 0x56, 0x41, 0x37, + 0x6c, 0x36, 0xef, 0x75, 0x0c, 0xe2, 0x01, 0x93, 0x15, 0x14, 0x32, 0x63, + 0x92, 0x5f, 0x01, 0x08, 0xea, 0x39, 0x54, 0x37, 0x1b, 0x16, 0x13, 0x01, + 0xa0, 0xfc, 0xd5, 0xfe, 0x33, 0x00, 0x00, 0x01, 0x00, 0x50, 0x00, 0x00, + 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x20, 0x00, 0x44, 0xb1, 0x06, 0x19, 0xb8, + 0x01, 0x5f, 0xb4, 0x07, 0x18, 0x18, 0x0f, 0x1f, 0xb8, 0x01, 0xe2, 0xb3, + 0x00, 0x1e, 0x1e, 0x10, 0xb8, 0x01, 0xe2, 0xb3, 0x0f, 0x07, 0x05, 0x08, + 0xb8, 0x01, 0x04, 0x40, 0x09, 0x1a, 0x18, 0x17, 0x17, 0x1e, 0x0f, 0x4f, + 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x33, 0x39, 0x2f, 0xcd, 0x33, 0xfd, 0x32, + 0xcd, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x12, 0x39, 0x2f, 0x33, + 0xed, 0x32, 0x30, 0x31, 0x21, 0x11, 0x06, 0x07, 0x06, 0x07, 0x15, 0x23, + 0x35, 0x26, 0x27, 0x2e, 0x02, 0x35, 0x11, 0x33, 0x15, 0x14, 0x16, 0x16, + 0x17, 0x16, 0x17, 0x35, 0x33, 0x15, 0x37, 0x36, 0x37, 0x11, 0x33, 0x11, + 0x02, 0xfa, 0x35, 0x3a, 0x09, 0x09, 0x9f, 0x54, 0x40, 0x57, 0x6d, 0x32, + 0xef, 0x16, 0x35, 0x2b, 0x11, 0x14, 0x9f, 0x15, 0x36, 0x36, 0xef, 0x01, + 0x93, 0x15, 0x0a, 0x02, 0x01, 0xa0, 0x9a, 0x05, 0x13, 0x19, 0x63, 0x92, + 0x5f, 0x01, 0x08, 0xea, 0x39, 0x54, 0x37, 0x0e, 0x05, 0x03, 0xd1, 0xcf, + 0x04, 0x0b, 0x13, 0x01, 0xa0, 0xfc, 0x08, 0x00, 0x00, 0x01, 0x00, 0x7d, + 0x00, 0x00, 0x04, 0x02, 0x03, 0xf8, 0x00, 0x13, 0x00, 0x2b, 0xb9, 0x00, + 0x08, 0x01, 0xe2, 0xb3, 0x09, 0x09, 0x10, 0x00, 0xbb, 0x01, 0xe2, 0x00, + 0x13, 0x00, 0x10, 0x01, 0x01, 0xb6, 0x01, 0x01, 0x12, 0x08, 0x51, 0x00, + 0x4f, 0x00, 0x3f, 0x3f, 0x33, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, + 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x11, 0x23, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x11, 0x01, + 0x6c, 0xcd, 0x7c, 0xae, 0x6d, 0x32, 0xef, 0x16, 0x35, 0x57, 0x40, 0xc5, + 0xef, 0x03, 0xf8, 0xfe, 0x96, 0x32, 0x63, 0x92, 0x5f, 0xfe, 0xf8, 0xea, + 0x39, 0x54, 0x37, 0x1b, 0xfe, 0x37, 0x03, 0xf8, 0x00, 0x02, 0xff, 0xe3, + 0xff, 0xe9, 0x04, 0x32, 0x04, 0x0e, 0x00, 0x08, 0x00, 0x3a, 0x00, 0x63, + 0xb1, 0x08, 0x2a, 0xb8, 0x02, 0x0b, 0xb2, 0x09, 0x12, 0x15, 0xb8, 0x01, + 0x8d, 0xb6, 0x11, 0x0e, 0x0e, 0x09, 0x32, 0x32, 0x24, 0xb8, 0x02, 0x0f, + 0x40, 0x23, 0x00, 0x00, 0x1a, 0x09, 0x09, 0x2a, 0xcd, 0x08, 0x1a, 0x08, + 0x12, 0x12, 0x00, 0x08, 0x01, 0x60, 0x08, 0x70, 0x08, 0xf0, 0x08, 0x03, + 0x08, 0x08, 0x1f, 0x32, 0x2d, 0xff, 0x33, 0x36, 0x52, 0x03, 0xf3, 0x1f, + 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x5d, + 0x71, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x10, 0xed, + 0x32, 0x30, 0x31, 0x01, 0x36, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x07, + 0x2e, 0x03, 0x35, 0x34, 0x36, 0x37, 0x33, 0x06, 0x06, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x21, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x03, 0x3a, 0x02, 0x46, 0x53, 0x2e, 0x3d, 0x26, + 0x14, 0x06, 0xf8, 0x42, 0x6a, 0x4a, 0x27, 0x10, 0x09, 0xca, 0x0b, 0x11, + 0x07, 0x14, 0x23, 0x1d, 0x10, 0x40, 0x66, 0x8e, 0x5f, 0x6c, 0x96, 0x5e, + 0x2a, 0x01, 0x01, 0x03, 0x01, 0xfd, 0xc8, 0x6b, 0x80, 0x22, 0x3f, 0x43, + 0x4b, 0x2d, 0x51, 0x9d, 0x42, 0x71, 0xa5, 0x70, 0x3d, 0x02, 0x6d, 0x79, + 0x72, 0x20, 0x3c, 0x57, 0x38, 0xc6, 0x06, 0x24, 0x46, 0x6a, 0x4c, 0x1d, + 0x45, 0x1b, 0x1c, 0x42, 0x1c, 0x13, 0x23, 0x1c, 0x12, 0x61, 0x9b, 0x6c, + 0x3a, 0x43, 0x78, 0xa6, 0x63, 0x0c, 0x22, 0x26, 0x26, 0x12, 0x86, 0x8c, + 0x05, 0x0c, 0x13, 0x0d, 0xc2, 0x18, 0x1a, 0x41, 0x75, 0xa5, 0x00, 0x02, + 0xff, 0xe3, 0xff, 0x00, 0x04, 0x32, 0x04, 0x0e, 0x00, 0x08, 0x00, 0x3d, + 0x00, 0x76, 0xb1, 0x08, 0x2a, 0xb8, 0x02, 0x0b, 0xb2, 0x09, 0x12, 0x15, + 0xb8, 0x01, 0x8d, 0xb4, 0x11, 0x0e, 0x0e, 0x09, 0x36, 0xb8, 0x01, 0xda, + 0xb6, 0x39, 0x39, 0x00, 0x09, 0x32, 0x32, 0x24, 0xb8, 0x02, 0x0f, 0x40, + 0x26, 0x00, 0x00, 0x1a, 0x09, 0x37, 0x5c, 0x09, 0x2a, 0xcd, 0x08, 0x1a, + 0x08, 0x12, 0x12, 0x00, 0x08, 0x01, 0x60, 0x08, 0x70, 0x08, 0xf0, 0x08, + 0x03, 0x08, 0x08, 0x1f, 0x32, 0x2d, 0xff, 0x39, 0x33, 0x36, 0x52, 0x03, + 0xf3, 0x1f, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x11, + 0x39, 0x2f, 0x5d, 0x71, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, + 0x01, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x12, 0x39, 0x2f, + 0xed, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x31, 0x30, + 0x01, 0x36, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x07, 0x2e, 0x03, 0x35, + 0x34, 0x36, 0x37, 0x33, 0x06, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x3e, + 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x21, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, 0x07, 0x07, 0x23, + 0x35, 0x2e, 0x03, 0x03, 0x3a, 0x02, 0x46, 0x53, 0x2e, 0x3d, 0x26, 0x14, + 0x06, 0xf8, 0x42, 0x6a, 0x4a, 0x27, 0x10, 0x09, 0xca, 0x0b, 0x11, 0x07, + 0x14, 0x23, 0x1d, 0x10, 0x40, 0x66, 0x8e, 0x5f, 0x6c, 0x96, 0x5e, 0x2a, + 0x01, 0x01, 0x03, 0x01, 0xfd, 0xc8, 0x6b, 0x80, 0x22, 0x3f, 0x43, 0x4b, + 0x2d, 0x3a, 0x72, 0x35, 0x05, 0xe2, 0x4a, 0x6d, 0x4b, 0x2b, 0x02, 0x6d, + 0x79, 0x72, 0x20, 0x3c, 0x57, 0x38, 0xc6, 0x06, 0x24, 0x46, 0x6a, 0x4c, + 0x1d, 0x45, 0x1b, 0x1c, 0x42, 0x1c, 0x13, 0x23, 0x1c, 0x12, 0x61, 0x9b, + 0x6c, 0x3a, 0x43, 0x78, 0xa6, 0x63, 0x0c, 0x22, 0x26, 0x26, 0x12, 0x86, + 0x8c, 0x05, 0x0c, 0x13, 0x0d, 0xc2, 0x11, 0x17, 0x05, 0xee, 0xfc, 0x13, + 0x4e, 0x6e, 0x8b, 0x00, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x04, 0x6c, + 0x05, 0x85, 0x02, 0x26, 0x02, 0x1a, 0x00, 0x00, 0x00, 0x06, 0x02, 0x49, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x82, 0xfe, 0x68, 0x04, 0x0b, 0x03, 0xf8, + 0x00, 0x21, 0x00, 0x47, 0xb3, 0x04, 0x05, 0x05, 0x0b, 0xb8, 0x01, 0xdf, + 0xb7, 0x1a, 0x1a, 0x01, 0x21, 0x14, 0x14, 0x06, 0x02, 0xb8, 0x01, 0xe3, + 0xb2, 0x01, 0x14, 0x17, 0xb8, 0x01, 0x06, 0x40, 0x0e, 0x13, 0x10, 0x57, + 0x04, 0x4f, 0x1f, 0xf3, 0x03, 0x06, 0x06, 0x01, 0x4f, 0x00, 0x51, 0x00, + 0x3f, 0x3f, 0x39, 0x2f, 0x33, 0xed, 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, + 0x2f, 0xed, 0x32, 0x32, 0x2f, 0x32, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, + 0x33, 0x30, 0x31, 0x33, 0x11, 0x33, 0x11, 0x01, 0x21, 0x01, 0x1e, 0x03, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x82, 0xf0, 0x01, + 0x68, 0x01, 0x2d, 0xfe, 0x87, 0x5e, 0x8f, 0x60, 0x30, 0x3f, 0x77, 0xad, + 0x6f, 0x32, 0x4b, 0x2b, 0x29, 0x44, 0x2d, 0x70, 0x84, 0x32, 0x52, 0x68, + 0x37, 0x8a, 0x03, 0xf8, 0xfe, 0x52, 0x01, 0xae, 0xfe, 0x5a, 0x08, 0x3f, + 0x76, 0xb1, 0x79, 0x7d, 0xc0, 0x83, 0x43, 0x07, 0x06, 0xcd, 0x08, 0x07, + 0x9d, 0x9c, 0x68, 0x79, 0x3e, 0x11, 0xfe, 0x64, 0x00, 0x01, 0x00, 0x10, + 0xff, 0x00, 0x04, 0x57, 0x03, 0xf8, 0x00, 0x17, 0x00, 0x46, 0xb9, 0x00, + 0x07, 0x01, 0xaf, 0xb4, 0x16, 0x16, 0x0e, 0x01, 0x00, 0xb8, 0x01, 0xe2, + 0xb6, 0x04, 0x03, 0x05, 0x05, 0x19, 0x0e, 0x07, 0xb8, 0x01, 0x08, 0xb2, + 0x17, 0x4f, 0x10, 0xb8, 0x01, 0x3a, 0xb5, 0x0f, 0x0d, 0x51, 0x03, 0x03, + 0x00, 0xb8, 0x01, 0x04, 0xb1, 0x05, 0x51, 0x00, 0x3f, 0xed, 0x33, 0x2f, + 0x3f, 0x33, 0xed, 0x3f, 0xed, 0x01, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x33, + 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x31, 0x30, 0x25, 0x33, 0x03, 0x23, + 0x13, 0x23, 0x11, 0x23, 0x06, 0x02, 0x0e, 0x03, 0x27, 0x37, 0x16, 0x3e, + 0x03, 0x12, 0x37, 0x21, 0x03, 0xe3, 0x74, 0xa5, 0xd3, 0x67, 0x52, 0xe4, + 0x09, 0x29, 0x40, 0x56, 0x6c, 0x81, 0x4b, 0x09, 0x29, 0x46, 0x39, 0x2d, + 0x23, 0x1a, 0x08, 0x02, 0xb0, 0xc9, 0xfe, 0x37, 0x01, 0x00, 0x03, 0x2b, + 0xbf, 0xfe, 0xee, 0xbc, 0x6e, 0x34, 0x02, 0x0e, 0xcf, 0x01, 0x0c, 0x35, + 0x69, 0xb3, 0x01, 0x09, 0xbc, 0x00, 0x00, 0x01, 0x00, 0x7f, 0xfe, 0x65, + 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x1b, 0x00, 0x46, 0xb9, 0x00, 0x12, 0x01, + 0xe2, 0x40, 0x09, 0x09, 0x11, 0x11, 0x0d, 0x00, 0x00, 0x0a, 0x0a, 0x0e, + 0xb8, 0x01, 0xe3, 0xb2, 0x0d, 0x00, 0x03, 0xb8, 0x01, 0x36, 0xb5, 0x1b, + 0x18, 0x57, 0x11, 0x4f, 0x0a, 0xb8, 0x01, 0x0a, 0xb6, 0x0f, 0x0f, 0x0c, + 0x0d, 0x4f, 0x0c, 0x51, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, 0x05, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x01, 0x92, 0x2a, 0x48, + 0x20, 0x3a, 0x52, 0x33, 0x17, 0xfe, 0x75, 0xf0, 0xf0, 0x01, 0x8b, 0xef, + 0x2e, 0x69, 0xa9, 0x7b, 0x24, 0x4e, 0x2a, 0xb6, 0x07, 0x07, 0x1c, 0x3d, + 0x64, 0x48, 0x01, 0x6b, 0xfe, 0x54, 0x03, 0xf8, 0xfe, 0x83, 0x01, 0x7d, + 0xfc, 0x37, 0x75, 0xac, 0x72, 0x37, 0x07, 0x08, 0x00, 0x01, 0x00, 0x7f, + 0xff, 0x00, 0x04, 0x5d, 0x03, 0xf8, 0x00, 0x0f, 0x00, 0x4a, 0xb7, 0x0e, + 0x0f, 0x0f, 0x0a, 0x0d, 0x00, 0x00, 0x0b, 0xb8, 0x01, 0xe2, 0xb3, 0x02, + 0x0a, 0x03, 0x07, 0xb8, 0x01, 0xe3, 0xb3, 0x06, 0x0a, 0x4f, 0x03, 0xb8, + 0x01, 0x0a, 0x40, 0x0a, 0x08, 0x08, 0x05, 0x06, 0x4f, 0x0f, 0x0f, 0x05, + 0x51, 0x0c, 0xb8, 0x01, 0x04, 0xb1, 0x01, 0x51, 0x00, 0x3f, 0xed, 0x3f, + 0x33, 0x2f, 0x3f, 0x12, 0x39, 0x2f, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x32, + 0x2f, 0x33, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, + 0x21, 0x23, 0x11, 0x21, 0x11, 0x23, 0x11, 0x33, 0x11, 0x21, 0x11, 0x33, + 0x11, 0x33, 0x03, 0x23, 0x03, 0x4c, 0x52, 0xfe, 0x75, 0xf0, 0xf0, 0x01, + 0x8b, 0xef, 0x74, 0xa5, 0xd3, 0x01, 0xac, 0xfe, 0x54, 0x03, 0xf8, 0xfe, + 0x83, 0x01, 0x7d, 0xfc, 0xd1, 0xfe, 0x37, 0x00, 0x00, 0x01, 0x00, 0x50, + 0xff, 0x00, 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x1b, 0x00, 0x4c, 0xb9, 0x00, + 0x00, 0x01, 0xe1, 0xb2, 0x03, 0x03, 0x1a, 0xb8, 0x01, 0xe2, 0xb3, 0x04, + 0x19, 0x19, 0x0f, 0xb8, 0x01, 0xe2, 0xb4, 0x0e, 0x19, 0x4f, 0x05, 0x08, + 0xb8, 0x01, 0x01, 0x40, 0x13, 0x18, 0x0f, 0x15, 0x6f, 0x15, 0x7f, 0x15, + 0x03, 0x15, 0x15, 0x0e, 0x4f, 0x03, 0xfc, 0x00, 0x01, 0x01, 0x00, 0x51, + 0x00, 0x3f, 0x32, 0x2f, 0x10, 0xed, 0x3f, 0x39, 0x2f, 0x5d, 0x33, 0xed, + 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, + 0x30, 0x31, 0x21, 0x11, 0x23, 0x03, 0x21, 0x35, 0x06, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x11, 0x33, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x11, 0x33, 0x11, 0x02, 0xde, 0xe1, 0x0d, 0x01, 0x0a, 0x35, 0x73, + 0x39, 0x7c, 0xae, 0x6d, 0x32, 0xef, 0x16, 0x35, 0x56, 0x41, 0x37, 0x6c, + 0x36, 0xef, 0xff, 0x00, 0x01, 0xc0, 0xd3, 0x15, 0x14, 0x32, 0x63, 0x92, + 0x5f, 0x01, 0x08, 0xea, 0x39, 0x54, 0x37, 0x1b, 0x16, 0x13, 0x01, 0xa0, + 0xfc, 0x08, 0x00, 0x01, 0x00, 0x2d, 0xff, 0x00, 0x04, 0xa0, 0x03, 0xf8, + 0x00, 0x16, 0x00, 0x61, 0x40, 0x0a, 0x0a, 0x09, 0x13, 0x13, 0x16, 0x11, + 0x0c, 0x10, 0x10, 0x0e, 0xb8, 0x01, 0xa7, 0x40, 0x1f, 0x0f, 0x01, 0x04, + 0x04, 0x05, 0x02, 0x03, 0x03, 0x05, 0x15, 0x07, 0x16, 0x16, 0x00, 0x00, + 0x05, 0x07, 0x15, 0x4f, 0x13, 0x0a, 0x0a, 0x0f, 0x0c, 0x10, 0x4f, 0x0f, + 0x51, 0x03, 0x03, 0x00, 0xb8, 0x01, 0x04, 0xb1, 0x05, 0x51, 0x00, 0x3f, + 0xed, 0x33, 0x2f, 0x3f, 0x3f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x3f, 0x33, + 0x01, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x11, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x33, 0x12, 0x39, + 0x11, 0x33, 0x33, 0x30, 0x31, 0x25, 0x33, 0x03, 0x23, 0x13, 0x23, 0x03, + 0x27, 0x07, 0x03, 0x23, 0x03, 0x27, 0x07, 0x03, 0x23, 0x13, 0x21, 0x13, + 0x17, 0x37, 0x13, 0x21, 0x04, 0x2c, 0x74, 0xa5, 0xd3, 0x71, 0x39, 0x18, + 0x09, 0x3f, 0x91, 0x9a, 0x83, 0x37, 0x07, 0x16, 0xd1, 0x40, 0x01, 0x16, + 0x73, 0x37, 0x37, 0x79, 0x01, 0x1b, 0xc9, 0xfe, 0x37, 0x01, 0x00, 0x02, + 0x17, 0xf7, 0xaa, 0xfe, 0x8a, 0x01, 0x76, 0xaa, 0xf3, 0xfd, 0xe5, 0x03, + 0xf8, 0xfe, 0xc4, 0xb0, 0xa8, 0x01, 0x44, 0x00, 0xff, 0xff, 0x00, 0x96, + 0x00, 0x00, 0x03, 0xd0, 0x05, 0x1b, 0x02, 0x06, 0x00, 0x0c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x03, 0xd9, 0x05, 0x96, 0x02, 0x26, 0x00, 0x83, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x12, + 0xff, 0xe9, 0x04, 0x4e, 0x04, 0x0e, 0x02, 0x06, 0x00, 0xa7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, 0x05, 0x85, 0x02, 0x26, + 0x00, 0x87, 0x00, 0x00, 0x00, 0x06, 0x01, 0x4b, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x66, 0xff, 0xe9, 0x04, 0x00, 0x04, 0x0e, 0x00, 0x22, 0x00, 0x2b, + 0x00, 0x39, 0xb9, 0x00, 0x19, 0x02, 0x13, 0xb3, 0x06, 0x2b, 0x2b, 0x23, + 0xb8, 0x02, 0x09, 0x40, 0x13, 0x05, 0x0e, 0x0e, 0x05, 0x23, 0xcd, 0x05, + 0x05, 0x14, 0x28, 0xf3, 0x1e, 0x52, 0x0e, 0x0b, 0xff, 0x0f, 0x14, 0x50, + 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, + 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x30, 0x31, 0x13, + 0x34, 0x3e, 0x02, 0x37, 0x21, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x37, 0x06, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x66, + 0x01, 0x01, 0x02, 0x02, 0x02, 0x9c, 0x29, 0x4b, 0x69, 0x40, 0x4b, 0xa8, + 0x5b, 0x27, 0x5c, 0x60, 0x62, 0x2e, 0x74, 0xb8, 0x80, 0x44, 0x44, 0x7c, + 0xb1, 0x6d, 0x6c, 0xa6, 0x70, 0x3a, 0xf8, 0x01, 0x1f, 0x38, 0x4a, 0x29, + 0x5d, 0x75, 0x0b, 0x01, 0xad, 0x0c, 0x22, 0x25, 0x27, 0x12, 0x43, 0x66, + 0x45, 0x24, 0x17, 0x1a, 0xc2, 0x0b, 0x13, 0x0d, 0x07, 0x42, 0x81, 0xbf, + 0x7c, 0x7c, 0xcb, 0x91, 0x4f, 0x43, 0x78, 0xa6, 0x40, 0x3c, 0x59, 0x3a, + 0x1c, 0x7b, 0x70, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x00, + 0x05, 0x96, 0x02, 0x26, 0x09, 0xa3, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x04, 0x6c, 0x05, 0x96, + 0x02, 0x26, 0x02, 0x1a, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xed, 0xff, 0xe9, 0x03, 0xfc, 0x05, 0x96, 0x02, 0x26, + 0x02, 0x1b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0xed, 0x00, 0x00, 0x01, + 0x00, 0x6e, 0xfe, 0xac, 0x03, 0xe9, 0x03, 0xf8, 0x00, 0x28, 0x00, 0x51, + 0xb7, 0x17, 0x10, 0x10, 0x00, 0x12, 0x16, 0x16, 0x1e, 0xb8, 0x02, 0x16, + 0x40, 0x0a, 0x0a, 0x0a, 0x00, 0x13, 0x13, 0x00, 0x11, 0x17, 0xce, 0x10, + 0xb8, 0xff, 0xc0, 0xb7, 0x0f, 0x13, 0x48, 0x10, 0x10, 0x14, 0x00, 0x05, + 0xb8, 0x01, 0x0a, 0xb3, 0x28, 0x23, 0x16, 0x13, 0xb8, 0x01, 0x31, 0xb1, + 0x14, 0x4f, 0x00, 0x3f, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x39, + 0x2f, 0x2b, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x17, 0x1e, 0x03, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x01, + 0x21, 0x35, 0x21, 0x15, 0x01, 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x27, 0x6e, 0x19, 0x43, 0x4e, 0x56, 0x2b, 0x40, + 0x79, 0x5e, 0x3a, 0x10, 0x3c, 0x77, 0x67, 0x84, 0x01, 0x33, 0xfe, 0x22, + 0x03, 0x21, 0xfe, 0xa4, 0x4e, 0x78, 0x5a, 0x3d, 0x26, 0x10, 0x5d, 0x9c, + 0xcd, 0x70, 0x27, 0x53, 0x54, 0x52, 0x25, 0x5c, 0x07, 0x0f, 0x0c, 0x07, + 0x17, 0x35, 0x56, 0x3e, 0x2a, 0x52, 0x3f, 0x27, 0xb5, 0x01, 0x35, 0xd1, + 0xc2, 0xfe, 0xb7, 0x21, 0x37, 0x4b, 0x53, 0x59, 0x2a, 0x7f, 0xae, 0x6c, + 0x2f, 0x05, 0x0a, 0x0d, 0x09, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xe8, 0x05, 0x62, 0x02, 0x26, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe8, + 0x05, 0x96, 0x02, 0x26, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x96, + 0x02, 0x26, 0x00, 0x91, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x48, 0xff, 0xe9, 0x04, 0x1e, 0x04, 0x0e, 0x00, 0x13, + 0x00, 0x1c, 0x00, 0x24, 0x00, 0x3b, 0xb1, 0x23, 0x00, 0xb8, 0x02, 0x1a, + 0xb2, 0x19, 0x22, 0x1a, 0xb8, 0x02, 0x19, 0x40, 0x0c, 0x0a, 0x6f, 0x1a, + 0x7f, 0x1a, 0x02, 0x1a, 0xfa, 0x22, 0x22, 0x14, 0x1d, 0xb8, 0x01, 0x32, + 0xb2, 0x0f, 0x50, 0x14, 0xb8, 0x01, 0x32, 0xb1, 0x05, 0x52, 0x00, 0x3f, + 0xed, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x5d, 0x01, 0x2f, 0xed, 0x32, + 0x2f, 0xed, 0x33, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x32, 0x3e, + 0x02, 0x37, 0x21, 0x16, 0x16, 0x13, 0x22, 0x0e, 0x02, 0x07, 0x21, 0x26, + 0x04, 0x1e, 0x44, 0x80, 0xbb, 0x76, 0x71, 0xb2, 0x7c, 0x42, 0x45, 0x81, + 0xba, 0x75, 0x72, 0xb2, 0x7c, 0x41, 0xfe, 0x17, 0x33, 0x4e, 0x38, 0x23, + 0x08, 0xfe, 0x33, 0x11, 0x79, 0x5f, 0x33, 0x4e, 0x39, 0x24, 0x09, 0x01, + 0xcb, 0x23, 0x02, 0x04, 0x78, 0xc7, 0x8e, 0x4e, 0x42, 0x83, 0xc5, 0x83, + 0x79, 0xc6, 0x8c, 0x4d, 0x43, 0x84, 0xc3, 0xfe, 0x38, 0x22, 0x3d, 0x55, + 0x33, 0x74, 0x73, 0x02, 0x7f, 0x21, 0x3a, 0x50, 0x2f, 0xda, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xe9, 0x04, 0x1e, 0x05, 0x96, 0x02, 0x26, 0x09, 0xab, + 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0xff, 0xff, 0x00, 0x04, + 0xff, 0xe9, 0x03, 0xf2, 0x05, 0x96, 0x02, 0x26, 0x02, 0x31, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x47, 0x04, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, + 0x04, 0x52, 0x05, 0x62, 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x52, + 0x05, 0x96, 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xfe, 0x5c, 0x04, 0x9e, 0x05, 0x85, + 0x02, 0x26, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x50, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0xe9, 0x05, 0x96, 0x02, 0x26, + 0x02, 0x2b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, 0x00, 0x00, 0x00, 0x01, + 0x00, 0xcd, 0xff, 0x00, 0x03, 0xe1, 0x03, 0xf8, 0x00, 0x09, 0x00, 0x2f, + 0xb1, 0x04, 0x07, 0xb8, 0x01, 0xe1, 0xb2, 0x00, 0x00, 0x05, 0xbb, 0x02, + 0x0b, 0x00, 0x02, 0x00, 0x05, 0x01, 0x31, 0xb4, 0x02, 0x4f, 0x09, 0x09, + 0x06, 0xb8, 0x01, 0x08, 0xb1, 0x01, 0x51, 0x00, 0x3f, 0xed, 0x33, 0x2f, + 0x3f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x2f, 0x30, 0x31, 0x21, + 0x21, 0x11, 0x21, 0x15, 0x21, 0x11, 0x21, 0x03, 0x23, 0x01, 0xd6, 0xfe, + 0xf7, 0x03, 0x14, 0xfd, 0xe0, 0x01, 0x03, 0x0c, 0xe2, 0x03, 0xf8, 0xd1, + 0xfd, 0xa6, 0xfe, 0x33, 0xff, 0xff, 0x00, 0x00, 0xff, 0xf0, 0x04, 0x27, + 0x05, 0x96, 0x02, 0x26, 0x02, 0x2f, 0x00, 0x00, 0x00, 0x06, 0x01, 0x47, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0xfe, 0x5e, 0x03, 0xe1, 0x03, 0xf8, + 0x00, 0x21, 0x00, 0x5c, 0x40, 0x0b, 0x00, 0x0a, 0x60, 0x0a, 0x70, 0x0a, + 0x03, 0x04, 0x15, 0x15, 0x0b, 0xb8, 0x01, 0x8e, 0xb4, 0x1e, 0x1e, 0x07, + 0x07, 0x05, 0xb8, 0x02, 0x0b, 0x40, 0x0c, 0x02, 0x00, 0x00, 0x02, 0x09, + 0x21, 0xfa, 0x06, 0x00, 0x00, 0x02, 0x0a, 0xb8, 0x01, 0x36, 0x40, 0x09, + 0x1e, 0x51, 0x15, 0x18, 0xf2, 0x14, 0x11, 0x56, 0x05, 0xb8, 0x01, 0x31, + 0xb1, 0x02, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x11, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x32, 0x2f, 0x32, 0x2f, 0xed, 0x33, 0x2f, 0x2f, 0x00, 0x5d, 0x30, 0x31, + 0x13, 0x33, 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x33, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x35, 0x21, 0x11, 0x23, 0x0a, 0xc3, 0x03, 0x14, + 0xfd, 0xe0, 0x01, 0x0b, 0xfe, 0xf5, 0xd6, 0x25, 0x43, 0x60, 0x3c, 0x21, + 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xfe, 0xff, 0xc3, + 0x02, 0x61, 0x01, 0x97, 0xd1, 0xc6, 0xbe, 0xcb, 0xfe, 0xc3, 0x63, 0x7c, + 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, + 0x01, 0xa3, 0x00, 0x01, 0x00, 0x21, 0xfe, 0x5e, 0x04, 0x49, 0x03, 0xf8, + 0x00, 0x1f, 0x00, 0x70, 0x40, 0x10, 0x59, 0x04, 0x01, 0x16, 0x16, 0x0b, + 0x00, 0x00, 0x20, 0x0a, 0x04, 0x01, 0x07, 0x07, 0x05, 0x08, 0xb8, 0x02, + 0x27, 0xb2, 0x09, 0x09, 0x0c, 0xbb, 0x01, 0x8e, 0x00, 0x1f, 0x00, 0x06, + 0x02, 0x2e, 0xb2, 0x05, 0x05, 0x02, 0xb8, 0x02, 0x2e, 0x40, 0x14, 0x03, + 0x16, 0x19, 0xf2, 0x15, 0x12, 0x56, 0x08, 0x4f, 0x0a, 0x07, 0x01, 0x04, + 0x04, 0x02, 0x05, 0x4f, 0x02, 0x51, 0x0b, 0xb8, 0x01, 0x3c, 0xb1, 0x00, + 0x51, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, + 0x3f, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x2f, + 0xed, 0x32, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x33, 0x2f, 0x00, 0x5d, 0x30, 0x31, 0x21, 0x03, 0x03, 0x21, + 0x01, 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, 0x13, 0x33, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x35, 0x03, 0x19, 0xe8, 0xe9, 0xfe, 0xd9, 0x01, 0x7d, 0xfe, 0x97, + 0x01, 0x29, 0xe4, 0xe1, 0x01, 0x12, 0xfe, 0xa2, 0xd1, 0xa1, 0x25, 0x43, + 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, + 0x01, 0x56, 0xfe, 0xaa, 0x02, 0x00, 0x01, 0xf8, 0xfe, 0xb2, 0x01, 0x4e, + 0xfe, 0x0a, 0xfe, 0xdc, 0xfe, 0xbd, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, + 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x00, 0x01, 0x00, 0x21, + 0x00, 0x00, 0x04, 0x48, 0x03, 0xf8, 0x00, 0x11, 0x00, 0x7a, 0x40, 0x0c, + 0x0a, 0x07, 0x07, 0x04, 0x10, 0x01, 0x01, 0x0d, 0x04, 0x04, 0x06, 0x03, + 0xb8, 0x02, 0x2e, 0xb5, 0x02, 0x02, 0x0f, 0x11, 0x11, 0x0e, 0xbb, 0x02, + 0x2e, 0x00, 0x0f, 0x00, 0x05, 0x02, 0x27, 0xb2, 0x06, 0x06, 0x0c, 0xb8, + 0x02, 0x36, 0x40, 0x22, 0x0b, 0x08, 0x08, 0x0b, 0x0d, 0x0a, 0x6f, 0x11, + 0x7f, 0x11, 0x02, 0x11, 0xfa, 0x07, 0x04, 0x04, 0x44, 0x04, 0x02, 0x04, + 0x0f, 0x00, 0x01, 0x00, 0x00, 0x02, 0x0f, 0x51, 0x0c, 0x51, 0x05, 0x4f, + 0x02, 0x4f, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x5d, 0x33, + 0x5d, 0x33, 0xed, 0x5d, 0x32, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x33, 0x2f, 0xed, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x11, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x30, 0x31, + 0x13, 0x33, 0x01, 0x21, 0x13, 0x13, 0x21, 0x01, 0x33, 0x15, 0x23, 0x01, + 0x21, 0x03, 0x03, 0x21, 0x01, 0x23, 0x5a, 0xfe, 0xfe, 0xdd, 0x01, 0x29, + 0xe4, 0xe1, 0x01, 0x12, 0xfe, 0xe4, 0xf3, 0xf1, 0x01, 0x2d, 0xfe, 0xd1, + 0xe8, 0xe9, 0xfe, 0xd9, 0x01, 0x38, 0xff, 0x02, 0x61, 0x01, 0x97, 0xfe, + 0xb2, 0x01, 0x4e, 0xfe, 0x69, 0xbe, 0xfe, 0x5d, 0x01, 0x56, 0xfe, 0xaa, + 0x01, 0xa3, 0xff, 0xff, 0x00, 0x4c, 0xff, 0xe9, 0x03, 0xdd, 0x05, 0x85, + 0x02, 0x06, 0x00, 0x86, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2c, 0xff, 0xec, + 0x04, 0x34, 0x05, 0x85, 0x00, 0x23, 0x00, 0x33, 0x00, 0x51, 0xb1, 0x13, + 0x01, 0xb8, 0x01, 0xd9, 0xb4, 0x33, 0x00, 0x00, 0x1b, 0x0c, 0xb8, 0x01, + 0xd4, 0xb2, 0x0b, 0x0b, 0x2b, 0xb8, 0x02, 0x0e, 0xb2, 0x1b, 0x24, 0x26, + 0xb8, 0x01, 0x04, 0xb6, 0x20, 0x0b, 0x0b, 0x23, 0x20, 0x50, 0x2e, 0xb8, + 0x01, 0x04, 0xb3, 0x13, 0x16, 0x52, 0x05, 0xb8, 0x01, 0x04, 0xb3, 0x10, + 0x52, 0x00, 0x53, 0x00, 0x3f, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x3f, 0x33, + 0x39, 0x2f, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, + 0x39, 0x2f, 0x33, 0xed, 0x39, 0x30, 0x31, 0x01, 0x33, 0x11, 0x14, 0x16, + 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x06, 0x23, 0x22, + 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x01, 0xd6, 0xe6, 0x29, 0x26, 0x13, + 0x1c, 0x12, 0x09, 0xdf, 0x90, 0xa3, 0x4d, 0x5f, 0x1c, 0x28, 0x69, 0x42, + 0x54, 0x77, 0x4c, 0x23, 0x23, 0x54, 0x89, 0x66, 0x10, 0x22, 0x12, 0x12, + 0x10, 0x2b, 0x38, 0x21, 0x0d, 0x31, 0x39, 0x12, 0x1b, 0x12, 0x0a, 0x05, + 0x85, 0xfb, 0xba, 0x4e, 0x3c, 0x0c, 0x1f, 0x33, 0x27, 0x01, 0x5c, 0xfe, + 0x71, 0x8e, 0x8d, 0x33, 0x21, 0x27, 0x2d, 0x4d, 0x8d, 0xc5, 0x78, 0x6f, + 0xbe, 0x8b, 0x4f, 0x02, 0x02, 0xc8, 0x03, 0x2c, 0x52, 0x75, 0x49, 0xa0, + 0xb0, 0x0e, 0x22, 0x37, 0x2a, 0x00, 0x00, 0x01, 0x00, 0x3e, 0xff, 0xe9, + 0x04, 0x12, 0x04, 0x0d, 0x00, 0x36, 0x00, 0x5b, 0xb9, 0x00, 0x1c, 0x02, + 0x11, 0xb2, 0x0d, 0x0d, 0x23, 0xb8, 0x02, 0x0b, 0xb4, 0x1f, 0x36, 0x36, + 0x13, 0x2b, 0xb8, 0x01, 0xd3, 0x40, 0x24, 0x2a, 0x07, 0x07, 0x13, 0x1f, + 0x06, 0xcc, 0x0f, 0x2a, 0x01, 0x2a, 0x00, 0x07, 0x01, 0x00, 0x07, 0x60, + 0x07, 0x70, 0x07, 0xf0, 0x07, 0x04, 0x07, 0x07, 0x17, 0x26, 0xf4, 0x31, + 0x52, 0x13, 0x10, 0xf2, 0x14, 0x17, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x5d, 0x71, 0xc4, 0x5d, 0xed, 0x39, 0x01, + 0x2f, 0x33, 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x33, 0x2f, + 0xed, 0x30, 0x31, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0x15, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x36, 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0xab, 0x12, 0x36, 0x60, 0x4e, 0x32, + 0x30, 0x43, 0x50, 0x2a, 0x0c, 0x58, 0x43, 0x26, 0x53, 0x2a, 0x39, 0x7c, + 0x3d, 0x41, 0x76, 0x5a, 0x35, 0x56, 0x63, 0x6e, 0x74, 0x28, 0x23, 0x23, + 0x27, 0xde, 0x23, 0x4b, 0x77, 0x54, 0x54, 0x74, 0x47, 0x1f, 0x01, 0x27, + 0x1e, 0x35, 0x26, 0x16, 0xae, 0x11, 0x1f, 0x2e, 0x1d, 0x40, 0x39, 0x10, + 0x0f, 0xb6, 0x0e, 0x10, 0x1b, 0x3f, 0x67, 0x4d, 0x56, 0x76, 0x1f, 0x0f, + 0x69, 0x61, 0x2b, 0x3e, 0x31, 0x2f, 0x41, 0x01, 0x7b, 0xfe, 0x7b, 0x48, + 0x6c, 0x47, 0x23, 0x23, 0x47, 0x6b, 0x48, 0x00, 0x00, 0x01, 0x00, 0x67, + 0xff, 0x00, 0x04, 0x4f, 0x04, 0x0e, 0x00, 0x2e, 0x00, 0x4e, 0xb3, 0x08, + 0x08, 0x19, 0x22, 0xb8, 0x02, 0x13, 0xb2, 0x0f, 0x0f, 0x2b, 0xb8, 0x02, + 0x15, 0xb3, 0x27, 0x01, 0x01, 0x2c, 0xb8, 0x01, 0xe1, 0x40, 0x0e, 0x00, + 0x19, 0x14, 0xf3, 0x1d, 0x27, 0x08, 0xcc, 0x09, 0x09, 0x1a, 0x1d, 0x50, + 0x2b, 0xb8, 0x01, 0x08, 0xb4, 0x01, 0x2e, 0x2e, 0x01, 0x51, 0x00, 0x3f, + 0x33, 0x2f, 0x10, 0xed, 0x3f, 0x33, 0x39, 0x2f, 0xed, 0x39, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0xed, 0x33, 0x2f, 0xed, 0x2f, + 0x33, 0x2f, 0x30, 0x31, 0x21, 0x21, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x23, + 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x16, 0x16, 0x15, 0x15, 0x33, 0x03, 0x23, 0x03, 0x61, 0xfe, + 0xf3, 0x13, 0x35, 0x5f, 0x4d, 0xa5, 0x97, 0x2b, 0x58, 0x46, 0x2c, 0x0f, + 0x29, 0x46, 0x37, 0x2c, 0x4a, 0x46, 0x47, 0x28, 0x54, 0x9e, 0x56, 0x71, + 0x9a, 0x5f, 0x2a, 0x16, 0x2e, 0x49, 0x34, 0x63, 0x6d, 0xfd, 0x0c, 0xe2, + 0x01, 0x18, 0x29, 0x3b, 0x27, 0x13, 0xae, 0x08, 0x1b, 0x34, 0x2c, 0x1a, + 0x2a, 0x1d, 0x10, 0x06, 0x0b, 0x10, 0x0a, 0xbf, 0x0e, 0x14, 0x25, 0x45, + 0x62, 0x3e, 0x23, 0x46, 0x3d, 0x31, 0x0e, 0x0e, 0x73, 0x6f, 0x62, 0xfe, + 0x33, 0x00, 0x00, 0x01, 0x00, 0x05, 0xff, 0xf4, 0x04, 0x1c, 0x03, 0xf8, + 0x00, 0x2c, 0x00, 0x3f, 0xb9, 0x00, 0x01, 0x01, 0x76, 0xb3, 0x13, 0x13, + 0x2d, 0x15, 0xb8, 0x01, 0xa8, 0xb3, 0x2c, 0x2c, 0x0b, 0x22, 0xb8, 0x01, + 0x90, 0xb3, 0x1f, 0x0b, 0x20, 0x01, 0xb8, 0x01, 0x08, 0xb4, 0x13, 0x4f, + 0x27, 0x1a, 0x0c, 0xb8, 0x01, 0x32, 0xb1, 0x08, 0x51, 0x00, 0x3f, 0xed, + 0xc4, 0x33, 0x3f, 0xfd, 0xc4, 0x01, 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x23, 0x0e, 0x05, 0x23, + 0x22, 0x26, 0x27, 0x37, 0x16, 0x3e, 0x03, 0x12, 0x37, 0x21, 0x11, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, 0xff, 0x77, 0x08, 0x15, 0x1e, + 0x29, 0x39, 0x4a, 0x2f, 0x18, 0x37, 0x1e, 0x08, 0x28, 0x38, 0x25, 0x17, + 0x10, 0x0c, 0x08, 0x02, 0x05, 0x07, 0x0f, 0x16, 0x10, 0x12, 0x18, 0x10, + 0x07, 0xcd, 0x12, 0x39, 0x6b, 0x59, 0x5b, 0x6b, 0x38, 0x10, 0x03, 0x2b, + 0xa3, 0xf8, 0xb5, 0x79, 0x49, 0x1e, 0x07, 0x06, 0xc6, 0x03, 0x0f, 0x37, + 0x6b, 0xb6, 0x01, 0x0b, 0xbb, 0xfd, 0x31, 0x22, 0x2d, 0x1b, 0x0b, 0x0b, + 0x1b, 0x2f, 0x24, 0x01, 0x5f, 0xfe, 0xa3, 0x47, 0x74, 0x53, 0x2d, 0x2d, + 0x4f, 0x6b, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x5a, 0xff, 0xf4, 0x04, 0x0c, + 0x03, 0xf8, 0x00, 0x21, 0x00, 0x47, 0xb9, 0x00, 0x09, 0x01, 0xa7, 0xb4, + 0x00, 0x08, 0x08, 0x04, 0x16, 0xb8, 0x01, 0x90, 0xb2, 0x15, 0x01, 0x05, + 0xbb, 0x01, 0xa8, 0x00, 0x04, 0x00, 0x01, 0x01, 0x0a, 0x40, 0x10, 0x06, + 0x15, 0x06, 0x15, 0x06, 0x04, 0x0f, 0xfc, 0x1c, 0x52, 0x08, 0x4f, 0x04, + 0x4f, 0x03, 0x51, 0x00, 0x3f, 0x3f, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x39, + 0x2f, 0x2f, 0x10, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x30, 0x31, 0x01, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, + 0x33, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x01, + 0xef, 0xc2, 0xd3, 0xd3, 0xc2, 0xd2, 0x07, 0x0f, 0x17, 0x10, 0x12, 0x18, + 0x10, 0x07, 0xcd, 0x12, 0x39, 0x6b, 0x59, 0x5b, 0x6b, 0x38, 0x10, 0x01, + 0xac, 0xfe, 0x54, 0x03, 0xf8, 0xfe, 0x83, 0x01, 0x7d, 0xfd, 0x31, 0x22, + 0x2d, 0x1b, 0x0b, 0x0b, 0x1b, 0x2f, 0x24, 0x01, 0x5f, 0xfe, 0xa3, 0x47, + 0x74, 0x53, 0x2d, 0x2d, 0x4f, 0x6b, 0x3e, 0x00, 0x00, 0x01, 0x00, 0x67, + 0xff, 0xf2, 0x04, 0x03, 0x04, 0x08, 0x00, 0x27, 0x00, 0x49, 0xb2, 0x0e, + 0x0e, 0x23, 0xb8, 0x01, 0xe2, 0xb5, 0x1f, 0x21, 0x21, 0x1f, 0x1f, 0x16, + 0xb8, 0x02, 0x1b, 0xb6, 0x05, 0x6f, 0x20, 0x7f, 0x20, 0x02, 0x20, 0xb8, + 0x01, 0x06, 0xb4, 0x21, 0x21, 0x1b, 0x0e, 0x11, 0xb8, 0x01, 0x31, 0xb3, + 0x0d, 0x0a, 0x50, 0x1b, 0xb8, 0x01, 0x33, 0xb1, 0x00, 0x52, 0x00, 0x3f, + 0xed, 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, 0x2f, 0xed, 0x5d, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0x39, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x05, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x35, 0x35, 0x23, 0x35, 0x21, 0x15, 0x14, 0x0e, 0x02, 0x02, 0x59, + 0x74, 0xb9, 0x81, 0x44, 0x4d, 0x8c, 0xc5, 0x79, 0x63, 0x87, 0x36, 0x3f, + 0x8f, 0x42, 0x44, 0x6c, 0x4a, 0x27, 0x1f, 0x3c, 0x59, 0x3b, 0x63, 0x55, + 0xd4, 0x01, 0xc3, 0x4b, 0x7a, 0x98, 0x0e, 0x43, 0x82, 0xbe, 0x7b, 0x7a, + 0xc6, 0x8c, 0x4c, 0x15, 0x10, 0xed, 0x1f, 0x22, 0x2e, 0x52, 0x75, 0x46, + 0x44, 0x72, 0x52, 0x2e, 0x52, 0x4a, 0x16, 0xcb, 0xbc, 0x7c, 0x9e, 0x5a, + 0x21, 0x00, 0x00, 0x01, 0x00, 0x2d, 0xff, 0xf4, 0x03, 0xdf, 0x03, 0xf8, + 0x00, 0x1d, 0x00, 0x37, 0xb2, 0x1c, 0x1c, 0x1d, 0xbb, 0x01, 0xab, 0x00, + 0x18, 0x00, 0x0c, 0x01, 0xaa, 0x40, 0x09, 0x0b, 0x0b, 0x18, 0x19, 0x19, + 0x18, 0x1d, 0x0b, 0x19, 0xb8, 0x01, 0x08, 0xb5, 0x1a, 0x4f, 0x05, 0xfc, + 0x12, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xfd, 0xcc, 0x33, 0x01, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x11, 0x33, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x11, 0x21, 0x35, 0x21, 0x15, + 0x21, 0x02, 0x5a, 0x0c, 0x15, 0x1c, 0x10, 0x12, 0x1c, 0x14, 0x0b, 0xd7, + 0x16, 0x3e, 0x6f, 0x59, 0x5b, 0x75, 0x43, 0x1a, 0xfe, 0xab, 0x03, 0xb2, + 0xfe, 0x7b, 0x01, 0x29, 0x22, 0x2d, 0x1b, 0x0b, 0x0b, 0x1b, 0x2f, 0x24, + 0x01, 0x5f, 0xfe, 0xa3, 0x47, 0x74, 0x53, 0x2d, 0x2d, 0x4f, 0x6b, 0x3e, + 0x02, 0x12, 0xcd, 0xcd, 0x00, 0x01, 0x00, 0x6a, 0xff, 0xe9, 0x03, 0xfd, + 0x04, 0x0e, 0x00, 0x38, 0x00, 0x53, 0xb7, 0x2a, 0x2a, 0x38, 0x17, 0x17, + 0x38, 0x0b, 0x30, 0xbb, 0x02, 0x19, 0x00, 0x06, 0x00, 0x21, 0x02, 0x13, + 0x40, 0x1f, 0x10, 0x10, 0x06, 0x0b, 0x2b, 0xcc, 0x00, 0x28, 0x01, 0x60, + 0x28, 0x70, 0x28, 0xf0, 0x28, 0x03, 0x28, 0x28, 0x35, 0x17, 0x1c, 0xf3, + 0x16, 0x13, 0x50, 0x38, 0x35, 0xf5, 0x00, 0x03, 0x52, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x12, 0x39, 0x2f, 0x5d, 0x71, 0xed, + 0x39, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0x30, 0x31, 0x25, 0x06, 0x06, 0x23, 0x20, 0x24, 0x35, + 0x34, 0x3e, 0x02, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x17, 0x15, 0x26, 0x27, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x04, 0x33, 0x33, 0x15, 0x21, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x36, 0x37, 0x03, 0xfd, 0x61, 0xc4, 0x6d, 0xfe, 0xff, + 0xff, 0x00, 0x27, 0x43, 0x58, 0x32, 0x31, 0x49, 0x30, 0x17, 0xe1, 0xf3, + 0x5e, 0xbd, 0x55, 0x59, 0x5b, 0x2e, 0x4f, 0x22, 0x4b, 0x5f, 0x37, 0x14, + 0x18, 0x29, 0x33, 0x37, 0x35, 0x15, 0xff, 0xfe, 0xf3, 0x4d, 0x69, 0x40, + 0x1c, 0x3b, 0x5a, 0x68, 0x2d, 0x4e, 0xbb, 0x5b, 0x0c, 0x11, 0x12, 0xa5, + 0xa1, 0x33, 0x53, 0x3d, 0x26, 0x07, 0x0e, 0x2f, 0x3c, 0x44, 0x23, 0x82, + 0x8d, 0x14, 0x0e, 0xbf, 0x16, 0x0b, 0x05, 0x05, 0x11, 0x20, 0x2b, 0x1a, + 0x20, 0x2b, 0x1c, 0x0f, 0x07, 0x01, 0xae, 0x12, 0x22, 0x30, 0x1f, 0x32, + 0x39, 0x1e, 0x08, 0x18, 0x1a, 0x00, 0x00, 0x01, 0x00, 0x10, 0xfe, 0x5e, + 0x04, 0x66, 0x03, 0xf8, 0x00, 0x27, 0x00, 0x51, 0xb9, 0x00, 0x20, 0x01, + 0xaf, 0xb4, 0x07, 0x07, 0x28, 0x1d, 0x09, 0xb8, 0x01, 0xe2, 0xb5, 0x1e, + 0x1e, 0x1d, 0x14, 0x14, 0x0b, 0xbb, 0x01, 0x8e, 0x00, 0x1d, 0x00, 0x00, + 0x01, 0x3a, 0xb2, 0x26, 0x51, 0x09, 0xb8, 0x01, 0x3c, 0x40, 0x09, 0x1e, + 0x51, 0x14, 0x17, 0xf2, 0x13, 0x10, 0x56, 0x20, 0xb8, 0x01, 0x08, 0xb1, + 0x07, 0x4f, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x3f, + 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x11, 0x12, + 0x39, 0x2f, 0xed, 0x31, 0x30, 0x37, 0x16, 0x3e, 0x03, 0x12, 0x37, 0x21, + 0x11, 0x33, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x23, 0x11, 0x23, 0x06, 0x02, + 0x0e, 0x03, 0x27, 0x19, 0x29, 0x46, 0x39, 0x2d, 0x23, 0x1a, 0x08, 0x02, + 0x7e, 0xb5, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, + 0x16, 0x23, 0x1a, 0x0e, 0xdb, 0xb2, 0x09, 0x29, 0x40, 0x56, 0x6c, 0x81, + 0x4b, 0xd7, 0x01, 0x0c, 0x35, 0x69, 0xb3, 0x01, 0x09, 0xbc, 0xfc, 0xe6, + 0xfe, 0xbd, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, + 0x22, 0x3b, 0x30, 0x54, 0x03, 0x2b, 0xbf, 0xfe, 0xee, 0xbc, 0x6e, 0x34, + 0x02, 0x0e, 0x00, 0x01, 0xff, 0xdc, 0xfe, 0x68, 0x00, 0x24, 0x06, 0xd6, + 0x00, 0x03, 0x00, 0x0e, 0xb4, 0x01, 0x02, 0x01, 0x45, 0x00, 0x00, 0x2f, + 0x3f, 0x01, 0x2f, 0xcd, 0x30, 0x31, 0x13, 0x11, 0x23, 0x11, 0x24, 0x48, + 0x06, 0xd6, 0xf7, 0x92, 0x08, 0x6e, 0x00, 0x01, 0xff, 0x25, 0xfe, 0x68, + 0x00, 0xdb, 0x06, 0xd6, 0x00, 0x0e, 0x00, 0x4b, 0x40, 0x23, 0x0b, 0x00, + 0x05, 0x01, 0x01, 0x04, 0x0c, 0x0a, 0x06, 0x04, 0x0a, 0x09, 0x09, 0x0c, + 0x0d, 0x0d, 0x04, 0x03, 0x0e, 0x0b, 0x05, 0x08, 0x08, 0x05, 0x02, 0x02, + 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x07, 0x00, 0x45, 0x00, 0x3f, 0x2f, + 0x33, 0x39, 0x2f, 0x12, 0x39, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, + 0x33, 0x33, 0x11, 0x33, 0x33, 0x11, 0x33, 0x32, 0x11, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0xcd, 0x32, 0x30, 0x31, 0x13, + 0x23, 0x11, 0x07, 0x27, 0x37, 0x27, 0x37, 0x17, 0x37, 0x17, 0x07, 0x17, + 0x07, 0x27, 0x24, 0x48, 0x86, 0x31, 0xab, 0xab, 0x31, 0xaa, 0xaa, 0x31, + 0xab, 0xab, 0x31, 0x86, 0xfe, 0x68, 0x07, 0x43, 0x88, 0x31, 0xa9, 0xa8, + 0x31, 0xab, 0xab, 0x31, 0xa8, 0xa9, 0x31, 0x88, 0x00, 0x01, 0x00, 0x85, + 0x01, 0xd5, 0x03, 0xe1, 0x02, 0x6d, 0x00, 0x03, 0x00, 0x0e, 0xb4, 0x01, + 0x00, 0x01, 0xa6, 0x02, 0x00, 0x2f, 0xed, 0x01, 0x2f, 0x2f, 0x30, 0x31, + 0x01, 0x21, 0x35, 0x21, 0x03, 0xe1, 0xfc, 0xa4, 0x03, 0x5c, 0x01, 0xd5, + 0x98, 0x00, 0xff, 0xff, 0x00, 0x85, 0x01, 0xd5, 0x03, 0xe1, 0x02, 0x6d, + 0x02, 0x06, 0x09, 0xcf, 0x00, 0x00, 0xff, 0xff, 0x00, 0xe6, 0xfe, 0x66, + 0x03, 0x82, 0x06, 0x66, 0x02, 0x27, 0x01, 0x76, 0x00, 0xde, 0x00, 0x00, + 0x00, 0x07, 0x01, 0x76, 0xff, 0x23, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0xfd, 0xfe, 0x04, 0x66, 0xff, 0x85, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, + 0x01, 0x21, 0x35, 0x21, 0x11, 0x21, 0x35, 0x21, 0x04, 0x66, 0xfb, 0x9a, + 0x04, 0x66, 0xfb, 0x9a, 0x04, 0x66, 0xfe, 0xf5, 0x90, 0xfe, 0x79, 0x90, + 0x00, 0x01, 0x01, 0x74, 0x02, 0xc3, 0x03, 0x93, 0x05, 0x98, 0x00, 0x1b, + 0x00, 0x20, 0xb2, 0x1b, 0x1b, 0x0f, 0xba, 0x02, 0x4a, 0x00, 0x16, 0x02, + 0x18, 0xb6, 0x05, 0x1b, 0xc6, 0x00, 0x00, 0x0a, 0x54, 0x00, 0x3f, 0x33, + 0x2f, 0xed, 0x01, 0x2f, 0xed, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x04, 0x15, 0x14, 0x1e, 0x02, 0x37, 0x03, 0x93, 0x88, 0xcb, 0x88, + 0x44, 0x1c, 0x36, 0x4e, 0x31, 0x27, 0x3d, 0x2a, 0x16, 0x11, 0x1a, 0x1d, + 0x1a, 0x11, 0x2c, 0x4d, 0x68, 0x3c, 0x02, 0xc3, 0x47, 0x7a, 0xa4, 0x5d, + 0x36, 0x63, 0x4c, 0x2e, 0x1c, 0x2e, 0x3b, 0x1f, 0x20, 0x2d, 0x23, 0x1f, + 0x21, 0x29, 0x1d, 0x2a, 0x3c, 0x26, 0x12, 0x02, 0x00, 0x02, 0x00, 0x39, + 0x03, 0x23, 0x03, 0xfe, 0x05, 0x91, 0x00, 0x19, 0x00, 0x33, 0x00, 0x3d, + 0xb2, 0x1a, 0x1a, 0x29, 0xba, 0x02, 0x2d, 0x00, 0x2e, 0x01, 0xa7, 0xb4, + 0x1f, 0x1f, 0x00, 0x00, 0x0f, 0xba, 0x02, 0x2d, 0x00, 0x14, 0x01, 0xa7, + 0x40, 0x0c, 0x05, 0x33, 0x99, 0x1a, 0x1a, 0x19, 0x99, 0x00, 0x00, 0x24, + 0x0a, 0x54, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0xed, 0x33, 0x10, 0xed, 0x01, + 0x2f, 0xed, 0xed, 0x32, 0x11, 0x33, 0x2f, 0xed, 0xed, 0x32, 0x2f, 0x30, + 0x31, 0x01, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x37, 0x05, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x37, 0x01, 0xf1, 0x6c, 0xa4, 0x6f, + 0x39, 0x1b, 0x2e, 0x3c, 0x21, 0x21, 0x30, 0x1f, 0x0f, 0x1a, 0x20, 0x1a, + 0x28, 0x40, 0x54, 0x2b, 0x02, 0x0d, 0x6c, 0xa5, 0x6f, 0x39, 0x1b, 0x2e, + 0x3c, 0x21, 0x21, 0x30, 0x1f, 0x0f, 0x1a, 0x20, 0x1a, 0x28, 0x41, 0x53, + 0x2c, 0x03, 0x23, 0x42, 0x6e, 0x8f, 0x4e, 0x39, 0x55, 0x37, 0x1c, 0x17, + 0x23, 0x2a, 0x14, 0x27, 0x30, 0x2a, 0x2f, 0x27, 0x27, 0x3d, 0x28, 0x14, + 0x02, 0x81, 0x42, 0x6e, 0x8f, 0x4e, 0x39, 0x55, 0x37, 0x1c, 0x17, 0x23, + 0x2a, 0x14, 0x27, 0x30, 0x2a, 0x2f, 0x27, 0x27, 0x3d, 0x28, 0x14, 0x02, + 0x00, 0x02, 0x00, 0x00, 0x02, 0xeb, 0x03, 0x3d, 0x05, 0xa0, 0x00, 0x03, + 0x00, 0x04, 0x00, 0x23, 0x40, 0x0f, 0x02, 0x00, 0x01, 0x03, 0x03, 0x01, + 0x03, 0x01, 0x02, 0x00, 0x00, 0x02, 0x02, 0x04, 0x53, 0x00, 0x3f, 0x33, + 0x2f, 0x33, 0x2f, 0x11, 0x39, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, + 0x39, 0x30, 0x31, 0x01, 0x27, 0x13, 0x05, 0x25, 0x01, 0xf7, 0x9c, 0xc8, + 0x01, 0x1a, 0xfc, 0xc3, 0x02, 0xeb, 0x3b, 0x02, 0x7a, 0x59, 0x3e, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x02, 0xeb, 0x04, 0x2f, 0x05, 0xa0, 0x02, 0x06, + 0x0a, 0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x02, 0xf2, 0x04, 0x66, + 0x05, 0xa0, 0x00, 0x03, 0x00, 0x07, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x61, + 0x40, 0x2e, 0x08, 0x0a, 0x09, 0x0b, 0x0b, 0x09, 0x06, 0x04, 0x05, 0x07, + 0x07, 0x05, 0x05, 0x09, 0x09, 0x02, 0x00, 0x01, 0x03, 0x03, 0x01, 0x06, + 0x06, 0x0a, 0x0a, 0x02, 0x07, 0x0b, 0x0b, 0x03, 0x03, 0x02, 0x04, 0x08, + 0x08, 0x05, 0x09, 0x09, 0x01, 0x01, 0x00, 0x00, 0x02, 0x02, 0x0c, 0x53, + 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x2f, 0x32, 0x11, 0x33, 0x11, 0x33, 0x32, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x32, 0x2f, 0x33, 0x2f, + 0x33, 0x2f, 0x12, 0x39, 0x39, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, + 0x31, 0x13, 0x27, 0x13, 0x17, 0x01, 0x27, 0x13, 0x17, 0x01, 0x27, 0x13, + 0x17, 0x25, 0x7e, 0x7e, 0xc8, 0xfc, 0x01, 0x5c, 0x7e, 0xc8, 0xfc, 0xfd, + 0x67, 0x7e, 0xc8, 0xfc, 0xfc, 0xed, 0x02, 0xf2, 0x34, 0x02, 0x7a, 0x52, + 0xfd, 0xa4, 0x34, 0x02, 0x7a, 0x52, 0xfd, 0xa4, 0x34, 0x02, 0x7a, 0x52, + 0x37, 0x00, 0xff, 0xff, 0x00, 0x00, 0x05, 0x85, 0x04, 0x64, 0x06, 0xbb, + 0x02, 0x07, 0x03, 0xba, 0x00, 0x00, 0x01, 0x90, 0x00, 0x02, 0x00, 0x85, + 0x00, 0x50, 0x03, 0xe1, 0x03, 0xee, 0x00, 0x03, 0x00, 0x07, 0x00, 0x33, + 0x40, 0x1b, 0x06, 0x02, 0x05, 0x01, 0x06, 0x80, 0x07, 0x01, 0x07, 0x07, + 0x05, 0x04, 0x04, 0x08, 0x00, 0x01, 0x01, 0x03, 0x4f, 0x02, 0x6f, 0x02, + 0x7f, 0x02, 0x03, 0x02, 0x4f, 0x00, 0x3f, 0x5d, 0x33, 0x33, 0x2f, 0x33, + 0x11, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x5d, 0x33, 0x01, 0x2f, 0x33, 0x2f, + 0x33, 0x30, 0x31, 0x13, 0x35, 0x01, 0x15, 0x01, 0x35, 0x01, 0x15, 0x85, + 0x03, 0x5c, 0xfc, 0xa4, 0x03, 0x5c, 0x01, 0xe6, 0xda, 0x01, 0x2e, 0xda, + 0xfd, 0x3c, 0xda, 0x01, 0x2e, 0xda, 0x00, 0x01, 0x00, 0x21, 0x00, 0x00, + 0x04, 0x22, 0x05, 0x25, 0x00, 0x25, 0x00, 0x63, 0x40, 0x09, 0x60, 0x20, + 0x70, 0x20, 0x02, 0x20, 0x0e, 0x0e, 0x24, 0xb8, 0x01, 0xa2, 0xb6, 0x1b, + 0x01, 0x22, 0x01, 0x22, 0x00, 0x16, 0xb8, 0x01, 0xc2, 0x40, 0x21, 0x05, + 0x1e, 0x00, 0x02, 0xd3, 0x1b, 0x1b, 0x23, 0xd3, 0x20, 0x1f, 0xd3, 0x1c, + 0x0f, 0x1c, 0x1f, 0x1c, 0x02, 0x20, 0x1c, 0x20, 0x1c, 0x24, 0x0e, 0x11, + 0xd5, 0x0d, 0x0a, 0x41, 0x24, 0xd4, 0x01, 0x43, 0x00, 0x3f, 0xed, 0x3f, + 0x33, 0xed, 0x32, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x10, 0xed, 0x10, + 0xed, 0x33, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x32, 0x00, 0x5d, 0x30, 0x31, 0x21, + 0x21, 0x11, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, + 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x17, + 0x11, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x15, 0x21, 0x04, 0x22, + 0xfd, 0xc3, 0xdc, 0xe8, 0x43, 0x75, 0x9f, 0x5c, 0x3d, 0x80, 0x3a, 0x40, + 0x6b, 0x36, 0x36, 0x56, 0x3c, 0x21, 0x18, 0x36, 0x57, 0x3f, 0x02, 0x3d, + 0xfe, 0x9c, 0x01, 0x56, 0xfe, 0xaa, 0x01, 0x64, 0x01, 0x70, 0x07, 0xf5, + 0xe5, 0x6c, 0xad, 0x7a, 0x41, 0x13, 0x1a, 0xd3, 0x23, 0x20, 0x21, 0x45, + 0x69, 0x47, 0x45, 0x6c, 0x4b, 0x29, 0x04, 0x01, 0x58, 0xb8, 0x9d, 0xb9, + 0xb8, 0x00, 0x00, 0x03, 0x00, 0x52, 0xff, 0x45, 0x03, 0xec, 0x05, 0xda, + 0x00, 0x2c, 0x00, 0x36, 0x00, 0x40, 0x00, 0xf7, 0xb7, 0x21, 0x26, 0x27, + 0x04, 0x05, 0x20, 0x05, 0x20, 0xb8, 0x01, 0x5d, 0x40, 0x19, 0x1e, 0x1d, + 0x35, 0x34, 0x07, 0x06, 0x1f, 0x1d, 0x06, 0x1f, 0x1f, 0x18, 0x1a, 0x2f, + 0x30, 0x31, 0x32, 0x09, 0x0a, 0x19, 0x0a, 0x31, 0x32, 0x0a, 0x19, 0xb8, + 0x01, 0x5d, 0x40, 0x09, 0x17, 0x3f, 0x3e, 0x0c, 0x0b, 0x18, 0x18, 0x18, + 0x0a, 0xbb, 0x01, 0x5d, 0x00, 0x0b, 0x00, 0x05, 0x01, 0x5d, 0x40, 0x0a, + 0x06, 0x06, 0x0b, 0x0b, 0x11, 0x2c, 0x24, 0x24, 0x2c, 0x3a, 0xb8, 0x02, + 0x1d, 0x40, 0x0a, 0x11, 0x20, 0x4d, 0x35, 0x26, 0x24, 0x24, 0x3f, 0x2f, + 0x2d, 0xb8, 0x01, 0x10, 0x40, 0x18, 0x1c, 0x21, 0x1e, 0x23, 0x23, 0x1c, + 0x1f, 0x18, 0x18, 0x1a, 0x17, 0x1c, 0x42, 0x19, 0x4d, 0x0b, 0x47, 0x30, + 0x3e, 0x3e, 0x27, 0x2c, 0x2c, 0x34, 0xb8, 0x01, 0x17, 0x40, 0x0e, 0x07, + 0x09, 0x0c, 0x0c, 0x07, 0x0a, 0x06, 0x06, 0x04, 0x00, 0x07, 0x44, 0x05, + 0x47, 0x00, 0x3f, 0x3f, 0x33, 0x39, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x12, + 0x39, 0x10, 0xed, 0x32, 0x11, 0x39, 0x32, 0x11, 0x39, 0x3f, 0x3f, 0x3f, + 0x33, 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x12, 0x39, 0x39, 0x10, 0xed, + 0x32, 0x32, 0x32, 0x11, 0x39, 0x39, 0x3f, 0x01, 0x2f, 0xed, 0x2f, 0x33, + 0x2f, 0x11, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x33, 0x2f, + 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0xed, 0x11, 0x00, 0x39, + 0x39, 0x10, 0x7d, 0x87, 0x05, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x11, + 0x01, 0x33, 0x18, 0x2f, 0x12, 0x00, 0x39, 0x7d, 0x87, 0x05, 0xc4, 0xc4, + 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0xed, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, + 0xc4, 0x30, 0x31, 0x25, 0x06, 0x07, 0x06, 0x07, 0x07, 0x23, 0x37, 0x26, + 0x27, 0x07, 0x23, 0x37, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x12, 0x36, + 0x37, 0x36, 0x37, 0x37, 0x33, 0x07, 0x32, 0x17, 0x16, 0x17, 0x37, 0x33, + 0x07, 0x16, 0x17, 0x15, 0x26, 0x27, 0x03, 0x36, 0x37, 0x36, 0x36, 0x37, + 0x01, 0x22, 0x07, 0x03, 0x16, 0x17, 0x16, 0x17, 0x13, 0x26, 0x05, 0x06, + 0x06, 0x15, 0x14, 0x17, 0x16, 0x17, 0x13, 0x06, 0x03, 0xec, 0x57, 0x52, + 0x1c, 0x1d, 0x18, 0xa4, 0x17, 0x37, 0x31, 0x19, 0xa4, 0x21, 0x44, 0x34, + 0x4a, 0x4d, 0x54, 0x9c, 0x6f, 0x2c, 0x30, 0x1a, 0xa4, 0x18, 0x29, 0x24, + 0x0f, 0x0e, 0x18, 0xa4, 0x1c, 0x17, 0x18, 0x28, 0x26, 0x75, 0x16, 0x17, + 0x28, 0x4d, 0x21, 0xfe, 0xd2, 0x15, 0x14, 0x78, 0x03, 0x02, 0x2c, 0x36, + 0x7b, 0x22, 0xfe, 0xd5, 0x2a, 0x28, 0x14, 0x0b, 0x0f, 0x5a, 0x1e, 0x33, + 0x23, 0x11, 0x06, 0x03, 0xb1, 0xab, 0x03, 0x0a, 0xb8, 0xef, 0x26, 0x39, + 0x52, 0xf3, 0xa1, 0xa5, 0x01, 0x01, 0xb1, 0x2e, 0x12, 0x0c, 0xbe, 0xad, + 0x02, 0x01, 0x01, 0xb1, 0xce, 0x06, 0x08, 0xf4, 0x13, 0x0d, 0xfc, 0xad, + 0x05, 0x06, 0x0b, 0x1d, 0x0f, 0x03, 0x3b, 0x02, 0xfc, 0x99, 0x01, 0x01, + 0x14, 0x07, 0x03, 0x81, 0x05, 0x80, 0x3c, 0xa7, 0x64, 0x6a, 0x54, 0x2a, + 0x24, 0x02, 0x8d, 0x19, 0x00, 0x01, 0x00, 0x52, 0xff, 0xee, 0x04, 0x4c, + 0x05, 0x2d, 0x00, 0x38, 0x00, 0x5f, 0xb1, 0x30, 0x0b, 0xb8, 0x01, 0x88, + 0xb3, 0x2d, 0x2d, 0x0e, 0x2a, 0xbb, 0x02, 0x1d, 0x00, 0x17, 0x00, 0x38, + 0x01, 0x86, 0x40, 0x13, 0x00, 0x00, 0x0e, 0x22, 0x22, 0x0e, 0x0a, 0x00, + 0x00, 0x05, 0xc2, 0x30, 0x33, 0x33, 0x2e, 0x2e, 0x12, 0x22, 0x25, 0xb8, + 0x01, 0x12, 0xb5, 0x21, 0x1c, 0x42, 0x2d, 0x0e, 0x0b, 0xb8, 0x01, 0x19, + 0xb2, 0x0f, 0x12, 0x44, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x32, 0x3f, 0x33, + 0xed, 0x32, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x32, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x32, 0x30, 0x31, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x11, 0x36, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x11, 0x33, + 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x03, 0x83, 0x0a, 0x11, + 0x17, 0x0e, 0x1d, 0x22, 0x11, 0x04, 0x3e, 0x86, 0x39, 0x58, 0xa2, 0x58, + 0x8d, 0xd9, 0x95, 0x4d, 0x54, 0x9c, 0xdf, 0x8b, 0x2d, 0x4f, 0x4c, 0x4e, + 0x2a, 0x55, 0x9a, 0x3f, 0x5d, 0x84, 0x55, 0x28, 0x5d, 0x65, 0xb5, 0x07, + 0x21, 0x52, 0x30, 0x2b, 0x4a, 0x37, 0x1f, 0x02, 0x12, 0x2f, 0x36, 0x1b, + 0x07, 0x1f, 0x2e, 0x38, 0x18, 0xfe, 0xd2, 0x07, 0x2a, 0x1a, 0xe6, 0x23, + 0x22, 0x53, 0xa4, 0xf3, 0xa1, 0xa5, 0x01, 0x01, 0xb1, 0x5d, 0x04, 0x0b, + 0x12, 0x0e, 0xf4, 0x28, 0x22, 0x43, 0x79, 0xa7, 0x64, 0xa1, 0xd6, 0x2d, + 0x02, 0x46, 0x56, 0x3b, 0x2d, 0x1b, 0x44, 0x75, 0x5b, 0x00, 0xff, 0xff, + 0x00, 0x01, 0xff, 0x54, 0x04, 0x65, 0x04, 0x28, 0x02, 0x26, 0x00, 0x8f, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x68, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x1b, 0x00, 0x1f, 0x00, 0x23, + 0x00, 0x26, 0x00, 0x29, 0x00, 0xb2, 0x40, 0x0f, 0x12, 0x26, 0x24, 0x11, + 0x24, 0x24, 0x25, 0x25, 0x14, 0x1b, 0x17, 0x17, 0x19, 0x01, 0x15, 0xb8, + 0x01, 0xc2, 0x40, 0x16, 0x14, 0x04, 0x1d, 0x1e, 0x29, 0x27, 0x03, 0x27, + 0x03, 0x22, 0x14, 0x14, 0x07, 0x0d, 0x09, 0x09, 0x07, 0x27, 0x28, 0x28, + 0x11, 0x06, 0xb8, 0x01, 0xc2, 0x40, 0x30, 0x0f, 0x0b, 0x07, 0x11, 0x41, + 0x29, 0x28, 0x28, 0x0e, 0x1e, 0x1f, 0x1f, 0x0d, 0x26, 0x05, 0x04, 0x01, + 0x09, 0xc1, 0x20, 0x1d, 0x1c, 0x1a, 0x0a, 0x23, 0x19, 0x0d, 0xc1, 0x16, + 0x12, 0x60, 0x0e, 0x70, 0x0e, 0x02, 0x0e, 0x0e, 0x02, 0x27, 0x14, 0x10, + 0x41, 0x03, 0x43, 0x24, 0x07, 0x02, 0x43, 0x00, 0x3f, 0x33, 0x33, 0x3f, + 0x3f, 0x33, 0x33, 0x12, 0x39, 0x2f, 0x5d, 0x33, 0x33, 0xfd, 0x32, 0x32, + 0xde, 0x32, 0x32, 0x32, 0x32, 0xed, 0x32, 0x32, 0x32, 0x32, 0x11, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x3f, 0x01, 0x2f, 0x33, 0x33, 0xed, + 0x32, 0x32, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x33, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0x10, 0xed, + 0x32, 0x32, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x11, 0x33, 0x10, 0x7d, 0x87, + 0xc4, 0xc4, 0x30, 0x31, 0x01, 0x23, 0x11, 0x21, 0x03, 0x23, 0x11, 0x23, + 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x21, 0x13, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x15, 0x23, 0x15, 0x33, 0x21, 0x33, 0x27, 0x23, + 0x05, 0x33, 0x35, 0x23, 0x13, 0x27, 0x23, 0x01, 0x17, 0x33, 0x04, 0x66, + 0x56, 0xfe, 0xd4, 0xc5, 0xe1, 0xe0, 0x5e, 0x5e, 0x5e, 0x5e, 0x01, 0x2e, + 0xc6, 0xde, 0xe0, 0x56, 0x56, 0x56, 0xfc, 0xd8, 0x97, 0x2e, 0x69, 0x01, + 0x8e, 0x64, 0x93, 0xa7, 0x0b, 0x29, 0xfe, 0x1a, 0x0b, 0x2a, 0x01, 0xb5, + 0xfe, 0x4b, 0x01, 0xb5, 0xfe, 0x4b, 0x01, 0xb5, 0xa6, 0x67, 0xa6, 0x01, + 0xb3, 0xfe, 0x4d, 0x01, 0xb3, 0xfe, 0x4d, 0xa6, 0x67, 0x67, 0x67, 0x67, + 0xfe, 0x69, 0x8a, 0x02, 0x31, 0x7e, 0x00, 0x03, 0x00, 0x3b, 0xff, 0xf0, + 0x04, 0x44, 0x05, 0x1b, 0x00, 0x1a, 0x00, 0x25, 0x00, 0x5f, 0x00, 0x80, + 0xb2, 0x4c, 0x4c, 0x26, 0xbb, 0x01, 0x7e, 0x00, 0x37, 0x00, 0x56, 0x01, + 0x7e, 0xb5, 0x41, 0x2f, 0x2f, 0x41, 0x41, 0x10, 0xbb, 0x01, 0x84, 0x00, + 0x1b, 0x00, 0x00, 0x01, 0x9d, 0x40, 0x0a, 0x01, 0x01, 0x15, 0x1b, 0x1b, + 0x0a, 0x37, 0x37, 0x07, 0x20, 0xb8, 0x01, 0x84, 0x40, 0x20, 0x0a, 0x5b, + 0x46, 0x34, 0x3c, 0x2b, 0x4c, 0x51, 0xcc, 0x4b, 0x46, 0x50, 0x2f, 0x34, + 0xcc, 0x2e, 0x2b, 0x44, 0x15, 0x07, 0xc3, 0x21, 0x21, 0x08, 0x20, 0xd1, + 0x0a, 0x41, 0x08, 0x43, 0x01, 0x43, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x39, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x11, 0x12, 0x39, 0x01, 0x2f, 0xed, 0x32, 0x33, 0x2f, 0x12, + 0x39, 0x2f, 0x33, 0x33, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x33, 0x2f, + 0x10, 0xed, 0x10, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x21, 0x23, 0x03, 0x2e, + 0x03, 0x23, 0x11, 0x23, 0x11, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x1e, 0x03, 0x17, 0x03, 0x34, 0x2e, 0x02, 0x27, 0x11, 0x3e, + 0x03, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x1e, 0x03, + 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x2e, 0x03, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x02, 0x54, 0xd4, + 0x22, 0x03, 0x0f, 0x18, 0x21, 0x16, 0xc2, 0x71, 0x7b, 0x9a, 0x57, 0x20, + 0x0c, 0x1d, 0x31, 0x24, 0x14, 0x23, 0x1b, 0x14, 0x05, 0xb1, 0x08, 0x19, + 0x2f, 0x27, 0x25, 0x2f, 0x1a, 0x09, 0x02, 0xd0, 0x2b, 0x49, 0x63, 0x38, + 0x34, 0x60, 0x38, 0x1f, 0x32, 0x2b, 0x28, 0x17, 0x2a, 0x39, 0x13, 0x20, + 0x2a, 0x16, 0x1e, 0x3e, 0x32, 0x1f, 0x22, 0x46, 0x6c, 0x4a, 0x11, 0x22, + 0x26, 0x2d, 0x1d, 0x1f, 0x2f, 0x27, 0x20, 0x0f, 0x1c, 0x25, 0x17, 0x09, + 0x13, 0x21, 0x29, 0x17, 0x1e, 0x3e, 0x31, 0x20, 0x01, 0xb0, 0x2b, 0x36, + 0x1f, 0x0b, 0xfd, 0xc5, 0x05, 0x1b, 0x37, 0x62, 0x87, 0x50, 0x31, 0x5b, + 0x4f, 0x42, 0x18, 0x0c, 0x1b, 0x2a, 0x3c, 0x2c, 0x01, 0xf2, 0x2d, 0x43, + 0x2d, 0x18, 0x02, 0xfe, 0x85, 0x01, 0x1b, 0x31, 0x48, 0xfd, 0x82, 0x45, + 0x67, 0x44, 0x22, 0x11, 0x14, 0xc0, 0x0e, 0x15, 0x0e, 0x06, 0x32, 0x33, + 0x1c, 0x2e, 0x29, 0x25, 0x12, 0x19, 0x3a, 0x4a, 0x5c, 0x3c, 0x3d, 0x67, + 0x4b, 0x29, 0x02, 0x07, 0x0c, 0x09, 0xba, 0x0d, 0x10, 0x0a, 0x04, 0x11, + 0x1b, 0x22, 0x10, 0x1b, 0x2f, 0x2b, 0x28, 0x14, 0x1b, 0x3e, 0x4b, 0x5d, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x1b, + 0x00, 0x1f, 0x00, 0x23, 0x00, 0x26, 0x00, 0x29, 0x00, 0x2c, 0x01, 0x15, + 0x40, 0x33, 0x24, 0x05, 0x06, 0x26, 0x06, 0x25, 0x04, 0x03, 0x26, 0x03, + 0x26, 0x1e, 0x23, 0x20, 0x2c, 0x2a, 0x23, 0x2a, 0x23, 0x1e, 0x1d, 0x28, + 0x27, 0x1e, 0x27, 0x1e, 0x10, 0x15, 0x00, 0x17, 0x17, 0x15, 0x13, 0x22, + 0x21, 0x2b, 0x2a, 0x14, 0x2a, 0x2a, 0x03, 0x16, 0x19, 0x1a, 0x01, 0x02, + 0x15, 0x16, 0x02, 0x02, 0x15, 0xb8, 0x01, 0x9c, 0x40, 0x0b, 0x14, 0x14, + 0x10, 0x12, 0x1f, 0x1c, 0x29, 0x27, 0x11, 0x27, 0x11, 0xb8, 0x01, 0xa2, + 0x40, 0x46, 0x10, 0x0a, 0x0e, 0x0e, 0x10, 0x27, 0x0f, 0x0c, 0x0b, 0x08, + 0x07, 0x10, 0x06, 0x07, 0x07, 0x10, 0x15, 0x41, 0x14, 0x41, 0x11, 0x41, + 0x13, 0x12, 0x0f, 0x0e, 0xc1, 0x0d, 0x2c, 0x2b, 0x29, 0x28, 0x08, 0x05, + 0x04, 0x01, 0x09, 0xc1, 0x25, 0x24, 0x21, 0x20, 0x1d, 0x1c, 0x1a, 0x0b, + 0x0a, 0x0a, 0x26, 0x23, 0x22, 0x1f, 0x1e, 0x19, 0x0c, 0x0d, 0x0d, 0x07, + 0x10, 0x41, 0x27, 0x07, 0x43, 0x06, 0x43, 0x03, 0x43, 0x2a, 0x02, 0x43, + 0x00, 0x3f, 0x33, 0x3f, 0x3f, 0x3f, 0x33, 0x3f, 0x12, 0x39, 0x2f, 0x33, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x2f, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xed, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, + 0x32, 0x10, 0xed, 0x32, 0x32, 0x32, 0x3f, 0x3f, 0x3f, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x33, 0x11, 0x33, + 0x18, 0x2f, 0x33, 0x10, 0xed, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, + 0x11, 0x01, 0x33, 0x18, 0x2f, 0xed, 0x32, 0x2f, 0x00, 0x39, 0x7d, 0x87, + 0x05, 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x33, 0x33, 0x10, 0x87, 0xc4, 0xc4, + 0xc4, 0xc4, 0x11, 0x01, 0x33, 0x18, 0x2f, 0x33, 0x11, 0x12, 0x39, 0x10, + 0x7d, 0x87, 0xc4, 0xc4, 0x11, 0x01, 0x33, 0x10, 0x87, 0xc4, 0xc4, 0x11, + 0x12, 0x01, 0x39, 0x10, 0x87, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0x30, + 0x31, 0x01, 0x23, 0x03, 0x21, 0x03, 0x23, 0x03, 0x21, 0x03, 0x23, 0x35, + 0x33, 0x27, 0x23, 0x35, 0x33, 0x03, 0x33, 0x13, 0x21, 0x13, 0x33, 0x03, + 0x33, 0x15, 0x23, 0x07, 0x33, 0x21, 0x33, 0x37, 0x23, 0x05, 0x33, 0x37, + 0x23, 0x07, 0x33, 0x27, 0x03, 0x37, 0x23, 0x05, 0x37, 0x23, 0x04, 0x66, + 0x6c, 0x12, 0xfe, 0xdf, 0x55, 0x8d, 0x52, 0xfe, 0xeb, 0x12, 0x6c, 0x63, + 0x0c, 0x57, 0x4d, 0x18, 0xd9, 0x0f, 0x02, 0x35, 0x0f, 0xd1, 0x19, 0x4d, + 0x56, 0x0c, 0x62, 0xfc, 0xc5, 0x56, 0x3c, 0x9a, 0x01, 0xcd, 0x55, 0x07, + 0x97, 0xa6, 0x38, 0x1c, 0xf6, 0x1e, 0x22, 0x02, 0x0b, 0x03, 0x21, 0x01, + 0x43, 0xfe, 0xbd, 0x01, 0x43, 0xfe, 0xbd, 0x01, 0x43, 0xa6, 0xd6, 0xa6, + 0x01, 0xb6, 0xfe, 0x4a, 0x01, 0xb6, 0xfe, 0x4a, 0xa6, 0xd6, 0xd6, 0xd6, + 0xd6, 0xd6, 0x6c, 0xfe, 0x83, 0x6b, 0x69, 0x69, 0x00, 0x02, 0x00, 0x53, + 0x00, 0x00, 0x04, 0x13, 0x04, 0x62, 0x00, 0x0e, 0x00, 0x1e, 0x00, 0x45, + 0xbc, 0x00, 0x16, 0x01, 0x7e, 0x00, 0x13, 0x00, 0x04, 0x01, 0x7e, 0xb6, + 0x05, 0x13, 0x05, 0x13, 0x05, 0x1c, 0x0d, 0xbb, 0x01, 0x7e, 0x00, 0x0e, + 0x00, 0x0f, 0x01, 0x7e, 0x40, 0x0d, 0x1c, 0x14, 0x0c, 0x05, 0x1b, 0xc1, + 0x10, 0x0e, 0x43, 0x0c, 0xc1, 0x1d, 0x00, 0x00, 0x2f, 0x32, 0xed, 0x3f, + 0x33, 0xf4, 0xce, 0x10, 0xce, 0x01, 0x2f, 0xed, 0x2f, 0xed, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x10, 0xed, 0x10, 0xed, 0x30, 0x31, 0x13, 0x21, 0x20, + 0x11, 0x11, 0x23, 0x11, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x23, 0x21, + 0x21, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x33, + 0x11, 0x33, 0x53, 0x01, 0x7e, 0x01, 0x42, 0xbe, 0x16, 0x2b, 0x3e, 0x27, + 0x9e, 0xbe, 0x03, 0xc0, 0xfe, 0x82, 0xa0, 0xa2, 0xbe, 0x16, 0x2b, 0x3e, + 0x27, 0x9e, 0xbe, 0x04, 0x62, 0xfe, 0x8e, 0xfe, 0x18, 0x01, 0xfc, 0x36, + 0x48, 0x2b, 0x11, 0xfc, 0x42, 0xb8, 0xba, 0x01, 0xe7, 0xfe, 0x04, 0x36, + 0x48, 0x2a, 0x12, 0x03, 0xbf, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x42, 0x05, 0x1b, 0x00, 0x13, 0x00, 0x59, 0xb7, 0x0b, 0x0e, 0x0e, + 0x08, 0x05, 0x05, 0x04, 0x10, 0xb8, 0x01, 0xf9, 0xb3, 0x11, 0x09, 0x09, + 0x07, 0xb8, 0x02, 0x23, 0xb2, 0x06, 0x06, 0x0c, 0xb8, 0x02, 0x33, 0x40, + 0x16, 0x0d, 0x0d, 0x11, 0x13, 0x13, 0x01, 0x11, 0x0f, 0x0b, 0x13, 0xda, + 0x08, 0x04, 0x00, 0x00, 0x02, 0x11, 0x0c, 0x43, 0x06, 0x02, 0x41, 0x00, + 0x3f, 0x33, 0x3f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, + 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x10, 0xed, 0x32, 0x32, 0x11, 0x33, 0x32, 0x11, 0x33, 0x30, + 0x31, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, 0x21, 0x01, 0x21, 0x15, + 0x21, 0x01, 0x21, 0x01, 0x23, 0x11, 0x23, 0x11, 0x23, 0x81, 0xfa, 0x2b, + 0x01, 0x5c, 0x01, 0x29, 0xfe, 0x87, 0x01, 0x5a, 0xfe, 0xa8, 0x01, 0x8e, + 0xfe, 0xc2, 0xfe, 0x95, 0x1e, 0xfa, 0x81, 0x03, 0x0a, 0x02, 0x11, 0xfd, + 0xef, 0x02, 0x11, 0xfd, 0xef, 0xc3, 0xfd, 0xb9, 0x02, 0x47, 0xfd, 0xb9, + 0x02, 0x47, 0x00, 0x01, 0x00, 0x4f, 0x00, 0x00, 0x04, 0x17, 0x05, 0x1b, + 0x00, 0x17, 0x00, 0xaa, 0x40, 0x25, 0x16, 0x13, 0x12, 0x17, 0x17, 0x12, + 0x0f, 0x02, 0x03, 0x0e, 0x0e, 0x0c, 0x05, 0x04, 0x0d, 0x04, 0x10, 0x01, + 0x00, 0x11, 0x00, 0x00, 0x04, 0x04, 0x05, 0x07, 0x07, 0x05, 0x11, 0x0d, + 0x0d, 0x0a, 0x0a, 0x13, 0x10, 0x0f, 0x0c, 0xb8, 0x01, 0xfb, 0x40, 0x1d, + 0x16, 0x02, 0x01, 0x05, 0x03, 0x12, 0x00, 0x11, 0x01, 0x11, 0x11, 0x0e, + 0x0e, 0x0d, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x03, 0x04, 0x00, + 0x0d, 0x10, 0x0d, 0x02, 0x0d, 0xb8, 0xff, 0xc0, 0x40, 0x0f, 0x0c, 0x10, + 0x48, 0x0d, 0x04, 0x0d, 0x04, 0x08, 0x14, 0x43, 0x0b, 0x07, 0xe2, 0x08, + 0x41, 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x2b, + 0x5d, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x5d, 0x33, 0x11, 0x33, 0x11, 0x33, + 0x2f, 0x5d, 0x33, 0x01, 0x2f, 0x2f, 0x33, 0x33, 0x33, 0xed, 0x32, 0x32, + 0x32, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0x33, 0x10, 0x7d, 0x87, 0x04, 0xc4, 0xc4, 0x10, 0x87, 0xc4, 0xc4, 0x01, + 0x18, 0x2f, 0x7d, 0x87, 0x04, 0xc4, 0xc4, 0x01, 0x18, 0x2f, 0x2f, 0x7d, + 0x87, 0x04, 0xc4, 0xc4, 0x30, 0x31, 0x13, 0x37, 0x35, 0x07, 0x35, 0x37, + 0x11, 0x21, 0x35, 0x21, 0x15, 0x21, 0x15, 0x37, 0x15, 0x07, 0x15, 0x37, + 0x15, 0x07, 0x11, 0x23, 0x35, 0x07, 0xc0, 0xf5, 0xf5, 0xf5, 0xfe, 0x9a, + 0x03, 0xc8, 0xfe, 0x9a, 0xf9, 0xf9, 0xf9, 0xf9, 0xfc, 0xf5, 0x01, 0x58, + 0x66, 0x91, 0x66, 0xc3, 0x66, 0x01, 0x3c, 0xcd, 0xcd, 0xd4, 0x68, 0xc3, + 0x68, 0x91, 0x68, 0xc3, 0x68, 0xfe, 0x9d, 0xfb, 0x66, 0x00, 0x00, 0x05, + 0xff, 0xfc, 0xff, 0x1e, 0x04, 0x4b, 0x05, 0x90, 0x00, 0x14, 0x00, 0x20, + 0x00, 0x5a, 0x00, 0x72, 0x00, 0x7e, 0x00, 0xae, 0x40, 0x0c, 0x2a, 0x60, + 0x5a, 0x21, 0x21, 0x2d, 0x29, 0x26, 0x57, 0x57, 0x47, 0x32, 0xb8, 0x01, + 0x6a, 0xb6, 0x5b, 0x7c, 0x6a, 0x3f, 0x4f, 0x4f, 0x76, 0xb8, 0x01, 0x54, + 0xb7, 0x47, 0x19, 0x03, 0x04, 0x04, 0x05, 0x05, 0x10, 0xb8, 0x01, 0x54, + 0x40, 0x3c, 0x1e, 0x60, 0x5a, 0x57, 0xa6, 0x2d, 0x21, 0x26, 0x26, 0x29, + 0x15, 0xa5, 0x0b, 0x0b, 0x05, 0x2a, 0x29, 0x29, 0x7f, 0x41, 0x4f, 0x6a, + 0x4c, 0x6c, 0xa6, 0x3a, 0x7c, 0x3f, 0x3a, 0x73, 0x8e, 0x3f, 0x4c, 0x4f, + 0x4c, 0x5f, 0x4c, 0x03, 0x4c, 0x40, 0x0e, 0x12, 0x48, 0x4c, 0x4c, 0x79, + 0x8e, 0x42, 0x42, 0x3a, 0x43, 0x19, 0x1b, 0x97, 0x00, 0x05, 0x05, 0x03, + 0x00, 0x44, 0x00, 0x3f, 0x32, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x3f, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x2b, 0x71, 0xed, 0x11, 0x39, 0x39, 0x10, 0xed, + 0x11, 0x39, 0x39, 0x3f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0xed, 0x11, + 0x33, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0x33, 0x11, 0x33, 0x33, 0x2f, 0xed, 0x33, 0x11, 0x33, 0x33, 0x33, 0x2f, + 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x30, 0x31, 0x05, 0x22, 0x26, 0x27, 0x07, 0x23, 0x13, 0x3e, 0x03, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x03, 0x22, 0x06, 0x07, 0x03, + 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x01, 0x3e, 0x03, 0x37, 0x36, + 0x36, 0x37, 0x17, 0x06, 0x06, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x02, 0x07, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x3e, 0x03, 0x37, + 0x36, 0x36, 0x37, 0x06, 0x06, 0x07, 0x05, 0x34, 0x2e, 0x02, 0x27, 0x0e, + 0x03, 0x07, 0x0e, 0x03, 0x07, 0x16, 0x33, 0x32, 0x3e, 0x04, 0x01, 0x22, + 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x26, 0x26, 0x03, 0x79, + 0x0c, 0x19, 0x0b, 0x18, 0x91, 0x51, 0x08, 0x23, 0x30, 0x39, 0x1e, 0x24, + 0x3d, 0x2d, 0x1a, 0x19, 0x33, 0x50, 0x0d, 0x11, 0x14, 0x04, 0x22, 0x09, + 0x13, 0x20, 0x2a, 0x0d, 0xfc, 0xdf, 0x1f, 0x47, 0x46, 0x40, 0x18, 0x1b, + 0x51, 0x3f, 0x4f, 0x24, 0x2e, 0x0c, 0x30, 0x41, 0x29, 0x11, 0x20, 0x20, + 0x14, 0x32, 0x3f, 0x4b, 0x2b, 0x12, 0x21, 0x1f, 0x21, 0x13, 0x1d, 0x42, + 0x2b, 0x1d, 0x35, 0x28, 0x19, 0x17, 0x25, 0x2e, 0x18, 0x17, 0x2b, 0x13, + 0x0f, 0x18, 0x14, 0x10, 0x07, 0x0b, 0x19, 0x11, 0x26, 0x5f, 0x2b, 0x01, + 0x89, 0x06, 0x0d, 0x17, 0x12, 0x07, 0x0e, 0x0d, 0x0c, 0x06, 0x08, 0x17, + 0x1b, 0x20, 0x12, 0x19, 0x16, 0x21, 0x34, 0x26, 0x1b, 0x10, 0x07, 0xfe, + 0x4e, 0x08, 0x0e, 0x0d, 0x07, 0x0b, 0x1b, 0x0b, 0x0b, 0x18, 0x17, 0x02, + 0x04, 0xd1, 0x02, 0xc8, 0x3c, 0x50, 0x30, 0x14, 0x13, 0x37, 0x66, 0x52, + 0x68, 0xa9, 0x78, 0x42, 0x02, 0x3d, 0x25, 0x2a, 0xfe, 0xa0, 0x0b, 0xab, + 0xa6, 0x33, 0x36, 0x02, 0x67, 0x10, 0x19, 0x11, 0x09, 0x01, 0x37, 0x5b, + 0x2d, 0x78, 0x1d, 0x2a, 0x12, 0x11, 0x4d, 0x6c, 0x84, 0x48, 0x9b, 0xfe, + 0xf0, 0x6c, 0x41, 0x68, 0x49, 0x27, 0x03, 0x0b, 0x13, 0x10, 0x1a, 0x15, + 0x10, 0x23, 0x36, 0x26, 0x23, 0x32, 0x21, 0x0f, 0x0a, 0x0b, 0x2c, 0x71, + 0x7f, 0x85, 0x3f, 0x6b, 0xb7, 0x3a, 0x05, 0x1c, 0x17, 0xef, 0x49, 0x65, + 0x42, 0x27, 0x0c, 0x1a, 0x4b, 0x5a, 0x64, 0x32, 0x4b, 0xaa, 0xa0, 0x86, + 0x26, 0x0d, 0x34, 0x5b, 0x7b, 0x8e, 0x9b, 0xfd, 0xe0, 0x0f, 0x0e, 0x11, + 0x0f, 0x12, 0x14, 0x0c, 0x0b, 0x00, 0x00, 0x02, 0x00, 0x18, 0xfe, 0x72, + 0x04, 0x19, 0x05, 0xc2, 0x00, 0x2b, 0x00, 0x3d, 0x00, 0x96, 0xb3, 0x39, + 0x05, 0x0a, 0x34, 0xb8, 0x01, 0xf4, 0x40, 0x0d, 0x18, 0x1b, 0x1b, 0x22, + 0x1c, 0x17, 0x17, 0x1d, 0x16, 0x13, 0x19, 0x22, 0x00, 0xb8, 0x01, 0xc2, + 0xb2, 0x2c, 0x2c, 0x0a, 0xb8, 0x01, 0xf8, 0xb6, 0x13, 0x10, 0x10, 0x13, + 0x13, 0x1a, 0x10, 0xb8, 0x01, 0x15, 0x40, 0x0e, 0x0f, 0x0f, 0x3e, 0x39, + 0x1d, 0x16, 0x05, 0x05, 0x19, 0x2f, 0xd3, 0x27, 0x4d, 0x1c, 0xb8, 0xff, + 0xf0, 0x40, 0x1e, 0x0f, 0x12, 0x48, 0x52, 0x1c, 0x01, 0x34, 0x1c, 0x44, + 0x1c, 0x02, 0x22, 0x1c, 0x01, 0x1c, 0x59, 0x18, 0x69, 0x18, 0x79, 0x18, + 0x03, 0x18, 0x1b, 0x1b, 0x19, 0x17, 0x17, 0x19, 0x43, 0x00, 0x3f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x5d, 0x33, 0x5d, 0x5d, 0x5d, 0x2b, 0x3f, + 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0xed, 0x2f, 0x33, + 0x12, 0x39, 0x39, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0xed, 0x11, + 0x39, 0x39, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x35, 0x32, 0x36, 0x35, 0x34, 0x26, 0x27, 0x03, + 0x03, 0x07, 0x23, 0x01, 0x13, 0x37, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x17, 0x3e, 0x03, 0x03, 0x80, 0x0c, 0x1b, 0x2d, 0x21, + 0x34, 0x62, 0x4b, 0x2d, 0x3a, 0x81, 0xd2, 0x97, 0x92, 0x99, 0x45, 0x3a, + 0xbb, 0x9e, 0x64, 0xcc, 0x01, 0x2c, 0x7a, 0x51, 0x33, 0x5f, 0x48, 0x2c, + 0x2d, 0x53, 0x76, 0x4a, 0x50, 0x75, 0x4d, 0x25, 0xe0, 0x31, 0x21, 0x0e, + 0x1c, 0x17, 0x0f, 0x0f, 0x1d, 0x28, 0x1a, 0x10, 0x14, 0x0c, 0x04, 0x04, + 0xa4, 0x27, 0x5a, 0x71, 0x90, 0x5d, 0x4f, 0x9f, 0xa0, 0xa0, 0x4f, 0x62, + 0xab, 0x7f, 0x4a, 0xdc, 0x78, 0x74, 0x5e, 0xc4, 0x64, 0xfd, 0xe3, 0x01, + 0x34, 0xd7, 0x02, 0xa3, 0xfe, 0xef, 0xdd, 0x49, 0x8c, 0x84, 0x77, 0x34, + 0x50, 0x7d, 0x55, 0x2d, 0x2b, 0x4c, 0x69, 0x55, 0x45, 0x38, 0x0a, 0x18, + 0x2a, 0x20, 0x26, 0x45, 0x45, 0x48, 0x29, 0x32, 0x4e, 0x40, 0x36, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, 0x00, 0x1d, + 0x00, 0x26, 0x00, 0x2c, 0x00, 0x32, 0x00, 0xe9, 0xb3, 0x32, 0x22, 0x0b, + 0x29, 0xb8, 0x01, 0xf7, 0xb7, 0x15, 0x03, 0x1c, 0x1c, 0x1a, 0x05, 0x02, + 0x00, 0xb8, 0x02, 0x00, 0x40, 0x10, 0x30, 0x2a, 0x24, 0x21, 0x1e, 0x1e, + 0x15, 0x10, 0x13, 0x13, 0x12, 0x0e, 0x15, 0x29, 0x1a, 0x14, 0xb8, 0xff, + 0xc0, 0x40, 0x1f, 0x11, 0x15, 0x48, 0x14, 0xc1, 0x13, 0x30, 0x05, 0x0f, + 0x40, 0x11, 0x15, 0x48, 0x0f, 0xc1, 0x24, 0x02, 0x10, 0x40, 0x34, 0x39, + 0x48, 0x50, 0x10, 0x01, 0x60, 0x13, 0x70, 0x13, 0x02, 0x13, 0xb8, 0xff, + 0xc0, 0x40, 0x18, 0x09, 0x0d, 0x48, 0x10, 0x10, 0x22, 0x00, 0xd0, 0x13, + 0x01, 0x3f, 0x13, 0x4f, 0x13, 0x5f, 0x13, 0x03, 0x5f, 0x13, 0x01, 0x13, + 0x13, 0x16, 0x32, 0xb8, 0xff, 0xc0, 0xb5, 0x18, 0x1e, 0x48, 0x0b, 0xe1, + 0x32, 0xb8, 0xff, 0xc0, 0x40, 0x30, 0x36, 0x39, 0x48, 0x00, 0x32, 0x01, + 0x60, 0x32, 0x70, 0x32, 0x80, 0x32, 0xa0, 0x32, 0xb0, 0x32, 0x05, 0x00, + 0x32, 0x10, 0x32, 0x50, 0x32, 0x80, 0x32, 0x90, 0x32, 0xa0, 0x32, 0xd0, + 0x32, 0xe0, 0x32, 0x08, 0x32, 0x32, 0x0d, 0x28, 0x40, 0x18, 0x1e, 0x48, + 0x28, 0xe1, 0x16, 0x41, 0x0d, 0x43, 0x00, 0x3f, 0x3f, 0xed, 0x2b, 0x12, + 0x39, 0x2f, 0x5d, 0x71, 0x72, 0x2b, 0xed, 0x2b, 0x12, 0x39, 0x2f, 0x5d, + 0x71, 0x72, 0x33, 0x33, 0x33, 0x2f, 0x2b, 0x5d, 0x5d, 0x2b, 0x33, 0x33, + 0xed, 0x2b, 0x32, 0x32, 0x10, 0xed, 0x2b, 0x32, 0x32, 0x01, 0x2f, 0x33, + 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x33, 0x33, 0xed, + 0x32, 0x32, 0x32, 0x32, 0x2f, 0x33, 0x10, 0xed, 0x32, 0x32, 0x32, 0x30, + 0x31, 0x01, 0x14, 0x07, 0x33, 0x15, 0x23, 0x0e, 0x03, 0x23, 0x23, 0x11, + 0x23, 0x11, 0x23, 0x35, 0x33, 0x35, 0x23, 0x35, 0x33, 0x11, 0x21, 0x32, + 0x16, 0x17, 0x33, 0x15, 0x23, 0x05, 0x34, 0x26, 0x27, 0x21, 0x15, 0x21, + 0x36, 0x36, 0x25, 0x23, 0x15, 0x21, 0x26, 0x26, 0x03, 0x32, 0x36, 0x37, + 0x21, 0x15, 0x04, 0x12, 0x03, 0x57, 0x86, 0x1d, 0x59, 0x79, 0x99, 0x5c, + 0x7d, 0xf8, 0x87, 0x87, 0x87, 0x87, 0x01, 0x7f, 0xc3, 0xfa, 0x31, 0x72, + 0x54, 0xfe, 0xfe, 0x01, 0x01, 0xfe, 0x71, 0x01, 0x8d, 0x02, 0x02, 0xfe, + 0xf0, 0x81, 0x01, 0x4b, 0x22, 0x64, 0x3c, 0x3a, 0x5c, 0x21, 0xfe, 0xc0, + 0x03, 0x71, 0x20, 0x1c, 0xa6, 0x3a, 0x5e, 0x43, 0x24, 0xfe, 0x70, 0x02, + 0x8f, 0xa6, 0x3e, 0xa6, 0x01, 0x02, 0x86, 0x7c, 0xa6, 0x13, 0x08, 0x0d, + 0x08, 0x52, 0x0d, 0x1a, 0xfd, 0x40, 0x1e, 0x22, 0xfe, 0x0d, 0x20, 0x1d, + 0x3d, 0x00, 0x00, 0x03, 0x00, 0x2f, 0xfe, 0xac, 0x04, 0x0a, 0x06, 0x20, + 0x00, 0x21, 0x00, 0x2d, 0x00, 0x36, 0x00, 0xaa, 0x40, 0x1f, 0x11, 0x1a, + 0x1b, 0x35, 0x2e, 0x36, 0x20, 0x21, 0x00, 0x10, 0x00, 0x20, 0x10, 0x00, + 0x0e, 0x2c, 0x2d, 0x2b, 0x02, 0x01, 0x0f, 0x01, 0x2d, 0x0f, 0x01, 0x0f, + 0x10, 0x10, 0x16, 0x16, 0x1c, 0xb8, 0x01, 0xd2, 0xb6, 0x34, 0x34, 0x08, + 0x00, 0x01, 0x01, 0x26, 0xb8, 0x02, 0x04, 0x40, 0x0d, 0x08, 0x35, 0x34, + 0xe0, 0x1b, 0x1c, 0x1c, 0x11, 0x36, 0x43, 0x33, 0x2b, 0x2e, 0xb8, 0x01, + 0x15, 0x40, 0x0b, 0x21, 0x1d, 0x02, 0x21, 0x00, 0x00, 0x21, 0x44, 0x2c, + 0x16, 0x1a, 0xb8, 0x01, 0x14, 0x40, 0x0c, 0x11, 0x15, 0x11, 0x0f, 0x0f, + 0x0e, 0x11, 0x42, 0x10, 0x4b, 0x01, 0x49, 0x00, 0x3f, 0x3f, 0x3f, 0x33, + 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x3f, 0x33, 0x2f, 0x11, + 0x33, 0x33, 0x10, 0xed, 0x32, 0x32, 0x3f, 0x12, 0x39, 0x2f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0x32, 0x2f, 0x33, 0x11, 0x12, 0x00, 0x39, 0x10, 0x7d, 0x87, 0x05, + 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x11, 0x12, 0x00, 0x39, 0x10, 0x87, 0x05, + 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0x30, 0x31, 0x01, 0x23, + 0x13, 0x26, 0x27, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x37, 0x36, 0x37, + 0x37, 0x33, 0x07, 0x16, 0x17, 0x16, 0x17, 0x15, 0x26, 0x27, 0x26, 0x27, + 0x03, 0x21, 0x11, 0x06, 0x06, 0x23, 0x23, 0x03, 0x0e, 0x02, 0x15, 0x14, + 0x16, 0x17, 0x16, 0x17, 0x13, 0x06, 0x13, 0x32, 0x3e, 0x02, 0x37, 0x11, + 0x23, 0x03, 0x02, 0x50, 0xd3, 0x28, 0x11, 0x10, 0x6c, 0x98, 0x51, 0x55, + 0xa3, 0x76, 0x49, 0x56, 0x1d, 0xd3, 0x1c, 0x26, 0x25, 0x56, 0x55, 0x4a, + 0x5a, 0x35, 0x37, 0x28, 0x01, 0x3c, 0x5a, 0xc4, 0x73, 0x05, 0x69, 0x46, + 0x5f, 0x31, 0x26, 0x2a, 0x1a, 0x22, 0x60, 0x0b, 0x80, 0x17, 0x22, 0x1e, + 0x1b, 0x0f, 0x60, 0x29, 0xfe, 0xac, 0x01, 0x5b, 0x06, 0x06, 0x2a, 0xa6, + 0xf6, 0xa2, 0xa3, 0x01, 0x02, 0xb3, 0x2f, 0x1d, 0x0b, 0xf6, 0xf4, 0x04, + 0x07, 0x0f, 0x1a, 0xf3, 0x23, 0x16, 0x0e, 0x05, 0xfe, 0xa3, 0xfd, 0x47, + 0x2a, 0x28, 0x04, 0x4c, 0x20, 0x76, 0xac, 0x6c, 0x68, 0xa7, 0x3b, 0x23, + 0x1a, 0x03, 0x3e, 0x04, 0xfc, 0x8b, 0x03, 0x06, 0x08, 0x05, 0x01, 0x4e, + 0xfe, 0x9c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x66, 0x05, 0x1b, + 0x00, 0x17, 0x00, 0x1b, 0x00, 0x1e, 0x00, 0x93, 0x40, 0x26, 0x12, 0x15, + 0x16, 0x01, 0x02, 0x11, 0x02, 0x11, 0x1e, 0x0f, 0x0c, 0x0b, 0x08, 0x07, + 0x10, 0x07, 0x10, 0x1e, 0x1c, 0x1b, 0x18, 0x05, 0x06, 0x1e, 0x06, 0x1d, + 0x1a, 0x19, 0x04, 0x03, 0x1e, 0x03, 0x1e, 0x02, 0x06, 0x1f, 0x07, 0x03, + 0xb8, 0x02, 0x22, 0x40, 0x21, 0x02, 0x1d, 0x1c, 0x12, 0x0f, 0xc1, 0x0c, + 0x05, 0x04, 0x01, 0x08, 0xc1, 0x19, 0x18, 0x16, 0x0b, 0x0b, 0x1b, 0x1a, + 0x15, 0x0c, 0x0c, 0x06, 0x1e, 0x11, 0x10, 0x41, 0x07, 0x06, 0x43, 0x02, + 0x03, 0x43, 0x00, 0x3f, 0x33, 0x3f, 0x33, 0x3f, 0x33, 0x33, 0x12, 0x39, + 0x2f, 0x33, 0x33, 0x33, 0x33, 0x2f, 0x33, 0x33, 0x33, 0xed, 0x32, 0x32, + 0x32, 0x10, 0xed, 0x32, 0x32, 0x32, 0x01, 0x2f, 0xed, 0x2f, 0x10, 0xc4, + 0x12, 0x39, 0x10, 0x7d, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x10, 0x87, 0xc4, + 0xc4, 0xc4, 0xc4, 0x11, 0x01, 0x33, 0x10, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, + 0x11, 0x01, 0x33, 0x10, 0x87, 0xc4, 0xc4, 0xc4, 0xc4, 0x30, 0x31, 0x01, + 0x23, 0x13, 0x21, 0x03, 0x21, 0x03, 0x21, 0x13, 0x23, 0x35, 0x33, 0x37, + 0x23, 0x35, 0x33, 0x13, 0x21, 0x13, 0x33, 0x15, 0x23, 0x17, 0x33, 0x21, + 0x21, 0x27, 0x23, 0x37, 0x33, 0x27, 0x04, 0x66, 0x64, 0x60, 0xfe, 0xea, + 0x57, 0xfe, 0x6c, 0x57, 0xfe, 0xfa, 0x5f, 0x63, 0x96, 0x2e, 0xc4, 0xf6, + 0x9b, 0x01, 0x46, 0x99, 0xf6, 0xc4, 0x2e, 0x96, 0xfd, 0x29, 0x01, 0x38, + 0x2a, 0xe4, 0x2e, 0x88, 0x44, 0x01, 0x3b, 0xfe, 0xc5, 0x01, 0x3b, 0xfe, + 0xc5, 0x01, 0x3b, 0xa6, 0x98, 0xa6, 0x01, 0xfc, 0xfe, 0x04, 0xa6, 0x98, + 0x98, 0xa6, 0xf5, 0x00, 0x00, 0x01, 0x00, 0x14, 0xff, 0xe9, 0x04, 0x48, + 0x05, 0x31, 0x00, 0x43, 0x00, 0x8f, 0x40, 0x0e, 0x23, 0x23, 0x1d, 0x42, + 0x06, 0x09, 0x43, 0x43, 0x13, 0x13, 0x07, 0x07, 0x01, 0x3f, 0xb8, 0x02, + 0x07, 0xb5, 0x25, 0x1f, 0x1c, 0x2a, 0x2a, 0x09, 0xb8, 0x02, 0x22, 0xb6, + 0x1c, 0x34, 0x34, 0x22, 0x1c, 0x34, 0x2f, 0xb8, 0x01, 0x0d, 0x40, 0x28, + 0x3a, 0x42, 0x24, 0xc1, 0x23, 0x09, 0x1d, 0xc1, 0x06, 0x0f, 0x1e, 0x1f, + 0x1e, 0x02, 0x02, 0x1e, 0x1e, 0x01, 0x3f, 0x23, 0x4f, 0x23, 0x5f, 0x23, + 0x03, 0x2f, 0x23, 0x01, 0x23, 0x40, 0x15, 0x19, 0x48, 0x23, 0x23, 0x35, + 0x3a, 0x42, 0x13, 0x0e, 0xb8, 0x01, 0x13, 0xb2, 0x14, 0x17, 0x44, 0x00, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0x39, 0x2f, 0x2b, 0x5d, 0x71, 0x33, + 0x33, 0x2f, 0x5f, 0x5d, 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x12, 0x39, + 0x39, 0xed, 0x32, 0x32, 0x2f, 0x32, 0x2f, 0x32, 0x2f, 0x11, 0x39, 0x39, + 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x21, 0x0e, 0x03, 0x07, 0x21, 0x15, + 0x21, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x27, 0x23, 0x35, 0x33, 0x36, 0x36, 0x37, 0x23, 0x35, + 0x21, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x33, + 0x04, 0x48, 0xfe, 0xf0, 0x29, 0x5b, 0x58, 0x53, 0x22, 0x02, 0x61, 0xfd, + 0x2f, 0x03, 0x1e, 0x3c, 0x5d, 0x41, 0x2f, 0x64, 0x65, 0x64, 0x2e, 0x5e, + 0xc0, 0x67, 0x6f, 0xbc, 0x8c, 0x55, 0x08, 0x4f, 0x63, 0x14, 0x47, 0x2d, + 0xeb, 0x02, 0x4e, 0x1d, 0x30, 0x23, 0x13, 0x1a, 0x3a, 0x5b, 0x40, 0x25, + 0x52, 0x51, 0x4c, 0x20, 0x20, 0x4d, 0x53, 0x55, 0x27, 0x85, 0xbc, 0x78, + 0x38, 0x0f, 0x0e, 0x76, 0x02, 0x8d, 0x19, 0x26, 0x22, 0x22, 0x15, 0xa6, + 0x1f, 0x33, 0x25, 0x15, 0x0c, 0x15, 0x1c, 0x10, 0xf3, 0x1c, 0x18, 0x28, + 0x57, 0x87, 0x60, 0xa6, 0x33, 0x48, 0x1d, 0xa6, 0x0f, 0x20, 0x25, 0x2c, + 0x1a, 0x21, 0x36, 0x25, 0x15, 0x08, 0x0f, 0x14, 0x0c, 0xe1, 0x08, 0x0f, + 0x0b, 0x07, 0x36, 0x60, 0x83, 0x4d, 0x2d, 0x4b, 0x20, 0x00, 0x00, 0x02, + 0x00, 0x52, 0xfe, 0xac, 0x03, 0xec, 0x06, 0x20, 0x00, 0x26, 0x00, 0x32, + 0x00, 0x87, 0x40, 0x09, 0x11, 0x1a, 0x1c, 0x1b, 0x26, 0x00, 0x10, 0x00, + 0x10, 0xb8, 0x01, 0x9d, 0x40, 0x09, 0x0e, 0x31, 0x30, 0x02, 0x01, 0x0f, + 0x0f, 0x0f, 0x00, 0xb8, 0x01, 0x9d, 0xb7, 0x01, 0x01, 0x08, 0x21, 0x16, + 0x16, 0x21, 0x2b, 0xb8, 0x02, 0x1d, 0xb4, 0x08, 0x30, 0x21, 0x1c, 0x1b, + 0xb8, 0x01, 0x16, 0x40, 0x0b, 0x26, 0x22, 0x02, 0x26, 0x00, 0x00, 0x26, + 0x44, 0x31, 0x16, 0x1a, 0xb8, 0x01, 0x14, 0x40, 0x0c, 0x11, 0x15, 0x11, + 0x0f, 0x0f, 0x0e, 0x11, 0x41, 0x10, 0x4b, 0x01, 0x49, 0x00, 0x3f, 0x3f, + 0x3f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x3f, 0x33, + 0x2f, 0x11, 0x33, 0x33, 0x10, 0xed, 0x32, 0x32, 0x32, 0x01, 0x2f, 0xed, + 0x2f, 0x33, 0x2f, 0x11, 0x12, 0x39, 0x2f, 0xed, 0x33, 0x2f, 0x7d, 0x87, + 0xc4, 0xc4, 0xc4, 0xc4, 0x01, 0x18, 0xed, 0x10, 0x7d, 0x87, 0xc4, 0xc4, + 0xc4, 0xc4, 0xc4, 0x30, 0x31, 0x01, 0x23, 0x13, 0x26, 0x27, 0x2e, 0x02, + 0x35, 0x34, 0x12, 0x36, 0x37, 0x36, 0x37, 0x37, 0x33, 0x07, 0x17, 0x16, + 0x16, 0x17, 0x15, 0x26, 0x27, 0x26, 0x27, 0x03, 0x33, 0x32, 0x3e, 0x02, + 0x37, 0x15, 0x06, 0x07, 0x06, 0x07, 0x03, 0x0e, 0x02, 0x15, 0x14, 0x16, + 0x17, 0x16, 0x17, 0x13, 0x06, 0x02, 0x78, 0xd3, 0x28, 0x17, 0x16, 0x6c, + 0x95, 0x4d, 0x54, 0x9c, 0x6f, 0x52, 0x61, 0x1d, 0xd3, 0x1d, 0x17, 0x26, + 0x4e, 0x2a, 0x55, 0x4d, 0x17, 0x15, 0x68, 0x0b, 0x21, 0x4d, 0x4f, 0x4d, + 0x21, 0x57, 0x52, 0x50, 0x56, 0x7e, 0x42, 0x55, 0x28, 0x29, 0x2b, 0x18, + 0x1e, 0x60, 0x17, 0xfe, 0xac, 0x01, 0x5c, 0x07, 0x08, 0x2a, 0xa4, 0xf3, + 0xa1, 0xa5, 0x01, 0x01, 0xb1, 0x2e, 0x22, 0x09, 0xf7, 0xfa, 0x03, 0x05, + 0x12, 0x0e, 0xf4, 0x28, 0x11, 0x05, 0x03, 0xfc, 0x80, 0x0d, 0x15, 0x1d, + 0x0f, 0xe6, 0x23, 0x11, 0x10, 0x01, 0x04, 0x44, 0x21, 0x79, 0xa7, 0x64, + 0x6a, 0xa7, 0x3a, 0x20, 0x18, 0x03, 0x3a, 0x07, 0x00, 0x04, 0x00, 0x00, + 0xff, 0xe9, 0x04, 0x65, 0x05, 0x5f, 0x00, 0x0f, 0x00, 0x1b, 0x00, 0x1f, + 0x00, 0x3f, 0x00, 0x6d, 0xb4, 0x2f, 0x2f, 0x20, 0x20, 0x37, 0xb8, 0x01, + 0x61, 0xb7, 0x26, 0x1d, 0x1e, 0x1f, 0x1c, 0x1c, 0x00, 0x16, 0xb8, 0x01, + 0x60, 0xb2, 0x08, 0x08, 0x00, 0xb8, 0x01, 0x61, 0x40, 0x10, 0x10, 0x2f, + 0x32, 0x9a, 0x2b, 0x3f, 0x3c, 0x9a, 0x20, 0x30, 0x23, 0x01, 0x23, 0x23, + 0x2e, 0x2b, 0xb8, 0xff, 0xc0, 0x40, 0x11, 0x0f, 0x18, 0x48, 0x2b, 0x2b, + 0x1f, 0x41, 0x1d, 0x51, 0x13, 0x9a, 0x0d, 0x0d, 0x19, 0x9a, 0x05, 0x52, + 0x00, 0x3f, 0xed, 0x33, 0x2f, 0xed, 0x3f, 0x3f, 0x33, 0x2f, 0x2b, 0x33, + 0x33, 0x2f, 0x5d, 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x32, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x33, + 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x13, 0x01, 0x23, 0x01, 0x01, + 0x06, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x04, 0x65, 0x2b, 0x4b, 0x65, 0x3a, 0x89, 0x80, + 0x2b, 0x4a, 0x64, 0x3a, 0x89, 0x82, 0xa8, 0x2c, 0x3c, 0x3a, 0x2e, 0x2d, + 0x3b, 0x3a, 0x2e, 0x91, 0xfc, 0x5a, 0xa8, 0x03, 0xa4, 0xfe, 0x3b, 0x33, + 0x51, 0x2d, 0x93, 0x91, 0x24, 0x48, 0x6d, 0x48, 0x30, 0x56, 0x2e, 0x22, + 0x52, 0x29, 0x1e, 0x35, 0x27, 0x17, 0x17, 0x27, 0x34, 0x1e, 0x2a, 0x52, + 0x22, 0x01, 0x17, 0x4e, 0x72, 0x4a, 0x24, 0x9d, 0x8b, 0x4e, 0x71, 0x4a, + 0x24, 0x9d, 0x8f, 0x53, 0x51, 0x55, 0x4b, 0x55, 0x50, 0x54, 0x04, 0x56, + 0xfa, 0xe5, 0x05, 0x1b, 0xfe, 0x13, 0x12, 0x12, 0x9c, 0x8a, 0x45, 0x6f, + 0x50, 0x2b, 0x10, 0x11, 0x9a, 0x18, 0x1c, 0x12, 0x27, 0x3f, 0x2d, 0x2c, + 0x3d, 0x26, 0x10, 0x1b, 0x15, 0x00, 0x00, 0x04, 0xff, 0xed, 0xff, 0xe9, + 0x04, 0x69, 0x05, 0x69, 0x00, 0x07, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x44, + 0x00, 0x9b, 0xb2, 0x0c, 0x0d, 0x3b, 0xb8, 0x01, 0x60, 0xb6, 0x2a, 0x2a, + 0x18, 0x18, 0x33, 0x33, 0x0f, 0xb8, 0x01, 0x61, 0x40, 0x3d, 0x20, 0x20, + 0x0e, 0x0b, 0x07, 0x06, 0x09, 0x03, 0x0a, 0x09, 0x08, 0x02, 0x05, 0x01, + 0x04, 0x04, 0x05, 0x01, 0x00, 0x00, 0x05, 0x06, 0x40, 0x16, 0x40, 0x26, + 0x40, 0x03, 0x40, 0x2f, 0x1d, 0x09, 0x25, 0x19, 0x25, 0x29, 0x25, 0x03, + 0x25, 0x14, 0x33, 0x38, 0x99, 0x32, 0x2f, 0x2f, 0x18, 0x1d, 0x9a, 0x17, + 0x14, 0x52, 0x03, 0x0a, 0x0a, 0x06, 0x01, 0x04, 0x04, 0x09, 0x06, 0xb8, + 0xff, 0xc0, 0x40, 0x09, 0x0d, 0x18, 0x48, 0x06, 0x06, 0x0e, 0x41, 0x0c, + 0x51, 0x00, 0x3f, 0x3f, 0x33, 0x2f, 0x2b, 0x33, 0x33, 0x2f, 0x33, 0x12, + 0x39, 0x2f, 0xcd, 0x3f, 0x33, 0xed, 0x32, 0x33, 0x2f, 0x33, 0xed, 0x32, + 0x11, 0x39, 0x5d, 0x11, 0x12, 0x39, 0x5d, 0x01, 0x2f, 0x33, 0x2f, 0x33, + 0x11, 0x33, 0x11, 0x12, 0x17, 0x39, 0x11, 0x33, 0x33, 0x2f, 0x33, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x2f, 0xed, 0x2f, 0x33, 0x30, + 0x31, 0x01, 0x23, 0x27, 0x23, 0x07, 0x23, 0x13, 0x33, 0x03, 0x27, 0x07, + 0x25, 0x01, 0x23, 0x01, 0x13, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x27, 0x2e, + 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x15, 0x2e, 0x03, + 0x23, 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x1e, 0x03, 0x02, 0x38, + 0x92, 0x2e, 0xcd, 0x2f, 0x8f, 0xcf, 0xb0, 0x1d, 0x3e, 0x3e, 0x03, 0x96, + 0xfc, 0x4a, 0x9c, 0x03, 0xb4, 0x60, 0x27, 0x44, 0x5c, 0x34, 0x32, 0x6a, + 0x35, 0x0a, 0x29, 0x36, 0x3b, 0x1c, 0x2a, 0x3a, 0x0e, 0x19, 0x22, 0x13, + 0x21, 0x46, 0x39, 0x24, 0x2b, 0x47, 0x5c, 0x32, 0x2a, 0x54, 0x26, 0x08, + 0x22, 0x2c, 0x32, 0x18, 0x26, 0x38, 0x0e, 0x1b, 0x26, 0x17, 0x22, 0x43, + 0x36, 0x21, 0x03, 0x22, 0x85, 0x85, 0x02, 0x47, 0xfe, 0xb9, 0xaf, 0xaf, + 0xf9, 0xfa, 0xe5, 0x05, 0x1b, 0xfb, 0x80, 0x33, 0x44, 0x29, 0x12, 0x0d, + 0x0b, 0x91, 0x06, 0x0d, 0x0a, 0x07, 0x13, 0x18, 0x0d, 0x12, 0x0e, 0x0b, + 0x07, 0x0c, 0x1d, 0x2a, 0x3c, 0x2c, 0x2f, 0x41, 0x29, 0x12, 0x0b, 0x0a, + 0x82, 0x03, 0x08, 0x07, 0x05, 0x11, 0x17, 0x0d, 0x11, 0x0e, 0x0c, 0x09, + 0x0c, 0x1c, 0x29, 0x3c, 0x00, 0x03, 0x00, 0x00, 0xff, 0xed, 0x04, 0x66, + 0x05, 0x8b, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x3d, 0x00, 0x9e, 0xb7, 0x00, + 0x23, 0x10, 0x23, 0x02, 0x00, 0x3e, 0x38, 0xb8, 0x01, 0x7c, 0x40, 0x0d, + 0x29, 0x2f, 0x2f, 0x14, 0x22, 0x22, 0x14, 0x14, 0x1c, 0x02, 0x03, 0x03, + 0x0b, 0xb8, 0x01, 0x83, 0xb2, 0x3b, 0x1c, 0x0a, 0xb8, 0x01, 0x7a, 0x40, + 0x3f, 0x08, 0x04, 0x04, 0x06, 0x07, 0x2f, 0x2c, 0x93, 0x35, 0x3b, 0x22, + 0x93, 0x23, 0x23, 0x17, 0x30, 0x10, 0x35, 0x40, 0x35, 0x50, 0x35, 0x70, + 0x35, 0x80, 0x35, 0xb0, 0x35, 0xc0, 0x35, 0xe0, 0x35, 0x08, 0x30, 0x35, + 0x70, 0x35, 0xa0, 0x35, 0xd0, 0x35, 0xe0, 0x35, 0x05, 0x35, 0x14, 0x17, + 0x93, 0x13, 0x0e, 0x52, 0x07, 0x06, 0x06, 0x05, 0x04, 0x08, 0x02, 0x02, + 0x08, 0x53, 0x00, 0x51, 0x00, 0x3f, 0x3f, 0x33, 0x2f, 0x10, 0xcd, 0x33, + 0x33, 0x2f, 0x33, 0x3f, 0x33, 0xed, 0x32, 0xc4, 0x5d, 0x71, 0x32, 0x11, + 0x39, 0x2f, 0xed, 0x39, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0xed, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0x2f, 0xed, 0x11, 0x33, 0x00, 0x71, 0x30, 0x31, + 0x33, 0x23, 0x01, 0x33, 0x01, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x01, + 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, + 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, 0xc7, 0xc7, 0x03, 0xa0, + 0xc6, 0xfc, 0x79, 0x83, 0x31, 0xcf, 0xa4, 0x02, 0xa9, 0x9f, 0xa6, 0x10, + 0x2b, 0x2c, 0x2a, 0x0f, 0x20, 0x57, 0x2f, 0x23, 0x2f, 0x1c, 0x0b, 0x0d, + 0x20, 0x36, 0x29, 0x45, 0x37, 0x27, 0x31, 0x1a, 0x09, 0x1e, 0x2c, 0x2b, + 0x50, 0x29, 0x1b, 0x2d, 0x2c, 0x2e, 0x1d, 0x74, 0x7c, 0x35, 0x30, 0x45, + 0x44, 0x05, 0x85, 0xfd, 0xc3, 0x01, 0x97, 0x41, 0x85, 0x68, 0xfd, 0xbd, + 0xfd, 0x66, 0x5b, 0x66, 0x01, 0x03, 0x04, 0x02, 0x8c, 0x06, 0x09, 0x08, + 0x0f, 0x13, 0x0c, 0x0e, 0x14, 0x0d, 0x06, 0x87, 0x09, 0x10, 0x13, 0x0b, + 0x14, 0x18, 0x10, 0x0b, 0x87, 0x07, 0x0b, 0x06, 0x03, 0x4f, 0x4b, 0x33, + 0x43, 0x0b, 0x08, 0x4b, 0x00, 0x03, 0x00, 0x00, 0xff, 0xed, 0x04, 0x66, + 0x05, 0x98, 0x00, 0x03, 0x00, 0x36, 0x00, 0x51, 0x00, 0xa9, 0xb2, 0x00, + 0x52, 0x4c, 0xb8, 0x01, 0x7b, 0x40, 0x0b, 0x3f, 0x3f, 0x51, 0x51, 0x39, + 0x45, 0x46, 0x46, 0x50, 0x39, 0x31, 0xb8, 0x01, 0x7c, 0x40, 0x0f, 0x22, + 0x22, 0x15, 0x28, 0x28, 0x0d, 0x1b, 0x1b, 0x0d, 0x0d, 0x15, 0x02, 0x03, + 0x03, 0x04, 0xb8, 0x01, 0x83, 0x40, 0x3f, 0x34, 0x15, 0x45, 0x42, 0x96, + 0x49, 0x39, 0x51, 0x9d, 0x38, 0x46, 0x49, 0x54, 0x28, 0x25, 0x93, 0x2e, + 0x34, 0x1b, 0x93, 0x1c, 0x1c, 0x0d, 0x10, 0x29, 0x10, 0x2e, 0x40, 0x2e, + 0x50, 0x2e, 0x70, 0x2e, 0x80, 0x2e, 0xb0, 0x2e, 0xc0, 0x2e, 0xe0, 0x2e, + 0x08, 0x30, 0x2e, 0x70, 0x2e, 0xa0, 0x2e, 0xd0, 0x2e, 0xe0, 0x2e, 0x05, + 0x2e, 0x10, 0x93, 0x0c, 0x07, 0x52, 0x02, 0x53, 0x00, 0x51, 0x00, 0x3f, + 0x3f, 0x3f, 0x33, 0xed, 0xc4, 0x5d, 0x71, 0x32, 0x11, 0x33, 0x39, 0x2f, + 0xed, 0x39, 0x10, 0xed, 0x32, 0x3f, 0x33, 0xd4, 0xed, 0x32, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0xed, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x30, 0x31, 0x33, + 0x23, 0x01, 0x33, 0x03, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, + 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, + 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x16, 0x16, + 0x01, 0x21, 0x35, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, + 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, 0x07, + 0x33, 0xc7, 0xc7, 0x03, 0xa0, 0xc6, 0x1f, 0x9f, 0xa6, 0x10, 0x2b, 0x2c, + 0x2a, 0x0f, 0x20, 0x57, 0x2f, 0x23, 0x2f, 0x1c, 0x0b, 0x0d, 0x20, 0x36, + 0x29, 0x45, 0x37, 0x27, 0x31, 0x1a, 0x09, 0x1e, 0x2c, 0x2b, 0x50, 0x29, + 0x1b, 0x2d, 0x2c, 0x2e, 0x1d, 0x74, 0x7c, 0x35, 0x30, 0x45, 0x44, 0xfd, + 0xb5, 0xfe, 0x26, 0x84, 0x2b, 0x35, 0x1c, 0x09, 0x1f, 0x23, 0x26, 0x41, + 0x1c, 0x4a, 0x2c, 0x78, 0x44, 0x6d, 0x7a, 0x4b, 0x53, 0x37, 0xe6, 0x05, + 0x85, 0xfb, 0x29, 0x5b, 0x66, 0x01, 0x03, 0x04, 0x02, 0x8c, 0x06, 0x09, + 0x08, 0x0f, 0x13, 0x0c, 0x0e, 0x14, 0x0d, 0x06, 0x87, 0x09, 0x10, 0x13, + 0x0b, 0x14, 0x18, 0x10, 0x0b, 0x87, 0x07, 0x0b, 0x06, 0x03, 0x4f, 0x4b, + 0x33, 0x43, 0x0b, 0x08, 0x4b, 0x02, 0x66, 0x85, 0x69, 0x22, 0x30, 0x23, + 0x1d, 0x0f, 0x17, 0x1d, 0x20, 0x16, 0x75, 0x22, 0x2c, 0x60, 0x50, 0x4a, + 0x6e, 0x34, 0x23, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0xef, 0x04, 0x66, + 0x05, 0x8b, 0x00, 0x03, 0x00, 0x25, 0x00, 0x2c, 0x00, 0x77, 0xb7, 0x00, + 0x21, 0x10, 0x21, 0x02, 0x00, 0x2d, 0x2c, 0xb8, 0x01, 0x7a, 0xb5, 0x2a, + 0x26, 0x26, 0x28, 0x29, 0x20, 0xb8, 0x01, 0x63, 0x40, 0x0c, 0x1b, 0x0f, + 0x0f, 0x1b, 0x1b, 0x15, 0x02, 0x03, 0x03, 0x1e, 0x1e, 0x04, 0xb8, 0x01, + 0x66, 0x40, 0x1e, 0x15, 0x1a, 0x90, 0x21, 0x21, 0x12, 0x1f, 0x95, 0x70, + 0x1c, 0x01, 0x1c, 0x2d, 0x29, 0x28, 0x28, 0x27, 0x26, 0x2a, 0x54, 0x0f, + 0x12, 0x92, 0x0e, 0x09, 0x52, 0x02, 0x53, 0x00, 0x51, 0x00, 0x3f, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xcd, 0x33, 0x33, 0x2f, 0x33, 0x10, 0xd4, + 0x5d, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x32, + 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0xed, 0x11, 0x33, 0x00, 0x71, 0x30, 0x31, 0x33, 0x23, 0x01, + 0x33, 0x03, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, + 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x21, + 0x15, 0x23, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x11, 0x07, 0x27, 0x37, + 0x33, 0x11, 0xc7, 0xc7, 0x03, 0xa0, 0xc6, 0x1f, 0x2e, 0x52, 0x71, 0x43, + 0x10, 0x25, 0x27, 0x26, 0x0f, 0x1d, 0x4f, 0x2b, 0x46, 0x3a, 0x0e, 0x20, + 0x37, 0x28, 0x7e, 0x01, 0x95, 0xf1, 0x13, 0x35, 0x5f, 0x45, 0x29, 0xfc, + 0x98, 0x83, 0x31, 0xcf, 0xa4, 0x05, 0x85, 0xfb, 0x31, 0x33, 0x4b, 0x31, + 0x18, 0x02, 0x04, 0x04, 0x03, 0x89, 0x06, 0x0a, 0x1c, 0x1d, 0x14, 0x17, + 0x0c, 0x05, 0x01, 0x59, 0x89, 0x58, 0x0c, 0x26, 0x43, 0x02, 0x5b, 0x01, + 0x97, 0x41, 0x85, 0x68, 0xfd, 0xbd, 0x00, 0x03, 0x00, 0x00, 0xff, 0xef, + 0x04, 0x66, 0x05, 0x98, 0x00, 0x21, 0x00, 0x3c, 0x00, 0x40, 0x00, 0x7f, + 0xb7, 0x00, 0x1d, 0x10, 0x1d, 0x02, 0x3d, 0x41, 0x2a, 0xb8, 0x01, 0x7b, + 0x40, 0x0b, 0x37, 0x37, 0x3c, 0x3c, 0x24, 0x30, 0x31, 0x31, 0x3b, 0x24, + 0x1c, 0xb8, 0x01, 0x63, 0xb7, 0x17, 0x17, 0x0b, 0x0b, 0x11, 0x1a, 0x1a, + 0x00, 0xb8, 0x01, 0x66, 0x40, 0x22, 0x11, 0x16, 0x90, 0x1d, 0x1d, 0x0e, + 0x1b, 0x95, 0x70, 0x18, 0x01, 0x18, 0x41, 0x3f, 0x53, 0x3d, 0x51, 0x30, + 0x2d, 0x96, 0x34, 0x24, 0x3c, 0x9d, 0x23, 0x31, 0x34, 0x54, 0x0b, 0x0e, + 0x92, 0x0a, 0x05, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xd4, + 0xed, 0x32, 0x10, 0xed, 0x32, 0x3f, 0x3f, 0x10, 0xd4, 0x5d, 0xed, 0x12, + 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0xed, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, + 0xed, 0x11, 0x33, 0x00, 0x71, 0x30, 0x31, 0x25, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x11, 0x21, 0x15, 0x23, 0x15, 0x33, 0x32, 0x1e, + 0x02, 0x01, 0x21, 0x35, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, + 0x07, 0x33, 0x01, 0x23, 0x01, 0x33, 0x04, 0x47, 0x2e, 0x52, 0x71, 0x43, + 0x10, 0x25, 0x27, 0x26, 0x0f, 0x1d, 0x4f, 0x2b, 0x46, 0x3a, 0x0e, 0x20, + 0x37, 0x28, 0x7e, 0x01, 0x95, 0xf1, 0x13, 0x35, 0x5f, 0x45, 0x29, 0xfd, + 0xb5, 0xfe, 0x26, 0x84, 0x2b, 0x35, 0x1c, 0x09, 0x1f, 0x23, 0x26, 0x41, + 0x1c, 0x4a, 0x2c, 0x78, 0x44, 0x6d, 0x7a, 0x4b, 0x53, 0x37, 0xe6, 0xfe, + 0xcb, 0xc7, 0x03, 0xa0, 0xc6, 0xb6, 0x33, 0x4b, 0x31, 0x18, 0x02, 0x04, + 0x04, 0x03, 0x89, 0x06, 0x0a, 0x1c, 0x1d, 0x14, 0x17, 0x0c, 0x05, 0x01, + 0x59, 0x89, 0x58, 0x0c, 0x26, 0x43, 0x02, 0x5b, 0x85, 0x69, 0x22, 0x30, + 0x23, 0x1d, 0x0f, 0x17, 0x1d, 0x20, 0x16, 0x75, 0x22, 0x2c, 0x60, 0x50, + 0x4a, 0x6e, 0x34, 0x23, 0xfc, 0x27, 0x05, 0x85, 0x00, 0x03, 0x00, 0x00, + 0xff, 0xef, 0x04, 0x66, 0x05, 0x98, 0x00, 0x03, 0x00, 0x25, 0x00, 0x58, + 0x00, 0xa1, 0xb7, 0x00, 0x20, 0x10, 0x20, 0x02, 0x00, 0x59, 0x53, 0xb8, + 0x01, 0x7c, 0xb3, 0x44, 0x44, 0x56, 0x26, 0xb8, 0x01, 0x83, 0x40, 0x0a, + 0x37, 0x37, 0x2e, 0x4a, 0x4a, 0x2e, 0x3d, 0x3d, 0x2e, 0x20, 0xb8, 0x01, + 0x63, 0x40, 0x0b, 0x1b, 0x1b, 0x0f, 0x0f, 0x15, 0x02, 0x03, 0x03, 0x1e, + 0x1e, 0x04, 0xb8, 0x01, 0x66, 0x40, 0x2d, 0x15, 0x4a, 0x47, 0x93, 0x50, + 0x56, 0x3d, 0x93, 0x3e, 0x3e, 0x50, 0x2f, 0x32, 0x93, 0x2e, 0xaf, 0x29, + 0xdf, 0x29, 0x02, 0x29, 0x4b, 0x50, 0x54, 0x1b, 0x90, 0x20, 0x20, 0x1c, + 0x0f, 0x12, 0x92, 0x0e, 0x09, 0x52, 0x02, 0x53, 0x1f, 0x95, 0x70, 0x1c, + 0x01, 0x1c, 0x00, 0x51, 0x00, 0x3f, 0xd6, 0x5d, 0xed, 0x3f, 0x3f, 0x33, + 0xed, 0x32, 0x11, 0x39, 0x10, 0xed, 0x3f, 0x33, 0xd4, 0x5d, 0x32, 0xed, + 0x32, 0x11, 0x39, 0x2f, 0xed, 0x39, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x33, 0x2f, + 0xed, 0x11, 0x33, 0x00, 0x71, 0x30, 0x31, 0x33, 0x23, 0x01, 0x33, 0x03, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x21, 0x15, 0x23, + 0x15, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x07, + 0x16, 0x16, 0xc7, 0xc7, 0x03, 0xa0, 0xc6, 0x1f, 0x2e, 0x52, 0x71, 0x43, + 0x10, 0x25, 0x27, 0x26, 0x0f, 0x1d, 0x4f, 0x2b, 0x46, 0x3a, 0x0e, 0x20, + 0x37, 0x28, 0x7e, 0x01, 0x95, 0xf1, 0x13, 0x35, 0x5f, 0x45, 0x29, 0xfd, + 0xc9, 0x9f, 0xa6, 0x10, 0x2b, 0x2c, 0x2a, 0x0f, 0x20, 0x57, 0x2f, 0x23, + 0x2f, 0x1c, 0x0b, 0x0d, 0x20, 0x36, 0x29, 0x45, 0x37, 0x27, 0x31, 0x1a, + 0x09, 0x1e, 0x2c, 0x2b, 0x50, 0x29, 0x1b, 0x2d, 0x2c, 0x2e, 0x1d, 0x74, + 0x7c, 0x35, 0x30, 0x45, 0x44, 0x05, 0x85, 0xfb, 0x31, 0x33, 0x4b, 0x31, + 0x18, 0x02, 0x04, 0x04, 0x03, 0x89, 0x06, 0x0a, 0x1c, 0x1d, 0x14, 0x17, + 0x0c, 0x05, 0x01, 0x59, 0x89, 0x58, 0x0c, 0x26, 0x43, 0x03, 0x09, 0x5b, + 0x66, 0x01, 0x03, 0x04, 0x02, 0x8c, 0x06, 0x09, 0x08, 0x0f, 0x13, 0x0c, + 0x0e, 0x14, 0x0d, 0x06, 0x87, 0x09, 0x10, 0x13, 0x0b, 0x14, 0x18, 0x10, + 0x0b, 0x87, 0x07, 0x0b, 0x06, 0x03, 0x4f, 0x4b, 0x33, 0x43, 0x0b, 0x08, + 0x4b, 0x00, 0x00, 0x04, 0x00, 0x03, 0xff, 0xef, 0x04, 0x69, 0x05, 0x85, + 0x00, 0x03, 0x00, 0x25, 0x00, 0x30, 0x00, 0x33, 0x00, 0x85, 0x40, 0x09, + 0x00, 0x20, 0x10, 0x20, 0x02, 0x00, 0x34, 0x2e, 0x27, 0xb8, 0x01, 0x64, + 0x40, 0x09, 0x31, 0x2d, 0x2a, 0x2a, 0x30, 0x30, 0x32, 0x2b, 0x20, 0xb8, + 0x01, 0x63, 0xb5, 0x1b, 0x0f, 0x0f, 0x1b, 0x1b, 0x04, 0xb8, 0x01, 0x66, + 0x40, 0x28, 0x15, 0x1e, 0x1e, 0x02, 0x03, 0x27, 0x2b, 0x94, 0x2f, 0x2c, + 0x32, 0x32, 0x70, 0x29, 0x01, 0x29, 0x31, 0x2d, 0x53, 0x1b, 0x90, 0x20, + 0x20, 0x1c, 0x0f, 0x12, 0x92, 0x0e, 0x09, 0x52, 0x02, 0x53, 0x1f, 0x95, + 0x70, 0x1c, 0x01, 0x1c, 0x00, 0x51, 0x00, 0x3f, 0xd6, 0x5d, 0xed, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x3f, 0x33, 0xc4, 0x5d, + 0x39, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x2f, + 0xed, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x2f, 0x33, 0x33, 0x2f, 0x33, + 0x2f, 0x33, 0x33, 0xed, 0x32, 0x11, 0x33, 0x00, 0x71, 0x30, 0x31, 0x33, + 0x23, 0x01, 0x33, 0x03, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, + 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, + 0x11, 0x21, 0x15, 0x23, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x23, 0x15, + 0x23, 0x35, 0x21, 0x35, 0x13, 0x33, 0x11, 0x33, 0x27, 0x07, 0x33, 0xca, + 0xc7, 0x03, 0xa0, 0xc6, 0x22, 0x2e, 0x52, 0x71, 0x43, 0x10, 0x25, 0x27, + 0x26, 0x0f, 0x1d, 0x4f, 0x2b, 0x46, 0x3a, 0x0e, 0x20, 0x37, 0x28, 0x7e, + 0x01, 0x95, 0xf1, 0x13, 0x35, 0x5f, 0x45, 0x29, 0xfd, 0xf7, 0x54, 0xa8, + 0xfe, 0xd3, 0xdc, 0xf9, 0x54, 0xfc, 0x83, 0x83, 0x05, 0x85, 0xfb, 0x31, + 0x33, 0x4b, 0x31, 0x18, 0x02, 0x04, 0x04, 0x03, 0x89, 0x06, 0x0a, 0x1c, + 0x1d, 0x14, 0x17, 0x0c, 0x05, 0x01, 0x59, 0x89, 0x58, 0x0c, 0x26, 0x43, + 0x02, 0xc1, 0x66, 0x66, 0x83, 0x01, 0x54, 0xfe, 0xb1, 0xce, 0xce, 0x00, + 0x00, 0x04, 0x00, 0x00, 0xff, 0xed, 0x04, 0x66, 0x05, 0x8b, 0x00, 0x03, + 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x34, 0x00, 0x6d, 0xb7, 0x00, 0x1d, 0x10, + 0x1d, 0x02, 0x00, 0x35, 0x34, 0xb8, 0x01, 0x7a, 0xb6, 0x32, 0x2e, 0x2e, + 0x30, 0x31, 0x19, 0x28, 0xb8, 0x01, 0x67, 0x40, 0x09, 0x0c, 0x0c, 0x20, + 0x02, 0x03, 0x03, 0x13, 0x13, 0x04, 0xb8, 0x01, 0x66, 0x40, 0x1a, 0x20, + 0x31, 0x30, 0x30, 0x2f, 0x2e, 0x32, 0x54, 0x28, 0x23, 0x90, 0x1a, 0x1d, + 0x1d, 0x12, 0x2b, 0x92, 0x09, 0x52, 0x02, 0x53, 0x13, 0x93, 0x12, 0x00, + 0x51, 0x00, 0x3f, 0xd4, 0xed, 0x3f, 0x3f, 0xed, 0x11, 0x39, 0x2f, 0x33, + 0xed, 0x32, 0x3f, 0xcd, 0x33, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x32, + 0x2f, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0xed, 0x11, 0x33, 0x00, 0x71, 0x30, 0x31, 0x33, 0x23, 0x01, + 0x33, 0x03, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x15, 0x36, 0x36, 0x33, + 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x14, 0x16, + 0x33, 0x32, 0x36, 0x01, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0xc7, 0xc7, + 0x03, 0xa0, 0xc6, 0x13, 0x27, 0x44, 0x5c, 0x36, 0x7a, 0x83, 0x1f, 0x51, + 0x8d, 0x6e, 0x55, 0x6c, 0x2c, 0x39, 0x21, 0x10, 0x03, 0x13, 0x2f, 0x16, + 0x76, 0x71, 0xab, 0x24, 0x29, 0x0b, 0x17, 0x15, 0x11, 0x06, 0x27, 0x2a, + 0x25, 0x25, 0xfd, 0x37, 0x83, 0x31, 0xcf, 0xa4, 0x05, 0x85, 0xfb, 0x2e, + 0x31, 0x49, 0x32, 0x1a, 0x83, 0x86, 0x4e, 0x7c, 0x56, 0x2d, 0x87, 0x0d, + 0x17, 0x22, 0x15, 0x05, 0x06, 0x0a, 0x5d, 0x61, 0x1e, 0x25, 0x04, 0x04, + 0x06, 0x02, 0x39, 0x35, 0x22, 0x02, 0xb3, 0x01, 0x97, 0x41, 0x85, 0x68, + 0xfd, 0xbd, 0x00, 0x04, 0x00, 0x00, 0xff, 0xed, 0x04, 0x66, 0x05, 0x85, + 0x00, 0x1b, 0x00, 0x29, 0x00, 0x4b, 0x00, 0x4f, 0x00, 0x8f, 0x40, 0x0d, + 0x00, 0x47, 0x10, 0x47, 0x02, 0x00, 0x19, 0x10, 0x19, 0x02, 0x4c, 0x50, + 0x46, 0xb8, 0x01, 0x63, 0xb5, 0x41, 0x41, 0x35, 0x44, 0x44, 0x2a, 0xb8, + 0x01, 0x66, 0xb4, 0x3b, 0x3b, 0x35, 0x15, 0x24, 0xb8, 0x01, 0x67, 0x40, + 0x09, 0x08, 0x08, 0x1c, 0x4e, 0x4f, 0x4f, 0x0f, 0x0f, 0x00, 0xb8, 0x01, + 0x66, 0x40, 0x25, 0x1c, 0x4e, 0x53, 0x1f, 0x90, 0x19, 0x19, 0x27, 0x0f, + 0x93, 0x0e, 0x4c, 0x51, 0x40, 0x90, 0x47, 0x47, 0x42, 0x35, 0x38, 0x92, + 0x34, 0x1f, 0x2f, 0x01, 0xaf, 0x2f, 0x01, 0x2f, 0x45, 0x95, 0x42, 0x53, + 0x27, 0x92, 0x05, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0xd4, 0x5d, 0x71, + 0x32, 0xed, 0x32, 0x11, 0x39, 0x2f, 0xed, 0x3f, 0xd4, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x3f, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x32, 0x2f, 0x33, 0x11, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, + 0x2f, 0xed, 0x11, 0x33, 0x00, 0x71, 0x71, 0x30, 0x31, 0x25, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, 0x15, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x15, 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x34, + 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x14, 0x16, 0x33, 0x32, 0x36, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x11, 0x21, 0x15, 0x23, + 0x15, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x23, 0x01, 0x33, 0x04, 0x53, 0x27, + 0x44, 0x5c, 0x36, 0x7a, 0x83, 0x1f, 0x51, 0x8d, 0x6e, 0x55, 0x6c, 0x2c, + 0x39, 0x21, 0x10, 0x03, 0x13, 0x2f, 0x16, 0x76, 0x71, 0xab, 0x24, 0x29, + 0x0b, 0x17, 0x15, 0x11, 0x06, 0x27, 0x2a, 0x25, 0x25, 0xfe, 0x48, 0x2e, + 0x52, 0x71, 0x43, 0x10, 0x25, 0x27, 0x26, 0x0f, 0x1d, 0x4f, 0x2b, 0x46, + 0x3a, 0x0e, 0x20, 0x37, 0x28, 0x7e, 0x01, 0x95, 0xf1, 0x13, 0x35, 0x5f, + 0x45, 0x29, 0xfe, 0xd7, 0xc7, 0x03, 0xa0, 0xc6, 0xb3, 0x31, 0x49, 0x32, + 0x1a, 0x83, 0x86, 0x4e, 0x7c, 0x56, 0x2d, 0x87, 0x0d, 0x17, 0x22, 0x15, + 0x05, 0x06, 0x0a, 0x5d, 0x61, 0x1e, 0x25, 0x04, 0x04, 0x06, 0x02, 0x39, + 0x35, 0x22, 0x03, 0x63, 0x33, 0x4b, 0x31, 0x18, 0x02, 0x04, 0x04, 0x03, + 0x89, 0x06, 0x0a, 0x1c, 0x1d, 0x14, 0x17, 0x0c, 0x05, 0x01, 0x59, 0x89, + 0x58, 0x0c, 0x26, 0x43, 0xfb, 0xd1, 0x05, 0x85, 0x00, 0x01, 0x00, 0x3b, + 0xfe, 0x69, 0x04, 0x2b, 0x05, 0x1b, 0x00, 0x3c, 0x00, 0x59, 0xb1, 0x33, + 0x09, 0xb8, 0x01, 0x9c, 0xb4, 0x08, 0x08, 0x3c, 0x2c, 0x12, 0xb8, 0x01, + 0x9d, 0xb5, 0x11, 0x11, 0x3c, 0x21, 0x21, 0x00, 0xb8, 0x01, 0x9d, 0x40, + 0x1b, 0x3c, 0x3c, 0x41, 0x33, 0x2d, 0x10, 0x07, 0x04, 0xd8, 0x38, 0x44, + 0x0d, 0xd8, 0x30, 0x44, 0x24, 0x21, 0x27, 0xde, 0x20, 0x1d, 0x18, 0x45, + 0x11, 0x41, 0x08, 0x41, 0x00, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0xed, 0x32, + 0x32, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x32, 0x32, 0x32, 0x3f, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x33, 0x12, 0x39, 0x2f, 0xed, + 0x33, 0x30, 0x31, 0x01, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, + 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, 0x11, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, + 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x06, 0x06, + 0x23, 0x22, 0x26, 0x27, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x35, 0x11, 0x01, + 0x0e, 0x14, 0x27, 0x1f, 0x3c, 0x26, 0xd1, 0x14, 0x28, 0x1a, 0x40, 0x27, + 0xd3, 0x36, 0x5c, 0x7a, 0x43, 0x10, 0x28, 0x29, 0x27, 0x0f, 0x50, 0x83, + 0x41, 0x2d, 0x60, 0x26, 0x36, 0x69, 0x33, 0x29, 0x3e, 0x2a, 0x15, 0x27, + 0x56, 0x3e, 0x55, 0x59, 0x06, 0x18, 0x2f, 0x33, 0x3b, 0x24, 0x70, 0x69, + 0x05, 0x1b, 0xfc, 0x29, 0x4c, 0x4c, 0x54, 0x65, 0x03, 0xb6, 0xfc, 0x29, + 0x4c, 0x4c, 0x54, 0x65, 0x03, 0xb6, 0xfa, 0x7a, 0x4d, 0x67, 0x3f, 0x1a, + 0x01, 0x02, 0x01, 0x0e, 0x15, 0xda, 0x0b, 0x09, 0x06, 0x08, 0x18, 0x2b, + 0x22, 0xac, 0x44, 0x3a, 0x59, 0x4f, 0x2d, 0x40, 0x29, 0x12, 0x9a, 0x99, + 0x03, 0xfc, 0x00, 0x01, 0x00, 0x54, 0x00, 0x00, 0x03, 0xdf, 0x05, 0x1b, + 0x00, 0x1b, 0x00, 0x2f, 0xb3, 0x00, 0x0c, 0x0c, 0x0f, 0xb8, 0x01, 0xf7, + 0xb2, 0x10, 0x10, 0x06, 0xb8, 0x02, 0x00, 0x40, 0x0b, 0x17, 0x12, 0xe1, + 0x0b, 0x0b, 0x0d, 0x0f, 0x43, 0x1b, 0x0d, 0x41, 0x00, 0x3f, 0x33, 0x3f, + 0x12, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x10, + 0xce, 0x30, 0x31, 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x33, 0x11, 0x33, 0x11, 0x23, 0x11, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x36, 0x33, 0x33, 0x02, 0x44, 0x06, 0x46, 0x5a, 0x34, 0x14, 0x16, + 0x34, 0x56, 0x40, 0xb1, 0xf8, 0xf8, 0xa5, 0x84, 0xbb, 0x78, 0x37, 0xf3, + 0xf1, 0x0c, 0x04, 0x4f, 0x21, 0x3d, 0x59, 0x38, 0x35, 0x59, 0x3f, 0x23, + 0x02, 0xab, 0xfa, 0xe5, 0x01, 0xa4, 0x46, 0x79, 0xa4, 0x5f, 0xd9, 0xdc, + 0x00, 0x01, 0x00, 0x8b, 0xfe, 0x6d, 0x03, 0xdd, 0x05, 0x85, 0x00, 0x31, + 0x00, 0x41, 0xb1, 0x2a, 0x26, 0xb8, 0x01, 0xf3, 0xb4, 0x27, 0x0f, 0x0f, + 0x27, 0x01, 0xb8, 0x01, 0xf3, 0xb2, 0x1a, 0x25, 0x20, 0xb8, 0x01, 0x11, + 0x40, 0x0f, 0x2a, 0x2d, 0x2d, 0x32, 0x28, 0x27, 0x43, 0x12, 0x0f, 0x17, + 0xda, 0x0e, 0x09, 0x06, 0x45, 0x00, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x32, + 0x3f, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x2f, + 0x33, 0x2f, 0x10, 0xed, 0x32, 0x30, 0x31, 0x01, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x35, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x11, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x11, 0x23, 0x11, 0x33, 0x11, 0x36, 0x36, 0x33, + 0x32, 0x1e, 0x02, 0x03, 0xdd, 0x36, 0x5c, 0x7a, 0x43, 0x20, 0x5b, 0x40, + 0x17, 0x29, 0x2d, 0x34, 0x20, 0x2d, 0x4f, 0x26, 0x0d, 0x33, 0x3a, 0x3a, + 0x15, 0x32, 0x3a, 0x17, 0x2d, 0x42, 0x2b, 0x17, 0x28, 0x2a, 0x31, 0x1f, + 0xf4, 0xf4, 0x34, 0x84, 0x45, 0x48, 0x80, 0x61, 0x38, 0x01, 0xec, 0xfd, + 0xb3, 0x4d, 0x6a, 0x42, 0x1e, 0x04, 0x02, 0x06, 0x0d, 0x0a, 0xd4, 0x0b, + 0x06, 0x02, 0x03, 0x02, 0x33, 0x44, 0x01, 0xf4, 0x37, 0x4a, 0x2c, 0x12, + 0x04, 0x06, 0x09, 0x06, 0xfd, 0xa4, 0x05, 0x85, 0xfd, 0xac, 0x0d, 0x0f, + 0x1c, 0x4e, 0x8a, 0x00, 0x00, 0x01, 0x00, 0x66, 0xff, 0xed, 0x03, 0xe3, + 0x05, 0x2d, 0x00, 0x3b, 0x00, 0x52, 0xb9, 0x00, 0x11, 0x01, 0xcf, 0xb5, + 0x16, 0x16, 0x00, 0x33, 0x33, 0x20, 0xb8, 0x01, 0xfe, 0xb2, 0x09, 0x09, + 0x29, 0xb8, 0x02, 0x07, 0xb6, 0x00, 0x05, 0x14, 0x14, 0x1b, 0x33, 0x2e, + 0xb8, 0x01, 0x14, 0x40, 0x0d, 0x57, 0x25, 0x01, 0x36, 0x25, 0x46, 0x25, + 0x02, 0x25, 0x34, 0x37, 0x44, 0x0e, 0xb8, 0x01, 0x12, 0xb1, 0x1b, 0x42, + 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x39, 0x5d, 0x5d, 0xed, 0x32, 0x11, 0x39, + 0x2f, 0x39, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, + 0x2f, 0xed, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x06, 0x35, 0x34, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x06, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x66, 0x34, 0x54, 0x6d, 0x70, 0x6d, 0x54, 0x34, 0x0a, 0x1d, 0x35, 0x2a, + 0x51, 0x48, 0x06, 0xf0, 0x06, 0x33, 0x66, 0x99, 0x67, 0x6a, 0x8f, 0x57, + 0x25, 0x33, 0x52, 0x6a, 0x6f, 0x6a, 0x52, 0x33, 0x25, 0x42, 0x5c, 0x38, + 0x31, 0x68, 0x63, 0x59, 0x21, 0x4e, 0xcd, 0x90, 0x53, 0xa6, 0x86, 0x53, + 0x01, 0x60, 0x53, 0x7a, 0x5a, 0x41, 0x35, 0x30, 0x36, 0x43, 0x2f, 0x16, + 0x2d, 0x25, 0x17, 0x4d, 0x53, 0x1b, 0x1f, 0x25, 0x20, 0x63, 0x8b, 0x58, + 0x28, 0x3d, 0x5d, 0x71, 0x33, 0x55, 0x7c, 0x5b, 0x42, 0x35, 0x30, 0x38, + 0x47, 0x32, 0x2d, 0x3e, 0x27, 0x11, 0x0e, 0x16, 0x1c, 0x0f, 0xe8, 0x22, + 0x20, 0x25, 0x56, 0x8e, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x04, 0x52, + 0x05, 0x21, 0x00, 0x28, 0x00, 0x2b, 0x00, 0x49, 0x40, 0x24, 0x28, 0x15, + 0x10, 0x2a, 0x2a, 0x1e, 0x09, 0x09, 0x29, 0x2d, 0x1e, 0x1e, 0x2b, 0x14, + 0x2b, 0x2c, 0x1e, 0x1b, 0xdc, 0x2a, 0x28, 0x10, 0x15, 0x15, 0x14, 0x1f, + 0x22, 0x41, 0x14, 0x43, 0x09, 0x0c, 0xdc, 0x08, 0x05, 0x41, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, + 0xed, 0x32, 0x10, 0xc4, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x11, 0x33, 0x33, + 0x2f, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x30, 0x31, 0x01, 0x3e, 0x03, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x07, + 0x01, 0x15, 0x21, 0x35, 0x01, 0x27, 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x17, 0x13, 0x03, 0x03, + 0x02, 0x4d, 0x19, 0x3b, 0x42, 0x4c, 0x2b, 0x1d, 0x42, 0x25, 0x0d, 0x33, + 0x26, 0x34, 0x4d, 0x26, 0x1c, 0x01, 0x9d, 0xfb, 0xc2, 0x01, 0x98, 0x1b, + 0x14, 0x23, 0x24, 0x28, 0x1a, 0x26, 0x39, 0x0d, 0x25, 0x42, 0x1d, 0x2b, + 0x49, 0x41, 0x3a, 0x1b, 0x1c, 0xd8, 0xd7, 0xe1, 0x04, 0x84, 0x2f, 0x3d, + 0x23, 0x0e, 0x08, 0x06, 0xca, 0x05, 0x0e, 0x43, 0x49, 0x35, 0xfc, 0x73, + 0x0e, 0x0e, 0x03, 0x8d, 0x32, 0x24, 0x36, 0x24, 0x11, 0x0f, 0x05, 0xcb, + 0x06, 0x08, 0x0e, 0x23, 0x3d, 0x30, 0x31, 0xfc, 0x81, 0x02, 0x05, 0xfd, + 0xfb, 0x00, 0x00, 0x02, 0x00, 0x44, 0xff, 0xe8, 0x04, 0x23, 0x05, 0xa7, + 0x00, 0x12, 0x00, 0x48, 0x00, 0x3b, 0xb1, 0x13, 0x09, 0xb8, 0x01, 0xf5, + 0xb3, 0x27, 0x3a, 0x3a, 0x1d, 0xb8, 0x01, 0xfc, 0xb2, 0x00, 0x3f, 0x3a, + 0xb8, 0x01, 0x14, 0x40, 0x0e, 0x34, 0x39, 0x0e, 0xdd, 0x22, 0x44, 0x08, + 0x05, 0xe1, 0x13, 0x00, 0x18, 0x01, 0x18, 0x00, 0x2f, 0x5d, 0x33, 0xed, + 0x32, 0x3f, 0xed, 0x2f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x2f, + 0x2f, 0xed, 0x32, 0x30, 0x31, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x3e, 0x03, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x36, 0x37, 0x3e, 0x05, 0x33, 0x32, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x37, 0x15, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x03, 0x26, 0x1b, 0x39, 0x5a, 0x3f, 0x4d, 0x7f, 0x33, 0x2e, 0x4a, + 0x5f, 0x30, 0x3a, 0x56, 0x39, 0x1c, 0xfe, 0x18, 0x12, 0x3c, 0x49, 0x54, + 0x2b, 0x6f, 0xad, 0x76, 0x3d, 0x40, 0x80, 0xbd, 0x7d, 0x73, 0xb4, 0x7d, + 0x41, 0x04, 0x09, 0x0a, 0x21, 0x37, 0x50, 0x6f, 0x93, 0x5e, 0x2d, 0x5c, + 0x33, 0x0f, 0x35, 0x40, 0x48, 0x22, 0x16, 0x32, 0x32, 0x2f, 0x13, 0x0f, + 0x31, 0x3a, 0x3e, 0x1b, 0x59, 0x70, 0x45, 0x25, 0x01, 0xe1, 0x59, 0x82, + 0x54, 0x29, 0x2f, 0x2c, 0x76, 0x7b, 0xa8, 0x68, 0x2d, 0x31, 0x54, 0x6e, + 0x02, 0x17, 0x0d, 0x1b, 0x16, 0x0d, 0x45, 0x83, 0xbd, 0x78, 0x71, 0xc6, + 0x93, 0x56, 0x4b, 0x9c, 0xf0, 0xa5, 0x3e, 0x90, 0x40, 0x47, 0x88, 0x77, + 0x64, 0x48, 0x28, 0x02, 0x01, 0x06, 0x0b, 0x0b, 0xdb, 0x08, 0x08, 0x04, + 0x01, 0x01, 0x02, 0x01, 0x26, 0x45, 0x5e, 0x00, 0x00, 0x01, 0x00, 0x5c, + 0x00, 0x00, 0x04, 0x05, 0x05, 0x1b, 0x00, 0x14, 0x00, 0x31, 0xb3, 0x05, + 0x05, 0x03, 0x07, 0xb8, 0x01, 0xf9, 0x40, 0x11, 0x08, 0x10, 0x10, 0x00, + 0x08, 0x08, 0x43, 0x0f, 0x06, 0x09, 0xd7, 0x11, 0x03, 0x00, 0x00, 0x01, + 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x32, 0x32, 0xed, 0x32, 0x32, 0x3f, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x30, 0x31, 0x01, + 0x35, 0x33, 0x15, 0x21, 0x15, 0x21, 0x11, 0x23, 0x11, 0x23, 0x22, 0x0e, + 0x02, 0x07, 0x23, 0x35, 0x34, 0x36, 0x33, 0x01, 0xbb, 0xfa, 0x01, 0x50, + 0xfe, 0xb0, 0xfa, 0x71, 0x36, 0x47, 0x31, 0x1f, 0x0d, 0x14, 0x63, 0x59, + 0x04, 0x7b, 0xa0, 0xa0, 0xbf, 0xfc, 0x44, 0x03, 0xbc, 0x16, 0x23, 0x2b, + 0x15, 0xa7, 0x48, 0x49, 0x00, 0x01, 0x00, 0x3b, 0xfe, 0x69, 0x04, 0x2b, + 0x03, 0xf8, 0x00, 0x3e, 0x00, 0x5c, 0xb9, 0x00, 0x1d, 0x01, 0xa7, 0xb4, + 0x09, 0x1a, 0x1a, 0x12, 0x25, 0xb8, 0x01, 0xa8, 0xb6, 0x01, 0x24, 0x24, + 0x12, 0x34, 0x34, 0x13, 0xb8, 0x01, 0xa8, 0xb3, 0x12, 0x37, 0x34, 0x3a, + 0xb8, 0x01, 0x04, 0x40, 0x16, 0x33, 0x30, 0x2b, 0x55, 0x24, 0x4f, 0x1b, + 0x4f, 0x12, 0x4f, 0x1a, 0x17, 0xfc, 0x09, 0x0e, 0x52, 0x23, 0x20, 0xfc, + 0x01, 0x06, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, + 0x3f, 0x3f, 0x3f, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xed, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, + 0x30, 0x31, 0x05, 0x35, 0x0e, 0x03, 0x23, 0x22, 0x26, 0x27, 0x0e, 0x03, + 0x23, 0x22, 0x26, 0x35, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x37, 0x11, 0x33, 0x11, 0x14, 0x16, 0x33, 0x32, 0x36, 0x37, 0x11, 0x33, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x03, 0x76, + 0x16, 0x2e, 0x33, 0x3a, 0x24, 0x55, 0x59, 0x06, 0x18, 0x2f, 0x33, 0x3b, + 0x24, 0x70, 0x69, 0xd3, 0x14, 0x27, 0x1f, 0x3c, 0x26, 0xd1, 0x14, 0x28, + 0x1a, 0x40, 0x27, 0xd3, 0x36, 0x5c, 0x7a, 0x43, 0x10, 0x28, 0x29, 0x27, + 0x0f, 0x50, 0x83, 0x41, 0x2d, 0x60, 0x26, 0x36, 0x69, 0x33, 0x28, 0x47, + 0x33, 0x1e, 0x42, 0xd6, 0x2d, 0x40, 0x29, 0x12, 0x59, 0x4f, 0x2d, 0x40, + 0x29, 0x12, 0x9a, 0x99, 0x02, 0xd9, 0xfd, 0x4c, 0x4c, 0x4c, 0x54, 0x65, + 0x02, 0x93, 0xfd, 0x4c, 0x4c, 0x4c, 0x54, 0x65, 0x02, 0x93, 0xfb, 0x9d, + 0x4d, 0x67, 0x3f, 0x1a, 0x01, 0x02, 0x01, 0x0e, 0x15, 0xda, 0x0b, 0x09, + 0x06, 0x08, 0x18, 0x2b, 0x00, 0x01, 0x00, 0x54, 0xfe, 0x6f, 0x03, 0xdf, + 0x03, 0xf8, 0x00, 0x1b, 0x00, 0x36, 0xb9, 0x00, 0x06, 0x02, 0x18, 0xb4, + 0x17, 0x00, 0x0c, 0x0c, 0x0f, 0xbb, 0x02, 0x0f, 0x00, 0x10, 0x00, 0x11, + 0x01, 0x07, 0xb3, 0x0c, 0x0c, 0x10, 0x00, 0xb8, 0x01, 0x07, 0xb5, 0x1b, + 0x4f, 0x10, 0x55, 0x0d, 0x4f, 0x00, 0x3f, 0x3f, 0x3f, 0xed, 0x12, 0x39, + 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x10, 0xce, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x33, 0x11, + 0x33, 0x11, 0x23, 0x11, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, 0x33, + 0x33, 0x02, 0x44, 0x06, 0x46, 0x5a, 0x34, 0x14, 0x16, 0x34, 0x56, 0x40, + 0xb1, 0xf8, 0xf8, 0xa5, 0x84, 0xbb, 0x78, 0x37, 0xf3, 0xf1, 0x0c, 0x03, + 0x2c, 0x21, 0x3d, 0x59, 0x38, 0x35, 0x59, 0x3f, 0x23, 0x02, 0xab, 0xfa, + 0x77, 0x02, 0x12, 0x46, 0x79, 0xa4, 0x5f, 0xd9, 0xdc, 0x00, 0x00, 0x02, + 0x00, 0x3f, 0xff, 0xea, 0x04, 0x06, 0x04, 0x0e, 0x00, 0x0f, 0x00, 0x59, + 0x00, 0x85, 0xb7, 0x46, 0x2d, 0x41, 0x35, 0x3d, 0x00, 0x40, 0x0a, 0xb8, + 0x01, 0xdc, 0xb3, 0x35, 0x35, 0x16, 0x40, 0xb8, 0x01, 0x8d, 0xb2, 0x41, + 0x41, 0x4b, 0xb8, 0x02, 0x0c, 0xb2, 0x2a, 0x2a, 0x15, 0xbb, 0x01, 0xaf, + 0x00, 0x16, 0x00, 0x10, 0x01, 0x31, 0x40, 0x19, 0x10, 0x1d, 0x01, 0x1d, + 0x1d, 0x25, 0x46, 0x3d, 0x2d, 0x00, 0x00, 0x3a, 0x6f, 0x30, 0x7f, 0x30, + 0x8f, 0x30, 0x03, 0x30, 0xf9, 0x0d, 0x0d, 0x3a, 0x25, 0xb8, 0x01, 0x37, + 0x40, 0x0f, 0x50, 0x52, 0x40, 0x4f, 0x6f, 0x05, 0x7f, 0x05, 0x02, 0x05, + 0xf8, 0x3a, 0x50, 0x15, 0x51, 0x00, 0x3f, 0x3f, 0xed, 0x5d, 0x3f, 0x3f, + 0xed, 0x11, 0x39, 0x2f, 0xed, 0x5d, 0x11, 0x39, 0x11, 0x33, 0x33, 0x33, + 0x11, 0x33, 0x2f, 0x5d, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x32, + 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x39, 0x11, 0x12, 0x39, + 0x39, 0x30, 0x31, 0x01, 0x2e, 0x03, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x16, 0x33, 0x32, 0x36, 0x01, 0x22, 0x0e, 0x02, 0x15, 0x23, 0x34, 0x3e, + 0x04, 0x33, 0x32, 0x16, 0x17, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x37, 0x33, 0x0e, 0x03, 0x07, + 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x2e, + 0x03, 0x02, 0xa6, 0x0b, 0x23, 0x2c, 0x30, 0x18, 0x1a, 0x31, 0x25, 0x16, + 0x2b, 0x2d, 0x34, 0x6f, 0xfe, 0xd1, 0x0b, 0x11, 0x0c, 0x06, 0xdd, 0x04, + 0x10, 0x1e, 0x33, 0x4c, 0x36, 0x37, 0x50, 0x21, 0x13, 0x1f, 0x1e, 0x1f, + 0x12, 0x23, 0x43, 0x34, 0x20, 0x0a, 0x07, 0x42, 0x96, 0x59, 0x46, 0x71, + 0x50, 0x2b, 0x28, 0x53, 0x80, 0x59, 0x5a, 0x90, 0x45, 0x0e, 0x0f, 0x0b, + 0xc6, 0x01, 0x11, 0x1c, 0x23, 0x12, 0x1b, 0x23, 0x15, 0x08, 0x3a, 0x66, + 0x8c, 0x52, 0x20, 0x36, 0x31, 0x2f, 0x19, 0x0f, 0x1a, 0x18, 0x18, 0x03, + 0x14, 0x0f, 0x17, 0x10, 0x08, 0x0b, 0x18, 0x25, 0x1a, 0x1c, 0x2f, 0x32, + 0xfd, 0x88, 0x07, 0x15, 0x25, 0x1e, 0x0f, 0x39, 0x44, 0x47, 0x39, 0x25, + 0x1e, 0x13, 0x0b, 0x16, 0x11, 0x0b, 0x28, 0x4c, 0x6b, 0x44, 0x26, 0x4b, + 0x15, 0x47, 0x3d, 0x26, 0x44, 0x5c, 0x36, 0x36, 0x6a, 0x55, 0x35, 0x2e, + 0x35, 0x11, 0x22, 0x1a, 0x0c, 0x3a, 0x46, 0x46, 0x17, 0x22, 0x43, 0x4b, + 0x55, 0x34, 0x64, 0xb2, 0x87, 0x4f, 0x09, 0x11, 0x18, 0x0f, 0x09, 0x12, + 0x0f, 0x0a, 0x00, 0x01, 0x00, 0xac, 0xff, 0xe9, 0x03, 0xc9, 0x04, 0x0e, + 0x00, 0x3b, 0x00, 0x58, 0xb9, 0x00, 0x18, 0x01, 0xd4, 0xb5, 0x1d, 0x1d, + 0x09, 0x00, 0x00, 0x29, 0xb8, 0x01, 0xd5, 0xb2, 0x12, 0x12, 0x32, 0xb8, + 0x02, 0x1a, 0x40, 0x22, 0x09, 0x78, 0x2e, 0x01, 0x2e, 0x04, 0x0f, 0x1b, + 0x1f, 0x1b, 0x02, 0xff, 0x1b, 0x01, 0x0a, 0x1b, 0x01, 0x1b, 0x15, 0xf2, + 0x64, 0x0f, 0x74, 0x0f, 0x02, 0x0f, 0x22, 0x50, 0x00, 0x37, 0xfc, 0x01, + 0x04, 0x52, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x39, 0x5d, 0xfd, 0xc4, + 0x5d, 0x5d, 0x71, 0x12, 0x39, 0x5d, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x06, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x15, 0x14, 0x17, 0x23, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x04, 0x15, 0x14, 0x0e, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x03, 0xc9, 0x51, 0xc4, 0x74, 0x60, 0x96, 0x67, 0x37, + 0x2d, 0x49, 0x5e, 0x61, 0x5e, 0x49, 0x2d, 0x41, 0x3a, 0x48, 0x3a, 0x04, + 0xe1, 0x03, 0x30, 0x5b, 0x83, 0x52, 0x4a, 0x6d, 0x4e, 0x32, 0x1c, 0x0b, + 0x2a, 0x44, 0x57, 0x5b, 0x57, 0x44, 0x2a, 0x20, 0x36, 0x48, 0x29, 0x2e, + 0x62, 0x5b, 0x4d, 0xeb, 0xd5, 0x14, 0x19, 0x2a, 0x4e, 0x6e, 0x44, 0x42, + 0x60, 0x45, 0x31, 0x27, 0x23, 0x28, 0x35, 0x25, 0x33, 0x2f, 0x30, 0x2e, + 0x13, 0x13, 0x12, 0x13, 0x46, 0x67, 0x45, 0x22, 0x1c, 0x2f, 0x3b, 0x3e, + 0x3a, 0x17, 0x41, 0x61, 0x47, 0x32, 0x29, 0x22, 0x26, 0x2f, 0x20, 0x21, + 0x2d, 0x1b, 0x0c, 0x0c, 0x14, 0x17, 0x00, 0x02, 0x00, 0x3c, 0x00, 0x00, + 0x04, 0x2a, 0x04, 0x0d, 0x00, 0x26, 0x00, 0x29, 0x00, 0x4d, 0x40, 0x10, + 0x26, 0x13, 0x0e, 0x28, 0x28, 0x07, 0x1c, 0x1c, 0x29, 0x12, 0x07, 0x07, + 0x27, 0x10, 0x1c, 0x19, 0xb8, 0x01, 0x01, 0x40, 0x0e, 0x28, 0x26, 0x0e, + 0x13, 0x13, 0x1d, 0x20, 0x50, 0x29, 0xc8, 0x12, 0x51, 0x07, 0x0a, 0xb8, + 0x01, 0x01, 0xb2, 0x06, 0x03, 0x50, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0xed, 0x3f, 0x33, 0x39, 0x11, 0x33, 0x33, 0x33, 0xed, 0x32, 0x01, 0x2f, + 0x33, 0x33, 0x2f, 0x2f, 0x33, 0x33, 0x2f, 0x12, 0x39, 0x11, 0x33, 0x33, + 0x33, 0x30, 0x31, 0x01, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, + 0x26, 0x23, 0x22, 0x06, 0x07, 0x07, 0x01, 0x15, 0x21, 0x35, 0x01, 0x27, + 0x2e, 0x03, 0x23, 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x17, 0x17, 0x13, 0x03, 0x03, 0x02, 0x4d, 0x33, 0x83, 0x57, 0x1d, + 0x42, 0x25, 0x0d, 0x33, 0x26, 0x34, 0x4d, 0x26, 0x1c, 0x01, 0x75, 0xfc, + 0x12, 0x01, 0x70, 0x1b, 0x14, 0x23, 0x24, 0x28, 0x1a, 0x26, 0x39, 0x0d, + 0x25, 0x42, 0x1d, 0x2b, 0x49, 0x41, 0x3a, 0x1b, 0x1c, 0xa6, 0xa5, 0xaf, + 0x03, 0x5e, 0x5e, 0x51, 0x08, 0x06, 0xca, 0x05, 0x0e, 0x3c, 0x49, 0x35, + 0xfd, 0x80, 0x0e, 0x0e, 0x02, 0x80, 0x32, 0x24, 0x34, 0x21, 0x0f, 0x0f, + 0x05, 0xcb, 0x06, 0x08, 0x13, 0x2a, 0x43, 0x30, 0x31, 0xfd, 0x87, 0x01, + 0x4b, 0xfe, 0xb5, 0x00, 0x00, 0x02, 0x00, 0x5a, 0xff, 0xe8, 0x04, 0x1b, + 0x05, 0xa7, 0x00, 0x14, 0x00, 0x4b, 0x00, 0x41, 0xb1, 0x15, 0x0a, 0xb8, + 0x02, 0x0d, 0xb3, 0x29, 0x3a, 0x3a, 0x1f, 0xb8, 0x02, 0x14, 0xb2, 0x00, + 0x3f, 0x3a, 0xb8, 0x01, 0x39, 0xb2, 0x39, 0x0a, 0x05, 0xb8, 0x01, 0x07, + 0xb6, 0x15, 0x1a, 0x1a, 0x34, 0x39, 0x6c, 0x10, 0xb8, 0x01, 0x03, 0xb1, + 0x24, 0x52, 0x00, 0x3f, 0xed, 0x3f, 0x33, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x10, 0xed, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x2f, 0xed, 0x32, 0x30, + 0x31, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x3e, 0x03, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x36, + 0x37, 0x3e, 0x03, 0x33, 0x32, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x06, + 0x06, 0x03, 0x1e, 0x1b, 0x32, 0x48, 0x2d, 0x26, 0x4a, 0x44, 0x3e, 0x1a, + 0x25, 0x3f, 0x55, 0x30, 0x3a, 0x56, 0x39, 0x1c, 0xfe, 0x25, 0x22, 0x4a, + 0x52, 0x5d, 0x35, 0x55, 0x8f, 0x69, 0x3b, 0x40, 0x7d, 0xb8, 0x78, 0x74, + 0xaf, 0x75, 0x3c, 0x04, 0x09, 0x0f, 0x41, 0x75, 0xb1, 0x7e, 0x2d, 0x5c, + 0x33, 0x0f, 0x35, 0x40, 0x48, 0x22, 0x16, 0x32, 0x32, 0x2f, 0x13, 0x0f, + 0x31, 0x3a, 0x3e, 0x1b, 0x4b, 0x6b, 0x48, 0x28, 0x07, 0x02, 0x02, 0x01, + 0xe1, 0x59, 0x74, 0x43, 0x1b, 0x1e, 0x33, 0x41, 0x23, 0x1c, 0x74, 0x99, + 0x5a, 0x24, 0x34, 0x56, 0x6e, 0x01, 0x8b, 0x31, 0x40, 0x25, 0x0f, 0x37, + 0x72, 0xaf, 0x78, 0x71, 0xc6, 0x93, 0x56, 0x4b, 0x9c, 0xf0, 0xa5, 0x3e, + 0x90, 0x40, 0x6b, 0xc3, 0x94, 0x58, 0x02, 0x01, 0x06, 0x0b, 0x0b, 0xdb, + 0x08, 0x08, 0x04, 0x01, 0x01, 0x02, 0x01, 0x31, 0x53, 0x70, 0x3f, 0x18, + 0x26, 0x00, 0x00, 0x01, 0x00, 0x3c, 0xfe, 0x59, 0x04, 0x12, 0x04, 0xe9, + 0x00, 0x19, 0x00, 0x41, 0xb3, 0x02, 0x02, 0x00, 0x03, 0xb8, 0x02, 0x11, + 0x40, 0x14, 0x14, 0x17, 0x14, 0x15, 0x15, 0x14, 0x0c, 0x0c, 0x14, 0x03, + 0x15, 0xfa, 0x16, 0x18, 0x18, 0x00, 0x16, 0x4f, 0x0c, 0x0e, 0xb8, 0x01, + 0x32, 0xb2, 0x0b, 0x09, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, + 0x33, 0x2f, 0x10, 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0x11, 0x33, 0x10, 0xed, 0x32, 0x32, 0x2f, 0x30, 0x31, 0x01, 0x21, 0x15, + 0x21, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x27, 0x35, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x11, 0x21, 0x35, 0x21, 0x35, 0x33, 0x02, 0xb5, 0x01, + 0x5d, 0xfe, 0xa3, 0x30, 0x59, 0x7e, 0x4e, 0x45, 0x53, 0x47, 0x2e, 0x22, + 0x30, 0x1e, 0x0e, 0xfe, 0x81, 0x01, 0x7f, 0xfa, 0x03, 0xf8, 0xbe, 0xfc, + 0x6e, 0x54, 0x7d, 0x54, 0x2a, 0x11, 0xd9, 0x17, 0x12, 0x2c, 0x4b, 0x39, + 0x03, 0x4c, 0xbe, 0xf1, 0x00, 0x01, 0x00, 0xae, 0x04, 0x33, 0x03, 0xad, + 0x05, 0x90, 0x00, 0x1b, 0x00, 0x38, 0xbc, 0x00, 0x0d, 0x02, 0x08, 0x00, + 0x15, 0x00, 0x1b, 0x02, 0x08, 0x40, 0x14, 0x07, 0x10, 0x40, 0x09, 0x0c, + 0x48, 0x10, 0x1b, 0xaf, 0xdf, 0x0c, 0xef, 0x0c, 0x02, 0x0c, 0x40, 0x09, + 0x0e, 0x48, 0x0c, 0xb8, 0x01, 0x40, 0xb2, 0x02, 0x1c, 0x4f, 0x00, 0x3f, + 0xde, 0xfd, 0x2b, 0x5d, 0xfd, 0xc4, 0x2b, 0x01, 0x2f, 0xed, 0x2f, 0xed, + 0x30, 0x31, 0x00, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x21, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x21, 0x01, 0x9c, 0x3b, 0x35, 0x1e, 0x2f, 0x20, 0x11, 0x11, 0x1f, + 0x2d, 0x1c, 0x01, 0x95, 0x03, 0x3b, 0x35, 0x1e, 0x2f, 0x20, 0x11, 0x11, + 0x1f, 0x2d, 0x1c, 0xfe, 0x6b, 0x04, 0x6a, 0x37, 0x14, 0x22, 0x2e, 0x1a, + 0x1a, 0x2e, 0x22, 0x14, 0x2a, 0x37, 0x14, 0x22, 0x2e, 0x1a, 0x1a, 0x2e, + 0x22, 0x14, 0x00, 0x02, 0x00, 0x00, 0x03, 0xf8, 0x03, 0xc6, 0x05, 0x4b, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x25, 0xb9, 0x00, 0x0c, 0x01, 0x70, 0x40, + 0x0e, 0x0d, 0x0d, 0x00, 0x00, 0xae, 0x19, 0x19, 0x0d, 0x07, 0xaf, 0x12, + 0x0d, 0x1a, 0x4f, 0x00, 0x3f, 0xde, 0xde, 0xed, 0x11, 0x33, 0x2f, 0xed, + 0x01, 0x2f, 0x32, 0x10, 0xed, 0x30, 0x31, 0x13, 0x32, 0x3e, 0x04, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x23, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x04, + 0x23, 0x07, 0xaa, 0x45, 0x6b, 0x58, 0x4a, 0x48, 0x4c, 0x2d, 0x3b, 0x61, + 0x46, 0x27, 0xac, 0x0f, 0x1c, 0x29, 0x1a, 0x22, 0x3c, 0x3f, 0x48, 0x5c, + 0x73, 0x4b, 0xad, 0x04, 0xc4, 0x14, 0x1e, 0x23, 0x1e, 0x14, 0x1c, 0x43, + 0x70, 0x53, 0x26, 0x33, 0x1f, 0x0d, 0x14, 0x1d, 0x22, 0x1d, 0x14, 0x32, + 0xff, 0xff, 0x00, 0x00, 0x05, 0x42, 0x03, 0xc6, 0x06, 0x95, 0x03, 0x07, + 0x0a, 0x04, 0x00, 0x00, 0x01, 0x4a, 0x00, 0x09, 0xb3, 0x00, 0x1a, 0x41, + 0x1a, 0x00, 0x11, 0x3f, 0x35, 0x00, 0x00, 0x01, 0x01, 0xb7, 0x03, 0xdf, + 0x02, 0xb0, 0x05, 0x31, 0x00, 0x17, 0x00, 0x22, 0xb5, 0x14, 0x14, 0x05, + 0x17, 0x17, 0x0f, 0xb8, 0x02, 0x10, 0xb6, 0x05, 0x17, 0x40, 0x0a, 0x80, + 0x00, 0x4f, 0x00, 0x3f, 0x1a, 0xcc, 0x1a, 0xcd, 0x01, 0x2f, 0xed, 0x32, + 0x2f, 0x11, 0x39, 0x2f, 0x30, 0x31, 0x01, 0x2e, 0x03, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x15, 0x14, 0x16, + 0x17, 0x02, 0xa2, 0x45, 0x5a, 0x36, 0x16, 0x15, 0x25, 0x32, 0x1d, 0x1e, + 0x2b, 0x1b, 0x0c, 0x1e, 0x24, 0x1e, 0x22, 0x30, 0x03, 0xdf, 0x03, 0x26, + 0x3a, 0x48, 0x25, 0x23, 0x32, 0x1f, 0x0e, 0x12, 0x1c, 0x21, 0x0f, 0x20, + 0x1f, 0x13, 0x10, 0x12, 0x13, 0x23, 0x01, 0x00, 0xff, 0xff, 0x01, 0xb7, + 0x05, 0x9d, 0x02, 0xb0, 0x06, 0xef, 0x03, 0x07, 0x0a, 0x06, 0x00, 0x00, + 0x01, 0xbe, 0x00, 0x0c, 0xb6, 0x00, 0x0a, 0x40, 0x0f, 0x0f, 0x48, 0x0a, + 0x00, 0x11, 0x2b, 0x35, 0x00, 0x01, 0x01, 0xb6, 0x03, 0xdf, 0x02, 0xaf, + 0x05, 0x31, 0x00, 0x17, 0x00, 0x22, 0xb2, 0x03, 0x03, 0x12, 0xb8, 0x02, + 0x10, 0x40, 0x09, 0x08, 0x40, 0x00, 0x00, 0x08, 0x0d, 0x80, 0x00, 0x17, + 0x00, 0x2f, 0xcd, 0x1a, 0xcc, 0x01, 0x2f, 0x33, 0x2f, 0x1a, 0x10, 0xed, + 0x39, 0x2f, 0x30, 0x31, 0x01, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x01, 0xc4, 0x30, 0x22, 0x1e, 0x24, 0x1e, 0x0c, 0x1b, 0x2b, 0x1e, 0x1d, + 0x32, 0x25, 0x15, 0x16, 0x36, 0x5a, 0x45, 0x04, 0x28, 0x01, 0x23, 0x13, + 0x12, 0x10, 0x13, 0x1f, 0x20, 0x0f, 0x21, 0x1c, 0x12, 0x0e, 0x1f, 0x32, + 0x23, 0x25, 0x48, 0x3a, 0x26, 0x03, 0xff, 0xff, 0x01, 0xb6, 0x05, 0x9d, + 0x02, 0xaf, 0x06, 0xef, 0x03, 0x07, 0x0a, 0x08, 0x00, 0x00, 0x01, 0xbe, + 0x00, 0x13, 0x40, 0x0c, 0x00, 0x0d, 0x40, 0x0f, 0x0f, 0x48, 0x0d, 0x40, + 0x0b, 0x0b, 0x48, 0x0d, 0x00, 0x11, 0x2b, 0x2b, 0x35, 0x00, 0xff, 0xff, + 0x00, 0x00, 0x04, 0x3c, 0x04, 0x06, 0x05, 0x75, 0x02, 0x07, 0x0a, 0x60, + 0x00, 0x00, 0xff, 0x21, 0xff, 0xff, 0x00, 0x00, 0x05, 0x1b, 0x04, 0x06, + 0x06, 0x54, 0x03, 0x06, 0x0a, 0x60, 0x00, 0x00, 0x00, 0x09, 0xb3, 0x00, + 0x0c, 0x41, 0x0c, 0x00, 0x11, 0x3f, 0x35, 0x00, 0x00, 0x01, 0x00, 0x2b, + 0xff, 0xf6, 0x04, 0x51, 0x05, 0x1e, 0x00, 0x13, 0x00, 0x77, 0x40, 0x49, + 0x09, 0x05, 0x0e, 0x08, 0x01, 0x06, 0x05, 0x0e, 0x07, 0x02, 0x03, 0x04, + 0x0f, 0x07, 0x02, 0x00, 0x04, 0x0f, 0x08, 0x01, 0x02, 0x01, 0x01, 0x13, + 0x04, 0x0f, 0x12, 0x0b, 0x10, 0x04, 0x0f, 0x0c, 0x11, 0x0d, 0x05, 0x0e, + 0x0c, 0x11, 0x0a, 0x05, 0x0e, 0x12, 0x0b, 0x12, 0x11, 0x11, 0x0e, 0x0f, + 0x0c, 0x0b, 0x0b, 0x08, 0x07, 0x07, 0x04, 0x05, 0x12, 0x11, 0x11, 0x0b, + 0x0c, 0x0c, 0x0f, 0x0e, 0x08, 0x07, 0x07, 0x01, 0x02, 0x02, 0x05, 0x04, + 0x51, 0x00, 0x3f, 0x33, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x33, + 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, + 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x0f, 0x0f, 0x0f, 0x0f, + 0x33, 0x2f, 0x33, 0x0f, 0x0f, 0x0f, 0x0f, 0x30, 0x31, 0x01, 0x17, 0x07, + 0x27, 0x03, 0x27, 0x13, 0x27, 0x37, 0x17, 0x13, 0x27, 0x37, 0x17, 0x37, + 0x17, 0x07, 0x17, 0x07, 0x27, 0x02, 0x45, 0xfc, 0x61, 0xfc, 0x90, 0xc1, + 0x90, 0xf8, 0x60, 0xf9, 0xb0, 0xf8, 0x5f, 0xf9, 0x7a, 0xc1, 0x7a, 0xfc, + 0x60, 0xfc, 0x01, 0xc4, 0x82, 0xba, 0x83, 0xfe, 0xeb, 0x64, 0x01, 0x15, + 0x80, 0xb9, 0x80, 0x01, 0x51, 0x81, 0xb9, 0x81, 0xec, 0x63, 0xec, 0x83, + 0xb9, 0x83, 0x00, 0x02, 0x00, 0x09, 0xff, 0xfa, 0x04, 0x5d, 0x04, 0x4e, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x15, 0xb7, 0x1e, 0x0a, 0x14, 0x00, 0x19, + 0x0f, 0x23, 0x05, 0x00, 0x2f, 0xcd, 0x2f, 0xcd, 0x01, 0x2f, 0xcd, 0x2f, + 0xcd, 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x09, + 0x57, 0x96, 0xca, 0x73, 0x73, 0xca, 0x96, 0x57, 0x57, 0x96, 0xca, 0x73, + 0x73, 0xca, 0x96, 0x57, 0x54, 0x4a, 0x80, 0xab, 0x61, 0x61, 0xab, 0x80, + 0x4a, 0x4a, 0x80, 0xab, 0x61, 0x61, 0xab, 0x80, 0x4a, 0x02, 0x24, 0x73, + 0xca, 0x96, 0x57, 0x57, 0x96, 0xca, 0x73, 0x73, 0xca, 0x96, 0x57, 0x57, + 0x96, 0xca, 0x73, 0x61, 0xab, 0x80, 0x4a, 0x4a, 0x80, 0xab, 0x61, 0x61, + 0xab, 0x80, 0x4a, 0x4a, 0x80, 0xab, 0x00, 0x08, 0xff, 0xfb, 0xff, 0xb6, + 0x04, 0x5e, 0x04, 0x57, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x28, 0x00, 0x35, + 0x00, 0x42, 0x00, 0x4f, 0x00, 0x5c, 0x00, 0x69, 0x00, 0xd5, 0x40, 0x6f, + 0x63, 0x64, 0x64, 0x5d, 0x69, 0x69, 0x35, 0x49, 0x4a, 0x4a, 0x43, 0x4f, + 0x4f, 0x35, 0x0e, 0x1b, 0x1b, 0x00, 0x0d, 0x0d, 0x07, 0x14, 0x06, 0x06, + 0x15, 0x07, 0x07, 0x23, 0x2f, 0x30, 0x30, 0x29, 0x35, 0x50, 0x5c, 0x5c, + 0x56, 0x57, 0x57, 0x23, 0x36, 0x42, 0x42, 0x3c, 0x3d, 0x3d, 0x23, 0x1c, + 0x28, 0x28, 0x22, 0x23, 0x64, 0x5d, 0x50, 0x57, 0x60, 0x53, 0x99, 0x5a, + 0x67, 0x5a, 0x30, 0x29, 0x1c, 0x23, 0x2c, 0x1f, 0x99, 0x26, 0x33, 0x26, + 0x4a, 0x43, 0x36, 0x3d, 0x46, 0x39, 0x99, 0x40, 0x4d, 0x40, 0xd0, 0x26, + 0xe0, 0x26, 0x02, 0x5f, 0x40, 0x6f, 0x40, 0x02, 0x5a, 0x26, 0x40, 0x40, + 0x26, 0x5a, 0x03, 0x0a, 0x18, 0x0e, 0x15, 0x11, 0x99, 0x18, 0x0a, 0x99, + 0x00, 0x07, 0x03, 0x00, 0x2f, 0xc4, 0x32, 0xed, 0x2f, 0xfd, 0xc4, 0x32, + 0x11, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x5d, 0x5d, 0x11, 0x33, 0x10, + 0xfd, 0x32, 0xc4, 0x32, 0x32, 0x32, 0x11, 0x33, 0x10, 0xfd, 0x32, 0xc4, + 0x32, 0x32, 0x32, 0x11, 0x33, 0x10, 0xfd, 0x32, 0xc4, 0x32, 0x32, 0x32, + 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0x11, 0x33, 0x2f, 0x32, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0x12, 0x39, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x33, 0x11, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x05, 0x26, 0x26, 0x23, 0x22, + 0x06, 0x07, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x03, 0x26, 0x26, + 0x23, 0x22, 0x06, 0x07, 0x23, 0x34, 0x36, 0x33, 0x32, 0x16, 0x15, 0x01, + 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x23, 0x34, 0x36, 0x33, 0x32, 0x15, + 0x25, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x23, 0x34, 0x36, 0x33, 0x32, + 0x15, 0x01, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x23, 0x34, 0x36, 0x33, + 0x32, 0x15, 0x25, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x23, 0x34, 0x36, + 0x33, 0x32, 0x15, 0x01, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x23, 0x34, + 0x36, 0x33, 0x32, 0x15, 0x25, 0x26, 0x26, 0x23, 0x22, 0x06, 0x07, 0x23, + 0x34, 0x36, 0x33, 0x32, 0x15, 0x02, 0x6a, 0x03, 0x21, 0x21, 0x27, 0x19, + 0x04, 0x6b, 0x52, 0x5d, 0x58, 0x59, 0x6c, 0x03, 0x21, 0x21, 0x27, 0x19, + 0x04, 0x6b, 0x52, 0x5d, 0x58, 0x59, 0xfe, 0x19, 0x03, 0x21, 0x20, 0x28, + 0x1a, 0x04, 0x6a, 0x52, 0x5e, 0xaf, 0x02, 0x9a, 0x03, 0x22, 0x22, 0x26, + 0x19, 0x04, 0x6a, 0x50, 0x5d, 0xb1, 0xfc, 0xe7, 0x03, 0x21, 0x21, 0x26, + 0x1a, 0x04, 0x6b, 0x51, 0x5e, 0xaf, 0x01, 0xe5, 0x03, 0x21, 0x20, 0x27, + 0x1a, 0x04, 0x6b, 0x53, 0x5d, 0xb0, 0xfd, 0x45, 0x03, 0x21, 0x21, 0x26, + 0x1a, 0x04, 0x6b, 0x51, 0x5e, 0xaf, 0x01, 0xe5, 0x03, 0x21, 0x20, 0x27, + 0x1a, 0x04, 0x6b, 0x53, 0x5d, 0xb0, 0x48, 0x38, 0x2e, 0x36, 0x30, 0x63, + 0x6b, 0x69, 0x67, 0x03, 0xd3, 0x38, 0x2e, 0x36, 0x30, 0x64, 0x6a, 0x69, + 0x67, 0xfe, 0x1a, 0x38, 0x30, 0x37, 0x31, 0x64, 0x6a, 0xcf, 0x01, 0x38, + 0x30, 0x37, 0x31, 0x63, 0x6b, 0xcf, 0x01, 0x08, 0x38, 0x2f, 0x37, 0x30, + 0x63, 0x6b, 0xd0, 0x02, 0x38, 0x2f, 0x37, 0x30, 0x63, 0x6b, 0xd0, 0xfd, + 0xed, 0x36, 0x30, 0x37, 0x2f, 0x61, 0x6c, 0xcf, 0x02, 0x36, 0x30, 0x37, + 0x2f, 0x61, 0x6c, 0xcf, 0x00, 0x08, 0xff, 0xfb, 0xff, 0xb6, 0x04, 0x5e, + 0x04, 0x54, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x11, 0x00, 0x17, 0x00, 0x1d, + 0x00, 0x23, 0x00, 0x29, 0x00, 0x2f, 0x00, 0xa2, 0x40, 0x17, 0x20, 0x23, + 0x1f, 0x22, 0x22, 0x1f, 0x1f, 0x2b, 0x12, 0x16, 0x13, 0x03, 0x14, 0x17, + 0x17, 0x14, 0x14, 0x2b, 0x05, 0x04, 0x08, 0x02, 0x06, 0xb8, 0x01, 0x5e, + 0x40, 0x3b, 0x09, 0x29, 0x08, 0x09, 0x2e, 0x2e, 0x09, 0x08, 0x29, 0x04, + 0x25, 0x2b, 0x1b, 0x1a, 0x18, 0x03, 0x19, 0x1c, 0x1c, 0x19, 0x19, 0x25, + 0x0f, 0x10, 0x0c, 0x03, 0x0e, 0x11, 0x11, 0x0e, 0x0e, 0x25, 0x2c, 0x24, + 0x9a, 0x27, 0x2f, 0x2e, 0x26, 0x0a, 0x27, 0x26, 0x05, 0x05, 0x26, 0x27, + 0x0a, 0x04, 0x01, 0x23, 0x20, 0x10, 0x0d, 0x07, 0x1d, 0x1a, 0x16, 0x13, + 0x01, 0x00, 0x2f, 0xc4, 0xc4, 0xc6, 0xc4, 0x2f, 0xc4, 0xc4, 0xc6, 0xc4, + 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x10, 0xc6, 0x33, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x17, 0x39, 0x11, 0x33, + 0x2f, 0x33, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, + 0x2f, 0x2f, 0x10, 0xed, 0x32, 0x10, 0xc6, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x12, 0x17, 0x39, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, + 0x30, 0x31, 0x01, 0x37, 0x33, 0x07, 0x15, 0x23, 0x13, 0x07, 0x23, 0x37, + 0x35, 0x33, 0x05, 0x07, 0x27, 0x37, 0x37, 0x17, 0x13, 0x37, 0x17, 0x07, + 0x07, 0x27, 0x05, 0x27, 0x37, 0x17, 0x17, 0x07, 0x01, 0x17, 0x07, 0x27, + 0x27, 0x37, 0x25, 0x27, 0x35, 0x17, 0x33, 0x15, 0x25, 0x17, 0x15, 0x27, + 0x23, 0x35, 0x01, 0xce, 0x72, 0x61, 0x4a, 0x8a, 0xbe, 0x71, 0x63, 0x4c, + 0x89, 0xfe, 0xff, 0xd9, 0x44, 0xbd, 0x55, 0x60, 0xee, 0xd9, 0x43, 0xbc, + 0x55, 0x60, 0xfe, 0x8d, 0x39, 0x47, 0x51, 0x55, 0x61, 0x01, 0xf9, 0x3a, + 0x47, 0x52, 0x54, 0x61, 0xfd, 0xbf, 0xc4, 0xbc, 0x7c, 0x02, 0x67, 0xc4, + 0xbd, 0x7b, 0x03, 0x8f, 0xc5, 0xbd, 0x7c, 0xfd, 0x5f, 0xc4, 0xbd, 0x7b, + 0x2d, 0x39, 0x46, 0x51, 0x56, 0x62, 0x02, 0x33, 0x3b, 0x47, 0x52, 0x55, + 0x62, 0x33, 0xda, 0x44, 0xbc, 0x56, 0x61, 0xfe, 0xd9, 0xda, 0x43, 0xbc, + 0x56, 0x60, 0x0a, 0x72, 0x61, 0x49, 0x8a, 0xbe, 0x72, 0x61, 0x4b, 0x89, + 0x00, 0x01, 0x00, 0x23, 0xff, 0xf0, 0x04, 0x43, 0x05, 0x31, 0x00, 0x46, + 0x00, 0x5a, 0xb7, 0x46, 0x46, 0x12, 0x23, 0x23, 0x12, 0x12, 0x35, 0xb8, + 0x01, 0xc8, 0xb3, 0x34, 0x34, 0x1a, 0x08, 0xb8, 0x01, 0xfc, 0xb2, 0x3e, + 0x3e, 0x2b, 0xb8, 0x01, 0xfc, 0x40, 0x09, 0x1a, 0x46, 0x43, 0x43, 0x34, + 0x34, 0x30, 0x23, 0x26, 0xb8, 0x01, 0x15, 0xb5, 0x03, 0x1f, 0x42, 0x39, + 0x12, 0x30, 0xb8, 0x01, 0x0e, 0xb2, 0x0d, 0x15, 0x44, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x39, 0x2f, 0x32, 0x11, + 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, + 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x36, 0x32, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, + 0x32, 0x32, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x02, + 0x76, 0x0a, 0x11, 0x0a, 0x77, 0xa2, 0x64, 0x2b, 0x1e, 0x49, 0x7b, 0x5d, + 0x21, 0x3f, 0x37, 0x2d, 0x0d, 0x20, 0x66, 0x4b, 0x5d, 0x7b, 0x49, 0x1e, + 0x2b, 0x64, 0xa2, 0x77, 0x0a, 0x11, 0x0a, 0x08, 0x18, 0x08, 0x36, 0x42, + 0x24, 0x0c, 0x04, 0x11, 0x20, 0x1d, 0x28, 0x25, 0xe8, 0x24, 0x29, 0x1c, + 0x21, 0x11, 0x04, 0x0c, 0x24, 0x42, 0x36, 0x08, 0x18, 0x08, 0x05, 0x30, + 0x01, 0x58, 0xac, 0xff, 0xa6, 0xa5, 0xf9, 0xa7, 0x53, 0x0d, 0x1e, 0x30, + 0x23, 0x45, 0x39, 0x53, 0xa5, 0xf5, 0xa2, 0xa9, 0x01, 0x02, 0xae, 0x59, + 0x01, 0xdd, 0x01, 0x01, 0x2c, 0x69, 0xaf, 0x82, 0x7f, 0xaf, 0x6c, 0x30, + 0x4a, 0x57, 0xe9, 0xe9, 0x57, 0x4a, 0x30, 0x6c, 0xaf, 0x7f, 0x82, 0xaf, + 0x69, 0x2c, 0x01, 0x01, 0x00, 0x01, 0x00, 0x35, 0xff, 0xe9, 0x04, 0x1d, + 0x05, 0x31, 0x00, 0x2d, 0x00, 0x57, 0xb1, 0x28, 0x2c, 0xb8, 0x01, 0xa5, + 0xb2, 0x2b, 0x14, 0x11, 0xb8, 0x01, 0xcf, 0x40, 0x17, 0x27, 0x00, 0x00, + 0x1c, 0x2b, 0x13, 0x13, 0x1c, 0x09, 0x09, 0x1c, 0x14, 0x28, 0xe0, 0x11, + 0x2d, 0x2d, 0x2b, 0x41, 0x2a, 0x43, 0x1c, 0x19, 0xb8, 0x01, 0x0e, 0x40, + 0x09, 0x1d, 0x20, 0x44, 0x09, 0x0c, 0xe3, 0x08, 0x05, 0x42, 0x00, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x3f, 0x39, 0x2f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x2f, 0x12, 0x39, + 0x2f, 0x33, 0xed, 0x32, 0x10, 0xed, 0x32, 0x31, 0x30, 0x01, 0x3e, 0x03, + 0x33, 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x21, 0x15, 0x21, 0x1e, 0x03, 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x04, 0x27, 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x01, + 0x8c, 0x0a, 0x52, 0x7c, 0xa1, 0x5a, 0x49, 0x5d, 0x18, 0x34, 0x51, 0x28, + 0x40, 0x59, 0x39, 0x1d, 0x05, 0x01, 0x64, 0xfe, 0x9a, 0x03, 0x1b, 0x39, + 0x5b, 0x44, 0x28, 0x51, 0x34, 0x18, 0x5f, 0x47, 0x3d, 0x72, 0x66, 0x57, + 0x3f, 0x25, 0x03, 0x7a, 0xdd, 0xdd, 0x03, 0x06, 0xa3, 0xd6, 0x7f, 0x33, + 0x12, 0x07, 0xcf, 0x0d, 0x0d, 0x26, 0x53, 0x85, 0x5f, 0xcb, 0x62, 0x90, + 0x5e, 0x2d, 0x0d, 0x0d, 0xd6, 0x07, 0x12, 0x15, 0x33, 0x56, 0x84, 0xb7, + 0x79, 0xfd, 0xc5, 0x05, 0x1b, 0xfd, 0xeb, 0x00, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x00, 0x04, 0x62, 0x05, 0x1b, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x50, + 0x40, 0x0b, 0x0e, 0x05, 0x0c, 0x04, 0x04, 0x10, 0x0a, 0x0d, 0x0b, 0x0c, + 0x07, 0xb8, 0x01, 0xa5, 0x40, 0x11, 0x08, 0x08, 0x02, 0x01, 0x0c, 0x0c, + 0x03, 0x0b, 0x0f, 0x03, 0x06, 0x0a, 0xdc, 0x0d, 0x0d, 0x00, 0x0c, 0xb8, + 0x01, 0x0d, 0xb5, 0x01, 0x41, 0x08, 0x04, 0x00, 0x43, 0x00, 0x3f, 0x32, + 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0x11, 0x33, + 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x2f, 0xed, 0x11, 0x12, 0x39, 0x39, + 0x11, 0x33, 0x11, 0x12, 0x39, 0x39, 0x30, 0x31, 0x33, 0x01, 0x21, 0x01, + 0x23, 0x03, 0x23, 0x11, 0x23, 0x11, 0x23, 0x03, 0x01, 0x03, 0x33, 0x04, + 0x01, 0x8d, 0x01, 0x46, 0x01, 0x8b, 0xff, 0x97, 0x31, 0xdd, 0x33, 0x9b, + 0x01, 0x3e, 0x69, 0xcf, 0x05, 0x1b, 0xfa, 0xe5, 0x02, 0x17, 0xfd, 0xe9, + 0x02, 0x17, 0xfd, 0xe9, 0x04, 0x47, 0xfe, 0x96, 0x00, 0x02, 0x00, 0x35, + 0x00, 0x00, 0x04, 0x4d, 0x05, 0x1b, 0x00, 0x13, 0x00, 0x16, 0x00, 0x69, + 0x40, 0x0a, 0x16, 0x0d, 0x0c, 0x0c, 0x0b, 0x15, 0x12, 0x14, 0x13, 0x0f, + 0xb8, 0x01, 0x6a, 0x40, 0x10, 0x10, 0x10, 0x0a, 0x09, 0x14, 0x01, 0x08, + 0x14, 0x03, 0x00, 0x0b, 0x13, 0x00, 0x00, 0x02, 0x06, 0xb8, 0x01, 0xa0, + 0x40, 0x17, 0x05, 0x12, 0x0e, 0x02, 0xe0, 0x15, 0x00, 0x07, 0x10, 0x07, + 0x02, 0x07, 0x07, 0x00, 0x14, 0x09, 0x05, 0x41, 0x10, 0x0c, 0x04, 0x00, + 0x43, 0x00, 0x3f, 0x32, 0x32, 0x32, 0x3f, 0x33, 0xc4, 0x12, 0x39, 0x2f, + 0x5d, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x32, 0x2f, 0x33, + 0x2f, 0x12, 0x17, 0x39, 0x11, 0x33, 0x33, 0x33, 0x2f, 0xed, 0x11, 0x12, + 0x39, 0x39, 0x11, 0x33, 0x11, 0x39, 0x39, 0x30, 0x31, 0x21, 0x13, 0x23, + 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x13, 0x21, 0x01, 0x23, 0x03, 0x23, + 0x11, 0x23, 0x11, 0x23, 0x03, 0x13, 0x03, 0x33, 0x01, 0x36, 0x68, 0x92, + 0xd7, 0xd7, 0xb4, 0x82, 0x01, 0x02, 0x01, 0x09, 0xc7, 0x5a, 0x1e, 0xa8, + 0x1e, 0x54, 0xc7, 0x49, 0x8f, 0x02, 0x3b, 0xfd, 0xc5, 0x05, 0x1b, 0xfd, + 0xeb, 0x02, 0x15, 0xfa, 0xe5, 0x02, 0x3b, 0xfd, 0xc5, 0x02, 0x3b, 0xfd, + 0xc5, 0x04, 0x59, 0xfe, 0xad, 0x00, 0x00, 0x02, 0xff, 0xfa, 0x00, 0x00, + 0x04, 0x6c, 0x05, 0x1b, 0x00, 0x0d, 0x00, 0x10, 0x00, 0x4b, 0xb4, 0x04, + 0x00, 0x12, 0x02, 0x05, 0xb8, 0x01, 0xa5, 0x40, 0x1d, 0x0b, 0x08, 0x08, + 0x0f, 0x0f, 0x0c, 0x09, 0x11, 0x0e, 0x0d, 0x03, 0x10, 0x01, 0x05, 0x08, + 0x0b, 0x08, 0x02, 0x0f, 0x0f, 0x03, 0x0e, 0xd6, 0x0d, 0x41, 0x0a, 0x07, + 0x03, 0x43, 0x00, 0x3f, 0x33, 0x33, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0x33, + 0x33, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0x2f, 0x33, 0x11, 0x33, + 0x33, 0x39, 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x33, 0x30, + 0x31, 0x01, 0x15, 0x01, 0x01, 0x23, 0x03, 0x11, 0x23, 0x11, 0x03, 0x23, + 0x01, 0x01, 0x35, 0x05, 0x13, 0x13, 0x04, 0x42, 0xfe, 0xf2, 0x01, 0x38, + 0xff, 0xcb, 0xdd, 0xd2, 0xf9, 0x01, 0x43, 0xfe, 0xe5, 0x01, 0x4a, 0xc9, + 0xc7, 0x05, 0x1b, 0x08, 0xfd, 0xd6, 0xfd, 0x17, 0x02, 0x2d, 0xfd, 0xd3, + 0x02, 0x2e, 0xfd, 0xd2, 0x02, 0xe9, 0x02, 0x2a, 0x08, 0xbe, 0xfe, 0x68, + 0x01, 0x98, 0x00, 0x02, 0x00, 0x35, 0x00, 0x00, 0x04, 0x4d, 0x05, 0x1b, + 0x00, 0x14, 0x00, 0x17, 0x00, 0x5a, 0xb1, 0x02, 0x05, 0xb8, 0x01, 0x7d, + 0x40, 0x0c, 0x12, 0x0b, 0x08, 0x08, 0x16, 0x16, 0x03, 0x09, 0x0a, 0x0a, + 0x0c, 0x10, 0xb8, 0x01, 0xa0, 0x40, 0x19, 0x0f, 0x17, 0x01, 0x01, 0x04, + 0x03, 0x05, 0x02, 0x08, 0x08, 0x16, 0x0c, 0xe0, 0x11, 0x11, 0x03, 0x15, + 0x14, 0x0f, 0x41, 0x0e, 0x0a, 0x07, 0x03, 0x43, 0x00, 0x3f, 0x33, 0x33, + 0x33, 0x3f, 0x33, 0xc4, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x32, 0x11, 0x33, + 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x32, 0x2f, + 0x33, 0x12, 0x39, 0x11, 0x33, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x30, 0x31, + 0x01, 0x15, 0x03, 0x13, 0x23, 0x03, 0x11, 0x23, 0x11, 0x03, 0x23, 0x13, + 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x03, 0x35, 0x17, 0x13, 0x13, + 0x04, 0x29, 0x9b, 0xbf, 0xc2, 0x71, 0xb6, 0x71, 0xbd, 0x81, 0xab, 0xd7, + 0xd7, 0xd3, 0x78, 0xe7, 0x73, 0x84, 0x05, 0x1b, 0x08, 0xfd, 0xc7, 0xfd, + 0x26, 0x02, 0x15, 0xfd, 0xeb, 0x02, 0x16, 0xfd, 0xea, 0x02, 0x3b, 0xfd, + 0xc5, 0x05, 0x1b, 0xfd, 0xeb, 0x02, 0x0d, 0x08, 0xb9, 0xfe, 0x31, 0x01, + 0xcf, 0x00, 0x00, 0x01, 0x00, 0x53, 0xfe, 0x69, 0x03, 0xfc, 0x06, 0x0f, + 0x00, 0x62, 0x00, 0x89, 0x40, 0x0e, 0x36, 0x25, 0x28, 0x28, 0x2f, 0x27, + 0x26, 0x26, 0x21, 0x21, 0x00, 0x57, 0x57, 0x40, 0xb8, 0x02, 0x05, 0xb3, + 0x0a, 0x2f, 0x2f, 0x38, 0xb8, 0x01, 0xff, 0xb5, 0x17, 0x17, 0x3b, 0x0a, + 0x0a, 0x4a, 0xb8, 0x01, 0xf6, 0xb5, 0x00, 0x10, 0x10, 0x00, 0x52, 0x57, + 0xb8, 0x01, 0x13, 0x40, 0x1e, 0x5b, 0x58, 0x45, 0x3b, 0x10, 0xd5, 0x11, + 0x11, 0x25, 0x05, 0xd2, 0x40, 0x45, 0x44, 0x30, 0x32, 0x32, 0x2f, 0x2c, + 0x2c, 0x26, 0x80, 0x21, 0x1c, 0xd8, 0x36, 0x28, 0x22, 0x25, 0x42, 0x00, + 0x3f, 0x33, 0x33, 0x33, 0xed, 0x32, 0x1a, 0xcd, 0x32, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0x3f, 0x1a, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x3f, 0x33, + 0xed, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x17, 0x34, 0x3e, + 0x02, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x21, 0x35, 0x21, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x07, + 0x35, 0x36, 0x36, 0x37, 0x27, 0x33, 0x17, 0x37, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x17, 0x15, 0x26, 0x23, 0x22, 0x06, 0x07, 0x07, 0x04, 0x11, 0x14, + 0x06, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x0e, 0x03, 0x15, + 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, + 0x26, 0x26, 0x23, 0x22, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x53, 0x41, 0x6a, + 0x86, 0x45, 0x3f, 0x6d, 0x51, 0x2e, 0x20, 0x40, 0x61, 0x41, 0xfe, 0xc8, + 0x01, 0x29, 0x3d, 0x57, 0x38, 0x1a, 0x19, 0x36, 0x57, 0x3e, 0x2e, 0x53, + 0x54, 0x5b, 0x36, 0x3d, 0x86, 0x47, 0xd1, 0xdf, 0x7c, 0x43, 0x1d, 0x47, + 0x32, 0x16, 0x2a, 0x15, 0x1a, 0x14, 0x1a, 0x1e, 0x0f, 0x40, 0x01, 0x3d, + 0x5b, 0x66, 0x31, 0x59, 0x43, 0x27, 0x49, 0x76, 0x96, 0x4c, 0x37, 0x63, + 0x4b, 0x2c, 0x48, 0x4b, 0x21, 0x52, 0x54, 0x4f, 0x1f, 0x21, 0x36, 0x30, + 0x2e, 0x19, 0x41, 0x8d, 0x3f, 0x33, 0x96, 0x70, 0x36, 0x74, 0x60, 0x3d, + 0x78, 0x4e, 0x63, 0x3d, 0x21, 0x0d, 0x0c, 0x1b, 0x2f, 0x4c, 0x3d, 0x2a, + 0x47, 0x32, 0x1c, 0xbc, 0x1f, 0x36, 0x47, 0x27, 0x25, 0x3f, 0x2e, 0x1a, + 0x08, 0x10, 0x17, 0x0f, 0xcd, 0x13, 0x19, 0x05, 0xd0, 0x81, 0x4e, 0x23, + 0x22, 0x09, 0x05, 0x7e, 0x06, 0x0e, 0x11, 0x44, 0x31, 0xfe, 0xe6, 0x6f, + 0x91, 0x23, 0x08, 0x32, 0x4f, 0x69, 0x3f, 0x6c, 0x8f, 0x5c, 0x33, 0x0f, + 0x0b, 0x11, 0x13, 0x1c, 0x16, 0x26, 0x1d, 0x04, 0x05, 0x04, 0x02, 0x05, + 0x07, 0x06, 0xda, 0x15, 0x10, 0x05, 0x17, 0x3b, 0x62, 0x00, 0xff, 0xff, + 0x00, 0x27, 0x00, 0x00, 0x04, 0x3f, 0x05, 0x1b, 0x02, 0x06, 0x01, 0xa6, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xb5, 0x00, 0x00, 0x04, 0x60, 0x06, 0x87, + 0x02, 0x26, 0x02, 0x13, 0x00, 0x00, 0x00, 0x06, 0x0a, 0x74, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x27, 0xfe, 0x62, 0x04, 0x53, 0x05, 0x31, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x43, 0x00, 0x60, 0xb4, 0x3c, 0x41, 0x41, 0x28, 0x3f, + 0xb8, 0x01, 0x7e, 0xb5, 0x3e, 0x34, 0x34, 0x3e, 0x3e, 0x23, 0xb8, 0x01, + 0x9c, 0xb3, 0x05, 0x05, 0x19, 0x43, 0xb8, 0x01, 0x6f, 0xb2, 0x28, 0x28, + 0x0f, 0xb8, 0x01, 0x9c, 0x40, 0x17, 0x19, 0x43, 0x4f, 0x3c, 0x29, 0x41, + 0x41, 0x3e, 0x4f, 0x34, 0x37, 0xd5, 0x33, 0x2e, 0x45, 0x0a, 0xdc, 0x1e, + 0x42, 0x00, 0xdc, 0x14, 0x44, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0x39, 0x11, 0x33, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x10, 0xed, + 0x12, 0x39, 0x11, 0x33, 0x30, 0x31, 0x25, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x22, + 0x26, 0x26, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x02, 0x06, 0x06, 0x01, 0x03, 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, + 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x37, 0x03, 0x33, + 0x1b, 0x03, 0x01, 0x3b, 0x16, 0x1c, 0x0e, 0x05, 0x03, 0x0d, 0x1b, 0x19, + 0x19, 0x1b, 0x0d, 0x03, 0x05, 0x0e, 0x1a, 0x14, 0x4d, 0x69, 0x40, 0x1c, + 0x11, 0x39, 0x6c, 0x5c, 0x5e, 0x6f, 0x3a, 0x11, 0x1e, 0x42, 0x6b, 0x02, + 0xcd, 0x8e, 0x12, 0x2a, 0x43, 0x68, 0x4f, 0x09, 0x1c, 0x1f, 0x1e, 0x0a, + 0x11, 0x2b, 0x0d, 0x24, 0x2c, 0x1b, 0x11, 0x09, 0x11, 0x90, 0xbe, 0x26, + 0x13, 0x12, 0x24, 0xae, 0x29, 0x6a, 0xb7, 0x8f, 0x90, 0xbb, 0x6e, 0x2b, + 0x2b, 0x6e, 0xbb, 0x90, 0x8f, 0xb7, 0x6a, 0x29, 0xc5, 0x4c, 0xa6, 0x01, + 0x06, 0xbb, 0xa4, 0xf8, 0xa6, 0x53, 0x53, 0xa6, 0xf8, 0xa4, 0xbb, 0xfe, + 0xfa, 0xa6, 0x4c, 0x04, 0x0f, 0xfc, 0x32, 0x78, 0xad, 0x6f, 0x34, 0x01, + 0x02, 0x02, 0x01, 0xbe, 0x04, 0x03, 0x16, 0x2b, 0x40, 0x2b, 0x51, 0x03, + 0xdc, 0xfe, 0x58, 0xfe, 0xed, 0x01, 0x13, 0x01, 0xa8, 0x00, 0x00, 0x02, + 0x00, 0x25, 0xff, 0x8f, 0x04, 0x41, 0x05, 0x83, 0x00, 0x1b, 0x00, 0x33, + 0x00, 0x5a, 0x40, 0x0f, 0x2b, 0x11, 0x11, 0x19, 0x31, 0x0b, 0x0b, 0x1f, + 0x03, 0x03, 0x25, 0x19, 0x19, 0x14, 0x06, 0xb8, 0x02, 0x02, 0xb2, 0x1c, + 0x1c, 0x28, 0xb8, 0x02, 0x02, 0xb4, 0x14, 0x22, 0x22, 0x1f, 0x25, 0xb8, + 0x01, 0x1a, 0xb7, 0x03, 0x00, 0x19, 0x41, 0x31, 0x2e, 0x2e, 0x2b, 0xb8, + 0x01, 0x1b, 0xb3, 0x0e, 0x0b, 0x11, 0x43, 0x00, 0x3f, 0x33, 0xcd, 0xed, + 0x32, 0x2f, 0x32, 0x3f, 0xcd, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x01, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x11, 0x33, 0x33, 0x2f, 0x33, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x30, 0x31, 0x01, 0x32, 0x16, 0x17, + 0x16, 0x12, 0x11, 0x14, 0x0e, 0x02, 0x07, 0x06, 0x06, 0x23, 0x22, 0x26, + 0x27, 0x26, 0x02, 0x11, 0x34, 0x3e, 0x02, 0x37, 0x36, 0x36, 0x01, 0x34, + 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x15, 0x14, + 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, 0x36, 0x02, 0x36, + 0x39, 0x59, 0x18, 0xb1, 0xb0, 0x33, 0x5b, 0x7e, 0x4c, 0x14, 0x61, 0x3e, + 0x3c, 0x5c, 0x16, 0xb2, 0xb1, 0x34, 0x5f, 0x83, 0x4e, 0x17, 0x5b, 0x01, + 0x42, 0x42, 0x48, 0x19, 0x40, 0x24, 0x26, 0x40, 0x1a, 0x4b, 0x42, 0x45, + 0x4e, 0x19, 0x3e, 0x23, 0x22, 0x3c, 0x19, 0x4c, 0x44, 0x05, 0x83, 0x39, + 0x2f, 0x32, 0xfe, 0xba, 0xfe, 0xf0, 0x8a, 0xd9, 0xa1, 0x6a, 0x1c, 0x36, + 0x44, 0x3d, 0x32, 0x32, 0x01, 0x47, 0x01, 0x10, 0x8d, 0xdb, 0xa2, 0x69, + 0x1b, 0x31, 0x3d, 0xfd, 0x04, 0xab, 0xd3, 0x2d, 0x16, 0x18, 0x19, 0x16, + 0x2d, 0xd2, 0xa1, 0xb0, 0xd7, 0x2a, 0x14, 0x18, 0x16, 0x13, 0x2c, 0xd3, + 0x00, 0x03, 0x00, 0x23, 0xff, 0xf0, 0x04, 0x43, 0x07, 0x9e, 0x00, 0x17, + 0x00, 0x5e, 0x00, 0x76, 0x00, 0xbd, 0xb7, 0x5e, 0x5e, 0x2a, 0x3b, 0x3b, + 0x2a, 0x2a, 0x4d, 0xb8, 0x01, 0xc8, 0xb3, 0x4c, 0x4b, 0x32, 0x20, 0xb8, + 0x01, 0xfc, 0x40, 0x16, 0x56, 0x56, 0x32, 0x62, 0x62, 0x67, 0x71, 0x71, + 0x67, 0x5f, 0x5f, 0x67, 0x67, 0x0b, 0x00, 0x00, 0x0b, 0x0a, 0x0a, 0x0b, + 0x0b, 0x43, 0xb8, 0x01, 0xfc, 0x40, 0x32, 0x32, 0x07, 0xa5, 0x40, 0x9f, + 0x10, 0x01, 0x10, 0x0b, 0x80, 0x17, 0xa5, 0x00, 0x00, 0x10, 0x0b, 0x80, + 0x0b, 0x90, 0x0b, 0x03, 0x20, 0x0b, 0x30, 0x0b, 0xa0, 0x0b, 0xb0, 0x0b, + 0x04, 0x0b, 0x0b, 0x76, 0x00, 0x6c, 0x01, 0x70, 0x6c, 0xe0, 0x6c, 0xf0, + 0x6c, 0x03, 0x6c, 0x6c, 0x5f, 0x76, 0x76, 0x5b, 0x3e, 0xb8, 0x01, 0x15, + 0xb6, 0x1b, 0x37, 0x42, 0x51, 0x4c, 0x4c, 0x48, 0xb8, 0x01, 0x0e, 0xb3, + 0x2a, 0x25, 0x2d, 0x44, 0x00, 0x3f, 0x33, 0x33, 0xed, 0x32, 0x2f, 0x32, + 0x3f, 0x33, 0xed, 0x32, 0x33, 0x2f, 0xcd, 0x33, 0x2f, 0x5d, 0x71, 0x11, + 0x33, 0x2f, 0x5d, 0x71, 0x33, 0x2f, 0xed, 0x1a, 0x10, 0xdd, 0x5d, 0x1a, + 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x12, + 0x39, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0x11, 0x33, + 0x2f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x39, 0x11, 0x33, 0x2f, 0x11, 0x33, + 0x2f, 0x30, 0x31, 0x01, 0x22, 0x2e, 0x04, 0x23, 0x22, 0x06, 0x15, 0x23, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x04, 0x33, 0x01, 0x36, 0x32, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x12, 0x36, 0x36, 0x33, + 0x32, 0x32, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, + 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x03, + 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x03, 0xeb, 0x4b, 0x73, 0x5c, + 0x48, 0x3f, 0x3d, 0x21, 0x35, 0x39, 0xac, 0x27, 0x46, 0x61, 0x3b, 0x2d, + 0x4c, 0x48, 0x4a, 0x58, 0x6b, 0x45, 0xfe, 0x88, 0x0a, 0x11, 0x0a, 0x77, + 0xa2, 0x64, 0x2b, 0x1e, 0x49, 0x7b, 0x5d, 0x21, 0x3f, 0x37, 0x2d, 0x0d, + 0x20, 0x66, 0x4b, 0x5d, 0x7b, 0x49, 0x1e, 0x2b, 0x64, 0xa2, 0x77, 0x0a, + 0x11, 0x0a, 0x08, 0x18, 0x08, 0x36, 0x42, 0x24, 0x0c, 0x04, 0x11, 0x20, + 0x1d, 0x28, 0x25, 0xe8, 0x24, 0x29, 0x1c, 0x21, 0x11, 0x04, 0x0c, 0x24, + 0x42, 0x36, 0x08, 0x18, 0x08, 0xa2, 0x30, 0x23, 0x1e, 0x25, 0x1e, 0x0c, + 0x1b, 0x2b, 0x1e, 0x1d, 0x32, 0x25, 0x15, 0x14, 0x35, 0x5b, 0x47, 0x06, + 0x87, 0x14, 0x1d, 0x22, 0x1d, 0x14, 0x39, 0x4c, 0x53, 0x6d, 0x3f, 0x19, + 0x14, 0x1e, 0x23, 0x1e, 0x14, 0xfe, 0x19, 0x01, 0x58, 0xac, 0xff, 0xa6, + 0xa5, 0xf9, 0xa7, 0x53, 0x0d, 0x1e, 0x30, 0x23, 0x45, 0x39, 0x53, 0xa5, + 0xf5, 0xa2, 0xa9, 0x01, 0x02, 0xae, 0x59, 0x01, 0xdd, 0x01, 0x01, 0x2c, + 0x69, 0xaf, 0x82, 0x7f, 0xaf, 0x6c, 0x30, 0x4b, 0x57, 0x08, 0x08, 0x57, + 0x4b, 0x30, 0x6c, 0xaf, 0x7f, 0x82, 0xaf, 0x69, 0x2c, 0x01, 0x01, 0x01, + 0x65, 0x01, 0x1e, 0x13, 0x12, 0x0d, 0x0e, 0x1c, 0x20, 0x0f, 0x21, 0x1c, + 0x12, 0x0e, 0x1f, 0x32, 0x23, 0x25, 0x43, 0x35, 0x20, 0x03, 0xff, 0xff, + 0x00, 0x00, 0xff, 0xf0, 0x04, 0x43, 0x06, 0x54, 0x02, 0x26, 0x0a, 0x10, + 0x00, 0x00, 0x00, 0x06, 0x0a, 0x60, 0x00, 0x00, 0x00, 0x01, 0x00, 0x52, + 0xfe, 0x6f, 0x03, 0xec, 0x05, 0x2d, 0x00, 0x22, 0x00, 0x36, 0xb2, 0x10, + 0x10, 0x20, 0xb8, 0x01, 0xf3, 0xb2, 0x00, 0x00, 0x18, 0xb8, 0x02, 0x1d, + 0xb4, 0x05, 0x22, 0x45, 0x10, 0x13, 0xb8, 0x01, 0x12, 0xb4, 0x0f, 0x0a, + 0x42, 0x20, 0x1d, 0xb8, 0x01, 0x16, 0xb1, 0x00, 0x44, 0x00, 0x3f, 0xed, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x30, 0x31, 0x05, 0x2e, 0x03, 0x35, 0x34, 0x12, 0x36, 0x36, + 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x11, 0x23, 0x02, 0x90, + 0x92, 0xd7, 0x8f, 0x46, 0x54, 0x9c, 0xdf, 0x8b, 0x2d, 0x4f, 0x4c, 0x4e, + 0x2a, 0x55, 0x9a, 0x3f, 0x5d, 0x84, 0x55, 0x28, 0x28, 0x58, 0x8c, 0x64, + 0x28, 0x5a, 0x32, 0xf4, 0x12, 0x01, 0x5a, 0xa8, 0xf0, 0x98, 0xa5, 0x01, + 0x01, 0xb1, 0x5d, 0x04, 0x0b, 0x12, 0x0e, 0xf4, 0x28, 0x22, 0x43, 0x79, + 0xa7, 0x64, 0x6b, 0xa8, 0x73, 0x3c, 0x0b, 0x0b, 0xfd, 0x8e, 0x00, 0x01, + 0x00, 0x3c, 0x00, 0x00, 0x04, 0x2a, 0x03, 0xf7, 0x00, 0x19, 0x00, 0x68, + 0xb2, 0x08, 0x0e, 0x10, 0xb8, 0x01, 0xa9, 0x40, 0x0b, 0x0f, 0x0f, 0x16, + 0x0b, 0x11, 0x07, 0x07, 0x06, 0x06, 0x00, 0x03, 0xb8, 0x01, 0xa8, 0x40, + 0x0a, 0x19, 0x16, 0x16, 0x0b, 0x0d, 0x09, 0x09, 0x0a, 0x0a, 0x0c, 0xb8, + 0x01, 0xaa, 0x40, 0x15, 0x0b, 0x11, 0x39, 0x08, 0x01, 0x2b, 0x08, 0x01, + 0x08, 0x0d, 0x0d, 0x0a, 0x0a, 0x06, 0x51, 0x0e, 0x0f, 0x0f, 0x0b, 0x00, + 0x4f, 0x00, 0x3f, 0x32, 0x32, 0x11, 0x33, 0x3f, 0x33, 0x11, 0x33, 0x11, + 0x33, 0x5d, 0x5d, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x11, 0x33, 0x12, 0x39, + 0x11, 0x33, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x11, 0x33, 0x12, 0x39, 0x11, + 0x12, 0x39, 0x2f, 0xed, 0x39, 0x39, 0x30, 0x31, 0x01, 0x16, 0x16, 0x15, + 0x14, 0x02, 0x07, 0x21, 0x03, 0x03, 0x21, 0x03, 0x33, 0x13, 0x13, 0x03, + 0x33, 0x13, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x27, 0x04, 0x25, 0x02, 0x03, + 0x42, 0x3f, 0xfe, 0xf8, 0x6d, 0x5f, 0xfe, 0xf8, 0x91, 0xd7, 0x63, 0x6c, + 0x2c, 0xd6, 0x8e, 0x0e, 0x16, 0x10, 0x09, 0x05, 0x05, 0x03, 0xf7, 0x2a, + 0x52, 0x2a, 0xdc, 0xfe, 0x58, 0xcd, 0x01, 0xbc, 0xfe, 0x44, 0x03, 0xf7, + 0xfd, 0x2e, 0x01, 0xd1, 0x01, 0x01, 0xfd, 0x22, 0x4b, 0x95, 0x8d, 0x80, + 0x35, 0x30, 0x5e, 0x2e, 0x00, 0x01, 0x00, 0x3f, 0xff, 0xe9, 0x04, 0x10, + 0x04, 0x0e, 0x00, 0x2d, 0x00, 0x5c, 0xb1, 0x1a, 0x17, 0xb8, 0x01, 0xd6, + 0x40, 0x0b, 0x2d, 0x06, 0x06, 0x03, 0x19, 0x24, 0x0f, 0x0f, 0x24, 0x00, + 0x04, 0xb8, 0x01, 0xab, 0x40, 0x20, 0x03, 0x24, 0x1f, 0xf7, 0x25, 0x28, + 0x52, 0x0f, 0x12, 0xf2, 0x0e, 0x0b, 0x50, 0x1a, 0x6f, 0x00, 0x7f, 0x00, + 0x02, 0x00, 0xf4, 0x17, 0x0f, 0x05, 0x01, 0x05, 0x05, 0x02, 0x03, 0x4f, + 0x02, 0x51, 0x00, 0x3f, 0x3f, 0x12, 0x39, 0x2f, 0x5d, 0x33, 0xed, 0x5d, + 0x32, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, + 0x32, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x31, 0x30, 0x01, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x3e, 0x03, 0x33, + 0x32, 0x16, 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x21, + 0x15, 0x21, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x15, 0x06, 0x06, + 0x23, 0x22, 0x2e, 0x02, 0x27, 0x01, 0x17, 0xd8, 0xd8, 0x7a, 0x0d, 0x4a, + 0x6c, 0x89, 0x4c, 0x3c, 0x7e, 0x2d, 0x33, 0x6a, 0x32, 0x2b, 0x4b, 0x38, + 0x20, 0x01, 0x6b, 0xfe, 0x93, 0x04, 0x1b, 0x33, 0x4e, 0x37, 0x14, 0x33, + 0x37, 0x35, 0x15, 0x3c, 0x77, 0x43, 0x52, 0x8e, 0x69, 0x3e, 0x02, 0x01, + 0xae, 0xfe, 0x52, 0x03, 0xf8, 0xfe, 0x6e, 0x7a, 0xa3, 0x62, 0x29, 0x11, + 0x0e, 0xc3, 0x14, 0x1b, 0x19, 0x39, 0x5e, 0x45, 0xb7, 0x4b, 0x66, 0x3f, + 0x1b, 0x07, 0x0d, 0x11, 0x0a, 0xcb, 0x0f, 0x10, 0x31, 0x6c, 0xad, 0x7b, + 0x00, 0x02, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x48, 0x03, 0xf8, 0x00, 0x0b, + 0x00, 0x0e, 0x00, 0x4b, 0xb4, 0x0c, 0x07, 0x0e, 0x08, 0x04, 0xb8, 0x01, + 0x8e, 0x40, 0x15, 0x05, 0x05, 0x0d, 0x02, 0x01, 0x0b, 0x0a, 0x0e, 0x0e, + 0x00, 0x08, 0x09, 0x01, 0x00, 0x03, 0x07, 0xf3, 0x0c, 0x0c, 0x00, 0x0e, + 0xb8, 0x01, 0x30, 0xb5, 0x0a, 0x4f, 0x09, 0x05, 0x00, 0x51, 0x00, 0x3f, + 0x32, 0x32, 0x3f, 0xed, 0x12, 0x39, 0x2f, 0xed, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x12, 0x39, 0x39, 0x33, 0x2f, + 0xed, 0x11, 0x12, 0x39, 0x39, 0x30, 0x31, 0x21, 0x23, 0x03, 0x23, 0x11, + 0x23, 0x11, 0x23, 0x03, 0x23, 0x01, 0x21, 0x03, 0x33, 0x27, 0x04, 0x48, + 0xee, 0x8b, 0x3e, 0xca, 0x3f, 0x88, 0xe2, 0x01, 0x93, 0x01, 0x04, 0xf0, + 0xcf, 0x65, 0x01, 0x76, 0xfe, 0x8a, 0x01, 0x76, 0xfe, 0x8a, 0x03, 0xf8, + 0xfe, 0x34, 0xfc, 0x00, 0x00, 0x02, 0x00, 0x32, 0x00, 0x00, 0x04, 0x59, + 0x03, 0xf8, 0x00, 0x13, 0x00, 0x16, 0x00, 0x65, 0x40, 0x0a, 0x11, 0x0a, + 0x12, 0x09, 0x12, 0x14, 0x07, 0x16, 0x08, 0x04, 0xb8, 0x01, 0x5f, 0x40, + 0x10, 0x05, 0x05, 0x15, 0x02, 0x01, 0x13, 0x16, 0x16, 0x09, 0x01, 0x18, + 0x08, 0x09, 0x09, 0x0b, 0x0f, 0xb8, 0x01, 0x7f, 0x40, 0x12, 0x0e, 0x07, + 0x03, 0x0b, 0xcb, 0x14, 0x10, 0x10, 0x00, 0x16, 0x12, 0x0e, 0x4f, 0x0d, + 0x09, 0x05, 0x00, 0x51, 0x00, 0x3f, 0x32, 0x32, 0x32, 0x3f, 0x33, 0xc4, + 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x32, 0x01, 0x2f, 0xed, 0x32, 0x32, + 0x2f, 0x33, 0x11, 0x33, 0x12, 0x39, 0x11, 0x33, 0x12, 0x39, 0x39, 0x33, + 0x2f, 0xed, 0x11, 0x12, 0x39, 0x39, 0x32, 0x11, 0x12, 0x39, 0x39, 0x30, + 0x31, 0x21, 0x23, 0x03, 0x23, 0x11, 0x23, 0x11, 0x23, 0x03, 0x23, 0x13, + 0x23, 0x11, 0x23, 0x11, 0x33, 0x11, 0x33, 0x13, 0x33, 0x03, 0x33, 0x27, + 0x04, 0x59, 0xc5, 0x6d, 0x1f, 0xa3, 0x1e, 0x69, 0xba, 0x6f, 0xa1, 0xc0, + 0xc0, 0xcf, 0x7b, 0xff, 0xcb, 0x8c, 0x46, 0x01, 0xb4, 0xfe, 0x4c, 0x01, + 0xb4, 0xfe, 0x4c, 0x01, 0xb4, 0xfe, 0x4c, 0x03, 0xf8, 0xfe, 0x68, 0x01, + 0x98, 0xfe, 0x68, 0xf8, 0x00, 0x02, 0x00, 0x12, 0x00, 0x00, 0x04, 0x54, + 0x03, 0xf8, 0x00, 0x0d, 0x00, 0x11, 0x00, 0x58, 0x40, 0x0a, 0x06, 0x13, + 0x02, 0x13, 0x11, 0x00, 0x00, 0x12, 0x04, 0x07, 0xb8, 0x01, 0xac, 0xb6, + 0x0d, 0x0a, 0x0a, 0x0f, 0x0e, 0x05, 0x0b, 0xb8, 0x02, 0x11, 0x40, 0x15, + 0x0c, 0x05, 0x10, 0x03, 0x01, 0x07, 0x0a, 0x0d, 0x04, 0x0a, 0x0e, 0x0e, + 0x01, 0x0c, 0x09, 0x05, 0x51, 0x11, 0xcb, 0x01, 0x4f, 0x00, 0x3f, 0xed, + 0x3f, 0x33, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x33, 0x33, 0x11, 0x33, 0x01, + 0x2f, 0x2f, 0x33, 0x2f, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x33, + 0xed, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x10, 0xc4, 0x30, 0x31, + 0x13, 0x35, 0x21, 0x15, 0x03, 0x01, 0x23, 0x03, 0x11, 0x23, 0x11, 0x03, + 0x23, 0x01, 0x17, 0x33, 0x13, 0x21, 0x53, 0x03, 0xbf, 0xf2, 0x01, 0x34, + 0xfa, 0xba, 0xd9, 0xbb, 0xfa, 0x01, 0x32, 0xec, 0x06, 0xaa, 0xfe, 0xa7, + 0x03, 0xee, 0x0a, 0x0b, 0xfe, 0x3e, 0xfd, 0xd5, 0x01, 0x8b, 0xfe, 0x75, + 0x01, 0x8b, 0xfe, 0x75, 0x02, 0x2d, 0x2a, 0x01, 0x48, 0x00, 0x00, 0x02, + 0x00, 0x34, 0x00, 0x00, 0x04, 0x4e, 0x03, 0xf8, 0x00, 0x14, 0x00, 0x18, + 0x00, 0x66, 0xb1, 0x04, 0x07, 0xb8, 0x01, 0x76, 0x40, 0x0c, 0x14, 0x0d, + 0x0a, 0x0a, 0x16, 0x15, 0x05, 0x0b, 0x0c, 0x0c, 0x13, 0x0f, 0xb8, 0x01, + 0x7f, 0x40, 0x22, 0x10, 0x17, 0x03, 0x03, 0x06, 0x05, 0x07, 0x0a, 0x0a, + 0x04, 0x44, 0x15, 0x01, 0x1b, 0x15, 0x01, 0x15, 0x0e, 0xcb, 0x0f, 0x13, + 0x01, 0x13, 0x13, 0x05, 0x18, 0x01, 0x11, 0x4f, 0x10, 0x0c, 0x09, 0x05, + 0x51, 0x00, 0x3f, 0x33, 0x33, 0x33, 0x3f, 0x33, 0xc4, 0x12, 0x39, 0x2f, + 0x5d, 0xed, 0x32, 0x5d, 0x5d, 0x39, 0x32, 0x11, 0x33, 0x01, 0x2f, 0x33, + 0x33, 0x2f, 0x33, 0x2f, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x12, 0x39, 0x2f, + 0x33, 0x2f, 0x33, 0x33, 0xed, 0x32, 0x30, 0x31, 0x01, 0x35, 0x21, 0x15, + 0x03, 0x13, 0x23, 0x03, 0x11, 0x23, 0x11, 0x03, 0x23, 0x13, 0x23, 0x11, + 0x23, 0x11, 0x33, 0x11, 0x33, 0x17, 0x33, 0x13, 0x23, 0x01, 0x64, 0x02, + 0xb9, 0x97, 0xc8, 0xc0, 0x71, 0xbb, 0x6e, 0xc3, 0x8d, 0xca, 0xc0, 0xc0, + 0xec, 0xde, 0x06, 0x71, 0xec, 0x03, 0xee, 0x0a, 0x0b, 0xfe, 0x50, 0xfd, + 0xc3, 0x01, 0x97, 0xfe, 0x69, 0x01, 0x97, 0xfe, 0x69, 0x01, 0xb4, 0xfe, + 0x4c, 0x03, 0xf8, 0xfe, 0x68, 0x69, 0x01, 0x54, 0x00, 0x01, 0x00, 0x44, + 0xfe, 0x69, 0x03, 0xfc, 0x04, 0xec, 0x00, 0x67, 0x00, 0x90, 0x40, 0x0e, + 0x2e, 0x1d, 0x20, 0x20, 0x27, 0x1f, 0x1e, 0x1e, 0x19, 0x19, 0x5f, 0x51, + 0x51, 0x3b, 0xb8, 0x02, 0x19, 0xb3, 0x00, 0x27, 0x27, 0x31, 0xb8, 0x02, + 0x13, 0xb5, 0x0f, 0x0f, 0x36, 0x00, 0x00, 0x44, 0xb8, 0x02, 0x09, 0x40, + 0x10, 0x5f, 0x06, 0x06, 0x5f, 0x36, 0x06, 0xcc, 0x0f, 0x07, 0x01, 0x07, + 0x07, 0x1d, 0x68, 0x4c, 0x51, 0xb8, 0x01, 0x38, 0x40, 0x18, 0x55, 0x52, + 0x57, 0x65, 0xcc, 0x40, 0x3f, 0x51, 0x28, 0x2a, 0x2a, 0x27, 0x24, 0x24, + 0x1e, 0x80, 0x19, 0x14, 0xd1, 0x2e, 0x20, 0x1a, 0x1d, 0x50, 0x00, 0x3f, + 0x33, 0x33, 0x33, 0xed, 0x32, 0x1a, 0xcd, 0x32, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0x3f, 0x1a, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x12, 0x39, 0x2f, + 0x5d, 0xed, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x33, 0x2f, 0x33, + 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x11, 0x33, 0x33, 0x30, 0x31, 0x01, 0x34, + 0x2e, 0x02, 0x23, 0x21, 0x35, 0x33, 0x32, 0x37, 0x36, 0x37, 0x36, 0x36, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x06, 0x07, 0x35, 0x36, + 0x36, 0x37, 0x27, 0x33, 0x17, 0x37, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, + 0x15, 0x26, 0x23, 0x22, 0x06, 0x07, 0x07, 0x16, 0x16, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x06, 0x15, 0x14, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x17, 0x15, 0x26, 0x26, 0x23, + 0x22, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x06, 0x02, + 0xf8, 0x1c, 0x40, 0x69, 0x4d, 0xfe, 0xf3, 0xff, 0x5d, 0x27, 0x28, 0x1b, + 0x19, 0x15, 0x14, 0x37, 0x5f, 0x4b, 0x22, 0x50, 0x2e, 0x5a, 0x59, 0x3a, + 0x7e, 0x42, 0xd1, 0xdf, 0x7c, 0x43, 0x1d, 0x47, 0x32, 0x16, 0x2a, 0x15, + 0x1a, 0x14, 0x1a, 0x1e, 0x0f, 0x3d, 0xa8, 0x9c, 0x17, 0x30, 0x49, 0x31, + 0x31, 0x59, 0x43, 0x27, 0x3d, 0x64, 0x7f, 0x86, 0x7f, 0x64, 0x3d, 0x48, + 0x4b, 0x21, 0x4f, 0x51, 0x4d, 0x1f, 0x21, 0x36, 0x30, 0x2e, 0x19, 0x41, + 0x8d, 0x3f, 0x19, 0x4e, 0x58, 0x5c, 0x27, 0x36, 0x6d, 0x57, 0x37, 0x3b, + 0x62, 0x7c, 0x82, 0x7c, 0x62, 0x3b, 0x01, 0x33, 0x1f, 0x30, 0x22, 0x12, + 0xae, 0x0a, 0x0a, 0x13, 0x12, 0x2f, 0x1b, 0x1a, 0x2a, 0x1d, 0x10, 0x05, + 0x05, 0x0a, 0x17, 0xbf, 0x0a, 0x0f, 0x05, 0xd0, 0x81, 0x4e, 0x23, 0x22, + 0x09, 0x05, 0x7e, 0x06, 0x0e, 0x11, 0x41, 0x13, 0x82, 0x6d, 0x23, 0x46, + 0x3d, 0x31, 0x0e, 0x07, 0x26, 0x3d, 0x53, 0x33, 0x50, 0x6c, 0x48, 0x2a, + 0x19, 0x0f, 0x13, 0x1e, 0x1b, 0x26, 0x1d, 0x04, 0x05, 0x04, 0x02, 0x05, + 0x07, 0x06, 0xda, 0x15, 0x10, 0x02, 0x01, 0x02, 0x17, 0x3b, 0x62, 0x4b, + 0x46, 0x5c, 0x3b, 0x20, 0x16, 0x14, 0x21, 0x36, 0xff, 0xff, 0x00, 0x33, + 0xfe, 0x73, 0x04, 0x3d, 0x05, 0x85, 0x02, 0x06, 0x01, 0xcb, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xf4, 0x00, 0x00, 0x04, 0x4e, 0x05, 0x85, 0x02, 0x26, + 0x02, 0x47, 0x00, 0x00, 0x00, 0x06, 0x03, 0xc0, 0x01, 0x00, 0x00, 0x03, + 0x00, 0x43, 0xfe, 0x62, 0x04, 0x53, 0x04, 0x0e, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x43, 0x00, 0x5e, 0xb4, 0x3c, 0x41, 0x41, 0x28, 0x3f, 0xb8, 0x01, + 0x77, 0xb5, 0x3e, 0x34, 0x34, 0x3e, 0x3e, 0x0a, 0xb8, 0x01, 0x77, 0xb3, + 0x14, 0x14, 0x00, 0x43, 0xb8, 0x01, 0x73, 0xb2, 0x28, 0x28, 0x1e, 0xb8, + 0x01, 0x77, 0x40, 0x16, 0x00, 0x43, 0x4f, 0x41, 0x3d, 0x3d, 0x3e, 0x4f, + 0x34, 0x37, 0xf9, 0x33, 0x2e, 0x56, 0x23, 0xf2, 0x0f, 0x52, 0x19, 0xf2, + 0x05, 0x50, 0x00, 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0x33, 0xed, 0x32, 0x3f, + 0x39, 0x11, 0x33, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x39, + 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x2f, 0x10, 0xed, 0x12, 0x39, 0x11, 0x33, + 0x30, 0x31, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x25, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x01, 0x03, + 0x0e, 0x03, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, + 0x3e, 0x02, 0x37, 0x37, 0x03, 0x33, 0x1b, 0x03, 0x43, 0x1b, 0x3e, 0x67, + 0x4d, 0x4f, 0x69, 0x40, 0x1b, 0x1b, 0x40, 0x69, 0x4f, 0x4d, 0x67, 0x3e, + 0x1b, 0x01, 0x61, 0x03, 0x0f, 0x21, 0x1e, 0x1e, 0x21, 0x0f, 0x03, 0x03, + 0x0f, 0x21, 0x1e, 0x1e, 0x21, 0x0f, 0x03, 0x02, 0xaf, 0x8e, 0x12, 0x2a, + 0x43, 0x68, 0x4f, 0x09, 0x1c, 0x1f, 0x1e, 0x0a, 0x11, 0x2b, 0x0d, 0x24, + 0x2c, 0x1b, 0x11, 0x09, 0x11, 0x90, 0xbe, 0x26, 0x13, 0x12, 0x24, 0x01, + 0xfb, 0x7f, 0xc6, 0x88, 0x46, 0x46, 0x88, 0xc6, 0x7f, 0x80, 0xc5, 0x87, + 0x46, 0x46, 0x87, 0xc5, 0x7f, 0x54, 0x82, 0x5a, 0x2f, 0x32, 0x5b, 0x82, + 0x50, 0x50, 0x81, 0x5a, 0x31, 0x2e, 0x59, 0x81, 0x02, 0x52, 0xfc, 0x32, + 0x78, 0xad, 0x6f, 0x34, 0x01, 0x02, 0x02, 0x01, 0xbe, 0x04, 0x03, 0x16, + 0x2b, 0x40, 0x2b, 0x51, 0x03, 0xdc, 0xfe, 0x58, 0xfe, 0xed, 0x01, 0x13, + 0x01, 0xa8, 0x00, 0x02, 0x00, 0x48, 0xff, 0x99, 0x04, 0x1e, 0x04, 0x56, + 0x00, 0x1b, 0x00, 0x34, 0x00, 0x5a, 0x40, 0x0f, 0x2c, 0x11, 0x11, 0x19, + 0x32, 0x0b, 0x0b, 0x1e, 0x03, 0x03, 0x24, 0x19, 0x19, 0x14, 0x06, 0xb8, + 0x02, 0x09, 0xb2, 0x1c, 0x1c, 0x29, 0xb8, 0x02, 0x09, 0xb4, 0x14, 0x21, + 0x21, 0x1e, 0x24, 0xb8, 0x01, 0x31, 0xb7, 0x03, 0x00, 0x19, 0x4f, 0x32, + 0x2f, 0x2f, 0x2c, 0xb8, 0x01, 0x34, 0xb3, 0x0e, 0x0b, 0x11, 0x51, 0x00, + 0x3f, 0x33, 0xcd, 0xed, 0x32, 0x2f, 0x32, 0x3f, 0xcd, 0x33, 0xed, 0x32, + 0x32, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, 0x33, + 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x30, 0x31, + 0x01, 0x32, 0x16, 0x17, 0x16, 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x06, + 0x06, 0x23, 0x22, 0x26, 0x27, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x37, + 0x36, 0x36, 0x01, 0x34, 0x27, 0x06, 0x06, 0x23, 0x22, 0x26, 0x27, 0x0e, + 0x03, 0x15, 0x14, 0x16, 0x17, 0x36, 0x36, 0x33, 0x32, 0x16, 0x17, 0x36, + 0x36, 0x02, 0x38, 0x32, 0x52, 0x17, 0x9f, 0xac, 0x2b, 0x53, 0x78, 0x4e, + 0x15, 0x58, 0x38, 0x36, 0x55, 0x17, 0x9d, 0xae, 0x2d, 0x57, 0x7d, 0x50, + 0x17, 0x54, 0x01, 0x28, 0x6d, 0x19, 0x45, 0x29, 0x29, 0x46, 0x19, 0x1f, + 0x2c, 0x1d, 0x0e, 0x3f, 0x39, 0x19, 0x43, 0x27, 0x26, 0x42, 0x18, 0x3e, + 0x39, 0x04, 0x56, 0x31, 0x28, 0x28, 0xfe, 0xd3, 0x60, 0xa5, 0x84, 0x5f, + 0x19, 0x2f, 0x3b, 0x36, 0x2b, 0x27, 0xfe, 0xd7, 0x62, 0xa7, 0x84, 0x5d, + 0x17, 0x2b, 0x34, 0xfd, 0xa8, 0xdb, 0x4c, 0x1c, 0x21, 0x20, 0x1d, 0x15, + 0x3e, 0x4c, 0x5a, 0x30, 0x72, 0x95, 0x26, 0x1a, 0x1e, 0x1d, 0x19, 0x2a, + 0x9e, 0x00, 0x00, 0x03, 0x00, 0x30, 0xff, 0xf0, 0x04, 0x36, 0x06, 0x88, + 0x00, 0x17, 0x00, 0x2f, 0x00, 0x72, 0x00, 0xad, 0xb7, 0x62, 0x62, 0x51, + 0x40, 0x40, 0x51, 0x51, 0x30, 0xb8, 0x01, 0xab, 0xb3, 0x72, 0x72, 0x5b, + 0x47, 0xb8, 0x01, 0xe3, 0x40, 0x0e, 0x38, 0x38, 0x5b, 0x2a, 0x2a, 0x20, + 0x18, 0x18, 0x20, 0x20, 0x0b, 0x17, 0x17, 0x0a, 0xb8, 0x01, 0x70, 0xb2, + 0x0b, 0x0b, 0x6a, 0xb8, 0x01, 0xe3, 0x40, 0x21, 0x5b, 0x07, 0xaf, 0x40, + 0x10, 0x0b, 0x80, 0x17, 0xae, 0x00, 0x00, 0x20, 0x0b, 0x01, 0x0b, 0x0b, + 0x2f, 0x10, 0x25, 0x20, 0x25, 0x70, 0x25, 0xd0, 0x25, 0xe0, 0x25, 0x05, + 0x25, 0x25, 0x18, 0x2f, 0x65, 0xb8, 0x01, 0x3a, 0xb5, 0x60, 0x4f, 0x72, + 0x72, 0x51, 0x6f, 0xb8, 0x01, 0x34, 0xb2, 0x54, 0x52, 0x33, 0xb8, 0x01, + 0x34, 0xb2, 0x4e, 0x52, 0x3d, 0xb8, 0x01, 0x3a, 0xb1, 0x42, 0x4f, 0x00, + 0x3f, 0xed, 0x3f, 0xed, 0x3f, 0xed, 0x32, 0x32, 0x2f, 0x3f, 0xed, 0xde, + 0xcd, 0x33, 0x2f, 0x5d, 0x11, 0x33, 0x2f, 0x5d, 0x33, 0x2f, 0xed, 0x1a, + 0x10, 0xdd, 0x1a, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, + 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, + 0x12, 0x39, 0x2f, 0xed, 0x39, 0x11, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x31, + 0x30, 0x01, 0x22, 0x2e, 0x04, 0x23, 0x22, 0x06, 0x15, 0x23, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x04, 0x33, 0x01, 0x36, 0x36, 0x35, 0x34, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x07, 0x13, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x22, 0x07, 0x35, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x04, 0x23, 0x22, 0x26, 0x27, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x04, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, 0x15, 0x26, 0x22, 0x23, 0x22, 0x0e, + 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x35, 0x03, 0xeb, 0x4b, + 0x73, 0x5c, 0x48, 0x3f, 0x3d, 0x21, 0x35, 0x39, 0xac, 0x27, 0x46, 0x61, + 0x3b, 0x2d, 0x4c, 0x48, 0x4a, 0x58, 0x6b, 0x45, 0xfd, 0xe6, 0x30, 0x23, + 0x1e, 0x25, 0x1e, 0x0c, 0x1b, 0x2b, 0x1e, 0x1d, 0x32, 0x25, 0x15, 0x14, + 0x35, 0x5b, 0x47, 0xcb, 0x29, 0x28, 0x1c, 0x22, 0x12, 0x06, 0x0c, 0x24, + 0x42, 0x36, 0x04, 0x0b, 0x08, 0x14, 0x77, 0x9e, 0x5f, 0x27, 0x0b, 0x1a, + 0x2d, 0x44, 0x5e, 0x3e, 0x4b, 0x66, 0x20, 0x20, 0x66, 0x4b, 0x3e, 0x5e, + 0x44, 0x2d, 0x1a, 0x0b, 0x27, 0x5f, 0x9e, 0x77, 0x14, 0x08, 0x0b, 0x04, + 0x36, 0x42, 0x24, 0x0c, 0x05, 0x12, 0x22, 0x1d, 0x28, 0x29, 0x05, 0x67, + 0x14, 0x1d, 0x22, 0x1d, 0x14, 0x39, 0x4c, 0x53, 0x70, 0x43, 0x1c, 0x14, + 0x1e, 0x23, 0x1e, 0x14, 0xfe, 0x7e, 0x01, 0x1e, 0x13, 0x12, 0x0e, 0x11, + 0x1d, 0x20, 0x0f, 0x21, 0x1c, 0x12, 0x0e, 0x1f, 0x32, 0x23, 0x25, 0x45, + 0x36, 0x22, 0x03, 0xfd, 0x31, 0x57, 0x4b, 0x31, 0x54, 0x71, 0x40, 0x58, + 0x70, 0x41, 0x18, 0x01, 0xdd, 0x3f, 0x80, 0xc3, 0x84, 0x42, 0x7f, 0x72, + 0x61, 0x46, 0x28, 0x39, 0x45, 0x45, 0x39, 0x28, 0x46, 0x61, 0x72, 0x7f, + 0x42, 0x84, 0xc3, 0x80, 0x3f, 0xdd, 0x01, 0x18, 0x41, 0x70, 0x58, 0x40, + 0x71, 0x54, 0x31, 0x4b, 0x57, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x2a, 0x05, 0x26, 0x02, 0x26, 0x0a, 0x1e, 0x00, 0x00, 0x01, 0x07, + 0x0a, 0x60, 0x00, 0x00, 0xfe, 0xd2, 0x00, 0x09, 0xb3, 0x01, 0x26, 0x4f, + 0x26, 0x00, 0x11, 0x3f, 0x35, 0x00, 0x00, 0x01, 0x00, 0x85, 0xfe, 0x6f, + 0x03, 0xbc, 0x04, 0x08, 0x00, 0x1f, 0x00, 0x36, 0xb2, 0x0e, 0x0e, 0x1d, + 0xb8, 0x02, 0x0b, 0xb2, 0x00, 0x00, 0x16, 0xb8, 0x02, 0x1b, 0xb4, 0x05, + 0x1f, 0x55, 0x0e, 0x11, 0xb8, 0x01, 0x31, 0xb4, 0x0d, 0x0a, 0x50, 0x1d, + 0x1b, 0xb8, 0x01, 0x31, 0xb1, 0x00, 0x52, 0x00, 0x3f, 0xed, 0x32, 0x3f, + 0x33, 0xed, 0x32, 0x3f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, + 0x30, 0x31, 0x05, 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, + 0x17, 0x15, 0x26, 0x26, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x37, 0x11, 0x23, 0x02, 0x5e, 0x72, 0xb0, 0x78, 0x3f, 0x4d, + 0x8c, 0xc5, 0x79, 0x63, 0x87, 0x36, 0x3f, 0x8f, 0x42, 0x44, 0x6c, 0x4a, + 0x27, 0x33, 0x57, 0x74, 0x41, 0x43, 0x45, 0xf4, 0x10, 0x07, 0x48, 0x81, + 0xb9, 0x77, 0x7a, 0xc6, 0x8c, 0x4c, 0x15, 0x10, 0xed, 0x1f, 0x22, 0x2e, + 0x52, 0x75, 0x46, 0x51, 0x77, 0x4d, 0x25, 0x12, 0xfd, 0x9b, 0x00, 0x03, + 0x00, 0x00, 0x02, 0xeb, 0x04, 0x2f, 0x05, 0xa0, 0x00, 0x03, 0x00, 0x07, + 0x00, 0x08, 0x00, 0x41, 0x40, 0x1e, 0x04, 0x06, 0x05, 0x07, 0x07, 0x05, + 0x05, 0x02, 0x00, 0x01, 0x03, 0x03, 0x01, 0x07, 0x05, 0x04, 0x06, 0x06, + 0x02, 0x04, 0x04, 0x03, 0x01, 0x02, 0x00, 0x00, 0x02, 0x02, 0x08, 0x53, + 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x39, 0x39, 0x32, 0x2f, 0x11, + 0x33, 0x2f, 0x12, 0x39, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, + 0x32, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, 0x31, 0x13, 0x27, 0x13, + 0x05, 0x13, 0x27, 0x13, 0x05, 0x25, 0xdd, 0x9c, 0xc8, 0x01, 0x1a, 0xc6, + 0x9c, 0xc8, 0x01, 0x1a, 0xfb, 0xd1, 0x02, 0xeb, 0x3b, 0x02, 0x7a, 0x59, + 0xfd, 0xa4, 0x3b, 0x02, 0x7a, 0x59, 0x3e, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x02, 0xac, 0x05, 0x85, 0x02, 0x06, 0x01, 0x3c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x08, 0x05, 0x85, 0x02, 0x06, + 0x01, 0x3e, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x87, + 0x05, 0x85, 0x02, 0x06, 0x01, 0x40, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xac, 0x05, 0x99, 0x02, 0x06, 0x01, 0x45, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x4a, 0x05, 0x62, 0x02, 0x06, + 0x01, 0x49, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x53, + 0x05, 0x85, 0x02, 0x06, 0x01, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x03, 0xf8, 0x02, 0xb8, 0x05, 0x8d, 0x00, 0x13, 0x00, 0x14, 0x00, 0x18, + 0xbc, 0x00, 0x05, 0x02, 0x24, 0x00, 0x0f, 0x00, 0x00, 0x01, 0x42, 0xb2, + 0x0a, 0x14, 0x4f, 0x00, 0x3f, 0xde, 0xed, 0x01, 0x2f, 0xed, 0x30, 0x31, + 0x01, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x01, 0x02, 0x33, 0x1c, 0x31, 0x24, 0x14, 0x14, + 0x24, 0x31, 0x1c, 0x1d, 0x30, 0x24, 0x14, 0x14, 0x24, 0x30, 0xfd, 0xea, + 0x05, 0x8d, 0x15, 0x24, 0x30, 0x1c, 0x1c, 0x30, 0x24, 0x15, 0x15, 0x24, + 0x30, 0x1c, 0x1c, 0x30, 0x24, 0x15, 0xfe, 0x6b, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x8d, 0x05, 0x96, 0x02, 0x06, 0x01, 0x47, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x23, 0x06, 0x10, 0x02, 0x06, + 0x01, 0x4d, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x9e, + 0x05, 0x85, 0x02, 0x06, 0x01, 0x50, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x85, 0x05, 0x85, 0x02, 0x06, 0x01, 0x42, 0x00, 0x00, + 0x00, 0x01, 0x01, 0x84, 0x02, 0x65, 0x02, 0xcd, 0x04, 0x2e, 0x00, 0x0d, + 0x00, 0x18, 0xb1, 0x0c, 0x06, 0xb8, 0x01, 0x80, 0xb5, 0x03, 0x0d, 0xad, + 0x0c, 0x0c, 0x04, 0x00, 0x2f, 0x33, 0x10, 0xed, 0x01, 0x2f, 0xed, 0xc4, + 0x30, 0x31, 0x01, 0x36, 0x36, 0x35, 0x35, 0x33, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x07, 0x35, 0x01, 0xd5, 0x21, 0x15, 0xc2, 0x1c, 0x35, 0x4c, 0x30, + 0x7c, 0x03, 0x12, 0x0b, 0x48, 0x45, 0x84, 0x4d, 0x58, 0x7d, 0x53, 0x2f, + 0x0a, 0x1b, 0x96, 0x00, 0xff, 0xff, 0x01, 0xac, 0xfe, 0xd9, 0x02, 0xcd, + 0x00, 0x00, 0x02, 0x06, 0x01, 0x54, 0x08, 0x00, 0xff, 0xff, 0x01, 0x6a, + 0xfe, 0x6a, 0x02, 0xdf, 0x00, 0x00, 0x02, 0x07, 0x01, 0x55, 0xfe, 0xe3, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x21, 0x05, 0x9a, + 0x02, 0x06, 0x01, 0xda, 0x00, 0x00, 0x00, 0x05, 0x00, 0x81, 0xfe, 0xde, + 0x04, 0x19, 0x06, 0x3e, 0x00, 0x1a, 0x00, 0x25, 0x00, 0x29, 0x00, 0x34, + 0x00, 0x38, 0x00, 0x74, 0xb2, 0x30, 0x24, 0x0b, 0xb8, 0x01, 0xff, 0x40, + 0x09, 0x2a, 0x2a, 0x1f, 0x36, 0x1b, 0x27, 0x27, 0x07, 0x1a, 0xb8, 0x01, + 0xc3, 0xb4, 0x04, 0x00, 0x00, 0x03, 0x15, 0xb8, 0x02, 0x06, 0xb3, 0x10, + 0x1f, 0x29, 0x38, 0xb8, 0x01, 0xf3, 0x40, 0x1c, 0x03, 0x2f, 0x38, 0xda, + 0x03, 0x10, 0x23, 0x29, 0xd5, 0x30, 0x35, 0x35, 0x07, 0x03, 0x05, 0x05, + 0x03, 0x41, 0x1b, 0x26, 0xde, 0x02, 0x19, 0x02, 0x00, 0x00, 0x02, 0x43, + 0x00, 0x3f, 0x33, 0x2f, 0x11, 0x33, 0x10, 0xed, 0x32, 0x3f, 0x33, 0x2f, + 0x11, 0x33, 0x39, 0x2f, 0x33, 0xed, 0x32, 0x39, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0xed, 0x32, 0x2f, 0x33, 0xed, 0x12, 0x39, 0x2f, 0x33, 0xed, 0x32, + 0x39, 0x2f, 0xc4, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x2f, 0x33, 0x30, 0x31, + 0x01, 0x11, 0x21, 0x11, 0x21, 0x11, 0x33, 0x11, 0x16, 0x17, 0x16, 0x15, + 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x07, 0x06, 0x07, 0x11, + 0x03, 0x3e, 0x02, 0x35, 0x34, 0x27, 0x26, 0x27, 0x11, 0x36, 0x05, 0x33, + 0x11, 0x23, 0x01, 0x34, 0x26, 0x27, 0x26, 0x27, 0x11, 0x36, 0x37, 0x36, + 0x36, 0x05, 0x33, 0x11, 0x23, 0x01, 0xaf, 0xfe, 0xd2, 0x01, 0x2e, 0xe1, + 0x92, 0x53, 0x70, 0x17, 0x30, 0x48, 0x31, 0x31, 0x59, 0x43, 0x27, 0x86, + 0x62, 0xa1, 0x08, 0x2d, 0x3c, 0x1f, 0x40, 0x1f, 0x31, 0x04, 0xfe, 0xf1, + 0x43, 0x43, 0x01, 0x70, 0x18, 0x1b, 0x14, 0x1e, 0x1e, 0x15, 0x1b, 0x17, + 0xfe, 0x90, 0x43, 0x43, 0xfe, 0xde, 0x01, 0x22, 0x05, 0x1b, 0x01, 0x23, + 0xfe, 0xd8, 0x0f, 0x3a, 0x4e, 0x9e, 0x31, 0x5d, 0x4e, 0x3c, 0x11, 0x08, + 0x2f, 0x4b, 0x66, 0x3f, 0xc8, 0x65, 0x49, 0x14, 0xfe, 0xd7, 0x01, 0xfa, + 0x0f, 0x35, 0x48, 0x29, 0x55, 0x30, 0x18, 0x0c, 0xfe, 0x9f, 0x01, 0x0d, + 0x01, 0x79, 0x01, 0x74, 0x25, 0x3c, 0x15, 0x10, 0x0b, 0xfe, 0xcb, 0x0e, + 0x14, 0x1a, 0x42, 0x92, 0x01, 0x5a, 0x00, 0x01, 0xff, 0xdc, 0xfe, 0x68, + 0x01, 0xaf, 0x06, 0xd6, 0x00, 0x0a, 0x00, 0x2f, 0x40, 0x15, 0x09, 0x02, + 0x02, 0x03, 0x05, 0x06, 0x08, 0x03, 0x00, 0x09, 0x0a, 0x02, 0x01, 0x01, + 0x04, 0x07, 0x07, 0x0a, 0x05, 0x45, 0x0a, 0x00, 0x2f, 0x3f, 0x11, 0x33, + 0x2f, 0xcd, 0x32, 0x2f, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, + 0xcd, 0x12, 0x39, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x07, 0x27, 0x37, 0x21, + 0x11, 0x23, 0x11, 0x21, 0x27, 0x37, 0x01, 0xaf, 0xd9, 0x31, 0x89, 0xfe, + 0xf6, 0x48, 0x01, 0x52, 0x89, 0x31, 0x05, 0xff, 0xd6, 0x31, 0x82, 0xf8, + 0x8c, 0x07, 0xbb, 0x82, 0x31, 0x00, 0x00, 0x01, 0xfe, 0x51, 0xfe, 0x68, + 0x00, 0x24, 0x06, 0xd6, 0x00, 0x0a, 0x00, 0x33, 0x40, 0x17, 0x07, 0x05, + 0x05, 0x08, 0x04, 0x04, 0x06, 0x09, 0x03, 0x03, 0x06, 0x00, 0x01, 0x04, + 0x05, 0x05, 0x03, 0x09, 0x09, 0x08, 0x07, 0x00, 0x45, 0x00, 0x3f, 0x2f, + 0x33, 0x33, 0x2f, 0xcd, 0x32, 0x2f, 0x33, 0x01, 0x2f, 0xcd, 0x2f, 0x33, + 0x11, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x33, 0x11, 0x33, 0x30, 0x31, 0x13, + 0x23, 0x11, 0x21, 0x17, 0x07, 0x27, 0x37, 0x17, 0x07, 0x21, 0x24, 0x48, + 0xfe, 0xf6, 0x89, 0x31, 0xd9, 0xd9, 0x31, 0x89, 0x01, 0x52, 0xfe, 0x68, + 0x07, 0x74, 0x82, 0x31, 0xd6, 0xd7, 0x31, 0x82, 0x00, 0x04, 0x01, 0x6d, + 0xfd, 0xf2, 0x02, 0xf2, 0x05, 0xf2, 0x00, 0x13, 0x00, 0x27, 0x00, 0x3b, + 0x00, 0x4f, 0x00, 0x43, 0xb3, 0x2d, 0x19, 0x05, 0x41, 0xb8, 0x02, 0x4b, + 0xb5, 0x23, 0x37, 0x37, 0x0f, 0x4b, 0x0a, 0xb8, 0x01, 0x50, 0xb2, 0x00, + 0x00, 0x46, 0xb8, 0x01, 0x50, 0xb3, 0x3c, 0x3c, 0x32, 0x14, 0xb8, 0x01, + 0x50, 0xb2, 0x1e, 0x1e, 0x28, 0xb9, 0x01, 0x50, 0x00, 0x32, 0x00, 0x2f, + 0xed, 0x32, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x01, + 0x2f, 0x33, 0x33, 0x11, 0x33, 0xed, 0x32, 0x32, 0x32, 0x30, 0x31, 0x05, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x13, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x13, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x13, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x02, 0x2d, 0x2a, 0x48, 0x35, 0x1e, 0x1e, 0x35, 0x48, + 0x2a, 0x28, 0x46, 0x34, 0x1e, 0x1e, 0x34, 0x46, 0x28, 0x2a, 0x48, 0x35, + 0x1e, 0x1e, 0x35, 0x48, 0x2a, 0x28, 0x46, 0x34, 0x1e, 0x1e, 0x34, 0x46, + 0x28, 0x2a, 0x48, 0x35, 0x1e, 0x1e, 0x35, 0x48, 0x2a, 0x28, 0x46, 0x34, + 0x1e, 0x1e, 0x34, 0x46, 0x28, 0x2a, 0x48, 0x35, 0x1e, 0x1e, 0x35, 0x48, + 0x2a, 0x28, 0x46, 0x34, 0x1e, 0x1e, 0x34, 0x46, 0x86, 0x1f, 0x35, 0x48, + 0x29, 0x28, 0x47, 0x35, 0x1f, 0x1f, 0x35, 0x47, 0x28, 0x29, 0x48, 0x35, + 0x1f, 0x06, 0x78, 0x1f, 0x35, 0x48, 0x29, 0x28, 0x47, 0x35, 0x1f, 0x1f, + 0x35, 0x47, 0x28, 0x29, 0x48, 0x35, 0x1f, 0xfd, 0xd8, 0x1f, 0x35, 0x48, + 0x29, 0x28, 0x47, 0x35, 0x1f, 0x1f, 0x35, 0x47, 0x28, 0x29, 0x48, 0x35, + 0x1f, 0xfd, 0xd8, 0x1f, 0x35, 0x48, 0x29, 0x28, 0x47, 0x35, 0x1f, 0x1f, + 0x35, 0x47, 0x28, 0x29, 0x48, 0x35, 0x1f, 0x00, 0x00, 0x02, 0x01, 0x2e, + 0x02, 0xf3, 0x03, 0x46, 0x06, 0x74, 0x00, 0x09, 0x00, 0x1d, 0x00, 0x3d, + 0xb9, 0x00, 0x0f, 0x01, 0xb8, 0xb5, 0x19, 0x19, 0x09, 0x05, 0x05, 0x04, + 0xb8, 0x01, 0x63, 0xb7, 0x09, 0x08, 0x08, 0x01, 0x04, 0x08, 0x95, 0x07, + 0xb8, 0x02, 0x7f, 0xb6, 0x0a, 0xc0, 0x14, 0x14, 0x00, 0x95, 0x03, 0xb8, + 0x02, 0x7b, 0x00, 0x3f, 0xed, 0xce, 0x2f, 0xed, 0x3f, 0xed, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x2f, 0xed, 0x32, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x30, + 0x31, 0x01, 0x23, 0x35, 0x21, 0x11, 0x33, 0x15, 0x21, 0x35, 0x33, 0x13, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x01, 0xf2, 0xb0, 0x01, 0x53, 0xb1, 0xfd, 0xe8, 0xc4, + 0x31, 0x17, 0x28, 0x1e, 0x11, 0x11, 0x1e, 0x28, 0x17, 0x17, 0x28, 0x1e, + 0x11, 0x11, 0x1e, 0x28, 0x04, 0xdf, 0x89, 0xfe, 0x15, 0x8a, 0x8a, 0x02, + 0xf7, 0x11, 0x1d, 0x27, 0x16, 0x16, 0x27, 0x1c, 0x11, 0x11, 0x1c, 0x27, + 0x16, 0x16, 0x27, 0x1d, 0x11, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x04, 0x66, 0x05, 0x85, 0x02, 0x06, 0x02, 0xa5, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x5b, 0x00, 0x00, 0x04, 0x0b, 0x03, 0xb0, 0x00, 0x03, 0x00, 0x07, + 0x00, 0x17, 0x40, 0x09, 0x05, 0x03, 0x02, 0x06, 0x05, 0x03, 0x43, 0x04, + 0x00, 0x00, 0x2f, 0xcd, 0x3f, 0xcd, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x30, + 0x31, 0x13, 0x21, 0x11, 0x21, 0x13, 0x11, 0x21, 0x11, 0x5b, 0x03, 0xb0, + 0xfc, 0x50, 0x4b, 0x03, 0x19, 0x03, 0xb0, 0xfc, 0x50, 0x03, 0x64, 0xfc, + 0xe8, 0x03, 0x18, 0x00, 0x00, 0x02, 0x01, 0x4b, 0x01, 0xbc, 0x03, 0x1a, + 0x03, 0x8c, 0x00, 0x03, 0x00, 0x07, 0x00, 0x1e, 0x40, 0x0e, 0x02, 0x06, + 0x05, 0x03, 0x05, 0x30, 0x03, 0x01, 0x03, 0x04, 0x1f, 0x00, 0x01, 0x00, + 0x00, 0x2f, 0x5d, 0xcd, 0x2f, 0x5d, 0xcd, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, + 0x30, 0x31, 0x01, 0x21, 0x11, 0x21, 0x13, 0x11, 0x21, 0x11, 0x01, 0x4b, + 0x01, 0xcf, 0xfe, 0x31, 0x4c, 0x01, 0x37, 0x03, 0x8c, 0xfe, 0x30, 0x01, + 0x84, 0xfe, 0xc8, 0x01, 0x38, 0x00, 0x00, 0x01, 0x00, 0x7a, 0x00, 0x89, + 0x03, 0xeb, 0x03, 0xfa, 0x00, 0x0b, 0x00, 0x0d, 0xb3, 0x06, 0x00, 0x03, + 0x09, 0x00, 0x2f, 0x2f, 0x01, 0x2f, 0x2f, 0x30, 0x31, 0x01, 0x14, 0x00, + 0x23, 0x22, 0x00, 0x35, 0x34, 0x24, 0x33, 0x32, 0x00, 0x03, 0xeb, 0xfe, + 0xff, 0xb6, 0xb8, 0xfe, 0xfe, 0x01, 0x06, 0xb2, 0xb7, 0x01, 0x02, 0x02, + 0x42, 0xb8, 0xfe, 0xff, 0x01, 0x01, 0xb8, 0xb9, 0xff, 0xfe, 0xfc, 0x00, + 0x00, 0x02, 0x01, 0x38, 0x01, 0xaa, 0x03, 0x2e, 0x03, 0xa0, 0x00, 0x0b, + 0x00, 0x17, 0x00, 0x1a, 0x40, 0x0b, 0x00, 0x12, 0x0c, 0x06, 0x15, 0x09, + 0x0f, 0x30, 0x03, 0x01, 0x03, 0x00, 0x2f, 0x5d, 0xcd, 0x2f, 0xcd, 0x01, + 0x2f, 0xcd, 0x2f, 0xcd, 0x30, 0x31, 0x01, 0x14, 0x06, 0x23, 0x22, 0x26, + 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, 0x05, 0x14, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x03, 0x2e, 0x92, 0x69, 0x67, 0x94, + 0x92, 0x69, 0x67, 0x94, 0xfe, 0x56, 0x67, 0x49, 0x4a, 0x64, 0x66, 0x4a, + 0x48, 0x66, 0x02, 0xa6, 0x6a, 0x92, 0x94, 0x68, 0x66, 0x94, 0x94, 0x66, + 0x4a, 0x66, 0x66, 0x4a, 0x49, 0x65, 0x67, 0x00, 0x00, 0x01, 0x00, 0x03, + 0x03, 0xf9, 0x04, 0x68, 0x05, 0x63, 0x00, 0x08, 0x00, 0x19, 0x40, 0x0a, + 0x02, 0x03, 0x00, 0x08, 0x08, 0x00, 0x00, 0x03, 0x02, 0x4f, 0x00, 0x3f, + 0x33, 0x33, 0x2f, 0x32, 0x2f, 0x01, 0x2f, 0x2f, 0x33, 0x30, 0x31, 0x01, + 0x20, 0x05, 0x27, 0x36, 0x2c, 0x02, 0x33, 0x04, 0x68, 0xfd, 0xa9, 0xfe, + 0x27, 0x35, 0x8a, 0x01, 0x1a, 0x01, 0x1b, 0x01, 0x18, 0x8e, 0x04, 0xba, + 0xc1, 0x5b, 0x4b, 0x68, 0x40, 0x1c, 0x00, 0x01, 0xff, 0xfe, 0x03, 0xf9, + 0x04, 0x63, 0x05, 0x63, 0x00, 0x08, 0x00, 0x19, 0x40, 0x0a, 0x08, 0x06, + 0x05, 0x00, 0x00, 0x08, 0x08, 0x05, 0x06, 0x4f, 0x00, 0x3f, 0x33, 0x33, + 0x2f, 0x33, 0x2f, 0x01, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x03, 0x32, 0x0c, + 0x02, 0x17, 0x07, 0x24, 0x21, 0x02, 0x8e, 0x01, 0x18, 0x01, 0x1b, 0x01, + 0x1a, 0x8a, 0x35, 0xfe, 0x27, 0xfd, 0xa9, 0x05, 0x63, 0x1c, 0x40, 0x68, + 0x4b, 0x5b, 0xc1, 0x00, 0x00, 0x01, 0x00, 0x40, 0x04, 0x1d, 0x04, 0x68, + 0x05, 0x57, 0x00, 0x13, 0x00, 0x27, 0x40, 0x11, 0x13, 0x08, 0x08, 0x09, + 0x13, 0x13, 0x00, 0x00, 0x05, 0x0e, 0x0e, 0x05, 0x05, 0x08, 0x08, 0x14, + 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0x32, 0x2f, 0x01, 0x2f, 0x33, 0x2f, 0x2f, 0x30, 0x31, 0x01, 0x2e, 0x03, + 0x23, 0x22, 0x06, 0x15, 0x23, 0x26, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x17, 0x04, 0x68, 0x19, 0x8d, 0x98, 0xb6, 0x44, 0xa9, 0xa5, 0xa0, 0x02, + 0x40, 0x86, 0xc9, 0x85, 0x57, 0xad, 0x8e, 0x6f, 0x13, 0x04, 0x62, 0x09, + 0x23, 0x1a, 0x11, 0x4c, 0x50, 0x3c, 0x77, 0x5a, 0x2d, 0x10, 0x17, 0x1b, + 0x04, 0x00, 0x00, 0x01, 0xff, 0xfe, 0x04, 0x1d, 0x04, 0x26, 0x05, 0x57, + 0x00, 0x13, 0x00, 0x27, 0x40, 0x11, 0x08, 0x08, 0x09, 0x00, 0x13, 0x13, + 0x00, 0x00, 0x05, 0x08, 0x08, 0x05, 0x05, 0x0e, 0x0e, 0x14, 0x4f, 0x00, + 0x3f, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x32, 0x2f, + 0x01, 0x2f, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x03, 0x1e, 0x03, 0x33, 0x32, + 0x36, 0x35, 0x33, 0x16, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x27, 0x02, + 0x19, 0x8d, 0x98, 0xb6, 0x44, 0xa9, 0xa5, 0xa0, 0x02, 0x40, 0x86, 0xc9, + 0x85, 0x57, 0xad, 0x8e, 0x6f, 0x13, 0x05, 0x12, 0x09, 0x23, 0x1a, 0x11, + 0x4c, 0x50, 0x3c, 0x77, 0x5a, 0x2d, 0x10, 0x17, 0x1b, 0x04, 0x00, 0x01, + 0x01, 0x57, 0xfe, 0x5e, 0x02, 0xea, 0x00, 0xde, 0x00, 0x15, 0x00, 0x2a, + 0xb9, 0x00, 0x02, 0x01, 0x8e, 0xb6, 0x13, 0x13, 0x15, 0x0b, 0x0b, 0x15, + 0x00, 0xb8, 0x01, 0x3c, 0xb7, 0x15, 0x51, 0x0b, 0x0e, 0xf2, 0x0a, 0x07, + 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x21, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x35, 0x23, 0x01, 0x80, 0x01, 0x6a, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, + 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xc9, 0xde, 0xfe, 0xbd, + 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, + 0x30, 0x54, 0x00, 0x01, 0x01, 0x02, 0xfe, 0x5e, 0x03, 0x07, 0x00, 0x87, + 0x00, 0x15, 0x00, 0x26, 0xb2, 0x09, 0x09, 0x00, 0xb8, 0x01, 0xa8, 0x40, + 0x0d, 0x13, 0x13, 0x14, 0x15, 0x9a, 0x14, 0x51, 0x09, 0x06, 0xf7, 0x0a, + 0x0d, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, + 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x25, 0x15, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x35, + 0x23, 0x37, 0x02, 0x3d, 0x0d, 0x1a, 0x26, 0x19, 0x1a, 0x34, 0x16, 0x27, + 0x51, 0x21, 0x3c, 0x60, 0x43, 0x25, 0x68, 0x2c, 0x87, 0xd5, 0x30, 0x3b, + 0x22, 0x0c, 0x08, 0x05, 0xbd, 0x05, 0x06, 0x1a, 0x48, 0x7e, 0x63, 0x5f, + 0x87, 0x00, 0x00, 0x01, 0x00, 0xd6, 0xfe, 0x5e, 0x02, 0xea, 0x00, 0xd9, + 0x00, 0x15, 0x00, 0x2a, 0xb9, 0x00, 0x02, 0x01, 0x8e, 0xb6, 0x14, 0x14, + 0x15, 0x0b, 0x0b, 0x15, 0x00, 0xb8, 0x01, 0x3c, 0xb7, 0x15, 0x51, 0x0b, + 0x0e, 0xf2, 0x0a, 0x07, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x37, 0x21, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x35, 0x21, 0xd6, 0x02, 0x14, 0x25, 0x43, 0x60, + 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xfe, + 0xb5, 0xd9, 0xfe, 0xc2, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, + 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x4f, 0x00, 0x01, 0x01, 0x3a, 0xfe, 0x5e, + 0x02, 0xea, 0x00, 0xdf, 0x00, 0x15, 0x00, 0x2a, 0xb9, 0x00, 0x01, 0x01, + 0x8e, 0xb6, 0x14, 0x14, 0x15, 0x0b, 0x0b, 0x15, 0x00, 0xb8, 0x01, 0x3d, + 0xb7, 0x15, 0x51, 0x0b, 0x0e, 0xf2, 0x0a, 0x07, 0x56, 0x00, 0x3f, 0x33, + 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, + 0x30, 0x31, 0x25, 0x21, 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x35, 0x23, 0x01, 0x3a, + 0x01, 0xb0, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, + 0x16, 0x23, 0x1a, 0x0e, 0xe7, 0xdf, 0xfe, 0xbc, 0x63, 0x7c, 0x45, 0x19, + 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x00, 0x01, + 0x01, 0x1c, 0xfe, 0x5e, 0x02, 0xea, 0x00, 0xda, 0x00, 0x15, 0x00, 0x2a, + 0xb9, 0x00, 0x01, 0x01, 0x8e, 0xb6, 0x14, 0x14, 0x15, 0x0b, 0x0b, 0x15, + 0x00, 0xb8, 0x01, 0x3d, 0xb7, 0x15, 0x51, 0x0b, 0x0e, 0xf2, 0x0a, 0x07, + 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, 0x01, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x25, 0x21, 0x11, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x35, 0x21, 0x01, 0x1c, 0x01, 0xce, 0x25, 0x43, 0x60, 0x3c, 0x21, 0x47, + 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, 0xfe, 0xfb, 0xda, 0xfe, + 0xc1, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, 0x08, 0x0c, 0x22, + 0x3b, 0x30, 0x4f, 0x00, 0x00, 0x01, 0x01, 0x57, 0xfe, 0x5e, 0x02, 0xea, + 0x00, 0xb7, 0x00, 0x15, 0x00, 0x28, 0xb9, 0x00, 0x01, 0x01, 0x8e, 0x40, + 0x10, 0x14, 0x14, 0x15, 0x0b, 0x0b, 0x15, 0x00, 0xf3, 0x15, 0x51, 0x0b, + 0x0e, 0xf2, 0x0a, 0x07, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x3f, 0xed, + 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x25, 0x21, + 0x11, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x35, 0x23, 0x01, 0x9e, 0x01, 0x4c, 0x25, 0x43, + 0x60, 0x3c, 0x21, 0x47, 0x27, 0x16, 0x39, 0x1a, 0x16, 0x23, 0x1a, 0x0e, + 0x83, 0xb7, 0xfe, 0xe4, 0x63, 0x7c, 0x45, 0x19, 0x04, 0x04, 0xba, 0x05, + 0x08, 0x0c, 0x22, 0x3b, 0x30, 0x54, 0x00, 0x01, 0x01, 0xa0, 0xfe, 0x5c, + 0x03, 0x3d, 0x00, 0x87, 0x00, 0x13, 0x00, 0x22, 0xb2, 0x08, 0x08, 0x13, + 0xb8, 0x01, 0xa8, 0x40, 0x0a, 0x12, 0x12, 0x12, 0x14, 0x08, 0x05, 0xf7, + 0x09, 0x0c, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x33, 0x2f, 0x01, + 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x05, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x35, 0x33, + 0x02, 0x73, 0x0d, 0x1a, 0x26, 0x19, 0x1a, 0x34, 0x16, 0x27, 0x51, 0x21, + 0x3c, 0x60, 0x43, 0x25, 0xd3, 0x50, 0x30, 0x3b, 0x22, 0x0c, 0x08, 0x05, + 0xbd, 0x05, 0x06, 0x1a, 0x48, 0x7e, 0x63, 0xe8, 0x00, 0x01, 0x01, 0xa0, + 0xfe, 0x5c, 0x03, 0x3d, 0x00, 0x5f, 0x00, 0x13, 0x00, 0x22, 0xb2, 0x08, + 0x08, 0x13, 0xb8, 0x01, 0xa8, 0x40, 0x0a, 0x12, 0x12, 0x12, 0x14, 0x08, + 0x05, 0xf7, 0x09, 0x0c, 0x56, 0x00, 0x3f, 0x33, 0xed, 0x32, 0x11, 0x33, + 0x2f, 0x01, 0x2f, 0xed, 0x32, 0x2f, 0x30, 0x31, 0x05, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x15, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x35, 0x33, 0x02, 0x73, 0x0d, 0x1a, 0x26, 0x19, 0x1a, 0x34, 0x16, 0x27, + 0x51, 0x21, 0x3c, 0x60, 0x43, 0x25, 0xd3, 0x50, 0x30, 0x3b, 0x22, 0x0c, + 0x08, 0x05, 0xbd, 0x05, 0x06, 0x1a, 0x48, 0x7e, 0x63, 0xc0, 0x00, 0x03, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, 0x06, 0x96, 0x00, 0x17, 0x00, 0x1b, + 0x00, 0x1c, 0x00, 0x53, 0x40, 0x2c, 0x1a, 0x18, 0x19, 0x1b, 0x1b, 0x19, + 0x19, 0x0c, 0x17, 0x00, 0x00, 0x0b, 0x0c, 0x0c, 0x0b, 0x0b, 0x03, 0x3f, + 0x1a, 0x4f, 0x1a, 0x5f, 0x1a, 0x03, 0x1a, 0x1a, 0x19, 0x19, 0x00, 0x17, + 0x17, 0x0f, 0xce, 0x0f, 0x08, 0x01, 0x08, 0x08, 0x14, 0xce, 0x03, 0x03, + 0x1c, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x5d, 0xed, 0x32, + 0x11, 0x33, 0x32, 0x2f, 0x33, 0x2f, 0x5d, 0x11, 0x33, 0x11, 0x33, 0x01, + 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x12, 0x39, + 0x39, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, + 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x37, 0x27, 0x23, 0x37, 0x21, 0x01, 0x03, 0xac, 0x2a, 0x70, 0x51, 0x3b, + 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, + 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xb0, 0xcc, 0xa7, 0x01, 0x36, + 0xfc, 0x60, 0x05, 0x19, 0x51, 0x4d, 0x22, 0x2a, 0x22, 0x2e, 0x2c, 0x6d, + 0x50, 0x4d, 0x23, 0x28, 0x23, 0x2f, 0x2b, 0x40, 0xd1, 0xfd, 0x62, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xac, 0x07, 0x9e, 0x00, 0x03, + 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x67, 0x40, 0x3c, 0x02, 0x00, 0x01, 0x03, + 0x03, 0x01, 0x01, 0x10, 0x1b, 0x04, 0x04, 0x0f, 0x10, 0x10, 0x0f, 0x0f, + 0x07, 0x04, 0x1b, 0x1b, 0xa0, 0x02, 0xb0, 0x02, 0xc0, 0x02, 0x03, 0x84, + 0x02, 0x01, 0x60, 0x02, 0x01, 0x02, 0x02, 0xb0, 0x01, 0x01, 0x01, 0x01, + 0x13, 0xc2, 0x0f, 0x0c, 0x01, 0x0c, 0x0c, 0x18, 0xc2, 0x40, 0x07, 0x50, + 0x07, 0x60, 0x07, 0x03, 0x07, 0x07, 0x1c, 0x41, 0x00, 0x3f, 0x33, 0x2f, + 0x71, 0xed, 0x33, 0x2f, 0x5d, 0xed, 0x32, 0x2f, 0x5d, 0x33, 0x2f, 0x5d, + 0x5d, 0x71, 0x32, 0x11, 0x33, 0x11, 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, + 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, + 0x31, 0x01, 0x23, 0x37, 0x21, 0x13, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, + 0x32, 0x36, 0x37, 0x01, 0x02, 0x8f, 0xcc, 0xa7, 0x01, 0x36, 0x0c, 0x2a, + 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, + 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfc, 0xc1, + 0x06, 0xcd, 0xd1, 0xfe, 0x86, 0x50, 0x4e, 0x20, 0x27, 0x20, 0x2f, 0x2b, + 0x68, 0x51, 0x4d, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0xfe, 0x8f, 0x00, 0x03, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0xa0, 0x06, 0x96, 0x00, 0x03, 0x00, 0x07, + 0x00, 0x08, 0x00, 0x38, 0x40, 0x1d, 0x00, 0x02, 0x01, 0x03, 0x03, 0x01, + 0x01, 0x04, 0x07, 0x07, 0x04, 0x02, 0x40, 0x09, 0x0e, 0x48, 0x02, 0x02, + 0x20, 0x01, 0x01, 0x01, 0x01, 0x05, 0xcc, 0x04, 0x04, 0x08, 0x4f, 0x00, + 0x3f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x5d, 0x33, 0x2f, 0x2b, 0x01, 0x2f, + 0x33, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, 0x31, + 0x01, 0x23, 0x37, 0x21, 0x01, 0x35, 0x21, 0x15, 0x05, 0x02, 0x8f, 0xcc, + 0xa7, 0x01, 0x36, 0xfd, 0x7c, 0x02, 0x2e, 0xfc, 0xb6, 0x05, 0xc5, 0xd1, + 0xfe, 0x1e, 0xae, 0xae, 0xbc, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, + 0x03, 0x4a, 0x06, 0x96, 0x00, 0x03, 0x00, 0x07, 0x00, 0x08, 0x00, 0x38, + 0x40, 0x1d, 0x01, 0x03, 0x02, 0x00, 0x00, 0x02, 0x02, 0x04, 0x07, 0x07, + 0x04, 0x00, 0x40, 0x09, 0x0e, 0x48, 0x00, 0x00, 0x20, 0x03, 0x01, 0x03, + 0x03, 0x05, 0xcc, 0x04, 0x04, 0x08, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0xed, + 0x32, 0x2f, 0x5d, 0x33, 0x2f, 0x2b, 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, + 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x30, 0x31, 0x13, 0x21, 0x17, 0x23, + 0x03, 0x35, 0x21, 0x15, 0x05, 0xc6, 0x01, 0x36, 0xa7, 0xcc, 0xbb, 0x02, + 0x2e, 0xfc, 0xb6, 0x06, 0x96, 0xd1, 0xfe, 0xef, 0xae, 0xae, 0xbc, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x56, 0x07, 0x99, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x53, 0x40, 0x18, 0x01, 0x03, 0x02, 0x00, + 0x00, 0x02, 0x02, 0x07, 0x07, 0x04, 0x00, 0x40, 0x0a, 0x0e, 0x48, 0x00, + 0x00, 0x60, 0x03, 0x01, 0x80, 0x03, 0x01, 0x03, 0xb8, 0xff, 0xc0, 0x40, + 0x0d, 0x0a, 0x0f, 0x48, 0x03, 0x03, 0x05, 0xc3, 0x00, 0x04, 0xb0, 0x04, + 0x02, 0x04, 0xb8, 0xff, 0xc0, 0xb6, 0x21, 0x25, 0x48, 0x04, 0x04, 0x08, + 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x2b, 0x5d, 0xed, 0x32, 0x2f, 0x2b, 0x5d, + 0x71, 0x33, 0x2f, 0x2b, 0x01, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x33, 0x2f, + 0x12, 0x39, 0x39, 0x31, 0x30, 0x13, 0x21, 0x17, 0x23, 0x03, 0x35, 0x21, + 0x15, 0x05, 0xc6, 0x01, 0x36, 0xa7, 0xcc, 0xc7, 0x02, 0x46, 0xfc, 0xaa, + 0x07, 0x99, 0xd1, 0xfe, 0xee, 0xae, 0xae, 0x9b, 0x00, 0x04, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0xac, 0x07, 0x08, 0x00, 0x17, 0x00, 0x2b, 0x00, 0x3f, + 0x00, 0x40, 0x00, 0x62, 0xb9, 0x00, 0x18, 0x02, 0x27, 0xb3, 0x22, 0x22, + 0x0c, 0x36, 0xb8, 0x02, 0x27, 0x40, 0x0e, 0x2c, 0x2c, 0x17, 0x00, 0x00, + 0x0b, 0x0c, 0x0c, 0x0b, 0x0b, 0x03, 0x3b, 0x3b, 0x27, 0xb8, 0x01, 0x43, + 0x40, 0x18, 0x1d, 0x31, 0x31, 0x30, 0x1d, 0x01, 0x1d, 0x1d, 0x00, 0x17, + 0x17, 0x0f, 0xce, 0x0f, 0x08, 0x01, 0x08, 0x08, 0x14, 0xce, 0x03, 0x03, + 0x40, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x5d, 0xed, 0x32, + 0x11, 0x33, 0x32, 0x2f, 0x5d, 0x33, 0x2f, 0x10, 0xed, 0x32, 0x2f, 0x11, + 0x33, 0x11, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x33, 0x2f, 0xed, + 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x01, 0x03, 0xac, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, + 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, + 0x38, 0x1b, 0xfe, 0xac, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, + 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, 0x15, 0x26, + 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, + 0x26, 0x15, 0xfc, 0x73, 0x05, 0x19, 0x51, 0x4d, 0x22, 0x2a, 0x22, 0x2e, + 0x2c, 0x6d, 0x50, 0x4d, 0x23, 0x28, 0x23, 0x2f, 0x2b, 0xf9, 0x1c, 0x32, + 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, + 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, + 0x25, 0x16, 0x16, 0x25, 0x33, 0xfd, 0x5e, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x8d, 0x07, 0x08, 0x00, 0x13, 0x00, 0x27, 0x00, 0x2b, + 0x00, 0x2c, 0x00, 0x3a, 0xb9, 0x00, 0x1e, 0x02, 0x27, 0xb5, 0x14, 0x14, + 0x2b, 0x2b, 0x28, 0x00, 0xb8, 0x02, 0x27, 0xb4, 0x0a, 0x0a, 0x28, 0x23, + 0x0f, 0xb8, 0x01, 0x43, 0x40, 0x09, 0x19, 0x05, 0x05, 0x29, 0xcc, 0x28, + 0x28, 0x2c, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0xed, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0xed, + 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x35, + 0x21, 0x15, 0x05, 0x01, 0xeb, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, + 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, 0x15, + 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, + 0x32, 0x26, 0x15, 0xfd, 0x8f, 0x02, 0x2e, 0xfc, 0xb6, 0x06, 0x7e, 0x1c, + 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, + 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xfe, 0x1a, 0xae, 0xae, 0xbc, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x99, 0x07, 0x9e, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x5e, 0xb9, 0x00, 0x14, 0x02, + 0x21, 0xb2, 0x1e, 0x1e, 0x00, 0xb8, 0x02, 0x21, 0x40, 0x0d, 0x0a, 0x0a, + 0x29, 0x2a, 0x2a, 0x29, 0x23, 0xa0, 0x0f, 0xb0, 0x0f, 0x02, 0x0f, 0xb8, + 0xff, 0xc0, 0x40, 0x15, 0x0c, 0x0f, 0x48, 0x0f, 0x19, 0x3f, 0x05, 0x01, + 0x05, 0x05, 0x29, 0x40, 0x28, 0x01, 0x90, 0x28, 0x01, 0x00, 0x28, 0x01, + 0x28, 0xb8, 0xff, 0xc0, 0xb6, 0x1c, 0x1f, 0x48, 0x28, 0x28, 0x2c, 0x41, + 0x00, 0x3f, 0x33, 0x2f, 0x2b, 0x5d, 0x71, 0x72, 0xcd, 0x32, 0x2f, 0x5d, + 0x33, 0xcd, 0x2b, 0x5d, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x01, 0x35, 0x21, 0x15, 0x05, 0x01, 0xdf, 0x15, 0x26, 0x32, + 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, + 0x15, 0x01, 0xba, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0xfd, 0x77, 0x02, 0x46, 0xfc, + 0xaa, 0x07, 0x14, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xfe, 0x5e, + 0xae, 0xae, 0x73, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x04, 0x08, + 0x06, 0x45, 0x00, 0x13, 0x00, 0x17, 0x00, 0x18, 0x00, 0x37, 0xb7, 0x16, + 0x14, 0x15, 0x17, 0x17, 0x15, 0x15, 0x00, 0xb8, 0x02, 0x39, 0xb4, 0x0a, + 0x2f, 0x0f, 0x01, 0x0f, 0xb8, 0x01, 0x47, 0x40, 0x09, 0x05, 0x05, 0x15, + 0x16, 0x16, 0x15, 0x15, 0x18, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x2f, + 0x11, 0x33, 0x2f, 0xed, 0x5d, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, + 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x13, 0x23, 0x01, + 0x21, 0x01, 0x02, 0x0c, 0x18, 0x2a, 0x3a, 0x22, 0x20, 0x39, 0x2a, 0x18, + 0x18, 0x2a, 0x39, 0x20, 0x20, 0x3a, 0x2b, 0x19, 0xa0, 0xf4, 0x01, 0x06, + 0x01, 0x4a, 0xfb, 0xf8, 0x05, 0xab, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, + 0x37, 0x20, 0x20, 0x38, 0x2a, 0x18, 0x18, 0x2a, 0x38, 0xfe, 0xb4, 0x01, + 0x06, 0xfe, 0x73, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x85, + 0x06, 0xf2, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x50, 0xb9, 0x00, + 0x07, 0x02, 0x39, 0x40, 0x0e, 0x11, 0x11, 0x03, 0x04, 0x05, 0x05, 0x03, + 0x02, 0x01, 0x01, 0x06, 0x00, 0x03, 0x16, 0xb8, 0x01, 0x47, 0x40, 0x16, + 0x0c, 0x40, 0x0e, 0x11, 0x48, 0x0c, 0x0c, 0x04, 0x0f, 0x01, 0x1f, 0x01, + 0x2f, 0x01, 0x03, 0x01, 0x01, 0x03, 0x00, 0x00, 0x1b, 0x4f, 0x00, 0x3f, + 0x33, 0x2f, 0x32, 0x32, 0x2f, 0x5d, 0x33, 0x33, 0x2f, 0x2b, 0xed, 0x01, + 0x19, 0x2f, 0x33, 0x33, 0x33, 0x18, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, + 0x11, 0x33, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x03, 0x33, 0x17, 0x37, 0x33, + 0x03, 0x13, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x01, 0xd7, 0xf6, 0xd9, 0x7b, 0x7b, + 0xd5, 0xf6, 0x42, 0x18, 0x2a, 0x3a, 0x22, 0x20, 0x39, 0x2a, 0x18, 0x18, + 0x2a, 0x39, 0x20, 0x20, 0x3a, 0x2b, 0x19, 0xfd, 0x2f, 0x04, 0x7f, 0x01, + 0x06, 0x7b, 0x7b, 0xfe, 0xfa, 0x01, 0xd9, 0x20, 0x37, 0x2a, 0x18, 0x18, + 0x2a, 0x37, 0x20, 0x20, 0x38, 0x2a, 0x18, 0x18, 0x2a, 0x38, 0xfd, 0x80, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x87, 0x07, 0x9e, 0x00, 0x06, + 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x69, 0xb9, 0x00, 0x07, 0x02, 0x21, 0x40, + 0x18, 0x11, 0x11, 0x02, 0x03, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x06, + 0x05, 0x02, 0x00, 0x16, 0x10, 0x16, 0x02, 0x90, 0x16, 0xc0, 0x16, 0x02, + 0x16, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0f, 0x48, 0x16, 0xb8, 0x01, 0x41, + 0x40, 0x19, 0xcf, 0x0c, 0xdf, 0x0c, 0x02, 0x0c, 0x0c, 0x04, 0x00, 0x40, + 0x0a, 0x0d, 0x48, 0x00, 0x00, 0x02, 0x00, 0x06, 0xe0, 0x06, 0x02, 0x06, + 0x06, 0x1b, 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0x33, 0x2f, 0x2b, + 0x32, 0x32, 0x2f, 0x5d, 0xed, 0x2b, 0x71, 0x72, 0x01, 0x19, 0x2f, 0x33, + 0x33, 0x33, 0x18, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, + 0xed, 0x31, 0x30, 0x13, 0x33, 0x17, 0x37, 0x33, 0x07, 0x23, 0x13, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x01, 0xdf, 0xdb, 0x7b, 0x7b, 0xd7, 0xed, 0xcd, 0xef, 0x16, + 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x24, 0x16, 0xfd, 0x44, 0x06, 0x87, 0x5e, 0x5e, 0xe1, 0x01, 0x6e, + 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, + 0x16, 0x25, 0x33, 0xfd, 0xeb, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, + 0x04, 0x06, 0x06, 0x54, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x50, 0x40, 0x28, + 0x09, 0x09, 0x0a, 0x0a, 0x05, 0x05, 0x04, 0x04, 0x07, 0x06, 0x06, 0x07, + 0x07, 0x00, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00, 0x08, 0x0b, 0x0b, + 0x0c, 0x0b, 0x97, 0x04, 0x07, 0x06, 0x02, 0x1f, 0x0a, 0x2f, 0x0a, 0x02, + 0x0a, 0x0a, 0x0c, 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0x33, 0xdc, + 0x32, 0xed, 0x01, 0x2f, 0x33, 0x2f, 0x32, 0x32, 0x2f, 0x33, 0x33, 0x2f, + 0x33, 0x2f, 0x11, 0x39, 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x2f, + 0x32, 0x2f, 0x33, 0x2f, 0x31, 0x30, 0x01, 0x07, 0x23, 0x27, 0x23, 0x07, + 0x23, 0x27, 0x23, 0x07, 0x23, 0x27, 0x03, 0x04, 0x06, 0x5a, 0x2c, 0x30, + 0xd3, 0x34, 0x2b, 0x34, 0xd4, 0x30, 0x2c, 0x5a, 0x60, 0x06, 0x54, 0xe1, + 0x64, 0x64, 0x64, 0x64, 0xe1, 0xfe, 0xc7, 0x00, 0x00, 0x01, 0x01, 0xca, + 0x01, 0x51, 0x03, 0x9f, 0x03, 0x79, 0x00, 0x03, 0x00, 0x15, 0xb7, 0x02, + 0x03, 0x01, 0x00, 0x02, 0x03, 0x00, 0x01, 0x00, 0x2f, 0x33, 0x2f, 0x33, + 0x01, 0x2f, 0x32, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x37, 0x01, 0x07, 0x01, + 0xca, 0x9e, 0x01, 0x37, 0x9e, 0x03, 0x08, 0x71, 0xfe, 0x4a, 0x72, 0x00, + 0x00, 0x01, 0x01, 0x68, 0xfe, 0x6b, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x1b, + 0x00, 0x23, 0xb4, 0x0e, 0x0d, 0x0d, 0x1b, 0x13, 0xb8, 0x01, 0xad, 0x40, + 0x09, 0x08, 0x00, 0x03, 0xc7, 0x1b, 0x18, 0x55, 0x0d, 0x51, 0x00, 0x3f, + 0x3f, 0x33, 0xed, 0x32, 0x01, 0x2f, 0xed, 0xc4, 0x33, 0x11, 0x33, 0x30, + 0x31, 0x05, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, + 0x27, 0x33, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, + 0x01, 0x68, 0x16, 0x22, 0x12, 0x21, 0x2c, 0x1a, 0x0b, 0x06, 0x16, 0x2a, + 0x24, 0xcb, 0x27, 0x30, 0x19, 0x09, 0x24, 0x42, 0x5b, 0x37, 0x2a, 0x54, + 0x20, 0xf1, 0x02, 0x02, 0x0d, 0x16, 0x1d, 0x10, 0x0f, 0x1d, 0x24, 0x31, + 0x24, 0x26, 0x3e, 0x34, 0x2f, 0x16, 0x2b, 0x44, 0x30, 0x19, 0x05, 0x05, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xa1, 0x07, 0x99, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x55, 0x40, 0x19, 0x02, 0x00, 0x01, 0x03, + 0x03, 0x01, 0x01, 0x04, 0x07, 0x07, 0x04, 0x02, 0x40, 0x0a, 0x0e, 0x48, + 0x02, 0x02, 0x60, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0xb8, 0xff, 0xc0, + 0xb3, 0x21, 0x25, 0x48, 0x01, 0xb8, 0xff, 0xc0, 0x40, 0x10, 0x0a, 0x0f, + 0x48, 0x01, 0x01, 0x05, 0xc3, 0x00, 0x04, 0xb0, 0x04, 0x02, 0x04, 0x04, + 0x08, 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0xed, 0x32, 0x2f, 0x2b, 0x2b, + 0x5d, 0x71, 0x33, 0x2f, 0x2b, 0x01, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x2f, + 0x33, 0x2f, 0x12, 0x39, 0x39, 0x31, 0x30, 0x01, 0x23, 0x37, 0x21, 0x01, + 0x35, 0x21, 0x15, 0x05, 0x02, 0x90, 0xcc, 0xa7, 0x01, 0x36, 0xfd, 0x70, + 0x02, 0x46, 0xfc, 0xa9, 0x06, 0xc8, 0xd1, 0xfe, 0x1d, 0xae, 0xae, 0x9b, + 0x00, 0x04, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xac, 0x07, 0x9e, 0x00, 0x17, + 0x00, 0x2b, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x6f, 0xb9, 0x00, 0x2c, 0x02, + 0x21, 0xb2, 0x36, 0x36, 0x18, 0xb8, 0x02, 0x21, 0x40, 0x13, 0x22, 0x22, + 0x0c, 0x17, 0x00, 0x00, 0x0b, 0x0c, 0x0c, 0x0b, 0x0b, 0x03, 0x3b, 0xa0, + 0x27, 0xb0, 0x27, 0x02, 0x27, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x11, 0x48, + 0x27, 0xb8, 0x01, 0x41, 0x40, 0x1a, 0x31, 0x1d, 0x40, 0x18, 0x1c, 0x48, + 0x1d, 0x40, 0x10, 0x15, 0x48, 0x1d, 0x1d, 0x00, 0x17, 0x17, 0x0f, 0xa6, + 0x08, 0x08, 0x14, 0xa6, 0x03, 0x03, 0x40, 0x41, 0x00, 0x3f, 0x33, 0x2f, + 0xed, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0x33, 0x32, 0x2f, 0x2b, 0x2b, 0x33, + 0xed, 0x2b, 0x5d, 0x32, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0x11, 0x33, 0x2f, 0xed, 0x32, 0x2f, 0xed, 0x30, 0x31, 0x01, + 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, + 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x25, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x03, 0xac, 0x2a, 0x70, 0x51, 0x3b, + 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, + 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfe, 0xa0, 0x15, 0x26, 0x32, + 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, + 0x15, 0x01, 0xba, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0xfc, 0x67, 0x06, 0x07, 0x50, + 0x4e, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0x54, 0x51, 0x4d, 0x20, 0x27, 0x20, + 0x2f, 0x2b, 0xb9, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xfd, 0xeb, + 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x04, 0x08, 0x07, 0x6c, 0x00, 0x13, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x43, 0xb7, 0x16, 0x14, 0x15, 0x17, 0x17, + 0x15, 0x15, 0x00, 0xb8, 0x02, 0x33, 0xb4, 0x0a, 0x30, 0x0f, 0x01, 0x0f, + 0xb8, 0x01, 0x44, 0x40, 0x13, 0x05, 0x05, 0x15, 0x4f, 0x16, 0x5f, 0x16, + 0x6f, 0x16, 0x03, 0x16, 0x16, 0x00, 0x15, 0x01, 0x15, 0x15, 0x18, 0x41, + 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0x2f, 0x5d, 0x11, 0x33, 0x2f, 0xed, + 0x5d, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x31, + 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x13, 0x23, 0x01, 0x21, 0x01, 0x02, 0x0c, + 0x18, 0x2a, 0x3a, 0x22, 0x20, 0x39, 0x2a, 0x18, 0x18, 0x2a, 0x39, 0x20, + 0x20, 0x3a, 0x2b, 0x19, 0xa0, 0xf4, 0x01, 0x06, 0x01, 0x4a, 0xfb, 0xf8, + 0x06, 0xd2, 0x20, 0x37, 0x2a, 0x18, 0x18, 0x2a, 0x37, 0x20, 0x20, 0x38, + 0x2a, 0x18, 0x18, 0x2a, 0x38, 0xfe, 0xb4, 0x01, 0x06, 0xfe, 0x6f, 0x00, + 0x00, 0x01, 0x00, 0xd2, 0x01, 0xa3, 0x03, 0x94, 0x02, 0x61, 0x00, 0x03, + 0x00, 0x0e, 0xb4, 0x00, 0x01, 0x03, 0xd6, 0x00, 0x00, 0x2f, 0xed, 0x01, + 0x2f, 0x2f, 0x30, 0x31, 0x13, 0x21, 0x15, 0x21, 0xd2, 0x02, 0xc2, 0xfd, + 0x3e, 0x02, 0x61, 0xbe, 0x00, 0x02, 0xff, 0x92, 0xff, 0x54, 0x04, 0xd4, + 0x05, 0x95, 0x00, 0x03, 0x00, 0x04, 0x00, 0x19, 0x40, 0x0a, 0x01, 0x02, + 0x03, 0x00, 0x02, 0x05, 0x03, 0x03, 0x04, 0x41, 0x00, 0x3f, 0xce, 0x2f, + 0x10, 0xce, 0x01, 0x2f, 0x33, 0x2f, 0x32, 0x30, 0x31, 0x01, 0x01, 0x23, + 0x01, 0x05, 0x04, 0xd4, 0xfb, 0xab, 0xed, 0x04, 0x57, 0xfc, 0x17, 0x05, + 0x95, 0xf9, 0xbf, 0x06, 0x41, 0x7a, 0x00, 0x02, 0x00, 0x00, 0xff, 0x54, + 0x04, 0x64, 0x04, 0x28, 0x00, 0x03, 0x00, 0x04, 0x00, 0x17, 0x40, 0x09, + 0x01, 0x02, 0x03, 0x00, 0x02, 0x05, 0x03, 0x04, 0x4f, 0x00, 0x3f, 0xce, + 0x10, 0xce, 0x01, 0x2f, 0x33, 0x2f, 0x32, 0x30, 0x31, 0x01, 0x01, 0x23, + 0x01, 0x05, 0x04, 0x64, 0xfc, 0xa9, 0xe3, 0x03, 0x59, 0xfc, 0x7d, 0x04, + 0x28, 0xfb, 0x2c, 0x04, 0xd4, 0x30, 0x00, 0x01, 0x00, 0xbe, 0x02, 0x3f, + 0x03, 0xa8, 0x03, 0x02, 0x00, 0x03, 0x00, 0x0e, 0xb4, 0x00, 0x01, 0x03, + 0xda, 0x00, 0x00, 0x2f, 0xed, 0x01, 0x2f, 0x2f, 0x31, 0x30, 0x13, 0x21, + 0x15, 0x21, 0xbe, 0x02, 0xea, 0xfd, 0x16, 0x03, 0x02, 0xc3, 0x00, 0x04, + 0x00, 0x00, 0x05, 0x1b, 0x03, 0x99, 0x07, 0x9e, 0x00, 0x03, 0x00, 0x17, + 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x6e, 0xb9, 0x00, 0x18, 0x02, 0x21, 0xb7, + 0x22, 0x22, 0x0e, 0x03, 0x03, 0x00, 0x00, 0x04, 0xb8, 0x02, 0x21, 0x40, + 0x1e, 0x0e, 0x80, 0x01, 0x90, 0x01, 0x02, 0x01, 0xc3, 0x00, 0x40, 0x0d, + 0x12, 0x48, 0x00, 0x00, 0x27, 0x00, 0x13, 0x10, 0x13, 0x02, 0x90, 0x13, + 0x01, 0xa0, 0x13, 0xb0, 0x13, 0x02, 0x13, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, + 0x0f, 0x48, 0x13, 0xb8, 0x01, 0x41, 0x40, 0x11, 0x1d, 0x30, 0x09, 0x40, + 0x09, 0xc0, 0x09, 0x03, 0x00, 0x09, 0xe0, 0x09, 0x02, 0x09, 0x09, 0x2c, + 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x71, 0x33, 0xed, 0x2b, 0x5d, 0x71, + 0x72, 0x32, 0x32, 0x2f, 0x2b, 0xed, 0x5d, 0x01, 0x2f, 0xed, 0x33, 0x2f, + 0x33, 0x2f, 0x11, 0x33, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x35, 0x21, 0x15, + 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x01, 0x10, 0x02, + 0x46, 0xfe, 0x89, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, + 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x01, 0xba, 0x16, 0x24, 0x33, + 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, + 0x16, 0xfc, 0x67, 0x06, 0xf0, 0xae, 0xae, 0xc2, 0x1c, 0x32, 0x25, 0x16, + 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, + 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, + 0x16, 0x25, 0x33, 0xfe, 0xd1, 0x00, 0x00, 0x04, 0x00, 0x00, 0x03, 0xf8, + 0x03, 0x8d, 0x06, 0x8f, 0x00, 0x13, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, + 0x00, 0x3d, 0xb5, 0x2b, 0x2b, 0x28, 0x28, 0x0a, 0x14, 0xb8, 0x02, 0x27, + 0xb2, 0x1e, 0x1e, 0x00, 0xb8, 0x02, 0x27, 0xb6, 0x0a, 0x29, 0xcc, 0x28, + 0x28, 0x23, 0x0f, 0xb8, 0x01, 0x43, 0xb7, 0x19, 0x0f, 0x05, 0x01, 0x05, + 0x05, 0x2c, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0xed, 0x32, 0x32, + 0x2f, 0xed, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x33, + 0x2f, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x25, + 0x35, 0x21, 0x15, 0x01, 0x01, 0xeb, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, + 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, + 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, + 0x1c, 0x32, 0x26, 0x15, 0xfd, 0x8f, 0x02, 0x2e, 0xfc, 0xb6, 0x04, 0xee, + 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, + 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, + 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xd7, 0xae, 0xae, 0xfe, 0x17, + 0x00, 0x04, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xe1, 0x07, 0x9e, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x64, 0x40, 0x09, 0x2a, 0x28, + 0x29, 0x2b, 0x2b, 0x29, 0x29, 0x0a, 0x14, 0xb8, 0x02, 0x21, 0xb2, 0x1e, + 0x1e, 0x00, 0xb8, 0x02, 0x21, 0x40, 0x12, 0x0a, 0x4f, 0x2a, 0x01, 0x2a, + 0x2a, 0x29, 0x29, 0x23, 0x00, 0x0f, 0x10, 0x0f, 0x02, 0x90, 0x0f, 0x01, + 0x0f, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0f, 0x48, 0x0f, 0xb8, 0x01, 0x41, + 0x40, 0x0d, 0x19, 0xc0, 0x05, 0x01, 0x00, 0x05, 0xe0, 0x05, 0x02, 0x05, + 0x05, 0x2c, 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x71, 0x33, 0xed, 0x2b, + 0x71, 0x72, 0x32, 0x32, 0x2f, 0x33, 0x2f, 0x5d, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x31, 0x30, + 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x27, 0x23, 0x37, 0x21, + 0x01, 0x01, 0xdf, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, + 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x01, 0xba, 0x16, 0x24, 0x33, + 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, + 0x16, 0xed, 0xf4, 0xe0, 0x01, 0x49, 0xfc, 0x1f, 0x06, 0x2e, 0x1c, 0x32, + 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, + 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, + 0x25, 0x16, 0x16, 0x25, 0x33, 0x73, 0xe1, 0xfd, 0x7d, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x03, 0xf8, 0x04, 0x08, 0x06, 0xcf, 0x00, 0x13, 0x00, 0x27, + 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x45, 0x40, 0x09, 0x2a, 0x28, 0x29, 0x2b, + 0x2b, 0x29, 0x29, 0x0a, 0x14, 0xb8, 0x02, 0x27, 0xb2, 0x1e, 0x1e, 0x00, + 0xb8, 0x02, 0x27, 0xb6, 0x0a, 0x2a, 0x2a, 0x29, 0x29, 0x23, 0x0f, 0xb8, + 0x01, 0x43, 0xb7, 0x19, 0x0f, 0x05, 0x01, 0x05, 0x05, 0x2c, 0x4f, 0x00, + 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0xed, 0x32, 0x32, 0x2f, 0x33, 0x2f, 0x01, + 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x39, + 0x39, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x27, + 0x23, 0x01, 0x21, 0x01, 0x01, 0xeb, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, + 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0x01, 0xa2, + 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, + 0x1c, 0x32, 0x26, 0x15, 0xe1, 0xf4, 0x01, 0x06, 0x01, 0x4a, 0xfb, 0xf8, + 0x04, 0xee, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, + 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, + 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xbf, 0x01, 0x06, + 0xfd, 0x29, 0x00, 0x04, 0x00, 0x00, 0x05, 0x1a, 0x03, 0x99, 0x07, 0x9e, + 0x00, 0x13, 0x00, 0x27, 0x00, 0x2e, 0x00, 0x2f, 0x00, 0x63, 0x40, 0x0d, + 0x2b, 0x2c, 0x2c, 0x2a, 0x29, 0x28, 0x28, 0x2e, 0x2d, 0x2a, 0x2a, 0x0a, + 0x14, 0xb8, 0x02, 0x21, 0xb2, 0x1e, 0x1e, 0x00, 0xb8, 0x02, 0x21, 0x40, + 0x0d, 0x0a, 0x2b, 0x2b, 0x4f, 0x28, 0x01, 0x28, 0x28, 0x2a, 0x2e, 0x2e, + 0x23, 0x0f, 0xb8, 0xff, 0xc0, 0xb3, 0x0c, 0x0f, 0x48, 0x0f, 0xb8, 0x01, + 0x41, 0xb7, 0x19, 0x00, 0x05, 0x01, 0x05, 0x05, 0x2f, 0x41, 0x00, 0x3f, + 0x33, 0x2f, 0x5d, 0x33, 0xed, 0x2b, 0x32, 0x32, 0x2f, 0x33, 0x33, 0x2f, + 0x5d, 0x33, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x11, 0x39, 0x19, + 0x2f, 0x33, 0x33, 0x33, 0x18, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x31, + 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x01, 0x33, 0x17, + 0x37, 0x33, 0x07, 0x23, 0x01, 0x01, 0xdf, 0x15, 0x26, 0x32, 0x1c, 0x1d, + 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0x01, + 0xba, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, + 0x1c, 0x1c, 0x33, 0x24, 0x16, 0xfd, 0x46, 0xdb, 0x7b, 0x7b, 0xd7, 0xed, + 0xcd, 0xfe, 0x33, 0x06, 0x2e, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, + 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, + 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, + 0x01, 0x54, 0x5e, 0x5e, 0xe1, 0xfe, 0x5d, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x03, 0xf8, 0x03, 0x8d, 0x06, 0xcf, 0x00, 0x13, 0x00, 0x27, 0x00, 0x2e, + 0x00, 0x2f, 0x00, 0x54, 0x40, 0x0d, 0x2c, 0x2d, 0x2d, 0x2b, 0x2a, 0x29, + 0x29, 0x2e, 0x28, 0x2b, 0x2b, 0x0a, 0x14, 0xb8, 0x02, 0x27, 0xb2, 0x1e, + 0x1e, 0x00, 0xb8, 0x02, 0x27, 0x40, 0x09, 0x0a, 0x2c, 0x29, 0x29, 0x2b, + 0x28, 0x28, 0x23, 0x0f, 0xb8, 0x01, 0x43, 0xb7, 0x19, 0x0f, 0x05, 0x01, + 0x05, 0x05, 0x2f, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0xed, 0x32, + 0x32, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, + 0x11, 0x39, 0x19, 0x2f, 0x33, 0x33, 0x33, 0x18, 0x2f, 0x33, 0x11, 0x33, + 0x2f, 0x33, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x25, 0x03, 0x33, 0x17, 0x37, 0x33, 0x03, 0x01, 0x01, 0xeb, 0x16, 0x24, + 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, + 0x24, 0x16, 0x01, 0xa2, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, + 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0xfe, 0x4a, 0xf6, 0xd9, + 0x7b, 0x7b, 0xd5, 0xf6, 0xfd, 0x71, 0x04, 0xee, 0x1c, 0x32, 0x25, 0x16, + 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, + 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, + 0x16, 0x25, 0x33, 0xbf, 0x01, 0x06, 0x7b, 0x7b, 0xfe, 0xfa, 0xfe, 0x2f, + 0x00, 0x04, 0x00, 0x00, 0x05, 0x1b, 0x03, 0x99, 0x07, 0x9e, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x5d, 0xb7, 0x28, 0x2a, 0x29, + 0x2b, 0x2b, 0x29, 0x29, 0x14, 0xb8, 0x02, 0x21, 0xb2, 0x1e, 0x1e, 0x00, + 0xb8, 0x02, 0x21, 0x40, 0x0f, 0x0a, 0x00, 0x2b, 0x10, 0x2b, 0x02, 0x4f, + 0x2b, 0x01, 0x2b, 0x2b, 0x2a, 0x2a, 0x23, 0x0f, 0xb8, 0xff, 0xc0, 0xb3, + 0x0c, 0x0f, 0x48, 0x0f, 0xb8, 0x01, 0x41, 0x40, 0x0d, 0x19, 0xc0, 0x05, + 0x01, 0x00, 0x05, 0xe0, 0x05, 0x02, 0x05, 0x05, 0x2c, 0x41, 0x00, 0x3f, + 0x33, 0x2f, 0x5d, 0x71, 0x33, 0xed, 0x2b, 0x32, 0x32, 0x2f, 0x33, 0x2f, + 0x5d, 0x72, 0x01, 0x2f, 0xed, 0x33, 0x10, 0xed, 0x33, 0x2f, 0x33, 0x2f, + 0x12, 0x39, 0x39, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x01, 0x17, 0x23, 0x25, 0x03, 0x01, 0xdf, 0x15, 0x26, 0x32, 0x1c, + 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, + 0x01, 0xba, 0x16, 0x24, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, + 0x32, 0x1c, 0x1c, 0x33, 0x24, 0x16, 0xfe, 0x36, 0xdf, 0xf4, 0xfe, 0xcb, + 0x85, 0x06, 0x2e, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, + 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x01, 0x54, + 0xe1, 0xe1, 0xfd, 0x7d, 0x00, 0x04, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x8d, + 0x06, 0xcf, 0x00, 0x13, 0x00, 0x27, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x42, + 0xb7, 0x2a, 0x28, 0x29, 0x2b, 0x2b, 0x29, 0x29, 0x14, 0xb8, 0x02, 0x27, + 0xb2, 0x1e, 0x1e, 0x00, 0xb8, 0x02, 0x27, 0xb6, 0x0a, 0x2b, 0x2b, 0x2a, + 0x2a, 0x23, 0x0f, 0xb8, 0x01, 0x43, 0xb7, 0x19, 0x0f, 0x05, 0x01, 0x05, + 0x05, 0x2c, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x33, 0xed, 0x32, 0x32, + 0x2f, 0x33, 0x2f, 0x01, 0x2f, 0xed, 0x33, 0x2f, 0xed, 0x33, 0x2f, 0x33, + 0x2f, 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x05, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x01, 0x01, 0x23, 0x01, 0x03, 0x01, 0xeb, 0x16, 0x24, 0x33, + 0x1c, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x24, + 0x16, 0x01, 0xa2, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, 0x15, + 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0xfe, 0x19, 0x01, 0x06, 0xf4, + 0xfe, 0xa4, 0x5c, 0x04, 0xee, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, + 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0x1c, 0x1c, 0x32, 0x25, + 0x16, 0x16, 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, + 0x01, 0xc5, 0xfe, 0xfa, 0x01, 0x06, 0xfd, 0x29, 0x00, 0x03, 0x00, 0x00, + 0x05, 0x1c, 0x03, 0x56, 0x07, 0x9e, 0x00, 0x13, 0x00, 0x17, 0x00, 0x18, + 0x00, 0x57, 0xb9, 0x00, 0x00, 0x02, 0x21, 0x40, 0x14, 0x0a, 0x0a, 0x14, + 0x17, 0x17, 0x14, 0x15, 0x14, 0x40, 0x0c, 0x12, 0x48, 0x14, 0x14, 0xa0, + 0x0f, 0xb0, 0x0f, 0x02, 0x0f, 0xb8, 0xff, 0xc0, 0x40, 0x0b, 0x0c, 0x0f, + 0x48, 0x0f, 0x90, 0x05, 0x01, 0x00, 0x05, 0x01, 0x05, 0xb8, 0xff, 0xc0, + 0xb3, 0x1c, 0x1f, 0x48, 0x05, 0xb8, 0xff, 0xc0, 0xb6, 0x17, 0x1a, 0x48, + 0x05, 0x05, 0x18, 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x2b, 0x2b, 0x5d, 0x71, + 0xcd, 0x2b, 0x5d, 0x32, 0x2f, 0x2b, 0xcd, 0x01, 0x2f, 0x33, 0x2f, 0x12, + 0x39, 0x2f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x25, 0x35, 0x21, + 0x15, 0x01, 0x02, 0xbc, 0x15, 0x26, 0x32, 0x1c, 0x1d, 0x31, 0x26, 0x15, + 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, 0xfe, 0x54, 0x02, 0x46, + 0xfc, 0xaa, 0x06, 0x2e, 0x1c, 0x32, 0x25, 0x16, 0x16, 0x25, 0x32, 0x1c, + 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xa6, 0xae, 0xae, 0xfe, 0x2c, + 0x00, 0x03, 0x00, 0x00, 0x03, 0xf8, 0x03, 0x4a, 0x06, 0x8f, 0x00, 0x03, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x30, 0xb9, 0x00, 0x04, 0x02, 0x27, 0x40, + 0x0b, 0x0e, 0x0e, 0x00, 0x03, 0x03, 0x00, 0x01, 0xcc, 0x00, 0x00, 0x13, + 0xb8, 0x01, 0x43, 0xb6, 0x0f, 0x09, 0x01, 0x09, 0x09, 0x18, 0x4f, 0x00, + 0x3f, 0x33, 0x2f, 0x5d, 0xed, 0x32, 0x2f, 0xed, 0x01, 0x2f, 0x33, 0x2f, + 0x12, 0x39, 0x2f, 0xed, 0x30, 0x31, 0x01, 0x35, 0x21, 0x15, 0x07, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x01, 0x01, 0x1c, 0x02, 0x2e, 0x8d, 0x15, 0x26, 0x32, 0x1c, + 0x1d, 0x31, 0x26, 0x15, 0x15, 0x26, 0x31, 0x1d, 0x1c, 0x32, 0x26, 0x15, + 0xfd, 0x43, 0x05, 0xe1, 0xae, 0xae, 0xf3, 0x1c, 0x32, 0x25, 0x16, 0x16, + 0x25, 0x32, 0x1c, 0x1c, 0x33, 0x25, 0x16, 0x16, 0x25, 0x33, 0xfe, 0xee, + 0x00, 0x03, 0xff, 0xb5, 0x05, 0x1b, 0x03, 0xb7, 0x06, 0x87, 0x00, 0x03, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x37, 0x40, 0x1a, 0x04, 0x06, 0x07, 0x05, + 0x05, 0x07, 0x07, 0x00, 0x02, 0x01, 0x03, 0x03, 0x01, 0x01, 0x08, 0x07, + 0x03, 0x80, 0x06, 0x00, 0x02, 0x01, 0x02, 0x02, 0x08, 0x41, 0x00, 0x3f, + 0x33, 0x2f, 0x5d, 0x33, 0x1a, 0xcd, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, + 0x2f, 0x11, 0x39, 0x39, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x31, + 0x30, 0x13, 0x17, 0x23, 0x25, 0x21, 0x17, 0x23, 0x25, 0x01, 0xff, 0xdf, + 0xf4, 0xfe, 0xcb, 0x03, 0x23, 0xdf, 0xf4, 0xfe, 0xcb, 0xfe, 0x72, 0x06, + 0x87, 0xe1, 0xe1, 0xe1, 0xe1, 0xfe, 0x94, 0x00, 0x00, 0x03, 0xff, 0xd0, + 0x03, 0xf8, 0x04, 0x00, 0x05, 0x85, 0x00, 0x03, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x33, 0x40, 0x17, 0x06, 0x04, 0x07, 0x05, 0x05, 0x07, 0x07, 0x00, + 0x02, 0x01, 0x03, 0x03, 0x01, 0x01, 0x08, 0x07, 0x03, 0x80, 0x06, 0x02, + 0x02, 0x08, 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x33, 0x1a, 0xcd, 0x32, 0x01, + 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x39, 0x32, 0x2f, 0x33, 0x2f, + 0x12, 0x39, 0x39, 0x30, 0x31, 0x01, 0x01, 0x23, 0x01, 0x21, 0x01, 0x23, + 0x01, 0x01, 0x01, 0x1a, 0x01, 0x06, 0xf4, 0xfe, 0xa4, 0x03, 0x2a, 0x01, + 0x06, 0xf4, 0xfe, 0xa4, 0xfe, 0x50, 0x05, 0x85, 0xfe, 0xfa, 0x01, 0x06, + 0xfe, 0xfa, 0x01, 0x06, 0xfe, 0x73, 0x00, 0x02, 0x00, 0x00, 0x05, 0x1b, + 0x03, 0x59, 0x06, 0x99, 0x00, 0x13, 0x00, 0x14, 0x00, 0x2a, 0xb9, 0x00, + 0x0b, 0x01, 0x6d, 0xb2, 0x0a, 0x0a, 0x13, 0xb8, 0x01, 0x6d, 0x40, 0x0c, + 0x00, 0x05, 0xc1, 0x10, 0x0b, 0x00, 0x00, 0x01, 0x00, 0x00, 0x14, 0x41, + 0x00, 0x3f, 0x33, 0x2f, 0x5d, 0x32, 0xdc, 0xed, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x31, 0x30, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x23, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x05, 0x01, 0x0d, + 0x24, 0x49, 0x70, 0x4c, 0x4c, 0x6e, 0x47, 0x22, 0xaf, 0x0e, 0x1c, 0x2e, + 0x1f, 0x3c, 0x3b, 0xfe, 0x44, 0x05, 0x9b, 0x32, 0x5c, 0x46, 0x2a, 0x2b, + 0x47, 0x5c, 0x30, 0x10, 0x22, 0x1b, 0x11, 0x36, 0x28, 0x80, 0x00, 0x02, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0x53, 0x05, 0xa6, 0x00, 0x13, 0x00, 0x14, + 0x00, 0x26, 0xb9, 0x00, 0x0b, 0x01, 0x74, 0xb2, 0x0a, 0x0a, 0x13, 0xb8, + 0x01, 0x74, 0x40, 0x09, 0x00, 0x05, 0xc9, 0x10, 0x0b, 0x00, 0x00, 0x14, + 0x4f, 0x00, 0x3f, 0x33, 0x2f, 0x32, 0xdc, 0xed, 0x01, 0x2f, 0xed, 0x33, + 0x2f, 0xed, 0x30, 0x31, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x23, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x15, 0x05, 0x01, 0x13, + 0x28, 0x4b, 0x6c, 0x44, 0x44, 0x6a, 0x49, 0x26, 0xb5, 0x0f, 0x1c, 0x27, + 0x18, 0x2d, 0x3f, 0xfe, 0x38, 0x04, 0x92, 0x39, 0x65, 0x4b, 0x2b, 0x2c, + 0x4c, 0x64, 0x38, 0x16, 0x27, 0x1e, 0x11, 0x37, 0x35, 0x9a, 0x00, 0x03, + 0x00, 0x00, 0x03, 0xf8, 0x03, 0xac, 0x06, 0x8f, 0x00, 0x17, 0x00, 0x1b, + 0x00, 0x1c, 0x00, 0x3e, 0x40, 0x1e, 0x1b, 0x1b, 0x18, 0x18, 0x0c, 0x17, + 0x00, 0x00, 0x0b, 0x0c, 0x0c, 0x0b, 0x0b, 0x03, 0x19, 0xcc, 0x18, 0x18, + 0x00, 0x17, 0x17, 0x0f, 0xce, 0x08, 0x14, 0xce, 0x03, 0x03, 0x1c, 0x4f, + 0x00, 0x3f, 0x33, 0x2f, 0xed, 0xdc, 0xed, 0x32, 0x2f, 0x33, 0x32, 0x2f, + 0xed, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x11, + 0x33, 0x2f, 0x33, 0x2f, 0x30, 0x31, 0x01, 0x06, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x23, 0x22, 0x06, 0x07, 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x37, 0x25, 0x35, 0x21, 0x15, 0x01, 0x03, 0xac, 0x2a, + 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, + 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, 0x20, 0x25, 0x38, 0x1b, 0xfd, 0xdd, + 0x02, 0x2e, 0xfc, 0xb6, 0x05, 0x19, 0x51, 0x4d, 0x22, 0x2a, 0x22, 0x2e, + 0x2c, 0x6d, 0x50, 0x4d, 0x23, 0x28, 0x23, 0x2f, 0x2b, 0x5c, 0xae, 0xae, + 0xfe, 0x17, 0x00, 0x03, 0x00, 0x00, 0x05, 0x1b, 0x03, 0xac, 0x07, 0x9e, + 0x00, 0x03, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x6d, 0x40, 0x18, 0x1b, 0x04, + 0x04, 0x10, 0x03, 0x03, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x0f, 0x0f, 0x07, + 0x04, 0x1b, 0x1b, 0x13, 0x00, 0x01, 0x10, 0x01, 0x02, 0x01, 0xb8, 0xff, + 0xc0, 0xb3, 0x1c, 0x22, 0x48, 0x01, 0xb8, 0xff, 0xc0, 0x40, 0x20, 0x11, + 0x14, 0x48, 0x01, 0xc3, 0x40, 0x00, 0x50, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0x80, 0x13, 0x01, 0x13, 0xc2, 0x0c, 0x80, 0x18, 0x01, 0x18, 0xc2, + 0x00, 0x07, 0x01, 0x07, 0x07, 0x1c, 0x41, 0x00, 0x3f, 0x33, 0x2f, 0x5d, + 0xed, 0x5d, 0xdc, 0xed, 0x5d, 0x32, 0x2f, 0x5d, 0xed, 0x2b, 0x2b, 0x72, + 0x11, 0x33, 0x2f, 0x33, 0x11, 0x33, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x33, + 0x2f, 0x33, 0x2f, 0x11, 0x33, 0x2f, 0x33, 0x30, 0x31, 0x01, 0x35, 0x21, + 0x15, 0x17, 0x06, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x01, + 0x01, 0x10, 0x02, 0x46, 0x56, 0x2a, 0x70, 0x51, 0x3b, 0x51, 0x3f, 0x36, + 0x20, 0x25, 0x38, 0x1c, 0x6d, 0x2a, 0x70, 0x52, 0x3b, 0x51, 0x3f, 0x36, + 0x20, 0x25, 0x38, 0x1b, 0xfc, 0xc1, 0x06, 0xf0, 0xae, 0xae, 0xc5, 0x50, + 0x4e, 0x20, 0x27, 0x20, 0x2f, 0x2b, 0x68, 0x51, 0x4d, 0x20, 0x27, 0x20, + 0x2f, 0x2b, 0xfe, 0x88, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x13, 0x00, 0x27, 0x00, 0x33, 0x00, 0x3f, 0x00, 0x4e, + 0x40, 0x22, 0x3d, 0x30, 0x34, 0x14, 0x14, 0x0a, 0x3c, 0x31, 0x28, 0x1e, + 0x1e, 0x00, 0x31, 0x3c, 0x3c, 0x39, 0x90, 0x23, 0x23, 0x0f, 0x44, 0x3d, + 0x30, 0x30, 0x2d, 0x90, 0x90, 0x19, 0xa0, 0x19, 0xb0, 0x19, 0x03, 0x19, + 0xb8, 0xff, 0xc0, 0xb5, 0x1e, 0x22, 0x48, 0x19, 0x19, 0x05, 0x00, 0x2f, + 0x33, 0x2f, 0x2b, 0x5d, 0xe6, 0x32, 0x2f, 0x33, 0x3f, 0x33, 0x2f, 0xe6, + 0x32, 0x2f, 0x33, 0x01, 0x2f, 0x33, 0x2f, 0xc6, 0x32, 0x32, 0x2f, 0x33, + 0x2f, 0xc6, 0x32, 0x32, 0x31, 0x30, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x25, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x16, 0x17, 0x05, 0x26, + 0x34, 0x25, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x25, 0x14, 0x16, + 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x03, 0x62, 0x2c, 0x4e, 0x6c, 0x40, 0x4a, 0x74, + 0x50, 0x2a, 0x2c, 0x4e, 0x6c, 0x41, 0x4a, 0x73, 0x51, 0x29, 0xfe, 0x34, + 0x18, 0x2b, 0x39, 0x21, 0x2e, 0x45, 0x15, 0xfe, 0xdc, 0x01, 0x01, 0x3a, + 0x18, 0x2a, 0x3a, 0x21, 0x2e, 0x45, 0x13, 0x01, 0x22, 0x01, 0x02, 0x1d, + 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x84, 0x69, 0x98, 0x60, 0x2d, 0x37, 0x68, 0x97, 0x60, + 0x69, 0x97, 0x61, 0x2d, 0x37, 0x68, 0x97, 0x5d, 0x49, 0x6a, 0x46, 0x22, + 0x39, 0x3b, 0xd2, 0x0a, 0x15, 0x0a, 0x48, 0x6b, 0x45, 0x23, 0x38, 0x3a, + 0xd1, 0x09, 0x15, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x0a, 0x00, 0x1e, 0x00, 0x4e, 0x40, 0x1a, 0x04, 0x02, + 0x08, 0x08, 0x0a, 0x00, 0x00, 0x15, 0x06, 0x05, 0x05, 0x0a, 0x0a, 0x0b, + 0x02, 0x09, 0x90, 0x0a, 0x0a, 0x1a, 0x44, 0x05, 0x06, 0x06, 0x07, 0x04, + 0xb8, 0xff, 0xc0, 0xb3, 0x1b, 0x23, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb5, + 0x10, 0x14, 0x48, 0x04, 0x04, 0x10, 0x00, 0x2f, 0x33, 0x2f, 0x2b, 0x2b, + 0x33, 0x33, 0x2f, 0x33, 0x3f, 0x33, 0x2f, 0xe6, 0x32, 0x01, 0x2f, 0x33, + 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x11, 0x12, 0x39, 0x2f, 0xc6, 0x33, + 0x31, 0x30, 0x25, 0x35, 0x23, 0x11, 0x23, 0x07, 0x17, 0x37, 0x11, 0x23, + 0x15, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x03, 0x46, 0xaa, 0x7a, 0xf7, 0x2f, 0xad, + 0xc6, 0xfe, 0xbf, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0xad, 0x81, 0x02, 0x8e, 0x83, + 0x76, 0x5f, 0xfe, 0x0c, 0x81, 0x01, 0x70, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x00, 0x02, + 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x20, 0x00, 0x34, + 0x00, 0x51, 0x40, 0x1c, 0x00, 0x00, 0x2b, 0x11, 0x10, 0x10, 0x02, 0x20, + 0x20, 0x21, 0x03, 0x14, 0x20, 0x1e, 0x0d, 0x1f, 0x02, 0x90, 0x20, 0x20, + 0x30, 0x44, 0x11, 0x11, 0x14, 0x90, 0x10, 0x0d, 0xb8, 0xff, 0xc0, 0xb3, + 0x1b, 0x25, 0x48, 0x0d, 0xb8, 0xff, 0xc0, 0xb5, 0x10, 0x16, 0x48, 0x0d, + 0x0d, 0x26, 0x00, 0x2f, 0x33, 0x2f, 0x2b, 0x2b, 0x33, 0xe6, 0x32, 0x2f, + 0x3f, 0x33, 0x2f, 0xe6, 0x32, 0x11, 0x39, 0x11, 0x12, 0x39, 0x01, 0x2f, + 0x33, 0x2f, 0x33, 0x33, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x31, 0x30, 0x25, + 0x35, 0x21, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, + 0x07, 0x17, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x07, 0x07, 0x15, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x03, 0x43, 0xfe, 0xb8, 0x71, + 0x2d, 0x46, 0x2f, 0x19, 0x24, 0x42, 0x5d, 0x39, 0x4a, 0x7f, 0x32, 0x4d, + 0x23, 0x4e, 0x2e, 0x1b, 0x29, 0x1c, 0x0e, 0x0b, 0x22, 0x3e, 0x34, 0xb8, + 0xfe, 0xcd, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0xaf, 0x86, 0x6c, 0x2a, 0x4c, 0x4c, + 0x51, 0x2e, 0x38, 0x56, 0x39, 0x1d, 0x39, 0x2f, 0x62, 0x21, 0x28, 0x11, + 0x1e, 0x28, 0x16, 0x1a, 0x32, 0x3b, 0x4b, 0x34, 0xb8, 0x6b, 0x01, 0x6e, + 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x00, 0x00, 0x02, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x64, 0x40, 0x28, 0x05, 0x19, + 0x08, 0x08, 0x26, 0x00, 0x00, 0x43, 0x20, 0x20, 0x2e, 0x13, 0x13, 0x2e, + 0x2e, 0x39, 0x05, 0x20, 0x90, 0x10, 0x1f, 0x20, 0x1f, 0x02, 0x1f, 0x1f, + 0x0d, 0x2e, 0x2b, 0x90, 0x2f, 0x34, 0x34, 0x48, 0x44, 0x13, 0x16, 0x90, + 0x12, 0x0d, 0xb8, 0xff, 0xc0, 0xb3, 0x1d, 0x24, 0x48, 0x0d, 0xb8, 0xff, + 0xc0, 0xb5, 0x12, 0x15, 0x48, 0x0d, 0x0d, 0x3e, 0x00, 0x2f, 0x33, 0x2f, + 0x2b, 0x2b, 0x33, 0xe6, 0x32, 0x3f, 0x33, 0x2f, 0x33, 0xe6, 0x32, 0x11, + 0x39, 0x2f, 0x72, 0xe6, 0x39, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x11, + 0x33, 0x2f, 0x2f, 0x33, 0x2f, 0xc6, 0x33, 0x10, 0xc6, 0x32, 0x31, 0x30, + 0x01, 0x34, 0x2e, 0x02, 0x27, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x07, 0x15, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x23, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x15, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, + 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x03, 0x5f, 0x18, 0x2b, 0x3d, 0x25, 0x3a, 0x41, + 0x21, 0x42, 0x61, 0x41, 0x1a, 0x32, 0x31, 0x31, 0x1b, 0x30, 0x5b, 0x2e, + 0x41, 0x3e, 0x0f, 0x25, 0x3d, 0x2e, 0x50, 0x57, 0x31, 0x48, 0x2e, 0x17, + 0x16, 0x2e, 0x48, 0x31, 0x33, 0x5d, 0x26, 0x11, 0x2a, 0x2c, 0x2c, 0x15, + 0x5b, 0x86, 0x59, 0x2b, 0xfc, 0xa1, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x01, 0x98, + 0x25, 0x3b, 0x2e, 0x1d, 0x06, 0x17, 0x58, 0x47, 0x2c, 0x49, 0x32, 0x1c, + 0x04, 0x08, 0x0c, 0x09, 0x7a, 0x0f, 0x12, 0x32, 0x2f, 0x17, 0x2b, 0x1f, + 0x12, 0x6f, 0x10, 0x1d, 0x2a, 0x19, 0x1d, 0x2f, 0x1f, 0x11, 0x09, 0x07, + 0x7e, 0x03, 0x04, 0x03, 0x02, 0x23, 0x41, 0x5c, 0xbe, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, + 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x0a, + 0x00, 0x0d, 0x00, 0x21, 0x00, 0x4e, 0x40, 0x1a, 0x02, 0x09, 0x0b, 0x04, + 0x08, 0x08, 0x06, 0x00, 0x00, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x0e, 0x02, + 0x0c, 0x90, 0x0a, 0x06, 0x08, 0x08, 0x1d, 0x44, 0x0d, 0x04, 0xb8, 0xff, + 0xc0, 0xb3, 0x1b, 0x21, 0x48, 0x04, 0xb8, 0xff, 0xc0, 0xb5, 0x10, 0x14, + 0x48, 0x04, 0x04, 0x13, 0x00, 0x2f, 0x33, 0x2f, 0x2b, 0x2b, 0x33, 0x3f, + 0x33, 0x2f, 0xdd, 0x32, 0xe6, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, + 0x2f, 0x33, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xc6, 0x32, 0x31, 0x30, + 0x01, 0x35, 0x23, 0x11, 0x23, 0x01, 0x15, 0x21, 0x15, 0x33, 0x35, 0x27, + 0x23, 0x13, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x03, 0x4a, 0x76, 0xc8, 0xfe, 0xd0, + 0x01, 0x6a, 0x8e, 0x8c, 0xdd, 0xdd, 0xfd, 0xb8, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x01, 0x49, 0x80, 0x01, 0xeb, 0xfe, 0x11, 0x7c, 0x9e, 0x9e, 0x80, 0x01, + 0x5f, 0xfe, 0xf5, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x00, 0x02, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x5b, 0x40, 0x2d, + 0x0f, 0x00, 0x00, 0x08, 0x2a, 0x06, 0x0b, 0x0b, 0x16, 0x16, 0x20, 0x15, + 0x12, 0x90, 0x1b, 0x0b, 0x90, 0x40, 0x06, 0x50, 0x06, 0xd0, 0x06, 0x03, + 0xf0, 0x06, 0x01, 0x06, 0x06, 0x25, 0x16, 0x1b, 0x1b, 0x2f, 0x44, 0x07, + 0x90, 0x90, 0x0a, 0xa0, 0x0a, 0xb0, 0x0a, 0x03, 0x0a, 0xb8, 0xff, 0xc0, + 0xb5, 0x1d, 0x21, 0x48, 0x0a, 0x0a, 0x25, 0x00, 0x2f, 0x33, 0x2f, 0x2b, + 0x5d, 0xe6, 0x3f, 0x33, 0x2f, 0x33, 0x12, 0x39, 0x2f, 0x5d, 0x71, 0xe6, + 0x10, 0xe6, 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0xc6, 0x2f, 0x33, + 0x33, 0x2f, 0xc6, 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x23, 0x35, + 0x21, 0x35, 0x21, 0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, + 0x26, 0x27, 0x15, 0x1e, 0x03, 0x33, 0x32, 0x3e, 0x02, 0x25, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x03, 0x4c, 0x32, 0x52, 0x6d, 0x3b, 0x38, 0x01, 0x39, 0xfe, 0x3f, + 0x99, 0x61, 0x57, 0x5e, 0x59, 0x2e, 0x58, 0x22, 0x11, 0x29, 0x2b, 0x29, + 0x13, 0x4a, 0x7e, 0x5d, 0x34, 0xfc, 0xb4, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x01, + 0xa3, 0x45, 0x5b, 0x35, 0x15, 0x9e, 0x89, 0xfe, 0x63, 0x3e, 0x3f, 0x3c, + 0x45, 0x0a, 0x09, 0x7f, 0x03, 0x05, 0x04, 0x02, 0x22, 0x43, 0x61, 0xb8, + 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x47, 0x00, 0x55, 0x40, 0x28, + 0x20, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x3e, 0x08, 0x2a, 0x18, 0x18, 0x34, + 0x2a, 0x2f, 0x90, 0x08, 0x20, 0x05, 0x30, 0x05, 0x02, 0x05, 0x05, 0x11, + 0x25, 0x90, 0x1b, 0x1b, 0x43, 0x44, 0x0e, 0x90, 0x90, 0x11, 0xa0, 0x11, + 0xb0, 0x11, 0x03, 0x11, 0xb8, 0xff, 0xc0, 0xb5, 0x1d, 0x21, 0x48, 0x11, + 0x11, 0x39, 0x00, 0x2f, 0x33, 0x2f, 0x2b, 0x5d, 0xe6, 0x3f, 0x33, 0x2f, + 0xe6, 0x11, 0x39, 0x2f, 0x5d, 0x33, 0xe6, 0x32, 0x01, 0x2f, 0x33, 0x2f, + 0xc6, 0x32, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xc6, 0x31, 0x30, 0x01, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x37, 0x3e, 0x03, 0x33, 0x33, + 0x35, 0x23, 0x22, 0x0e, 0x04, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x27, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x3e, 0x03, 0x33, + 0x32, 0x1e, 0x02, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x03, 0x4a, 0x1f, 0x40, 0x5f, + 0x3f, 0x2b, 0x50, 0x1f, 0x02, 0x04, 0x1b, 0x37, 0x57, 0x40, 0x68, 0x59, + 0x53, 0x7d, 0x5b, 0x3e, 0x24, 0x0f, 0x90, 0x88, 0x3e, 0x69, 0x4c, 0x2a, + 0x97, 0x12, 0x20, 0x2f, 0x1c, 0x22, 0x32, 0x22, 0x11, 0x0d, 0x1f, 0x23, + 0x26, 0x13, 0x21, 0x2f, 0x1e, 0x0e, 0xfd, 0x4d, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x01, 0xa3, 0x38, 0x58, 0x3e, 0x21, 0x13, 0x0f, 0x0e, 0x2c, 0x47, 0x30, + 0x1b, 0x7b, 0x1f, 0x37, 0x50, 0x62, 0x74, 0x40, 0xb0, 0xac, 0x25, 0x45, + 0x5f, 0x35, 0x1d, 0x31, 0x23, 0x13, 0x18, 0x34, 0x53, 0x3c, 0x07, 0x0d, + 0x0b, 0x06, 0x12, 0x21, 0x2e, 0x65, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x00, 0x00, 0x02, + 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x06, 0x00, 0x1a, + 0x00, 0x2c, 0x40, 0x14, 0x06, 0x05, 0x05, 0x04, 0x00, 0x00, 0x11, 0x03, + 0x03, 0x07, 0x05, 0x05, 0x16, 0x44, 0x00, 0x03, 0x90, 0x02, 0x02, 0x0c, + 0x00, 0x2f, 0x33, 0x2f, 0xe6, 0x32, 0x3f, 0x33, 0x2f, 0x01, 0x2f, 0x33, + 0x2f, 0x2f, 0x33, 0x2f, 0x33, 0x39, 0x2f, 0x33, 0x31, 0x30, 0x01, 0x35, + 0x21, 0x15, 0x21, 0x01, 0x33, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x03, 0x4e, 0xfd, + 0xe4, 0x01, 0x75, 0xfe, 0xcb, 0xa4, 0xfd, 0xea, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x03, 0x24, 0x7e, 0x8c, 0xfd, 0x83, 0x01, 0x84, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x00, + 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x27, + 0x00, 0x37, 0x00, 0x49, 0x00, 0x5d, 0x00, 0x6d, 0x40, 0x2e, 0x38, 0x14, + 0x00, 0x28, 0x28, 0x0f, 0x33, 0x05, 0x05, 0x3d, 0x23, 0x23, 0x54, 0x2d, + 0x0f, 0x0f, 0x45, 0x19, 0x19, 0x4a, 0x38, 0x28, 0x00, 0x14, 0x66, 0x14, + 0x76, 0x14, 0x02, 0x53, 0x14, 0x01, 0x44, 0x14, 0x01, 0x14, 0x4f, 0x42, + 0x90, 0x1e, 0x1e, 0x59, 0x44, 0x30, 0x90, 0x0a, 0xb8, 0xff, 0xc0, 0xb3, + 0x1d, 0x24, 0x48, 0x0a, 0xb8, 0xff, 0xc0, 0xb5, 0x12, 0x15, 0x48, 0x0a, + 0x0a, 0x4f, 0x00, 0x2f, 0x33, 0x2f, 0x2b, 0x2b, 0xe6, 0x3f, 0x33, 0x2f, + 0xe6, 0x12, 0x39, 0x71, 0x71, 0x71, 0x11, 0x33, 0x33, 0x33, 0x01, 0x2f, + 0x33, 0x2f, 0xc6, 0x33, 0x2f, 0xc6, 0x2f, 0x33, 0x2f, 0xc6, 0x33, 0x2f, + 0xc6, 0x12, 0x39, 0x11, 0x33, 0x33, 0x33, 0x31, 0x30, 0x01, 0x3e, 0x03, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, + 0x17, 0x0e, 0x03, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x27, 0x2e, 0x03, 0x35, 0x34, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0x1e, 0x03, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x02, 0xb4, + 0x1b, 0x2f, 0x23, 0x14, 0x22, 0x41, 0x5f, 0x3c, 0x42, 0x63, 0x41, 0x20, + 0x15, 0x23, 0x2f, 0x1b, 0x1e, 0x35, 0x28, 0x17, 0x23, 0x44, 0x65, 0x41, + 0x3b, 0x66, 0x4b, 0x2b, 0x17, 0x28, 0x35, 0x8f, 0x1b, 0x31, 0x23, 0x15, + 0x3d, 0x38, 0x39, 0x3d, 0x11, 0x1b, 0x26, 0x33, 0x1d, 0x34, 0x27, 0x17, + 0x14, 0x23, 0x2f, 0x1a, 0x3a, 0x46, 0x12, 0x1e, 0x29, 0xfd, 0xf4, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x02, 0x46, 0x11, 0x27, 0x30, 0x3b, 0x25, 0x28, 0x42, + 0x30, 0x19, 0x20, 0x38, 0x4a, 0x2a, 0x25, 0x39, 0x2e, 0x25, 0x10, 0x11, + 0x28, 0x34, 0x3e, 0x28, 0x2c, 0x49, 0x33, 0x1c, 0x1b, 0x37, 0x51, 0x35, + 0x28, 0x40, 0x32, 0x27, 0x48, 0x0d, 0x1a, 0x1f, 0x23, 0x17, 0x2a, 0x29, + 0x28, 0x27, 0x17, 0x26, 0x20, 0x1b, 0x8f, 0x0f, 0x1d, 0x22, 0x28, 0x19, + 0x18, 0x23, 0x17, 0x0a, 0x2f, 0x2d, 0x1a, 0x29, 0x23, 0x1c, 0x2f, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, + 0x00, 0x21, 0x00, 0x33, 0x00, 0x47, 0x00, 0x50, 0x40, 0x1c, 0x12, 0x27, + 0x00, 0x00, 0x3e, 0x2f, 0x0a, 0x1a, 0x1a, 0x0a, 0x0a, 0x34, 0x12, 0x0f, + 0x90, 0x27, 0x2c, 0x2c, 0x05, 0x19, 0x90, 0x1a, 0x1a, 0x43, 0x44, 0x22, + 0x90, 0x05, 0xb8, 0xff, 0xc0, 0xb3, 0x1b, 0x24, 0x48, 0x05, 0xb8, 0xff, + 0xc0, 0xb5, 0x11, 0x15, 0x48, 0x05, 0x05, 0x39, 0x00, 0x2f, 0x33, 0x2f, + 0x2b, 0x2b, 0xe6, 0x3f, 0x33, 0x2f, 0xe6, 0x11, 0x39, 0x2f, 0x33, 0xe6, + 0x32, 0x01, 0x2f, 0x33, 0x2f, 0x33, 0x2f, 0x10, 0xc6, 0x2f, 0x33, 0x2f, + 0xc6, 0x32, 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x37, 0x07, 0x0e, 0x03, 0x23, + 0x23, 0x15, 0x33, 0x32, 0x3e, 0x04, 0x01, 0x32, 0x1e, 0x02, 0x15, 0x0e, + 0x03, 0x23, 0x22, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x01, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x03, 0x60, 0x2b, 0x4b, 0x67, 0x3d, 0x3e, 0x68, 0x4b, 0x2b, 0x25, 0x43, + 0x5d, 0x39, 0x29, 0x51, 0x1f, 0x01, 0x05, 0x1c, 0x39, 0x5e, 0x45, 0x6a, + 0x5a, 0x3a, 0x6d, 0x60, 0x4e, 0x39, 0x1f, 0xfe, 0xdf, 0x26, 0x33, 0x1f, + 0x0e, 0x0d, 0x20, 0x25, 0x24, 0x10, 0x3b, 0x42, 0x11, 0x21, 0x2e, 0xfd, + 0xde, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, + 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, 0x5d, 0x66, 0x89, 0x52, 0x23, 0x26, + 0x43, 0x60, 0x3b, 0x40, 0x5b, 0x39, 0x1a, 0x13, 0x0f, 0x0f, 0x2e, 0x46, + 0x2f, 0x19, 0x7c, 0x0d, 0x24, 0x3e, 0x60, 0x88, 0x01, 0x46, 0x1d, 0x37, + 0x51, 0x35, 0x08, 0x0d, 0x0b, 0x06, 0x3d, 0x3f, 0x1e, 0x30, 0x23, 0x13, + 0xfe, 0xd6, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x00, 0xff, 0xff, 0x00, 0x7b, 0xfe, 0x4d, + 0x03, 0xec, 0x05, 0xae, 0x02, 0x26, 0x01, 0x0b, 0x00, 0x00, 0x00, 0x06, + 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x79, 0xfe, 0x4d, 0x03, 0xee, + 0x05, 0xae, 0x02, 0x26, 0x01, 0x15, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x91, 0xfe, 0x4d, 0x03, 0xf2, 0x03, 0xf8, + 0x02, 0x26, 0x00, 0xca, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x7b, 0xfe, 0x4d, 0x03, 0xec, 0x03, 0xf8, 0x02, 0x26, + 0x01, 0x14, 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x79, 0xfe, 0x4d, 0x03, 0xee, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x1e, + 0x00, 0x00, 0x00, 0x06, 0x02, 0xd7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x7b, + 0xfe, 0x6a, 0x03, 0xfc, 0x03, 0xf8, 0x02, 0x26, 0x01, 0x14, 0x00, 0x00, + 0x00, 0x06, 0x01, 0x55, 0x00, 0x00, 0xff, 0xff, 0x00, 0x79, 0xfe, 0x6a, + 0x03, 0xfc, 0x04, 0x0e, 0x02, 0x26, 0x01, 0x1e, 0x00, 0x00, 0x00, 0x06, + 0x01, 0x55, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x13, 0x00, 0x27, 0x00, 0x33, 0x00, 0x3f, 0x00, 0x53, + 0x00, 0x41, 0x40, 0x20, 0x38, 0x28, 0x1e, 0x2c, 0x14, 0x34, 0x1e, 0x34, + 0x1e, 0x34, 0x00, 0x4a, 0x0a, 0x40, 0x00, 0x37, 0x2b, 0x23, 0x3b, 0x8e, + 0x5f, 0x19, 0x01, 0x19, 0x45, 0x0f, 0x44, 0x2f, 0x8e, 0x23, 0x4f, 0x05, + 0x00, 0x2f, 0xcd, 0xd4, 0xed, 0x3f, 0xcd, 0xd4, 0x5d, 0xed, 0x12, 0x39, + 0x39, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, + 0xcd, 0x33, 0x10, 0xcd, 0x32, 0x31, 0x30, 0x11, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x25, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x05, 0x14, 0x14, 0x17, 0x25, 0x26, 0x26, 0x23, 0x22, + 0x0e, 0x02, 0x05, 0x34, 0x26, 0x35, 0x05, 0x16, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x25, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x02, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, + 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x03, 0x41, 0x25, + 0x48, 0x66, 0x42, 0x3a, 0x60, 0x46, 0x27, 0x26, 0x47, 0x67, 0x42, 0x39, + 0x60, 0x46, 0x27, 0xfe, 0x66, 0x01, 0x01, 0x04, 0x13, 0x3d, 0x29, 0x1d, + 0x33, 0x26, 0x16, 0x01, 0x18, 0x01, 0xfe, 0xfe, 0x11, 0x3d, 0x29, 0x1d, + 0x34, 0x25, 0x16, 0xfd, 0x93, 0x4c, 0x82, 0xb0, 0x63, 0x63, 0xb0, 0x82, + 0x4c, 0x4c, 0x82, 0xb0, 0x63, 0x63, 0xb0, 0x82, 0x4c, 0x02, 0x1d, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x82, 0x55, 0x87, 0x5c, 0x31, 0x28, 0x56, 0x87, 0x5d, 0x56, + 0x86, 0x5d, 0x30, 0x28, 0x55, 0x87, 0x60, 0x0b, 0x13, 0x09, 0xbb, 0x35, + 0x32, 0x1e, 0x3e, 0x5e, 0x43, 0x09, 0x12, 0x08, 0xba, 0x33, 0x32, 0x1f, + 0x3d, 0x60, 0x36, 0x63, 0xb0, 0x82, 0x4b, 0x4b, 0x82, 0xb0, 0x63, 0x63, + 0xb0, 0x82, 0x4b, 0x4b, 0x82, 0xb0, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x0a, 0x00, 0x1e, 0x00, 0x32, 0x00, 0x2a, + 0x40, 0x13, 0x08, 0x02, 0x02, 0x0b, 0x29, 0x15, 0x1f, 0x0b, 0x08, 0x01, + 0x8e, 0x00, 0x24, 0x1a, 0x44, 0x04, 0x06, 0x2e, 0x10, 0x00, 0x2f, 0xcd, + 0xd4, 0xcd, 0x3f, 0xcd, 0xd4, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, + 0x12, 0x39, 0x2f, 0xcd, 0x31, 0x30, 0x25, 0x35, 0x33, 0x11, 0x07, 0x27, + 0x37, 0x33, 0x11, 0x33, 0x15, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x01, 0x5c, 0xb0, 0x98, 0x2c, 0xdc, 0x6c, 0x98, 0xfc, 0xd8, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, + 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0xd5, 0x73, 0x01, 0xbd, + 0x52, 0x67, 0x74, 0xfd, 0xba, 0x73, 0x01, 0x48, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, + 0x4b, 0x83, 0xaf, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x20, 0x00, 0x34, 0x00, 0x48, 0x00, 0x3d, 0x40, 0x1e, + 0x1e, 0x10, 0x01, 0x1f, 0x18, 0x07, 0x01, 0x07, 0x01, 0x07, 0x21, 0x3f, + 0x2b, 0x35, 0x21, 0x01, 0x1e, 0x8e, 0x00, 0x3a, 0x30, 0x44, 0x0c, 0x8e, + 0x70, 0x13, 0x01, 0x13, 0x44, 0x26, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xed, + 0x3f, 0xcd, 0xd4, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x39, + 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x32, 0x11, 0x33, 0x33, 0x31, 0x30, 0x25, + 0x35, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, + 0x27, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x07, 0x21, 0x15, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, + 0x4f, 0xa4, 0x2e, 0x37, 0x1f, 0x09, 0x0c, 0x19, 0x24, 0x18, 0x29, 0x46, + 0x1f, 0x45, 0x2d, 0x71, 0x42, 0x33, 0x52, 0x3b, 0x20, 0x16, 0x2a, 0x3e, + 0x28, 0x65, 0x01, 0x24, 0xfc, 0xdb, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, + 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, + 0xaf, 0x81, 0x4b, 0xd7, 0x5f, 0xa4, 0x2f, 0x42, 0x35, 0x2c, 0x17, 0x14, + 0x24, 0x1a, 0x0f, 0x23, 0x1e, 0x58, 0x2a, 0x32, 0x1a, 0x32, 0x4d, 0x32, + 0x29, 0x48, 0x43, 0x44, 0x25, 0x60, 0x78, 0x01, 0x46, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, + 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, + 0x4b, 0x4b, 0x83, 0xaf, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x38, 0x00, 0x4c, 0x00, 0x60, 0x00, 0x50, 0x40, 0x28, + 0x26, 0x1a, 0x0b, 0x20, 0x34, 0x0b, 0x31, 0x31, 0x0b, 0x00, 0x13, 0x0b, + 0x13, 0x0b, 0x13, 0x39, 0x57, 0x43, 0x4d, 0x39, 0x34, 0x19, 0x8e, 0x1a, + 0x1a, 0x2c, 0x0e, 0x8e, 0x05, 0x52, 0x48, 0x44, 0x23, 0x8e, 0x70, 0x2c, + 0x01, 0x2c, 0x5c, 0x3e, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xed, 0x3f, 0xcd, + 0xd4, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, + 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x11, 0x39, 0x2f, 0x12, 0x39, + 0xcd, 0x11, 0x33, 0x33, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x26, + 0x23, 0x22, 0x06, 0x07, 0x35, 0x3e, 0x03, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x06, 0x07, 0x1e, 0x03, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x03, 0x3e, 0x26, 0x4f, 0x78, 0x51, 0x12, 0x28, 0x27, 0x25, 0x0f, + 0x22, 0x52, 0x2e, 0x2b, 0x40, 0x29, 0x14, 0x15, 0x28, 0x41, 0x2b, 0x4e, + 0x48, 0x29, 0x36, 0x21, 0x0d, 0x37, 0x3a, 0x29, 0x51, 0x2b, 0x18, 0x2c, + 0x2c, 0x2c, 0x17, 0x3a, 0x57, 0x3a, 0x1e, 0x3a, 0x34, 0x21, 0x36, 0x27, + 0x15, 0xfc, 0xc2, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, + 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, + 0x01, 0xa7, 0x33, 0x52, 0x3a, 0x1f, 0x02, 0x02, 0x04, 0x03, 0x70, 0x06, + 0x08, 0x0f, 0x1b, 0x2a, 0x1a, 0x16, 0x26, 0x19, 0x0f, 0x62, 0x10, 0x1c, + 0x26, 0x15, 0x2a, 0x2c, 0x10, 0x0d, 0x6c, 0x08, 0x0b, 0x07, 0x04, 0x19, + 0x2d, 0x41, 0x27, 0x3f, 0x4e, 0x15, 0x05, 0x1a, 0x29, 0x34, 0x55, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, + 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x21, 0x00, 0x35, + 0x00, 0x42, 0x40, 0x1f, 0x0d, 0x06, 0x00, 0x03, 0x0c, 0x05, 0x03, 0x05, + 0x03, 0x05, 0x0e, 0x2c, 0x18, 0x22, 0x0e, 0x08, 0x05, 0x0d, 0x8e, 0x00, + 0x03, 0x03, 0x06, 0x02, 0x27, 0x1d, 0x44, 0x0b, 0x06, 0x31, 0x13, 0x00, + 0x2f, 0xcd, 0xc4, 0x32, 0x3f, 0xcd, 0xc4, 0x11, 0x39, 0x2f, 0x33, 0xed, + 0x32, 0x32, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x11, 0x39, 0x39, 0x2f, 0x2f, + 0x10, 0xcd, 0x10, 0xcd, 0x33, 0x33, 0x31, 0x30, 0x01, 0x15, 0x23, 0x35, + 0x21, 0x35, 0x01, 0x33, 0x11, 0x33, 0x15, 0x03, 0x03, 0x33, 0x25, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x02, 0xc2, 0x7e, 0xfe, 0xbe, 0x01, + 0x0e, 0xb2, 0x69, 0xe5, 0xc5, 0xc5, 0xfd, 0xba, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0x60, 0x8c, 0x8c, 0x6f, 0x01, 0xb8, + 0xfe, 0x4b, 0x72, 0x01, 0xab, 0xfe, 0xc7, 0x4b, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, + 0x4b, 0x83, 0xaf, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x47, 0x00, 0x42, 0x40, 0x20, + 0x19, 0x16, 0x0b, 0x16, 0x18, 0x00, 0x11, 0x16, 0x11, 0x16, 0x11, 0x20, + 0x3e, 0x2a, 0x34, 0x20, 0x14, 0x8e, 0x1b, 0x1b, 0x16, 0x0e, 0x8e, 0x05, + 0x39, 0x2f, 0x44, 0x19, 0x8e, 0x16, 0x43, 0x25, 0x00, 0x2f, 0xcd, 0xd4, + 0xed, 0x3f, 0xcd, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, 0xcd, + 0x2f, 0xcd, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x32, 0x11, 0x33, + 0x10, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, 0x23, + 0x11, 0x21, 0x15, 0x21, 0x15, 0x33, 0x32, 0x1e, 0x02, 0x25, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x23, 0x2e, 0x53, 0x70, 0x42, 0x11, + 0x24, 0x27, 0x24, 0x0f, 0x1e, 0x4e, 0x29, 0x4f, 0x54, 0x4d, 0x57, 0x88, + 0x01, 0x90, 0xfe, 0xe9, 0x32, 0x35, 0x61, 0x49, 0x2c, 0xfc, 0xdd, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, + 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xb0, 0x37, 0x56, + 0x3c, 0x1e, 0x02, 0x03, 0x05, 0x02, 0x71, 0x08, 0x08, 0x3d, 0x35, 0x38, + 0x38, 0x01, 0x6f, 0x7a, 0x8c, 0x13, 0x2f, 0x51, 0x2f, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, + 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, + 0x4b, 0x4b, 0x83, 0xaf, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x1f, 0x00, 0x33, 0x00, 0x47, 0x00, 0x5b, 0x00, 0x40, + 0x40, 0x1f, 0x18, 0x2a, 0x08, 0x11, 0x00, 0x20, 0x08, 0x20, 0x08, 0x20, + 0x34, 0x52, 0x3e, 0x48, 0x34, 0x25, 0x8e, 0x1b, 0x1b, 0x0f, 0x2f, 0x8e, + 0x05, 0x4d, 0x43, 0x44, 0x12, 0x8e, 0x0f, 0x57, 0x39, 0x00, 0x2f, 0xcd, + 0xd4, 0xed, 0x3f, 0xcd, 0xd4, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x01, 0x2f, + 0xcd, 0x2f, 0xcd, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x32, 0x10, + 0xcd, 0x32, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x35, + 0x34, 0x3e, 0x04, 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, 0x02, 0x07, 0x07, + 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x0e, 0x02, 0x07, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x25, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x21, 0x25, 0x44, 0x5d, 0x37, + 0x79, 0x81, 0x0e, 0x20, 0x37, 0x51, 0x6f, 0x4a, 0x4f, 0x5c, 0x39, 0x4e, + 0x31, 0x18, 0x03, 0x02, 0x1c, 0x47, 0x26, 0x38, 0x55, 0x39, 0x1b, 0x86, + 0x0d, 0x1a, 0x2a, 0x1d, 0x11, 0x22, 0x1f, 0x1c, 0x0b, 0x0f, 0x1e, 0x2c, + 0x1f, 0x19, 0x29, 0x1d, 0x10, 0xfd, 0x65, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, + 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, + 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xb0, 0x34, 0x55, 0x3d, 0x21, 0x99, 0x9d, + 0x39, 0x67, 0x57, 0x47, 0x31, 0x1c, 0x6e, 0x18, 0x2a, 0x3f, 0x28, 0x0c, + 0x0d, 0x11, 0x1d, 0x37, 0x4f, 0x37, 0x18, 0x29, 0x1d, 0x10, 0x05, 0x0a, + 0x0b, 0x06, 0x36, 0x4a, 0x2e, 0x15, 0x10, 0x20, 0x2b, 0x8c, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, + 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x2e, 0x00, 0x3e, + 0x40, 0x20, 0x00, 0x01, 0x06, 0x02, 0x04, 0x01, 0x02, 0x02, 0x01, 0x04, + 0x03, 0x07, 0x25, 0x11, 0x1b, 0x07, 0x20, 0x5f, 0x00, 0x01, 0x00, 0x16, + 0x44, 0x06, 0x03, 0x8e, 0x6f, 0x04, 0x01, 0x04, 0x2a, 0x0c, 0x00, 0x2f, + 0xcd, 0xd4, 0x5d, 0xed, 0x32, 0x3f, 0xc4, 0x5d, 0xcd, 0x01, 0x2f, 0xcd, + 0x2f, 0xcd, 0x11, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x10, 0xcd, + 0x31, 0x30, 0x25, 0x23, 0x01, 0x21, 0x35, 0x21, 0x15, 0x05, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x02, 0x02, 0x19, 0x92, 0x01, 0x13, 0xfe, 0xb4, + 0x01, 0xe1, 0xfc, 0xd1, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, + 0x4b, 0xc4, 0x02, 0x37, 0x7c, 0x70, 0xea, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, + 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, + 0x83, 0xaf, 0x00, 0x05, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, + 0x00, 0x27, 0x00, 0x37, 0x00, 0x49, 0x00, 0x5d, 0x00, 0x71, 0x00, 0x5c, + 0x40, 0x2e, 0x3d, 0x0f, 0x33, 0x19, 0x2d, 0x23, 0x14, 0x00, 0x23, 0x19, + 0x23, 0x19, 0x23, 0x0f, 0x05, 0x45, 0x0f, 0x45, 0x0f, 0x45, 0x4a, 0x68, + 0x54, 0x5e, 0x4a, 0x14, 0x00, 0x38, 0x8e, 0x28, 0x28, 0x1e, 0x40, 0x8e, + 0x0a, 0x63, 0x59, 0x44, 0x30, 0x8e, 0x70, 0x1e, 0x01, 0x1e, 0x6d, 0x4f, + 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xed, 0x3f, 0xcd, 0xd4, 0xed, 0x11, 0x39, + 0x2f, 0xed, 0x39, 0x39, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x39, 0x39, + 0x2f, 0x2f, 0x10, 0xcd, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x12, 0x39, 0x39, + 0x10, 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x31, 0x30, 0x01, 0x1e, 0x03, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x37, + 0x2e, 0x03, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x27, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x15, + 0x14, 0x1e, 0x02, 0x07, 0x0e, 0x03, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x34, 0x2e, 0x02, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x02, 0xa6, 0x1a, 0x2f, 0x23, 0x15, 0x26, 0x43, 0x5b, 0x34, 0x3a, + 0x5a, 0x3d, 0x1f, 0x15, 0x23, 0x2f, 0x1b, 0x18, 0x2a, 0x1f, 0x13, 0x1d, + 0x3a, 0x58, 0x3b, 0x35, 0x55, 0x39, 0x1f, 0x12, 0x1f, 0x2a, 0x7e, 0x13, + 0x22, 0x18, 0x0f, 0x36, 0x33, 0x32, 0x36, 0x13, 0x1f, 0x2b, 0x02, 0x16, + 0x24, 0x1b, 0x10, 0x3e, 0x34, 0x17, 0x2a, 0x1f, 0x12, 0x15, 0x22, 0x2f, + 0xfd, 0xc1, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, + 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x02, + 0x41, 0x0e, 0x22, 0x2d, 0x39, 0x24, 0x2f, 0x48, 0x31, 0x18, 0x19, 0x2e, + 0x41, 0x27, 0x23, 0x37, 0x2f, 0x23, 0x0f, 0x0f, 0x21, 0x29, 0x32, 0x21, + 0x26, 0x42, 0x31, 0x1d, 0x16, 0x2b, 0x3b, 0x23, 0x21, 0x35, 0x2b, 0x22, + 0x22, 0x0b, 0x18, 0x1d, 0x21, 0x15, 0x23, 0x23, 0x24, 0x26, 0x14, 0x1f, + 0x1c, 0x17, 0x80, 0x0c, 0x19, 0x1f, 0x24, 0x18, 0x28, 0x29, 0x08, 0x15, + 0x1f, 0x15, 0x17, 0x23, 0x1f, 0x19, 0x2c, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, + 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, + 0x83, 0xaf, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, + 0x00, 0x21, 0x00, 0x33, 0x00, 0x47, 0x00, 0x5b, 0x00, 0x46, 0x40, 0x23, + 0x27, 0x18, 0x09, 0x18, 0x10, 0x00, 0x2f, 0x18, 0x2f, 0x18, 0x2f, 0x34, + 0x52, 0x3e, 0x48, 0x34, 0x13, 0x8e, 0x2a, 0x2a, 0x1d, 0x0a, 0x8e, 0x07, + 0x4d, 0x43, 0x44, 0x22, 0x8e, 0x70, 0x1d, 0x01, 0x1d, 0x57, 0x39, 0x00, + 0x2f, 0xcd, 0xd4, 0x5d, 0xed, 0x3f, 0xcd, 0xd4, 0xed, 0x11, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, + 0xcd, 0x33, 0x11, 0x33, 0x10, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x04, + 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x35, 0x06, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x25, + 0x22, 0x0e, 0x02, 0x15, 0x14, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x37, 0x34, + 0x2e, 0x02, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x03, 0x3f, + 0x1c, 0x32, 0x46, 0x55, 0x61, 0x34, 0x50, 0x5e, 0x3e, 0x53, 0x33, 0x19, + 0x05, 0x1b, 0x48, 0x25, 0x33, 0x52, 0x3c, 0x21, 0x26, 0x43, 0x5d, 0x37, + 0x36, 0x5c, 0x43, 0x26, 0xfe, 0xff, 0x1a, 0x29, 0x1d, 0x10, 0x3b, 0x35, + 0x0e, 0x20, 0x21, 0x1c, 0x0c, 0x0d, 0x1b, 0x2d, 0xfd, 0xa0, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, + 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x02, 0x56, 0x52, 0x79, 0x55, + 0x38, 0x20, 0x0b, 0x6e, 0x16, 0x2a, 0x3f, 0x28, 0x0e, 0x0e, 0x10, 0x17, + 0x32, 0x51, 0x39, 0x35, 0x55, 0x3c, 0x22, 0x1f, 0x49, 0x7a, 0x75, 0x11, + 0x1f, 0x2b, 0x1a, 0x38, 0x37, 0x06, 0x0a, 0x0b, 0x07, 0x2f, 0x48, 0x31, + 0x1a, 0xfe, 0xf7, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, + 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0x00, 0x05, + 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x11, 0x00, 0x20, + 0x00, 0x2b, 0x00, 0x3f, 0x00, 0x53, 0x00, 0x50, 0x40, 0x29, 0x2a, 0x24, + 0x19, 0x08, 0x00, 0x12, 0x24, 0x08, 0x12, 0x12, 0x08, 0x24, 0x03, 0x2c, + 0x4a, 0x36, 0x40, 0x2c, 0x2a, 0x23, 0x8e, 0x22, 0x1e, 0x8e, 0x03, 0x03, + 0x22, 0x45, 0x3b, 0x44, 0x17, 0x8e, 0x0d, 0x0d, 0x26, 0x70, 0x28, 0x01, + 0x28, 0x4f, 0x31, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, 0xed, + 0x3f, 0xcd, 0xc4, 0x32, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xcd, + 0x2f, 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x10, 0xcd, + 0x10, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x07, 0x21, 0x35, 0x33, + 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x25, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, + 0x22, 0x0e, 0x02, 0x03, 0x75, 0x4b, 0x55, 0x2a, 0x3b, 0x25, 0x11, 0x13, + 0x28, 0x3c, 0x29, 0x28, 0x3b, 0x26, 0x12, 0x67, 0x07, 0x0e, 0x14, 0x0d, + 0x37, 0x08, 0x0f, 0x14, 0x0c, 0x18, 0x1e, 0xea, 0xfe, 0xe2, 0x64, 0x52, + 0x2d, 0x9d, 0x46, 0x56, 0xfd, 0xdc, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, + 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, + 0xaf, 0x81, 0x4b, 0x02, 0x34, 0xb7, 0xaf, 0x23, 0x53, 0x89, 0x67, 0x67, + 0x89, 0x53, 0x23, 0x23, 0x53, 0x89, 0x6a, 0x4f, 0x67, 0x3c, 0x17, 0xfe, + 0xfd, 0x50, 0x67, 0x3b, 0x17, 0x80, 0xd9, 0x60, 0x01, 0xe0, 0x35, 0x4a, + 0x68, 0xfd, 0xa3, 0xe8, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, + 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0x00, + 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x13, + 0x00, 0x27, 0x00, 0x32, 0x00, 0x3d, 0x00, 0x42, 0x40, 0x20, 0x31, 0x2b, + 0x3c, 0x36, 0x2b, 0x36, 0x2b, 0x36, 0x00, 0x1e, 0x0a, 0x14, 0x00, 0x3c, + 0x36, 0x31, 0x2a, 0x8e, 0x34, 0x29, 0x19, 0x0f, 0x44, 0x38, 0x2d, 0x3a, + 0x70, 0x2f, 0x01, 0x2f, 0x23, 0x05, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0x32, + 0xcd, 0x32, 0x3f, 0xcd, 0xd4, 0x32, 0xed, 0x32, 0x32, 0x32, 0x01, 0x2f, + 0xcd, 0x2f, 0xcd, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x10, 0xcd, + 0x31, 0x30, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, + 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x21, + 0x35, 0x33, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x05, 0x21, 0x35, + 0x33, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, + 0x9d, 0x46, 0x56, 0x01, 0x4b, 0xfe, 0xe2, 0x64, 0x52, 0x2d, 0x9d, 0x46, + 0x56, 0x02, 0x1d, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, + 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0xfe, 0x54, + 0x60, 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, 0xa3, 0x60, 0x60, 0x01, 0xe0, + 0x35, 0x4a, 0x68, 0xfd, 0xa3, 0x00, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x1e, 0x00, 0x32, 0x00, 0x46, 0x00, 0x51, + 0x00, 0x58, 0x40, 0x2d, 0x50, 0x4a, 0x0e, 0x12, 0x00, 0x12, 0x0f, 0x08, + 0x18, 0x4a, 0x12, 0x18, 0x18, 0x12, 0x4a, 0x03, 0x1f, 0x3d, 0x29, 0x33, + 0x1f, 0x50, 0x49, 0x8e, 0x48, 0x12, 0x0e, 0x8e, 0x11, 0x11, 0x48, 0x38, + 0x2e, 0x44, 0x1b, 0x8e, 0x03, 0x03, 0x4c, 0x70, 0x4e, 0x01, 0x4e, 0x42, + 0x24, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, 0xed, 0x3f, 0xcd, + 0xc4, 0x32, 0x2f, 0xed, 0x32, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x2f, + 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x32, 0x11, 0x33, + 0x10, 0xcd, 0x10, 0xcd, 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x33, 0x15, 0x21, 0x35, 0x37, + 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x05, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, + 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x21, 0x35, 0x33, 0x11, 0x07, 0x27, + 0x37, 0x33, 0x11, 0x33, 0x02, 0x42, 0x1a, 0x47, 0x24, 0x21, 0x3a, 0x2a, + 0x19, 0x0b, 0x15, 0x1f, 0x14, 0x6e, 0xb7, 0xfe, 0xde, 0x6c, 0x1d, 0x24, + 0x13, 0x06, 0x1e, 0x23, 0x17, 0x27, 0x14, 0xfd, 0x94, 0x59, 0x99, 0xcd, + 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, + 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, + 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, + 0x2d, 0x9d, 0x46, 0x56, 0x03, 0x67, 0x18, 0x1b, 0x14, 0x29, 0x40, 0x2c, + 0x22, 0x3d, 0x3c, 0x3d, 0x23, 0xc1, 0x60, 0x5b, 0xbf, 0x34, 0x49, 0x39, + 0x2f, 0x1b, 0x23, 0x28, 0x12, 0x0d, 0xfe, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, + 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, + 0x83, 0xaf, 0xfe, 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, 0xa3, + 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x28, + 0x00, 0x3c, 0x00, 0x50, 0x00, 0x5b, 0x00, 0x63, 0x40, 0x33, 0x5a, 0x54, + 0x1c, 0x11, 0x09, 0x16, 0x23, 0x23, 0x00, 0x0e, 0x54, 0x09, 0x0e, 0x0e, + 0x09, 0x54, 0x03, 0x29, 0x47, 0x33, 0x3d, 0x29, 0x5a, 0x53, 0x8e, 0x52, + 0x26, 0x11, 0x8e, 0x12, 0x12, 0x20, 0x0b, 0x8e, 0x05, 0x05, 0x52, 0x42, + 0x38, 0x44, 0x19, 0x8e, 0x20, 0x20, 0x56, 0x70, 0x58, 0x01, 0x58, 0x4c, + 0x2e, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, 0xed, 0x3f, 0xcd, + 0xc4, 0x32, 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, 0x10, 0xed, 0x32, + 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, + 0xcd, 0x32, 0x2f, 0xcd, 0x11, 0x33, 0x33, 0x10, 0xcd, 0x31, 0x30, 0x01, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x33, 0x32, 0x36, + 0x35, 0x34, 0x23, 0x23, 0x35, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x35, 0x36, 0x36, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, + 0x07, 0x16, 0x16, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, + 0x21, 0x35, 0x33, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x03, 0x6f, + 0x17, 0x30, 0x4b, 0x33, 0x1c, 0x2e, 0x17, 0x26, 0x2c, 0x3b, 0x32, 0x64, + 0x37, 0x33, 0x28, 0x30, 0x23, 0x21, 0x17, 0x2f, 0x1c, 0x1a, 0x3a, 0x1e, + 0x4b, 0x50, 0x24, 0x28, 0x2a, 0x32, 0xfc, 0x91, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, + 0x9d, 0x46, 0x56, 0x01, 0xa4, 0x30, 0x4f, 0x3a, 0x20, 0x04, 0x05, 0x63, + 0x0c, 0x3f, 0x39, 0x68, 0x5c, 0x3d, 0x34, 0x34, 0x2b, 0x0d, 0x0e, 0x61, + 0x0c, 0x0e, 0x5c, 0x51, 0x3c, 0x4d, 0x1e, 0x11, 0x4c, 0x37, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, + 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0xfe, 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, + 0x68, 0xfd, 0xa3, 0x00, 0x00, 0x05, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x0a, 0x00, 0x0d, 0x00, 0x21, 0x00, 0x35, 0x00, 0x40, + 0x00, 0x5f, 0x40, 0x30, 0x3f, 0x39, 0x0c, 0x06, 0x0d, 0x07, 0x01, 0x04, + 0x39, 0x06, 0x04, 0x04, 0x06, 0x39, 0x03, 0x0e, 0x2c, 0x18, 0x22, 0x0e, + 0x3f, 0x38, 0x8e, 0x37, 0x01, 0x04, 0x8e, 0x09, 0x06, 0x0d, 0x0d, 0x07, + 0x03, 0x03, 0x37, 0x27, 0x1d, 0x44, 0x0b, 0x07, 0x07, 0x3b, 0x70, 0x3d, + 0x01, 0x3d, 0x31, 0x13, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, + 0x33, 0x3f, 0xcd, 0xc4, 0x32, 0x2f, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xed, + 0x32, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x17, 0x39, + 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x33, 0x33, 0x10, 0xcd, 0x10, 0xcd, 0x31, + 0x30, 0x01, 0x23, 0x15, 0x23, 0x35, 0x23, 0x35, 0x13, 0x33, 0x11, 0x33, + 0x03, 0x03, 0x33, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, + 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, + 0x21, 0x35, 0x33, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x03, 0x89, + 0x4f, 0x5d, 0xcb, 0xaa, 0x7e, 0x4f, 0xac, 0x6b, 0x6b, 0xfd, 0x23, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, + 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, + 0x64, 0x52, 0x2d, 0x9d, 0x46, 0x56, 0x01, 0x70, 0x9b, 0x9b, 0x54, 0x01, + 0xce, 0xfe, 0x3b, 0x01, 0x2d, 0xfe, 0xd3, 0x50, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, + 0x4b, 0x83, 0xaf, 0xfe, 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, + 0xa3, 0x00, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, + 0x00, 0x1c, 0x00, 0x30, 0x00, 0x44, 0x00, 0x4f, 0x00, 0x5f, 0x40, 0x31, + 0x4e, 0x48, 0x17, 0x14, 0x09, 0x14, 0x16, 0x00, 0x0f, 0x48, 0x14, 0x0f, + 0x0f, 0x14, 0x48, 0x03, 0x1d, 0x3b, 0x27, 0x31, 0x1d, 0x4e, 0x47, 0x8e, + 0x46, 0x12, 0x8e, 0x18, 0x18, 0x14, 0x0c, 0x8e, 0x05, 0x05, 0x46, 0x36, + 0x2c, 0x44, 0x17, 0x8e, 0x14, 0x14, 0x4a, 0x70, 0x4c, 0x01, 0x4c, 0x40, + 0x22, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, 0xed, 0x3f, 0xcd, + 0xc4, 0x32, 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, + 0x32, 0x11, 0x33, 0x10, 0xcd, 0x10, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x26, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, + 0x34, 0x26, 0x23, 0x23, 0x11, 0x33, 0x15, 0x23, 0x15, 0x32, 0x1e, 0x02, + 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x21, 0x35, 0x33, + 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x03, 0x58, 0x17, 0x2f, 0x48, + 0x32, 0x16, 0x2c, 0x12, 0x11, 0x23, 0x13, 0x34, 0x32, 0x38, 0x3b, 0x34, + 0xf7, 0x93, 0x22, 0x3e, 0x2e, 0x1c, 0xfc, 0xa8, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, + 0x9d, 0x46, 0x56, 0x01, 0xb6, 0x34, 0x55, 0x3d, 0x22, 0x04, 0x03, 0x63, + 0x05, 0x05, 0x47, 0x3c, 0x42, 0x30, 0x01, 0x6f, 0x60, 0xb3, 0x16, 0x30, + 0x4c, 0x30, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, + 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0xfe, 0x54, 0x60, + 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, 0xa3, 0x00, 0x00, 0x05, 0x00, 0x00, + 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x1d, 0x00, 0x29, 0x00, 0x3d, + 0x00, 0x51, 0x00, 0x5c, 0x00, 0x5d, 0x40, 0x30, 0x5b, 0x55, 0x17, 0x24, + 0x0a, 0x10, 0x00, 0x1e, 0x55, 0x0a, 0x1e, 0x1e, 0x0a, 0x55, 0x03, 0x2a, + 0x48, 0x34, 0x3e, 0x2a, 0x5b, 0x54, 0x8e, 0x53, 0x21, 0x8e, 0x1b, 0x1b, + 0x10, 0x27, 0x8e, 0x05, 0x05, 0x53, 0x43, 0x39, 0x44, 0x11, 0x8e, 0x10, + 0x10, 0x57, 0x70, 0x59, 0x01, 0x59, 0x4d, 0x2f, 0x00, 0x2f, 0xcd, 0xd4, + 0x5d, 0xcd, 0x33, 0x2f, 0xed, 0x3f, 0xcd, 0xc4, 0x32, 0x2f, 0xed, 0x11, + 0x39, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, + 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x32, 0x10, 0xcd, 0x32, 0x10, + 0xcd, 0x31, 0x30, 0x01, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x35, + 0x34, 0x3e, 0x02, 0x33, 0x33, 0x15, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x15, + 0x36, 0x36, 0x33, 0x32, 0x16, 0x07, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, + 0x06, 0x16, 0x33, 0x32, 0x36, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, + 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, + 0x02, 0x01, 0x21, 0x35, 0x33, 0x11, 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, + 0x03, 0x74, 0x17, 0x29, 0x3a, 0x23, 0x25, 0x3b, 0x28, 0x15, 0x19, 0x3c, + 0x62, 0x48, 0x07, 0x0a, 0x23, 0x37, 0x27, 0x14, 0x11, 0x2a, 0x1a, 0x3a, + 0x44, 0x65, 0x18, 0x1b, 0x0f, 0x21, 0x0b, 0x01, 0x1d, 0x1c, 0x17, 0x1f, + 0xfc, 0xf1, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, + 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, + 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, 0x9d, 0x46, 0x56, 0x01, 0xb8, 0x36, + 0x56, 0x3d, 0x21, 0x1e, 0x48, 0x79, 0x5c, 0x59, 0x93, 0x6a, 0x3a, 0x60, + 0x22, 0x3a, 0x4e, 0x2d, 0x07, 0x14, 0x1a, 0x69, 0x6e, 0x3a, 0x3f, 0x14, + 0x0e, 0x78, 0x63, 0x45, 0xaa, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, + 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, + 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, + 0xfe, 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, 0xa3, 0x00, 0x04, + 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x06, 0x00, 0x1a, + 0x00, 0x2e, 0x00, 0x39, 0x00, 0x52, 0x40, 0x2a, 0x38, 0x32, 0x01, 0x02, + 0x00, 0x03, 0x32, 0x04, 0x02, 0x03, 0x03, 0x02, 0x04, 0x32, 0x04, 0x07, + 0x25, 0x11, 0x1b, 0x07, 0x38, 0x31, 0x8e, 0x30, 0x02, 0x02, 0x30, 0x20, + 0x16, 0x44, 0x00, 0x04, 0x8e, 0x05, 0x05, 0x34, 0x70, 0x36, 0x01, 0x36, + 0x2a, 0x0c, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, 0xed, 0x32, + 0x3f, 0xcd, 0xc4, 0x32, 0x2f, 0x10, 0xed, 0x32, 0x01, 0x2f, 0xcd, 0x2f, + 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x10, 0xcd, 0x10, 0xcd, + 0x10, 0xcd, 0x31, 0x30, 0x01, 0x03, 0x23, 0x13, 0x23, 0x35, 0x21, 0x01, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x21, 0x35, 0x33, 0x11, + 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x03, 0x48, 0x8e, 0x63, 0x8f, 0xb2, + 0x01, 0x14, 0xfc, 0xb8, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, + 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, 0x9d, 0x46, 0x56, 0x03, + 0x45, 0xfd, 0x89, 0x02, 0x64, 0x60, 0xfe, 0x8b, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, + 0x4b, 0x83, 0xaf, 0xfe, 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, + 0xa3, 0x00, 0x00, 0x06, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, + 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x3b, 0x00, 0x4f, 0x00, 0x63, 0x00, 0x6e, + 0x00, 0x6f, 0x40, 0x39, 0x6d, 0x67, 0x36, 0x08, 0x20, 0x18, 0x26, 0x0e, + 0x18, 0x0e, 0x18, 0x0e, 0x08, 0x00, 0x2e, 0x67, 0x08, 0x2e, 0x2e, 0x08, + 0x67, 0x03, 0x3c, 0x5a, 0x46, 0x50, 0x3c, 0x6d, 0x66, 0x8e, 0x65, 0x1b, + 0x0b, 0x33, 0x8e, 0x2b, 0x2b, 0x13, 0x39, 0x8e, 0x03, 0x03, 0x65, 0x55, + 0x4b, 0x44, 0x23, 0x8e, 0x13, 0x13, 0x69, 0x70, 0x6b, 0x01, 0x6b, 0x5f, + 0x41, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, 0xed, 0x3f, 0xcd, + 0xc4, 0x32, 0x2f, 0xed, 0x11, 0x39, 0x2f, 0xed, 0x39, 0x39, 0x10, 0xed, + 0x32, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, + 0x10, 0xcd, 0x11, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xcd, 0x10, 0xcd, 0x10, + 0xcd, 0x10, 0xcd, 0x31, 0x30, 0x01, 0x14, 0x06, 0x23, 0x22, 0x2e, 0x02, + 0x35, 0x34, 0x36, 0x37, 0x26, 0x26, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x06, 0x07, 0x1e, 0x03, 0x03, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x15, 0x14, 0x1e, 0x02, 0x17, 0x36, 0x36, 0x13, 0x34, 0x2e, + 0x02, 0x27, 0x06, 0x06, 0x15, 0x14, 0x16, 0x33, 0x32, 0x36, 0x25, 0x34, + 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, + 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, 0x34, + 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x21, 0x35, 0x33, 0x11, 0x07, + 0x27, 0x37, 0x33, 0x11, 0x33, 0x03, 0x7f, 0x5d, 0x49, 0x28, 0x3f, 0x2b, + 0x17, 0x2c, 0x2e, 0x2a, 0x27, 0x13, 0x28, 0x3c, 0x29, 0x24, 0x37, 0x25, + 0x13, 0x2b, 0x24, 0x14, 0x23, 0x1b, 0x10, 0x71, 0x1d, 0x1a, 0x1d, 0x22, + 0x06, 0x0f, 0x1a, 0x15, 0x17, 0x1b, 0x05, 0x05, 0x0d, 0x19, 0x15, 0x20, + 0x18, 0x22, 0x1a, 0x19, 0x23, 0xfc, 0xed, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, + 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, + 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, 0x9d, + 0x46, 0x56, 0x01, 0x7f, 0x58, 0x60, 0x1a, 0x2d, 0x40, 0x25, 0x41, 0x63, + 0x27, 0x23, 0x51, 0x37, 0x25, 0x40, 0x30, 0x1c, 0x1b, 0x2e, 0x3e, 0x23, + 0x3d, 0x57, 0x20, 0x10, 0x24, 0x2e, 0x38, 0x01, 0x47, 0x28, 0x2b, 0x2b, + 0x26, 0x15, 0x22, 0x1f, 0x1e, 0x11, 0x1d, 0x3d, 0xfe, 0xb8, 0x14, 0x26, + 0x25, 0x24, 0x13, 0x23, 0x46, 0x2b, 0x29, 0x2c, 0x28, 0xd0, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, + 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0xfe, 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, + 0x68, 0xfd, 0xa3, 0x00, 0x00, 0x05, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x13, 0x00, 0x27, 0x00, 0x32, 0x00, 0x50, 0x00, 0x5c, + 0x00, 0x5d, 0x40, 0x30, 0x31, 0x2b, 0x51, 0x33, 0x44, 0x33, 0x4a, 0x3d, + 0x57, 0x2b, 0x33, 0x57, 0x57, 0x33, 0x2b, 0x03, 0x00, 0x1e, 0x0a, 0x14, + 0x00, 0x54, 0x8e, 0x4e, 0x4e, 0x5a, 0x45, 0x8e, 0x42, 0x42, 0x31, 0x2a, + 0x8e, 0x29, 0x19, 0x0f, 0x44, 0x5a, 0x8e, 0x38, 0x38, 0x2d, 0x70, 0x2f, + 0x01, 0x2f, 0x23, 0x05, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xcd, 0x33, 0x2f, + 0xed, 0x3f, 0xcd, 0xd4, 0xed, 0x32, 0x33, 0x2f, 0xed, 0x12, 0x39, 0x2f, + 0xed, 0x01, 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, + 0x10, 0xcd, 0x33, 0x11, 0x33, 0x10, 0xcd, 0x10, 0xcd, 0x31, 0x30, 0x11, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, 0x35, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x01, 0x21, 0x35, 0x33, 0x11, + 0x07, 0x27, 0x37, 0x33, 0x11, 0x33, 0x13, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x35, 0x33, 0x32, 0x3e, + 0x02, 0x35, 0x35, 0x06, 0x06, 0x23, 0x22, 0x26, 0x37, 0x14, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x36, 0x26, 0x23, 0x22, 0x06, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x55, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, + 0x63, 0x63, 0xaf, 0x81, 0x4b, 0x01, 0xcf, 0xfe, 0xe2, 0x64, 0x52, 0x2d, + 0x9d, 0x46, 0x56, 0x16, 0x17, 0x29, 0x3a, 0x23, 0x26, 0x3a, 0x28, 0x15, + 0x19, 0x3c, 0x62, 0x48, 0x1a, 0x1d, 0x23, 0x37, 0x27, 0x14, 0x11, 0x2a, + 0x1a, 0x3a, 0x44, 0x65, 0x18, 0x1b, 0x0f, 0x21, 0x0b, 0x01, 0x1d, 0x1c, + 0x17, 0x1f, 0x02, 0x1d, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x64, 0xaf, 0x82, 0x4c, + 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, 0x4b, 0x4b, 0x83, 0xaf, 0xfe, + 0x54, 0x60, 0x01, 0xe0, 0x35, 0x4a, 0x68, 0xfd, 0xa3, 0x01, 0x7b, 0x36, + 0x56, 0x3d, 0x21, 0x1e, 0x48, 0x79, 0x5c, 0x59, 0x93, 0x6a, 0x3a, 0x60, + 0x20, 0x39, 0x4c, 0x2d, 0x07, 0x14, 0x15, 0x69, 0x6e, 0x3a, 0x3f, 0x0f, + 0x0e, 0x78, 0x68, 0x45, 0x00, 0x05, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x13, 0x00, 0x27, 0x00, 0x39, 0x00, 0x48, 0x00, 0x67, + 0x00, 0x5e, 0x40, 0x31, 0x57, 0x5b, 0x49, 0x5b, 0x58, 0x51, 0x61, 0x41, + 0x30, 0x28, 0x3a, 0x5b, 0x61, 0x30, 0x3a, 0x3a, 0x30, 0x61, 0x5b, 0x04, + 0x00, 0x1e, 0x0a, 0x14, 0x00, 0x5b, 0x57, 0x8e, 0x5a, 0x46, 0x8e, 0x2b, + 0x2b, 0x5a, 0x19, 0x0f, 0x44, 0x3f, 0x8e, 0x35, 0x35, 0x64, 0x8e, 0x70, + 0x4c, 0x01, 0x4c, 0x23, 0x05, 0x00, 0x2f, 0xcd, 0xd4, 0x5d, 0xed, 0x33, + 0x2f, 0xed, 0x3f, 0xcd, 0xc4, 0x32, 0x2f, 0xed, 0x10, 0xed, 0x32, 0x01, + 0x2f, 0xcd, 0x2f, 0xcd, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x10, + 0xcd, 0x10, 0xcd, 0x10, 0xcd, 0x32, 0x11, 0x33, 0x10, 0xcd, 0x31, 0x30, + 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x37, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, 0x02, + 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x05, 0x14, 0x06, 0x23, + 0x22, 0x2e, 0x02, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x07, + 0x34, 0x2e, 0x02, 0x23, 0x22, 0x11, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, + 0x01, 0x36, 0x36, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x07, + 0x07, 0x33, 0x15, 0x21, 0x35, 0x37, 0x3e, 0x03, 0x35, 0x34, 0x26, 0x23, + 0x22, 0x06, 0x07, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, + 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x55, 0x4b, 0x81, 0xaf, 0x63, + 0x63, 0xaf, 0x81, 0x4b, 0x4b, 0x81, 0xaf, 0x63, 0x63, 0xaf, 0x81, 0x4b, + 0x03, 0x35, 0x4b, 0x55, 0x2a, 0x3b, 0x25, 0x11, 0x13, 0x28, 0x3c, 0x29, + 0x28, 0x3b, 0x26, 0x12, 0x67, 0x07, 0x0e, 0x14, 0x0d, 0x37, 0x08, 0x0f, + 0x14, 0x0c, 0x18, 0x1e, 0xfd, 0xe1, 0x1a, 0x47, 0x24, 0x21, 0x3a, 0x2a, + 0x19, 0x0b, 0x15, 0x1f, 0x14, 0x6e, 0xb7, 0xfe, 0xde, 0x6c, 0x1d, 0x24, + 0x13, 0x06, 0x1e, 0x23, 0x17, 0x27, 0x14, 0x02, 0x1d, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, + 0x74, 0x64, 0xaf, 0x82, 0x4c, 0x4c, 0x82, 0xaf, 0x64, 0x64, 0xaf, 0x83, + 0x4b, 0x4b, 0x83, 0xaf, 0x4d, 0xb7, 0xaf, 0x23, 0x53, 0x89, 0x67, 0x67, + 0x89, 0x53, 0x23, 0x23, 0x53, 0x89, 0x6a, 0x4f, 0x67, 0x3c, 0x17, 0xfe, + 0xfd, 0x50, 0x67, 0x3b, 0x17, 0x80, 0x01, 0xb9, 0x18, 0x1b, 0x14, 0x29, + 0x40, 0x2c, 0x22, 0x3d, 0x3c, 0x3d, 0x23, 0xc1, 0x60, 0x5b, 0xbf, 0x34, + 0x49, 0x39, 0x2f, 0x1b, 0x23, 0x28, 0x12, 0x0d, 0x00, 0x04, 0x00, 0x00, + 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x11, 0x00, 0x20, 0x00, 0x2b, + 0x00, 0x3f, 0x00, 0x48, 0x40, 0x25, 0x22, 0x28, 0x1a, 0x0a, 0x00, 0x12, + 0x28, 0x0a, 0x12, 0x12, 0x0a, 0x28, 0x03, 0x2c, 0x36, 0x2c, 0x22, 0x29, + 0x8c, 0x2a, 0x15, 0x8c, 0x0f, 0x0f, 0x2a, 0x3b, 0x44, 0x1c, 0x8c, 0x05, + 0x05, 0x26, 0x70, 0x24, 0x01, 0x24, 0x31, 0x00, 0x2f, 0xdd, 0x5d, 0xc6, + 0x33, 0x2f, 0xe6, 0x3f, 0xcd, 0x32, 0x2f, 0xe6, 0x10, 0xe6, 0x32, 0x01, + 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xce, 0x10, 0xce, + 0x10, 0xce, 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, + 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x27, 0x14, 0x06, 0x23, 0x22, + 0x2e, 0x02, 0x35, 0x10, 0x33, 0x32, 0x1e, 0x02, 0x03, 0x23, 0x11, 0x23, + 0x07, 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x01, 0x34, 0x3e, 0x02, 0x33, + 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x03, + 0x75, 0x12, 0x26, 0x3b, 0x28, 0x29, 0x3c, 0x28, 0x13, 0x11, 0x25, 0x3b, + 0x2a, 0x55, 0x4b, 0x67, 0x1e, 0x18, 0x0c, 0x14, 0x0f, 0x08, 0x37, 0x0d, + 0x14, 0x0e, 0x07, 0xea, 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, + 0xfd, 0xdc, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, 0x34, 0x67, 0x89, 0x53, 0x23, + 0x23, 0x53, 0x89, 0x67, 0x67, 0x89, 0x53, 0x23, 0xaf, 0xb4, 0x83, 0x80, + 0x17, 0x3b, 0x67, 0x50, 0x01, 0x03, 0x17, 0x3c, 0x67, 0xfe, 0xb5, 0x02, + 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x01, 0x48, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, + 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x13, + 0x00, 0x1e, 0x00, 0x29, 0x00, 0x3a, 0x40, 0x1c, 0x15, 0x1b, 0x20, 0x26, + 0x1b, 0x26, 0x1b, 0x26, 0x00, 0x0a, 0x00, 0x26, 0x20, 0x15, 0x1c, 0x8c, + 0x28, 0x1d, 0x0f, 0x44, 0x24, 0x19, 0x22, 0x70, 0x17, 0x01, 0x17, 0x05, + 0x00, 0x2f, 0xdd, 0x5d, 0x32, 0xc6, 0x32, 0x3f, 0xdd, 0x32, 0xe6, 0x32, + 0x32, 0x32, 0x01, 0x2f, 0x2f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xce, + 0x10, 0xce, 0x31, 0x30, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, + 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, 0x11, 0x23, + 0x07, 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x25, 0x23, 0x11, 0x23, 0x07, + 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, 0x24, + 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x01, 0x4b, 0x56, 0x46, + 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x02, 0x1d, 0x74, 0xcd, 0x99, 0x58, + 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x02, 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x60, 0x02, 0x5d, 0x68, + 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x1e, 0x00, 0x32, 0x00, 0x3d, 0x00, 0x4e, + 0x40, 0x28, 0x34, 0x3a, 0x1e, 0x10, 0x0c, 0x0f, 0x16, 0x06, 0x3a, 0x0c, + 0x06, 0x06, 0x0c, 0x3a, 0x03, 0x1f, 0x29, 0x1f, 0x34, 0x3b, 0x8c, 0x3c, + 0x0c, 0x10, 0x8c, 0x0d, 0x0d, 0x3c, 0x2e, 0x44, 0x03, 0x8c, 0x1b, 0x1b, + 0x38, 0x70, 0x36, 0x01, 0x36, 0x24, 0x00, 0x2f, 0xdd, 0x5d, 0xc6, 0x33, + 0x2f, 0xe6, 0x3f, 0xcd, 0x32, 0x2f, 0xe6, 0x32, 0x10, 0xe6, 0x32, 0x01, + 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xce, 0x32, 0x10, + 0xce, 0x33, 0x10, 0xce, 0x31, 0x30, 0x01, 0x36, 0x36, 0x33, 0x32, 0x16, + 0x15, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x15, 0x21, 0x35, 0x23, 0x37, 0x3e, + 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x01, 0x34, 0x3e, + 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, + 0x02, 0x05, 0x23, 0x11, 0x23, 0x07, 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, + 0x02, 0x6c, 0x14, 0x27, 0x17, 0x23, 0x1e, 0x06, 0x13, 0x24, 0x1d, 0x6c, + 0x01, 0x22, 0xb7, 0x6e, 0x14, 0x1f, 0x15, 0x0b, 0x19, 0x2a, 0x3a, 0x21, + 0x24, 0x47, 0x1a, 0xfd, 0xbe, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, + 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, 0x24, 0x56, + 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x03, 0x1b, 0x0d, 0x12, 0x28, + 0x23, 0x1b, 0x2f, 0x39, 0x49, 0x34, 0xbf, 0x5b, 0x60, 0xc1, 0x23, 0x3d, + 0x3c, 0x3d, 0x22, 0x2c, 0x40, 0x29, 0x14, 0x1b, 0x18, 0xfe, 0xb6, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x74, 0x02, 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x00, + 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x28, + 0x00, 0x3c, 0x00, 0x47, 0x00, 0x62, 0x40, 0x33, 0x3e, 0x44, 0x06, 0x13, + 0x03, 0x13, 0x00, 0x1b, 0x0d, 0x18, 0x21, 0x13, 0x44, 0x21, 0x13, 0x1b, + 0x1b, 0x13, 0x21, 0x44, 0x04, 0x29, 0x33, 0x29, 0x3e, 0x45, 0x8c, 0x46, + 0x03, 0x18, 0x8c, 0x17, 0x17, 0x09, 0x1e, 0x8c, 0x24, 0x24, 0x46, 0x38, + 0x44, 0x10, 0x8c, 0x09, 0x09, 0x42, 0x70, 0x40, 0x01, 0x40, 0x2e, 0x00, + 0x2f, 0xdd, 0x5d, 0xc6, 0x33, 0x2f, 0xe6, 0x3f, 0xcd, 0x32, 0x2f, 0xe6, + 0x11, 0x39, 0x2f, 0xe6, 0x39, 0x10, 0xe6, 0x32, 0x01, 0x2f, 0x2f, 0x12, + 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x11, 0x12, 0x39, 0x39, 0x10, 0xce, + 0x11, 0x39, 0x10, 0xce, 0x10, 0xce, 0x31, 0x30, 0x01, 0x34, 0x26, 0x27, + 0x36, 0x36, 0x35, 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x15, 0x36, 0x36, + 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x23, 0x15, 0x33, 0x32, 0x15, + 0x14, 0x06, 0x23, 0x22, 0x27, 0x15, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, + 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, + 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, 0x11, 0x23, 0x07, 0x17, 0x37, 0x11, + 0x23, 0x15, 0x21, 0x03, 0x6f, 0x32, 0x2a, 0x28, 0x24, 0x50, 0x4b, 0x1e, + 0x3a, 0x1a, 0x1c, 0x2f, 0x17, 0x21, 0x23, 0x30, 0x28, 0x33, 0x37, 0x64, + 0x32, 0x3b, 0x2c, 0x26, 0x17, 0x2e, 0x1c, 0x33, 0x4b, 0x30, 0x17, 0xfc, + 0x91, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, + 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, 0x24, 0x56, 0x46, 0x9d, 0x2d, 0x52, + 0x64, 0x01, 0x1e, 0x01, 0xa4, 0x42, 0x4c, 0x11, 0x1e, 0x4d, 0x3c, 0x51, + 0x5c, 0x0e, 0x0c, 0x61, 0x0e, 0x0d, 0x2b, 0x34, 0x34, 0x3d, 0x5c, 0x68, + 0x39, 0x3f, 0x0c, 0x63, 0x05, 0x04, 0x20, 0x3a, 0x4f, 0xa9, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x02, 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x00, 0x04, + 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x0a, 0x00, 0x0d, + 0x00, 0x21, 0x00, 0x2c, 0x00, 0x5b, 0x40, 0x2e, 0x23, 0x29, 0x0c, 0x04, + 0x01, 0x09, 0x06, 0x0b, 0x03, 0x06, 0x29, 0x04, 0x06, 0x06, 0x04, 0x29, + 0x03, 0x0e, 0x18, 0x0e, 0x23, 0x2a, 0x8c, 0x2b, 0x09, 0x06, 0x8c, 0x04, + 0x01, 0x0b, 0x0b, 0x07, 0x03, 0x07, 0x2b, 0x1d, 0x44, 0x0d, 0x03, 0x03, + 0x27, 0x70, 0x25, 0x01, 0x25, 0x13, 0x00, 0x2f, 0xdd, 0x5d, 0xc6, 0x33, + 0x11, 0x33, 0x3f, 0xcd, 0x32, 0x11, 0x12, 0x39, 0x2f, 0x33, 0x33, 0xe6, + 0x32, 0x10, 0xe6, 0x32, 0x01, 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, + 0x2f, 0x11, 0x33, 0x33, 0x10, 0xce, 0x32, 0x10, 0xce, 0x10, 0xce, 0x31, + 0x30, 0x01, 0x23, 0x11, 0x23, 0x03, 0x15, 0x33, 0x15, 0x33, 0x35, 0x33, + 0x27, 0x23, 0x13, 0x05, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, 0x11, 0x23, 0x07, + 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x03, 0x89, 0x4f, 0x7e, 0xaa, 0xcb, + 0x5d, 0x4f, 0xac, 0x6b, 0x6b, 0xfd, 0x23, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, + 0x24, 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x01, 0xcd, 0x01, + 0xc5, 0xfe, 0x32, 0x54, 0x9b, 0x9b, 0x5d, 0x01, 0x2d, 0xdd, 0x74, 0xcd, + 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x02, 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x00, 0x03, + 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x1c, 0x00, 0x30, + 0x00, 0x3b, 0x00, 0x55, 0x40, 0x2c, 0x32, 0x38, 0x14, 0x05, 0x0a, 0x07, + 0x00, 0x0e, 0x38, 0x0a, 0x0e, 0x0e, 0x0a, 0x38, 0x03, 0x1d, 0x27, 0x1d, + 0x32, 0x39, 0x8c, 0x3a, 0x0b, 0x8c, 0x05, 0x05, 0x09, 0x11, 0x8c, 0x18, + 0x18, 0x3a, 0x2c, 0x44, 0x06, 0x8c, 0x09, 0x09, 0x36, 0x70, 0x34, 0x01, + 0x34, 0x22, 0x00, 0x2f, 0xdd, 0x5d, 0xc6, 0x33, 0x2f, 0xe6, 0x3f, 0xcd, + 0x32, 0x2f, 0xe6, 0x11, 0x39, 0x2f, 0xe6, 0x10, 0xe6, 0x32, 0x01, 0x2f, + 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, 0xce, 0x32, 0x10, 0xce, + 0x33, 0x10, 0xce, 0x31, 0x30, 0x01, 0x34, 0x2e, 0x02, 0x23, 0x35, 0x33, + 0x35, 0x23, 0x11, 0x33, 0x32, 0x16, 0x15, 0x14, 0x06, 0x23, 0x22, 0x26, + 0x27, 0x15, 0x16, 0x16, 0x33, 0x32, 0x3e, 0x02, 0x25, 0x34, 0x3e, 0x02, + 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, + 0x05, 0x23, 0x11, 0x23, 0x07, 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x03, + 0x58, 0x1c, 0x2e, 0x3e, 0x22, 0x93, 0xf7, 0x34, 0x3b, 0x38, 0x32, 0x34, + 0x13, 0x23, 0x11, 0x12, 0x2c, 0x16, 0x32, 0x48, 0x2f, 0x17, 0xfc, 0xa8, + 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x02, 0x24, 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, + 0x01, 0x1e, 0x01, 0xb6, 0x37, 0x4c, 0x30, 0x16, 0xb3, 0x60, 0xfe, 0x91, + 0x30, 0x42, 0x3c, 0x47, 0x05, 0x05, 0x63, 0x03, 0x04, 0x22, 0x3d, 0x55, + 0x9b, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x02, 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, + 0x60, 0x00, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, + 0x00, 0x1d, 0x00, 0x29, 0x00, 0x3d, 0x00, 0x48, 0x00, 0x55, 0x40, 0x2c, + 0x3f, 0x45, 0x06, 0x24, 0x14, 0x0c, 0x00, 0x1e, 0x45, 0x14, 0x1e, 0x1e, + 0x14, 0x45, 0x03, 0x2a, 0x34, 0x2a, 0x3f, 0x46, 0x8c, 0x47, 0x27, 0x8c, + 0x03, 0x03, 0x0f, 0x21, 0x8c, 0x19, 0x19, 0x47, 0x39, 0x44, 0x0c, 0x8c, + 0x0f, 0x0f, 0x43, 0x70, 0x41, 0x01, 0x41, 0x2f, 0x00, 0x2f, 0xdd, 0x5d, + 0xc6, 0x33, 0x2f, 0xe6, 0x3f, 0xcd, 0x32, 0x2f, 0xe6, 0x11, 0x39, 0x2f, + 0xe6, 0x10, 0xe6, 0x32, 0x01, 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, + 0x2f, 0x10, 0xce, 0x32, 0x10, 0xce, 0x32, 0x10, 0xce, 0x31, 0x30, 0x01, + 0x34, 0x26, 0x23, 0x22, 0x06, 0x07, 0x35, 0x34, 0x3e, 0x02, 0x33, 0x33, + 0x35, 0x23, 0x22, 0x0e, 0x02, 0x15, 0x14, 0x1e, 0x02, 0x33, 0x32, 0x3e, + 0x02, 0x27, 0x14, 0x06, 0x23, 0x22, 0x26, 0x37, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, + 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, 0x11, 0x23, 0x07, 0x17, 0x37, + 0x11, 0x23, 0x15, 0x21, 0x03, 0x74, 0x44, 0x3a, 0x1a, 0x2a, 0x11, 0x14, + 0x27, 0x37, 0x23, 0x0a, 0x07, 0x48, 0x62, 0x3c, 0x19, 0x15, 0x28, 0x3b, + 0x25, 0x23, 0x3a, 0x29, 0x17, 0x65, 0x1f, 0x17, 0x1c, 0x1d, 0x01, 0x0b, + 0x21, 0x0f, 0x1b, 0x18, 0xfc, 0xf1, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, 0x24, + 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x01, 0xb8, 0x68, 0x69, + 0x1a, 0x14, 0x07, 0x2d, 0x4e, 0x3a, 0x22, 0x60, 0x3a, 0x6a, 0x93, 0x59, + 0x5c, 0x79, 0x48, 0x1e, 0x21, 0x3d, 0x56, 0x30, 0x3f, 0x45, 0x63, 0x78, + 0x0e, 0x14, 0x3f, 0x31, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x02, 0x5d, 0x68, 0x4a, + 0x35, 0xfe, 0x20, 0x60, 0x00, 0x03, 0x00, 0x00, 0xff, 0xeb, 0x04, 0x66, + 0x04, 0x4f, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x25, 0x00, 0x49, 0x40, 0x25, + 0x1c, 0x22, 0x05, 0x02, 0x04, 0x06, 0x03, 0x22, 0x04, 0x03, 0x03, 0x04, + 0x22, 0x03, 0x07, 0x11, 0x07, 0x1c, 0x23, 0x8c, 0x24, 0x04, 0x04, 0x24, + 0x16, 0x44, 0x06, 0x02, 0x8c, 0x01, 0x01, 0x20, 0x70, 0x1e, 0x01, 0x1e, + 0x0c, 0x00, 0x2f, 0xdd, 0x5d, 0xc6, 0x33, 0x2f, 0xe6, 0x32, 0x3f, 0xcd, + 0x32, 0x2f, 0x10, 0xe6, 0x32, 0x01, 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x2f, + 0x2f, 0x2f, 0x10, 0xce, 0x11, 0x33, 0x33, 0x10, 0xce, 0x31, 0x30, 0x01, + 0x21, 0x15, 0x33, 0x03, 0x33, 0x13, 0x01, 0x34, 0x3e, 0x02, 0x33, 0x32, + 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, + 0x11, 0x23, 0x07, 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x03, 0x48, 0xfe, + 0xec, 0xb2, 0x8f, 0x63, 0x8e, 0xfc, 0xb8, 0x59, 0x99, 0xcd, 0x74, 0x74, + 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x02, + 0x24, 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x03, 0x92, 0x60, + 0xfd, 0x9c, 0x02, 0x77, 0xfe, 0xd8, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x02, 0x5d, + 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x00, 0x05, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x1f, 0x00, 0x2d, 0x00, 0x3b, 0x00, 0x4f, + 0x00, 0x5a, 0x00, 0x67, 0x40, 0x34, 0x51, 0x57, 0x28, 0x12, 0x20, 0x08, + 0x15, 0x05, 0x08, 0x12, 0x08, 0x12, 0x08, 0x00, 0x34, 0x18, 0x57, 0x18, + 0x57, 0x18, 0x3c, 0x46, 0x3c, 0x00, 0x2e, 0x51, 0x58, 0x8c, 0x59, 0x05, + 0x37, 0x8c, 0x23, 0x23, 0x0d, 0x31, 0x8c, 0x1d, 0x1d, 0x59, 0x4b, 0x44, + 0x2b, 0x8c, 0x0d, 0x0d, 0x55, 0x70, 0x53, 0x01, 0x53, 0x41, 0x00, 0x2f, + 0xdd, 0x5d, 0xc6, 0x33, 0x2f, 0xe6, 0x3f, 0xcd, 0x32, 0x2f, 0xe6, 0x11, + 0x39, 0x2f, 0xe6, 0x39, 0x10, 0xe6, 0x32, 0x01, 0x2f, 0xce, 0x2f, 0x2f, + 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x10, 0xce, 0x12, 0x39, 0x39, 0x2f, 0x2f, + 0x12, 0x39, 0x39, 0x10, 0xce, 0x10, 0xce, 0x10, 0xce, 0x31, 0x30, 0x01, + 0x34, 0x2e, 0x02, 0x27, 0x36, 0x36, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, + 0x0e, 0x02, 0x15, 0x14, 0x16, 0x17, 0x06, 0x06, 0x15, 0x14, 0x1e, 0x02, + 0x33, 0x32, 0x36, 0x03, 0x14, 0x06, 0x07, 0x2e, 0x03, 0x35, 0x34, 0x36, + 0x33, 0x32, 0x16, 0x13, 0x14, 0x06, 0x23, 0x22, 0x26, 0x35, 0x34, 0x36, + 0x37, 0x1e, 0x03, 0x25, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, + 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, 0x11, 0x23, 0x07, + 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x03, 0x7f, 0x10, 0x1b, 0x23, 0x14, + 0x24, 0x2b, 0x13, 0x25, 0x37, 0x24, 0x29, 0x3c, 0x28, 0x13, 0x27, 0x2a, + 0x2e, 0x2c, 0x17, 0x2b, 0x3f, 0x28, 0x49, 0x5d, 0x71, 0x1b, 0x17, 0x15, + 0x1a, 0x0f, 0x06, 0x22, 0x1d, 0x1a, 0x1d, 0x05, 0x23, 0x19, 0x1a, 0x22, + 0x18, 0x20, 0x15, 0x19, 0x0d, 0x05, 0xfc, 0xed, 0x59, 0x99, 0xcd, 0x74, + 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, + 0x02, 0x24, 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, 0x01, 0x7f, + 0x23, 0x38, 0x2e, 0x24, 0x10, 0x20, 0x57, 0x3d, 0x23, 0x3e, 0x2e, 0x1b, + 0x1c, 0x30, 0x40, 0x25, 0x37, 0x51, 0x23, 0x27, 0x63, 0x41, 0x25, 0x40, + 0x2d, 0x1a, 0x60, 0x01, 0xc2, 0x29, 0x3d, 0x1d, 0x11, 0x1e, 0x1f, 0x22, + 0x15, 0x26, 0x2b, 0x2b, 0xfe, 0x67, 0x2b, 0x28, 0x2c, 0x29, 0x2b, 0x46, + 0x23, 0x13, 0x24, 0x25, 0x26, 0x91, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x02, 0x5d, + 0x68, 0x4a, 0x35, 0xfe, 0x20, 0x60, 0x00, 0x04, 0x00, 0x00, 0xff, 0xeb, + 0x04, 0x66, 0x04, 0x4f, 0x00, 0x13, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x48, + 0x00, 0x57, 0x40, 0x2d, 0x15, 0x1b, 0x3d, 0x1f, 0x2c, 0x1f, 0x33, 0x43, + 0x25, 0x43, 0x1b, 0x1f, 0x43, 0x43, 0x1f, 0x1b, 0x03, 0x00, 0x0a, 0x00, + 0x46, 0x8c, 0x22, 0x22, 0x40, 0x2c, 0x8c, 0x2d, 0x2d, 0x15, 0x1c, 0x8c, + 0x1d, 0x0f, 0x44, 0x40, 0x8c, 0x38, 0x38, 0x19, 0x70, 0x17, 0x01, 0x17, + 0x05, 0x00, 0x2f, 0xdd, 0x5d, 0xc6, 0x33, 0x2f, 0xe6, 0x3f, 0xdd, 0xe6, + 0x32, 0x33, 0x2f, 0xe6, 0x12, 0x39, 0x2f, 0xe6, 0x01, 0x2f, 0x2f, 0x12, + 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x11, 0x33, 0x10, 0xce, 0x11, 0x33, 0x10, + 0xce, 0x10, 0xce, 0x31, 0x30, 0x11, 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, + 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x22, 0x2e, 0x02, 0x05, 0x23, 0x11, + 0x23, 0x07, 0x17, 0x37, 0x11, 0x23, 0x15, 0x21, 0x13, 0x14, 0x16, 0x33, + 0x32, 0x36, 0x37, 0x15, 0x14, 0x0e, 0x02, 0x23, 0x23, 0x15, 0x33, 0x32, + 0x3e, 0x02, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x17, 0x34, + 0x36, 0x33, 0x32, 0x16, 0x07, 0x06, 0x06, 0x23, 0x22, 0x26, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x02, 0x24, 0x56, 0x46, 0x9d, 0x2d, 0x52, 0x64, 0x01, 0x1e, + 0x16, 0x44, 0x3a, 0x1a, 0x2a, 0x11, 0x14, 0x27, 0x37, 0x23, 0x1d, 0x1a, + 0x48, 0x62, 0x3c, 0x19, 0x15, 0x28, 0x3a, 0x26, 0x23, 0x3a, 0x29, 0x17, + 0x65, 0x1f, 0x17, 0x1c, 0x1d, 0x01, 0x0b, 0x21, 0x0f, 0x1b, 0x18, 0x02, + 0x1d, 0x74, 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, + 0x58, 0x58, 0x99, 0xcd, 0x74, 0x02, 0x5d, 0x68, 0x4a, 0x35, 0xfe, 0x20, + 0x60, 0x01, 0xdb, 0x68, 0x69, 0x15, 0x14, 0x07, 0x2d, 0x4c, 0x39, 0x20, + 0x60, 0x3a, 0x6a, 0x93, 0x59, 0x5c, 0x79, 0x48, 0x1e, 0x21, 0x3d, 0x56, + 0x30, 0x3f, 0x45, 0x68, 0x78, 0x0e, 0x0f, 0x3f, 0x00, 0x04, 0x00, 0x00, + 0xff, 0xeb, 0x04, 0x66, 0x04, 0x4f, 0x00, 0x13, 0x00, 0x25, 0x00, 0x34, + 0x00, 0x53, 0x00, 0x5b, 0x40, 0x32, 0x14, 0x26, 0x53, 0x45, 0x41, 0x44, + 0x4b, 0x3b, 0x2e, 0x1e, 0x41, 0x3b, 0x1e, 0x1e, 0x3b, 0x41, 0x03, 0x00, + 0x0a, 0x00, 0x41, 0x45, 0x8c, 0x42, 0x29, 0x8c, 0x23, 0x23, 0x42, 0x0f, + 0x44, 0x30, 0x8c, 0x19, 0x19, 0x38, 0x8c, 0xd0, 0x50, 0xe0, 0x50, 0x02, + 0x31, 0x50, 0x01, 0x70, 0x50, 0x01, 0x50, 0x05, 0x00, 0x2f, 0xdd, 0x5d, + 0x71, 0x71, 0xe6, 0x33, 0x2f, 0xe6, 0x3f, 0xcd, 0x32, 0x2f, 0xe6, 0x10, + 0xe6, 0x32, 0x01, 0x2f, 0x2f, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x10, + 0xce, 0x10, 0xce, 0x32, 0x10, 0xce, 0x33, 0x2f, 0xce, 0x31, 0x30, 0x11, + 0x34, 0x3e, 0x02, 0x33, 0x32, 0x1e, 0x02, 0x15, 0x14, 0x0e, 0x02, 0x23, + 0x22, 0x2e, 0x02, 0x25, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x0e, 0x02, 0x15, + 0x14, 0x1e, 0x02, 0x33, 0x32, 0x36, 0x27, 0x14, 0x06, 0x23, 0x22, 0x2e, + 0x02, 0x35, 0x10, 0x33, 0x32, 0x1e, 0x02, 0x25, 0x36, 0x36, 0x33, 0x32, + 0x16, 0x15, 0x14, 0x0e, 0x02, 0x07, 0x07, 0x15, 0x21, 0x35, 0x23, 0x37, + 0x3e, 0x03, 0x35, 0x34, 0x2e, 0x02, 0x23, 0x22, 0x06, 0x07, 0x59, 0x99, + 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x59, 0x59, 0x99, 0xcd, 0x74, 0x74, 0xcd, + 0x99, 0x59, 0x03, 0x8a, 0x12, 0x26, 0x3b, 0x28, 0x29, 0x3c, 0x28, 0x13, + 0x11, 0x25, 0x3b, 0x2a, 0x55, 0x4b, 0x67, 0x1e, 0x18, 0x0c, 0x14, 0x0f, + 0x08, 0x37, 0x0d, 0x14, 0x0e, 0x07, 0xfe, 0x0b, 0x14, 0x27, 0x17, 0x23, + 0x1e, 0x06, 0x13, 0x24, 0x1d, 0x6c, 0x01, 0x22, 0xb7, 0x6e, 0x14, 0x1f, + 0x15, 0x0b, 0x19, 0x2a, 0x3a, 0x21, 0x24, 0x47, 0x1a, 0x02, 0x1d, 0x74, + 0xcd, 0x99, 0x58, 0x58, 0x99, 0xcd, 0x74, 0x74, 0xcd, 0x99, 0x58, 0x58, + 0x99, 0xcd, 0x8b, 0x67, 0x89, 0x53, 0x23, 0x23, 0x53, 0x89, 0x67, 0x67, + 0x89, 0x53, 0x23, 0xaf, 0xb4, 0x83, 0x80, 0x17, 0x3b, 0x67, 0x50, 0x01, + 0x03, 0x17, 0x3c, 0x67, 0x9b, 0x0d, 0x12, 0x28, 0x23, 0x1b, 0x2f, 0x39, + 0x49, 0x34, 0xbf, 0x5b, 0x60, 0xc1, 0x23, 0x3d, 0x3c, 0x3d, 0x22, 0x2c, + 0x40, 0x29, 0x14, 0x1b, 0x18, 0x00, 0x00, 0x01, 0x00, 0x6d, 0xff, 0xf4, + 0x04, 0x22, 0x05, 0x2d, 0x00, 0x23, 0x00, 0x19, 0xb9, 0x00, 0x14, 0x01, + 0x0e, 0xb4, 0x1d, 0x42, 0x19, 0x43, 0x09, 0xb8, 0x01, 0x0e, 0xb1, 0x03, + 0x44, 0x00, 0x3f, 0xed, 0x3f, 0x3f, 0xed, 0x31, 0x30, 0x01, 0x14, 0x06, + 0x23, 0x22, 0x27, 0x35, 0x16, 0x16, 0x33, 0x32, 0x36, 0x35, 0x34, 0x26, + 0x26, 0x27, 0x13, 0x26, 0x26, 0x23, 0x22, 0x06, 0x15, 0x11, 0x23, 0x11, + 0x34, 0x36, 0x33, 0x32, 0x16, 0x17, 0x07, 0x16, 0x16, 0x04, 0x22, 0xee, + 0xcd, 0x54, 0x55, 0x16, 0x57, 0x30, 0x5d, 0x62, 0x3a, 0x81, 0x6f, 0xf9, + 0x14, 0x67, 0x45, 0x69, 0x5f, 0xf4, 0xf2, 0xda, 0xa2, 0xe6, 0x35, 0xe1, + 0x92, 0x7b, 0x01, 0x79, 0xb4, 0xd1, 0x11, 0xd9, 0x08, 0x0d, 0x67, 0x5f, + 0x4e, 0x60, 0x58, 0x2d, 0x01, 0x15, 0x3d, 0x44, 0x78, 0x79, 0xfc, 0x99, + 0x03, 0x8e, 0xc4, 0xdb, 0xa0, 0x97, 0xf8, 0x48, 0xb2, 0x00, 0x00, 0x02, + 0x00, 0x4f, 0x00, 0x00, 0x04, 0x17, 0x05, 0x1b, 0x00, 0x07, 0x00, 0x0b, + 0x00, 0x15, 0x40, 0x0a, 0x01, 0x05, 0xe2, 0x06, 0x08, 0xe2, 0x09, 0x41, + 0x03, 0x43, 0x00, 0x3f, 0x3f, 0xfd, 0xde, 0xed, 0x32, 0x31, 0x30, 0x01, + 0x21, 0x11, 0x23, 0x11, 0x21, 0x35, 0x21, 0x25, 0x35, 0x21, 0x15, 0x04, + 0x17, 0xfe, 0x9a, 0xfc, 0xfe, 0x9a, 0x03, 0xc8, 0xfc, 0x38, 0x03, 0xc8, + 0x03, 0x0f, 0xfc, 0xf1, 0x03, 0x0f, 0xcd, 0x72, 0xcd, 0xcd, 0x00, 0x01, + 0x00, 0x7c, 0x00, 0x00, 0x04, 0x0a, 0x05, 0x1b, 0x00, 0x21, 0x00, 0x3a, + 0x40, 0x22, 0x15, 0x04, 0xa6, 0x07, 0x12, 0x07, 0x17, 0x20, 0xa6, 0x00, + 0x00, 0x07, 0x10, 0x07, 0x02, 0x00, 0x00, 0x10, 0x00, 0x20, 0x00, 0x03, + 0x07, 0x00, 0x07, 0x00, 0x0c, 0x1b, 0x43, 0x0f, 0x0a, 0xa6, 0x0c, 0x41, + 0x00, 0x3f, 0xed, 0x32, 0x3f, 0x12, 0x39, 0x39, 0x2f, 0x2f, 0x5d, 0x5d, + 0x10, 0xed, 0x39, 0x11, 0x33, 0x10, 0xed, 0x32, 0x31, 0x30, 0x13, 0x33, + 0x32, 0x36, 0x37, 0x21, 0x35, 0x21, 0x26, 0x26, 0x27, 0x21, 0x35, 0x21, + 0x15, 0x23, 0x16, 0x16, 0x17, 0x33, 0x15, 0x23, 0x06, 0x07, 0x16, 0x17, + 0x13, 0x21, 0x03, 0x2e, 0x02, 0x23, 0x23, 0x7c, 0xdf, 0x67, 0x89, 0x17, + 0xfe, 0x1a, 0x01, 0xea, 0x11, 0x77, 0x5f, 0xfe, 0xfd, 0x03, 0x88, 0xee, + 0x22, 0x31, 0x09, 0x92, 0x9a, 0x2b, 0xe2, 0x61, 0x55, 0xf7, 0xfe, 0xe9, + 0xdd, 0x21, 0x40, 0x4b, 0x4b, 0xa3, 0x02, 0xbf, 0x4c, 0x4c, 0x9b, 0x4a, + 0x41, 0x03, 0x9b, 0x9b, 0x15, 0x4f, 0x2a, 0x9b, 0xb4, 0x34, 0x2f, 0x92, + 0xfe, 0x52, 0x01, 0x8b, 0x3c, 0x41, 0x1d, 0x00, 0x00, 0x01, 0x00, 0x23, + 0x00, 0x00, 0x04, 0x30, 0x05, 0x1b, 0x00, 0x20, 0x00, 0x3c, 0x40, 0x24, + 0x1a, 0x1c, 0x1d, 0x02, 0x01, 0x20, 0x06, 0x00, 0x1b, 0x16, 0x18, 0x19, + 0x03, 0x06, 0x05, 0x06, 0x04, 0x17, 0x0e, 0x1b, 0x17, 0x04, 0x00, 0x00, + 0x04, 0x17, 0x1b, 0x0e, 0x05, 0x15, 0x1e, 0x41, 0x07, 0xe2, 0x15, 0x43, + 0x00, 0x3f, 0xed, 0x3f, 0x12, 0x17, 0x39, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, + 0x11, 0x12, 0x17, 0x39, 0x11, 0x12, 0x17, 0x39, 0x31, 0x30, 0x01, 0x15, + 0x05, 0x15, 0x25, 0x15, 0x05, 0x15, 0x33, 0x36, 0x37, 0x3e, 0x02, 0x37, + 0x33, 0x0e, 0x03, 0x23, 0x21, 0x11, 0x07, 0x35, 0x37, 0x35, 0x07, 0x35, + 0x37, 0x11, 0x33, 0x11, 0x03, 0x33, 0xfe, 0x9e, 0x01, 0x62, 0xfe, 0x9e, + 0x48, 0x37, 0x32, 0x37, 0x55, 0x39, 0x08, 0xe1, 0x04, 0x5b, 0x9a, 0xcf, + 0x78, 0xfe, 0xe7, 0xb4, 0xb4, 0xb4, 0xb4, 0xfa, 0x04, 0x9f, 0xc1, 0xb5, + 0xa7, 0xb5, 0xc1, 0xb5, 0xee, 0x02, 0x11, 0x13, 0x4a, 0x6d, 0x47, 0x6f, + 0xb9, 0x85, 0x4a, 0x01, 0x41, 0x5c, 0xc1, 0x5c, 0xa7, 0x5c, 0xc1, 0x5c, + 0x01, 0xb1, 0xfe, 0xcf, 0x00, 0x00, 0x00, 0x2d, 0x02, 0x22, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x64, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x74, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x30, 0x00, 0x7c, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x92, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x18, 0x00, 0xac, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x06, 0x00, 0x1a, 0x00, 0xc4, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x78, 0x00, 0xde, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x2a, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x09, 0x00, 0x20, 0x01, 0x56, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x0a, 0x05, 0x52, 0x01, 0x76, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x56, 0x06, 0xc8, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x2a, 0x07, 0x1e, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x0d, 0x02, 0x98, 0x07, 0x48, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x6c, 0x09, 0xe0, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x0a, 0x4c, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x0a, 0x7e, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x04, 0x0a, 0x86, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x18, 0x0a, 0x8a, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0d, 0x0a, 0x95, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0c, 0x0a, 0xa2, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0d, 0x0a, 0xae, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x3c, 0x0a, 0xbb, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x15, 0x0a, 0x53, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x10, 0x0a, 0xf7, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x02, 0xa9, 0x0b, 0x07, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x2b, 0x0d, 0xb0, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x15, 0x0d, 0xdb, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x4c, 0x0d, 0xf0, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x36, 0x0f, 0x3c, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x01, 0x00, 0x10, 0x00, 0x64, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x02, 0x00, 0x08, 0x00, 0x74, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x03, 0x00, 0x30, 0x00, 0x7c, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x92, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x05, 0x00, 0x18, 0x00, 0xac, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x06, 0x00, 0x1a, 0x00, 0xc4, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x07, 0x00, 0x78, 0x00, 0xde, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x08, 0x00, 0x2a, 0x00, 0x0e, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x09, 0x00, 0x20, 0x01, 0x56, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x0a, 0x05, 0x52, 0x01, 0x76, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x0b, 0x00, 0x56, 0x06, 0xc8, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x0c, 0x00, 0x2a, 0x07, 0x1e, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x0d, 0x02, 0x98, 0x07, 0x48, 0x00, 0x03, + 0x00, 0x01, 0x04, 0x09, 0x00, 0x0e, 0x00, 0x6c, 0x09, 0xe0, 0x00, 0xa9, + 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x33, 0x00, 0x20, + 0x00, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, + 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, + 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, + 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x41, + 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x52, 0x00, 0x69, 0x00, 0x67, + 0x00, 0x68, 0x00, 0x74, 0x00, 0x73, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, + 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x76, 0x00, 0x65, 0x00, 0x64, + 0x00, 0x2e, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x6f, + 0x00, 0x6c, 0x00, 0x61, 0x00, 0x73, 0x00, 0x42, 0x00, 0x6f, 0x00, 0x6c, + 0x00, 0x64, 0x00, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, 0x6f, + 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x3a, 0x00, 0x20, + 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, + 0x00, 0x61, 0x00, 0x73, 0x00, 0x20, 0x00, 0x42, 0x00, 0x6f, 0x00, 0x6c, + 0x00, 0x64, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x35, 0x00, 0x2e, 0x00, 0x33, + 0x00, 0x33, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x6f, + 0x00, 0x6c, 0x00, 0x61, 0x00, 0x73, 0x00, 0x2d, 0x00, 0x42, 0x00, 0x6f, + 0x00, 0x6c, 0x00, 0x64, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, + 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x73, 0x00, 0x20, 0x00, 0x69, + 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x20, 0x00, 0x74, 0x00, 0x72, + 0x00, 0x61, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x72, + 0x00, 0x6b, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x4d, 0x00, 0x69, 0x00, 0x63, + 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, + 0x00, 0x20, 0x00, 0x67, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x70, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, + 0x00, 0x6d, 0x00, 0x70, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x69, 0x00, 0x65, + 0x00, 0x73, 0x00, 0x2e, 0x00, 0x4c, 0x00, 0x75, 0x00, 0x63, 0x00, 0x28, + 0x00, 0x61, 0x00, 0x73, 0x00, 0x29, 0x00, 0x20, 0x00, 0x64, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x47, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, + 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, + 0x00, 0x61, 0x00, 0x73, 0x00, 0x20, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x61, 0x00, 0x69, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x70, + 0x00, 0x72, 0x00, 0x6f, 0x00, 0x67, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6d, + 0x00, 0x6d, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x76, 0x00, 0x69, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x6d, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x63, 0x00, 0x69, + 0x00, 0x72, 0x00, 0x63, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x73, 0x00, 0x74, + 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x77, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, + 0x00, 0x61, 0x00, 0x20, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6f, + 0x00, 0x73, 0x00, 0x70, 0x00, 0x61, 0x00, 0x63, 0x00, 0x65, 0x00, 0x64, + 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, + 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x73, 0x00, 0x70, 0x00, 0x65, + 0x00, 0x63, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x65, 0x00, 0x64, + 0x00, 0x2e, 0x00, 0x20, 0x00, 0x41, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x20, + 0x00, 0x63, 0x00, 0x68, 0x00, 0x61, 0x00, 0x72, 0x00, 0x61, 0x00, 0x63, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x20, 0x00, 0x68, + 0x00, 0x61, 0x00, 0x76, 0x00, 0x65, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x73, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x64, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x2c, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x79, 0x00, 0x70, 0x00, 0x65, 0x00, 0x77, 0x00, 0x72, 0x00, 0x69, + 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x2c, 0x00, 0x20, + 0x00, 0x6d, 0x00, 0x61, 0x00, 0x6b, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, + 0x00, 0x20, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x61, 0x00, 0x20, + 0x00, 0x67, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x20, 0x00, 0x63, + 0x00, 0x68, 0x00, 0x6f, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x70, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6c, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x62, + 0x00, 0x75, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x73, + 0x00, 0x73, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x72, + 0x00, 0x65, 0x00, 0x73, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x64, + 0x00, 0x61, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2e, 0x00, 0x20, + 0x00, 0x54, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6d, + 0x00, 0x70, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x76, 0x00, 0x65, 0x00, 0x64, + 0x00, 0x20, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x6f, + 0x00, 0x77, 0x00, 0x73, 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x74, 0x00, 0x20, 0x00, 0x64, 0x00, 0x69, 0x00, 0x73, 0x00, 0x70, + 0x00, 0x6c, 0x00, 0x61, 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6c, + 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x77, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x61, 0x00, 0x20, 0x00, 0x64, 0x00, 0x65, 0x00, 0x73, 0x00, 0x69, + 0x00, 0x67, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x77, 0x00, 0x69, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x20, 0x00, 0x70, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x70, + 0x00, 0x6f, 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x73, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x73, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x74, 0x00, 0x6f, 0x00, 0x20, + 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x6c, + 0x00, 0x20, 0x00, 0x74, 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, 0x00, 0x20, + 0x00, 0x74, 0x00, 0x68, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x72, 0x00, 0x61, 0x00, 0x64, 0x00, 0x69, 0x00, 0x74, 0x00, 0x69, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x6d, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x70, 0x00, 0x61, + 0x00, 0x63, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, + 0x00, 0x6e, 0x00, 0x74, 0x00, 0x73, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, + 0x00, 0x6b, 0x00, 0x65, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x75, + 0x00, 0x72, 0x00, 0x69, 0x00, 0x65, 0x00, 0x72, 0x00, 0x2e, 0x00, 0x20, + 0x00, 0x54, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, + 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x77, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x6d, 0x00, 0x6f, + 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6d, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x74, 0x00, 0x61, 0x00, 0x62, + 0x00, 0x6c, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x61, + 0x00, 0x64, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x6f, + 0x00, 0x66, 0x00, 0x20, 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x64, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x20, 0x00, 0x73, 0x00, 0x63, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x4f, 0x00, 0x70, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x54, 0x00, 0x79, 0x00, 0x70, 0x00, 0x65, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x65, 0x00, 0x61, 0x00, 0x74, 0x00, 0x75, 0x00, 0x72, + 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x63, + 0x00, 0x6c, 0x00, 0x75, 0x00, 0x64, 0x00, 0x65, 0x00, 0x20, 0x00, 0x68, + 0x00, 0x61, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x69, + 0x00, 0x6e, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x6e, + 0x00, 0x75, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6c, + 0x00, 0x73, 0x00, 0x3b, 0x00, 0x20, 0x00, 0x73, 0x00, 0x6c, 0x00, 0x61, + 0x00, 0x73, 0x00, 0x68, 0x00, 0x65, 0x00, 0x64, 0x00, 0x2c, 0x00, 0x20, + 0x00, 0x64, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x6e, + 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, + 0x00, 0x7a, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x3b, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, + 0x00, 0x6c, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x61, + 0x00, 0x74, 0x00, 0x69, 0x00, 0x76, 0x00, 0x65, 0x00, 0x20, 0x00, 0x73, + 0x00, 0x68, 0x00, 0x61, 0x00, 0x70, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x61, 0x00, 0x20, + 0x00, 0x6e, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x62, 0x00, 0x65, 0x00, 0x72, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x6f, + 0x00, 0x77, 0x00, 0x65, 0x00, 0x72, 0x00, 0x63, 0x00, 0x61, 0x00, 0x73, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x74, 0x00, 0x74, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x54, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x6f, + 0x00, 0x6b, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x65, 0x00, 0x78, 0x00, 0x74, 0x00, 0x20, 0x00, 0x63, 0x00, 0x61, + 0x00, 0x6e, 0x00, 0x20, 0x00, 0x62, 0x00, 0x65, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x75, 0x00, 0x6e, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x6f, 0x00, 0x20, 0x00, 0x70, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x61, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x62, + 0x00, 0x79, 0x00, 0x20, 0x00, 0x76, 0x00, 0x61, 0x00, 0x72, 0x00, 0x79, + 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x6e, 0x00, 0x75, 0x00, 0x6d, 0x00, 0x62, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x20, + 0x00, 0x62, 0x00, 0x61, 0x00, 0x72, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, + 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x77, 0x00, 0x61, 0x00, 0x76, + 0x00, 0x65, 0x00, 0x73, 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x74, + 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x77, 0x00, 0x77, + 0x00, 0x77, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, + 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x2e, + 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x2f, 0x00, 0x74, 0x00, 0x79, + 0x00, 0x70, 0x00, 0x6f, 0x00, 0x67, 0x00, 0x72, 0x00, 0x61, 0x00, 0x70, + 0x00, 0x68, 0x00, 0x79, 0x00, 0x2f, 0x00, 0x63, 0x00, 0x74, 0x00, 0x66, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x73, 0x00, 0x68, 0x00, 0x74, + 0x00, 0x74, 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x66, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x66, 0x00, 0x61, 0x00, 0x62, + 0x00, 0x72, 0x00, 0x69, 0x00, 0x6b, 0x00, 0x2e, 0x00, 0x63, 0x00, 0x6f, + 0x00, 0x6d, 0x00, 0x59, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x20, 0x00, 0x6d, + 0x00, 0x61, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x61, + 0x00, 0x73, 0x00, 0x20, 0x00, 0x70, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6d, + 0x00, 0x69, 0x00, 0x74, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, + 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, + 0x00, 0x20, 0x00, 0x45, 0x00, 0x55, 0x00, 0x4c, 0x00, 0x41, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x65, 0x00, 0x20, 0x00, 0x70, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x64, + 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, + 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, + 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x69, + 0x00, 0x73, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6c, + 0x00, 0x75, 0x00, 0x64, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x6f, 0x00, 0x20, 0x00, 0x64, 0x00, 0x69, 0x00, 0x73, 0x00, 0x70, + 0x00, 0x6c, 0x00, 0x61, 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, + 0x00, 0x64, 0x00, 0x20, 0x00, 0x70, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6e, + 0x00, 0x74, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, + 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x2e, 0x00, 0x20, 0x00, 0x59, + 0x00, 0x6f, 0x00, 0x75, 0x00, 0x20, 0x00, 0x6d, 0x00, 0x61, 0x00, 0x79, + 0x00, 0x20, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x79, 0x00, 0x20, + 0x00, 0x28, 0x00, 0x69, 0x00, 0x29, 0x00, 0x20, 0x00, 0x65, 0x00, 0x6d, + 0x00, 0x62, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x74, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x63, + 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x74, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x73, 0x00, 0x20, 0x00, 0x70, 0x00, 0x65, + 0x00, 0x72, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x74, 0x00, 0x74, 0x00, 0x65, + 0x00, 0x64, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x62, + 0x00, 0x65, 0x00, 0x64, 0x00, 0x64, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, + 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x73, 0x00, 0x74, 0x00, 0x72, + 0x00, 0x69, 0x00, 0x63, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x73, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x63, 0x00, 0x6c, + 0x00, 0x75, 0x00, 0x64, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x69, + 0x00, 0x6e, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, + 0x00, 0x20, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x3b, + 0x00, 0x20, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x64, 0x00, 0x20, 0x00, 0x28, + 0x00, 0x69, 0x00, 0x69, 0x00, 0x29, 0x00, 0x20, 0x00, 0x74, 0x00, 0x65, + 0x00, 0x6d, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x72, + 0x00, 0x69, 0x00, 0x6c, 0x00, 0x79, 0x00, 0x20, 0x00, 0x64, 0x00, 0x6f, + 0x00, 0x77, 0x00, 0x6e, 0x00, 0x6c, 0x00, 0x6f, 0x00, 0x61, 0x00, 0x64, + 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, + 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x6f, 0x00, 0x20, 0x00, 0x61, 0x00, 0x20, 0x00, 0x70, 0x00, 0x72, + 0x00, 0x69, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, + 0x00, 0x6f, 0x00, 0x72, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x68, + 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x74, + 0x00, 0x70, 0x00, 0x75, 0x00, 0x74, 0x00, 0x20, 0x00, 0x64, 0x00, 0x65, + 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x74, + 0x00, 0x6f, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x70, + 0x00, 0x20, 0x00, 0x70, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x74, + 0x00, 0x20, 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, + 0x00, 0x6e, 0x00, 0x74, 0x00, 0x2e, 0x00, 0x68, 0x00, 0x74, 0x00, 0x74, + 0x00, 0x70, 0x00, 0x3a, 0x00, 0x2f, 0x00, 0x2f, 0x00, 0x77, 0x00, 0x77, + 0x00, 0x77, 0x00, 0x2e, 0x00, 0x6d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, + 0x00, 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x2e, + 0x00, 0x63, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x2f, 0x00, 0x74, 0x00, 0x79, + 0x00, 0x70, 0x00, 0x6f, 0x00, 0x67, 0x00, 0x72, 0x00, 0x61, 0x00, 0x70, + 0x00, 0x68, 0x00, 0x79, 0x00, 0x2f, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x6e, + 0x00, 0x74, 0x00, 0x73, 0x00, 0x2f, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, + 0x00, 0x61, 0x00, 0x75, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x2e, 0x00, 0x61, + 0x00, 0x73, 0x00, 0x70, 0x00, 0x78, 0xa9, 0x20, 0x32, 0x30, 0x31, 0x33, + 0x20, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, + 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, + 0x41, 0x6c, 0x6c, 0x20, 0x52, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x52, + 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x73, + 0x6f, 0x6c, 0x61, 0x73, 0x42, 0x6f, 0x6c, 0x64, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x3a, 0x20, 0x43, 0x6f, 0x6e, 0x73, 0x6f, + 0x6c, 0x61, 0x73, 0x20, 0x42, 0x6f, 0x6c, 0x64, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x20, 0x35, 0x2e, 0x33, 0x33, 0x43, 0x6f, 0x6e, 0x73, + 0x6f, 0x6c, 0x61, 0x73, 0x2d, 0x42, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x6e, + 0x73, 0x6f, 0x6c, 0x61, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, + 0x72, 0x61, 0x64, 0x65, 0x6d, 0x61, 0x72, 0x6b, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, + 0x74, 0x20, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x63, + 0x6f, 0x6d, 0x70, 0x61, 0x6e, 0x69, 0x65, 0x73, 0x2e, 0x4c, 0x75, 0x63, + 0x28, 0x61, 0x73, 0x29, 0x20, 0x64, 0x65, 0x20, 0x47, 0x72, 0x6f, 0x6f, + 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x61, 0x73, 0x20, 0x69, 0x73, + 0x20, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x75, + 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x6d, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, + 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6d, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, + 0x20, 0x61, 0x20, 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x64, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x20, 0x41, 0x6c, 0x6c, + 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, + 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, + 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2c, 0x20, 0x6c, 0x69, 0x6b, + 0x65, 0x20, 0x6f, 0x6c, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x6d, 0x61, 0x6b, 0x69, 0x6e, + 0x67, 0x20, 0x69, 0x74, 0x20, 0x61, 0x20, 0x67, 0x6f, 0x6f, 0x64, 0x20, + 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x70, + 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x62, 0x75, 0x73, 0x69, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x64, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6d, 0x70, 0x72, 0x6f, 0x76, 0x65, + 0x64, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x66, 0x6f, + 0x6e, 0x74, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, 0x61, 0x20, 0x64, 0x65, 0x73, + 0x69, 0x67, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x63, 0x6c, 0x6f, + 0x73, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, + 0x6c, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, + 0x74, 0x72, 0x61, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, + 0x6d, 0x6f, 0x6e, 0x6f, 0x73, 0x70, 0x61, 0x63, 0x65, 0x64, 0x20, 0x66, + 0x6f, 0x6e, 0x74, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x43, 0x6f, + 0x75, 0x72, 0x69, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, + 0x6f, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x66, 0x6f, 0x72, 0x74, 0x61, + 0x62, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x6f, 0x66, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, + 0x74, 0x65, 0x78, 0x74, 0x20, 0x6f, 0x6e, 0x20, 0x73, 0x63, 0x72, 0x65, + 0x65, 0x6e, 0x2e, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x69, 0x6e, + 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x68, 0x61, 0x6e, 0x67, 0x69, 0x6e, + 0x67, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, + 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x6c, 0x73, 0x3b, 0x20, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x65, 0x64, 0x2c, 0x20, 0x64, 0x6f, 0x74, 0x74, 0x65, + 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, + 0x20, 0x7a, 0x65, 0x72, 0x6f, 0x73, 0x3b, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x61, 0x6c, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, + 0x73, 0x68, 0x61, 0x70, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, + 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x6c, + 0x6f, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6c, 0x65, 0x74, + 0x74, 0x65, 0x72, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6c, 0x6f, + 0x6f, 0x6b, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x63, + 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x74, 0x75, 0x6e, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x6c, 0x20, + 0x74, 0x61, 0x73, 0x74, 0x65, 0x20, 0x62, 0x79, 0x20, 0x76, 0x61, 0x72, + 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x61, 0x72, 0x73, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x77, 0x61, 0x76, 0x65, 0x73, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, + 0x79, 0x70, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x2f, 0x63, 0x74, + 0x66, 0x6f, 0x6e, 0x74, 0x73, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, + 0x66, 0x6f, 0x6e, 0x74, 0x66, 0x61, 0x62, 0x72, 0x69, 0x6b, 0x2e, 0x63, + 0x6f, 0x6d, 0x59, 0x6f, 0x75, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x75, 0x73, + 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, + 0x61, 0x73, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, + 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x45, 0x55, 0x4c, 0x41, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, + 0x64, 0x75, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, + 0x69, 0x73, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x63, 0x6f, 0x6e, + 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x20, 0x59, 0x6f, 0x75, 0x20, 0x6d, 0x61, + 0x79, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x28, 0x69, 0x29, 0x20, 0x65, + 0x6d, 0x62, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, + 0x6e, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x20, 0x61, 0x73, 0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x74, + 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6d, + 0x62, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x3b, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x28, 0x69, 0x69, 0x29, 0x20, 0x74, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, + 0x72, 0x69, 0x6c, 0x79, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, + 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, + 0x74, 0x6f, 0x20, 0x68, 0x65, 0x6c, 0x70, 0x20, 0x70, 0x72, 0x69, 0x6e, + 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2e, 0x68, 0x74, + 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, + 0x79, 0x70, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 0x2f, 0x66, 0x6f, + 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x2e, + 0x61, 0x73, 0x70, 0x78, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0x27, 0x00, 0xc2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x0e, 0x00, 0x07, + 0xff, 0xff, 0x00, 0x0f, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x01, 0x5a, 0x01, 0x62, 0x00, 0x02, 0x00, 0x37, 0x00, 0x00, 0x01, 0x3c, + 0x00, 0x01, 0x01, 0x3d, 0x01, 0x3d, 0x00, 0x03, 0x01, 0x3e, 0x01, 0x3e, + 0x00, 0x01, 0x01, 0x3f, 0x01, 0x3f, 0x00, 0x03, 0x01, 0x40, 0x01, 0x40, + 0x00, 0x01, 0x01, 0x41, 0x01, 0x41, 0x00, 0x03, 0x01, 0x42, 0x01, 0x42, + 0x00, 0x01, 0x01, 0x43, 0x01, 0x44, 0x00, 0x03, 0x01, 0x45, 0x01, 0x45, + 0x00, 0x01, 0x01, 0x46, 0x01, 0x46, 0x00, 0x03, 0x01, 0x47, 0x01, 0x47, + 0x00, 0x01, 0x01, 0x48, 0x01, 0x48, 0x00, 0x03, 0x01, 0x49, 0x01, 0x49, + 0x00, 0x01, 0x01, 0x4a, 0x01, 0x4a, 0x00, 0x03, 0x01, 0x4b, 0x01, 0x4b, + 0x00, 0x01, 0x01, 0x4c, 0x01, 0x4c, 0x00, 0x03, 0x01, 0x4d, 0x01, 0x4d, + 0x00, 0x01, 0x01, 0x4e, 0x01, 0x4e, 0x00, 0x03, 0x01, 0x4f, 0x01, 0x50, + 0x00, 0x01, 0x01, 0x51, 0x01, 0x51, 0x00, 0x03, 0x01, 0x52, 0x01, 0x52, + 0x00, 0x01, 0x01, 0x53, 0x01, 0x53, 0x00, 0x03, 0x01, 0x54, 0x01, 0x55, + 0x00, 0x01, 0x01, 0x56, 0x01, 0x56, 0x00, 0x03, 0x01, 0x57, 0x02, 0x48, + 0x00, 0x01, 0x02, 0x49, 0x02, 0x4a, 0x00, 0x03, 0x02, 0x4b, 0x02, 0xc4, + 0x00, 0x01, 0x02, 0xc5, 0x02, 0xd7, 0x00, 0x03, 0x02, 0xd8, 0x03, 0xb9, + 0x00, 0x01, 0x03, 0xba, 0x03, 0xfa, 0x00, 0x03, 0x03, 0xfb, 0x03, 0xfb, + 0x00, 0x01, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x03, 0x03, 0xfd, 0x03, 0xfd, + 0x00, 0x01, 0x03, 0xfe, 0x04, 0x0a, 0x00, 0x03, 0x04, 0x0b, 0x04, 0x0b, + 0x00, 0x01, 0x04, 0x0c, 0x04, 0x58, 0x00, 0x03, 0x04, 0x59, 0x07, 0x40, + 0x00, 0x01, 0x07, 0x41, 0x07, 0x41, 0x00, 0x03, 0x07, 0x42, 0x07, 0xf9, + 0x00, 0x01, 0x07, 0xfa, 0x07, 0xfa, 0x00, 0x03, 0x07, 0xfb, 0x07, 0xfb, + 0x00, 0x01, 0x07, 0xfc, 0x07, 0xfc, 0x00, 0x03, 0x07, 0xfd, 0x07, 0xfd, + 0x00, 0x01, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x03, 0x07, 0xff, 0x07, 0xff, + 0x00, 0x01, 0x08, 0x00, 0x08, 0x00, 0x00, 0x03, 0x08, 0x01, 0x08, 0x01, + 0x00, 0x01, 0x08, 0x02, 0x08, 0x26, 0x00, 0x03, 0x08, 0x27, 0x0a, 0x02, + 0x00, 0x01, 0x0a, 0x03, 0x0a, 0x0b, 0x00, 0x03, 0x0a, 0x0c, 0x0a, 0x2c, + 0x00, 0x01, 0x0a, 0x2d, 0x0a, 0x3b, 0x00, 0x03, 0x0a, 0x3c, 0x0a, 0x47, + 0x00, 0x01, 0x0a, 0x48, 0x0a, 0x4b, 0x00, 0x03, 0x0a, 0x4c, 0x0a, 0xae, + 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x58, 0x02, 0x49, 0x02, 0x49, 0x00, 0x01, 0x02, 0xc5, 0x02, 0xc5, + 0x00, 0x01, 0x02, 0xc7, 0x02, 0xc7, 0x00, 0x01, 0x02, 0xc9, 0x02, 0xc9, + 0x00, 0x01, 0x02, 0xcb, 0x02, 0xcb, 0x00, 0x01, 0x02, 0xcd, 0x02, 0xcd, + 0x00, 0x01, 0x02, 0xcf, 0x02, 0xcf, 0x00, 0x01, 0x02, 0xd1, 0x02, 0xd1, + 0x00, 0x01, 0x02, 0xd3, 0x02, 0xd3, 0x00, 0x01, 0x02, 0xd5, 0x02, 0xd5, + 0x00, 0x01, 0x03, 0xba, 0x03, 0xba, 0x00, 0x01, 0x03, 0xbc, 0x03, 0xbc, + 0x00, 0x01, 0x03, 0xbe, 0x03, 0xbe, 0x00, 0x01, 0x03, 0xc0, 0x03, 0xc0, + 0x00, 0x01, 0x03, 0xc2, 0x03, 0xc2, 0x00, 0x01, 0x03, 0xc4, 0x03, 0xc4, + 0x00, 0x01, 0x03, 0xc6, 0x03, 0xc6, 0x00, 0x01, 0x03, 0xc8, 0x03, 0xc8, + 0x00, 0x01, 0x03, 0xca, 0x03, 0xca, 0x00, 0x01, 0x03, 0xd0, 0x03, 0xd0, + 0x00, 0x01, 0x03, 0xe6, 0x03, 0xe6, 0x00, 0x01, 0x03, 0xe8, 0x03, 0xe8, + 0x00, 0x01, 0x03, 0xea, 0x03, 0xea, 0x00, 0x01, 0x03, 0xec, 0x03, 0xec, + 0x00, 0x01, 0x03, 0xee, 0x03, 0xee, 0x00, 0x01, 0x03, 0xf4, 0x03, 0xf4, + 0x00, 0x01, 0x03, 0xf6, 0x03, 0xf6, 0x00, 0x01, 0x03, 0xf8, 0x03, 0xf8, + 0x00, 0x01, 0x03, 0xfa, 0x03, 0xfa, 0x00, 0x01, 0x03, 0xfc, 0x03, 0xfc, + 0x00, 0x01, 0x03, 0xfe, 0x03, 0xfe, 0x00, 0x01, 0x04, 0x03, 0x04, 0x03, + 0x00, 0x01, 0x04, 0x05, 0x04, 0x05, 0x00, 0x01, 0x04, 0x07, 0x04, 0x07, + 0x00, 0x01, 0x04, 0x0c, 0x04, 0x0c, 0x00, 0x01, 0x04, 0x0e, 0x04, 0x0e, + 0x00, 0x01, 0x04, 0x10, 0x04, 0x10, 0x00, 0x01, 0x04, 0x16, 0x04, 0x16, + 0x00, 0x01, 0x04, 0x18, 0x04, 0x18, 0x00, 0x01, 0x04, 0x1c, 0x04, 0x1c, + 0x00, 0x01, 0x04, 0x1f, 0x04, 0x1f, 0x00, 0x01, 0x04, 0x21, 0x04, 0x21, + 0x00, 0x01, 0x04, 0x24, 0x04, 0x24, 0x00, 0x01, 0x04, 0x26, 0x04, 0x26, + 0x00, 0x01, 0x04, 0x29, 0x04, 0x29, 0x00, 0x01, 0x04, 0x2b, 0x04, 0x2b, + 0x00, 0x01, 0x04, 0x2d, 0x04, 0x2d, 0x00, 0x01, 0x04, 0x2f, 0x04, 0x2f, + 0x00, 0x01, 0x04, 0x31, 0x04, 0x31, 0x00, 0x01, 0x04, 0x33, 0x04, 0x33, + 0x00, 0x01, 0x04, 0x35, 0x04, 0x35, 0x00, 0x01, 0x04, 0x37, 0x04, 0x37, + 0x00, 0x01, 0x04, 0x39, 0x04, 0x39, 0x00, 0x01, 0x04, 0x3b, 0x04, 0x3b, + 0x00, 0x01, 0x04, 0x3d, 0x04, 0x3d, 0x00, 0x01, 0x04, 0x3f, 0x04, 0x3f, + 0x00, 0x01, 0x04, 0x41, 0x04, 0x41, 0x00, 0x01, 0x04, 0x43, 0x04, 0x43, + 0x00, 0x01, 0x04, 0x45, 0x04, 0x45, 0x00, 0x01, 0x04, 0x49, 0x04, 0x49, + 0x00, 0x01, 0x04, 0x4b, 0x04, 0x4b, 0x00, 0x01, 0x04, 0x4d, 0x04, 0x4d, + 0x00, 0x01, 0x04, 0x4f, 0x04, 0x4f, 0x00, 0x01, 0x04, 0x51, 0x04, 0x51, + 0x00, 0x01, 0x04, 0x53, 0x04, 0x53, 0x00, 0x01, 0x04, 0x56, 0x04, 0x56, + 0x00, 0x01, 0x07, 0xfa, 0x07, 0xfa, 0x00, 0x01, 0x07, 0xfc, 0x07, 0xfc, + 0x00, 0x01, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x01, 0x08, 0x00, 0x08, 0x00, + 0x00, 0x01, 0x08, 0x02, 0x08, 0x02, 0x00, 0x01, 0x08, 0x04, 0x08, 0x04, + 0x00, 0x01, 0x08, 0x06, 0x08, 0x06, 0x00, 0x01, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x01, 0x08, 0x0a, 0x08, 0x0a, 0x00, 0x01, 0x08, 0x0c, 0x08, 0x0c, + 0x00, 0x01, 0x08, 0x0e, 0x08, 0x0e, 0x00, 0x01, 0x08, 0x10, 0x08, 0x10, + 0x00, 0x01, 0x08, 0x12, 0x08, 0x12, 0x00, 0x01, 0x08, 0x14, 0x08, 0x14, + 0x00, 0x01, 0x08, 0x18, 0x08, 0x18, 0x00, 0x01, 0x08, 0x26, 0x08, 0x26, + 0x00, 0x01, 0x0a, 0x04, 0x0a, 0x04, 0x00, 0x01, 0x0a, 0x06, 0x0a, 0x06, + 0x00, 0x01, 0x0a, 0x08, 0x0a, 0x08, 0x00, 0x01, 0x0a, 0x0a, 0x0a, 0x0a, + 0x00, 0x01, 0x0a, 0x2d, 0x0a, 0x37, 0x00, 0x01, 0x0a, 0x48, 0x0a, 0x4b, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x88, + 0x01, 0xbe, 0x00, 0x03, 0x63, 0x79, 0x72, 0x6c, 0x00, 0x14, 0x67, 0x72, + 0x65, 0x6b, 0x00, 0x32, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0x40, 0x00, 0x0a, + 0x00, 0x01, 0x53, 0x52, 0x42, 0x20, 0x00, 0x14, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x09, 0x00, 0x16, 0x00, 0x03, 0x49, 0x50, + 0x50, 0x48, 0x00, 0x20, 0x52, 0x4f, 0x4d, 0x20, 0x00, 0x2a, 0x54, 0x52, + 0x4b, 0x20, 0x00, 0x34, 0x00, 0x00, 0xff, 0xff, 0x00, 0x02, 0x00, 0x03, + 0x00, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x02, 0x00, 0x04, 0x00, 0x0b, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x02, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0d, 0x00, 0x0e, 0x6d, 0x61, + 0x72, 0x6b, 0x00, 0x56, 0x6d, 0x61, 0x72, 0x6b, 0x00, 0x6c, 0x6d, 0x61, + 0x72, 0x6b, 0x00, 0x82, 0x6d, 0x61, 0x72, 0x6b, 0x00, 0x98, 0x6d, 0x61, + 0x72, 0x6b, 0x00, 0xae, 0x6d, 0x61, 0x72, 0x6b, 0x00, 0xc4, 0x6d, 0x61, + 0x72, 0x6b, 0x00, 0xda, 0x6d, 0x6b, 0x6d, 0x6b, 0x00, 0xf0, 0x6d, 0x6b, + 0x6d, 0x6b, 0x00, 0xfa, 0x6d, 0x6b, 0x6d, 0x6b, 0x01, 0x04, 0x6d, 0x6b, + 0x6d, 0x6b, 0x01, 0x0e, 0x6d, 0x6b, 0x6d, 0x6b, 0x01, 0x18, 0x6d, 0x6b, + 0x6d, 0x6b, 0x01, 0x22, 0x6d, 0x6b, 0x6d, 0x6b, 0x01, 0x2c, 0x00, 0x00, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, + 0x00, 0x07, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, + 0x00, 0x0a, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, + 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0b, + 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x1c, 0x00, 0x24, + 0x00, 0x2c, 0x00, 0x34, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00, 0x54, + 0x00, 0x5c, 0x00, 0x64, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x7c, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x68, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, + 0x17, 0xf6, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x18, 0xd4, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x01, 0x1a, 0x56, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, + 0x1b, 0x48, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x29, 0x1a, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x01, 0x2a, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, + 0x2a, 0xec, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x32, 0xa2, 0x00, 0x04, + 0x02, 0x00, 0x00, 0x01, 0x33, 0x2c, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x40, 0xe2, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x43, 0x5c, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x01, 0x48, 0xb2, 0x00, 0x01, 0x15, 0x54, 0x15, 0xe2, + 0x00, 0x03, 0x00, 0x0c, 0x03, 0x82, 0x00, 0xdd, 0x00, 0x00, 0x4a, 0x60, + 0x00, 0x00, 0x4a, 0x66, 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x00, 0x4a, 0x6c, + 0x00, 0x01, 0x4f, 0xca, 0x00, 0x00, 0x4a, 0x72, 0x00, 0x00, 0x4a, 0x78, + 0x00, 0x00, 0x4a, 0x7e, 0x00, 0x00, 0x4a, 0x84, 0x00, 0x00, 0x4a, 0x8a, + 0x00, 0x00, 0x4a, 0x90, 0x00, 0x00, 0x4a, 0x96, 0x00, 0x02, 0x5a, 0xd4, + 0x00, 0x00, 0x4a, 0x9c, 0x00, 0x00, 0x4a, 0xa2, 0x00, 0x00, 0x4a, 0xa8, + 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x00, 0x4a, 0xa8, 0x00, 0x00, 0x4a, 0x6c, + 0x00, 0x00, 0x4a, 0xa8, 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x00, 0x4a, 0xa8, + 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4a, 0x78, + 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4a, 0xb4, 0x00, 0x00, 0x4a, 0xae, + 0x00, 0x00, 0x4a, 0x78, 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4a, 0x78, + 0x00, 0x02, 0x5a, 0xda, 0x00, 0x00, 0x4a, 0xba, 0x00, 0x00, 0x4a, 0xba, + 0x00, 0x00, 0x4a, 0xc0, 0x00, 0x00, 0x4a, 0xc6, 0x00, 0x00, 0x4a, 0xc0, + 0x00, 0x00, 0x4a, 0xc6, 0x00, 0x00, 0x4a, 0xcc, 0x00, 0x00, 0x4a, 0xd2, + 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4a, 0xd8, 0x00, 0x00, 0x4a, 0xae, + 0x00, 0x00, 0x4a, 0xde, 0x00, 0x00, 0x4a, 0xe4, 0x00, 0x00, 0x4a, 0x6c, + 0x00, 0x00, 0x4a, 0xe4, 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x00, 0x4a, 0xea, + 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x02, 0x5a, 0xe0, 0x00, 0x02, 0x5a, 0xe0, + 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x01, 0x4f, 0xd0, + 0x00, 0x01, 0x4e, 0xe0, 0x00, 0x02, 0x5a, 0xec, 0x00, 0x02, 0x5a, 0xe6, + 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5a, 0xf2, + 0x00, 0x02, 0x5a, 0xf8, 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5a, 0xfe, + 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5a, 0xe0, + 0x00, 0x02, 0x5a, 0xe0, 0x00, 0x02, 0x5a, 0xe0, 0x00, 0x02, 0x5a, 0xe0, + 0x00, 0x02, 0x5b, 0x04, 0x00, 0x02, 0x5b, 0x0a, 0x00, 0x02, 0x5b, 0x10, + 0x00, 0x02, 0x5b, 0x16, 0x00, 0x02, 0x5b, 0x1c, 0x00, 0x02, 0x5a, 0xe6, + 0x00, 0x02, 0x5b, 0x22, 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x00, 0x4a, 0xea, + 0x00, 0x00, 0x4a, 0xf0, 0x00, 0x00, 0x4a, 0xf6, 0x00, 0x00, 0x4a, 0xfc, + 0x00, 0x00, 0x4b, 0x02, 0x00, 0x00, 0x4a, 0x78, 0x00, 0x00, 0x4a, 0xf6, + 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x02, 0x5b, 0x16, 0x00, 0x02, 0x5b, 0x28, + 0x00, 0x02, 0x5b, 0x2e, 0x00, 0x00, 0x4b, 0x08, 0x00, 0x00, 0x4a, 0x96, + 0x00, 0x00, 0x4b, 0x0e, 0x00, 0x00, 0x4b, 0x14, 0x00, 0x00, 0x4b, 0x1a, + 0x00, 0x00, 0x4b, 0x20, 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5b, 0x34, + 0x00, 0x00, 0x4a, 0xf6, 0x00, 0x00, 0x4a, 0x6c, 0x00, 0x00, 0x4b, 0x26, + 0x00, 0x00, 0x4b, 0x2c, 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4b, 0x32, + 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x02, 0x5b, 0x3a, 0x00, 0x02, 0x5b, 0x3a, + 0x00, 0x02, 0x5b, 0x3a, 0x00, 0x00, 0x4b, 0x38, 0x00, 0x00, 0x4b, 0x3e, + 0x00, 0x01, 0x4f, 0xd6, 0x00, 0x01, 0x4f, 0xdc, 0x00, 0x02, 0x5b, 0x40, + 0x00, 0x02, 0x5a, 0xe6, 0x00, 0x00, 0x4a, 0xf6, 0x00, 0x00, 0x4a, 0x6c, + 0x00, 0x00, 0x4b, 0x44, 0x00, 0x00, 0x4b, 0x4a, 0x00, 0x00, 0x4b, 0x44, + 0x00, 0x00, 0x4b, 0x4a, 0x00, 0x00, 0x4b, 0x50, 0x00, 0x00, 0x4b, 0x56, + 0x00, 0x00, 0x4b, 0x5c, 0x00, 0x00, 0x4b, 0x62, 0x00, 0x00, 0x4b, 0x5c, + 0x00, 0x00, 0x4b, 0x62, 0x00, 0x00, 0x4b, 0x68, 0x00, 0x00, 0x4b, 0x62, + 0x00, 0x00, 0x4b, 0x5c, 0x00, 0x00, 0x4b, 0x62, 0x00, 0x00, 0x4b, 0x6e, + 0x00, 0x00, 0x4b, 0x74, 0x00, 0x00, 0x4b, 0x6e, 0x00, 0x00, 0x4b, 0x74, + 0x00, 0x00, 0x4b, 0x6e, 0x00, 0x00, 0x4b, 0x74, 0x00, 0x00, 0x4b, 0x68, + 0x00, 0x00, 0x4b, 0x62, 0x00, 0x00, 0x4b, 0x6e, 0x00, 0x00, 0x4b, 0x74, + 0x00, 0x00, 0x4b, 0x6e, 0x00, 0x00, 0x4b, 0x74, 0x00, 0x00, 0x4b, 0x7a, + 0x00, 0x00, 0x4b, 0x80, 0x00, 0x00, 0x4b, 0x7a, 0x00, 0x00, 0x4b, 0x80, + 0x00, 0x02, 0x5b, 0x46, 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4b, 0x86, + 0x00, 0x00, 0x4b, 0x8c, 0x00, 0x00, 0x4b, 0x92, 0x00, 0x00, 0x4b, 0x98, + 0x00, 0x00, 0x4b, 0x9e, 0x00, 0x00, 0x4b, 0xa4, 0x00, 0x00, 0x4b, 0xaa, + 0x00, 0x00, 0x4b, 0xb0, 0x00, 0x00, 0x4b, 0xb6, 0x00, 0x00, 0x4b, 0xbc, + 0x00, 0x00, 0x4b, 0xb6, 0x00, 0x00, 0x4b, 0xbc, 0x00, 0x02, 0x5b, 0x4c, + 0x00, 0x00, 0x4a, 0xf6, 0x00, 0x00, 0x4b, 0xc2, 0x00, 0x02, 0x5b, 0x3a, + 0x00, 0x00, 0x4b, 0xc8, 0x00, 0x00, 0x4b, 0xc8, 0x00, 0x00, 0x4b, 0xce, + 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, + 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, + 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, + 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xce, 0x00, 0x00, 0x4b, 0xd4, + 0x00, 0x00, 0x4b, 0xd4, 0x00, 0x00, 0x4b, 0xd4, 0x00, 0x00, 0x4b, 0xd4, + 0x00, 0x00, 0x4b, 0xda, 0x00, 0x00, 0x4b, 0xda, 0x00, 0x00, 0x4b, 0xe0, + 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4b, 0xe6, 0x00, 0x00, 0x4b, 0xe6, + 0x00, 0x00, 0x4b, 0xe0, 0x00, 0x00, 0x4b, 0xe0, 0x00, 0x00, 0x4b, 0xe0, + 0x00, 0x00, 0x4b, 0xe0, 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4a, 0xae, + 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4b, 0xd4, + 0x00, 0x00, 0x4b, 0xd4, 0x00, 0x00, 0x4b, 0xd4, 0x00, 0x00, 0x4b, 0xd4, + 0x00, 0x02, 0x5b, 0x52, 0x00, 0x00, 0x4b, 0xec, 0x00, 0x00, 0x4b, 0xf2, + 0x00, 0x00, 0x4b, 0xf8, 0x00, 0x00, 0x4b, 0xfe, 0x00, 0x00, 0x4c, 0x04, + 0x00, 0x00, 0x4b, 0xfe, 0x00, 0x00, 0x4c, 0x04, 0x00, 0x00, 0x4c, 0x0a, + 0x00, 0x00, 0x4b, 0xf8, 0x00, 0x00, 0x4c, 0x10, 0x00, 0x00, 0x4c, 0x16, + 0x00, 0x00, 0x4a, 0xa8, 0x00, 0x00, 0x4b, 0x1a, 0x00, 0x00, 0x4c, 0x1c, + 0x00, 0x00, 0x4a, 0xae, 0x00, 0x00, 0x4b, 0x0e, 0x00, 0x00, 0x4c, 0x22, + 0x00, 0x00, 0x4b, 0x38, 0x00, 0x00, 0x4c, 0x28, 0x00, 0x00, 0x4a, 0xa8, + 0x00, 0x00, 0x4c, 0x2e, 0x02, 0xf8, 0x48, 0xbe, 0x4c, 0x6c, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0x72, 0x57, 0xe2, 0x48, 0xc4, 0x4c, 0x78, 0x57, 0xe8, + 0x48, 0xca, 0x4c, 0x7e, 0x57, 0xee, 0x48, 0xbe, 0x4c, 0x84, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0x8a, 0x57, 0xe2, 0x48, 0xc4, 0x4c, 0x90, 0x57, 0xe8, + 0x48, 0xbe, 0x4c, 0x96, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x9c, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xa2, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xa8, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xae, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xa8, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xb4, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xba, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xc0, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xba, 0x57, 0xf4, + 0x48, 0xca, 0x4c, 0xc6, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xcc, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xd2, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xd8, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xde, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xe4, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xea, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xf0, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xf6, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0x8c, 0x57, 0xe2, + 0x48, 0xee, 0x4d, 0x92, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0x98, 0x57, 0xe2, + 0x48, 0xf4, 0x4d, 0x9e, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0x92, 0x57, 0xe2, + 0x48, 0xfa, 0x4d, 0xa4, 0x57, 0xe2, 0x49, 0x00, 0x4d, 0xaa, 0x57, 0xe2, + 0x49, 0x06, 0x4d, 0xb0, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x6c, 0x58, 0x06, + 0x49, 0x0c, 0x4d, 0xb6, 0x58, 0x0c, 0x49, 0x12, 0x4d, 0xbc, 0x57, 0xe8, + 0x49, 0x12, 0x4d, 0xc2, 0x57, 0xe8, 0x49, 0x12, 0x4d, 0xbc, 0x57, 0xe8, + 0x49, 0x18, 0x4d, 0xc8, 0x57, 0xe8, 0x48, 0xc4, 0x4c, 0x78, 0x58, 0x12, + 0x49, 0x1e, 0x4d, 0xce, 0x57, 0xee, 0x48, 0xbe, 0x4c, 0x7e, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0x7e, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0xd4, 0x57, 0xe2, + 0x48, 0xee, 0x4d, 0xda, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0xd4, 0x57, 0xe2, + 0x48, 0xee, 0x4d, 0xda, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0xda, 0x57, 0xe2, + 0x48, 0xfa, 0x4d, 0xe0, 0x57, 0xe2, 0x49, 0x00, 0x4d, 0xe6, 0x57, 0xe2, + 0x49, 0x24, 0x4d, 0xec, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x84, 0x58, 0x06, + 0x49, 0x12, 0x4d, 0xf2, 0x57, 0xe8, 0x49, 0x2a, 0x4d, 0xf8, 0x57, 0xe8, + 0x49, 0x18, 0x4d, 0xfe, 0x57, 0xe8, 0x48, 0xc4, 0x4c, 0x90, 0x58, 0x18, + 0x48, 0xee, 0x4e, 0x04, 0x57, 0xe2, 0x49, 0x30, 0x4e, 0x0a, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x10, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x16, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x10, 0x57, 0xe2, 0x48, 0xf4, 0x4e, 0x1c, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x16, 0x57, 0xe2, 0x48, 0xfa, 0x4e, 0x22, 0x57, 0xe2, + 0x49, 0x00, 0x4e, 0x28, 0x57, 0xe2, 0x49, 0x24, 0x4e, 0x2e, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0x9c, 0x58, 0x06, 0x49, 0x30, 0x4e, 0x34, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x3a, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xa8, 0x57, 0xf4, + 0x48, 0xee, 0x4e, 0x40, 0x57, 0xe2, 0x49, 0x36, 0x4e, 0x46, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xae, 0x57, 0xf4, 0x49, 0x3c, 0x4c, 0xae, 0x58, 0x1e, + 0x48, 0xbe, 0x4c, 0xae, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x4c, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x4c, 0x57, 0xe2, 0x48, 0xf4, 0x4e, 0x52, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xb4, 0x57, 0xf4, 0x48, 0xbe, 0x4c, 0xb4, 0x58, 0x24, + 0x48, 0xee, 0x4e, 0x58, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x5e, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x58, 0x57, 0xe2, 0x48, 0xf4, 0x4e, 0x64, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x5e, 0x57, 0xe2, 0x48, 0xfa, 0x4e, 0x6a, 0x57, 0xe2, + 0x49, 0x00, 0x4e, 0x70, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x76, 0x57, 0xe2, + 0x49, 0x42, 0x4e, 0x7c, 0x58, 0x2a, 0x49, 0x48, 0x4e, 0x82, 0x58, 0x30, + 0x49, 0x30, 0x4e, 0x88, 0x57, 0xe2, 0x49, 0x1e, 0x4e, 0x8e, 0x57, 0xe2, + 0x49, 0x1e, 0x4e, 0x8e, 0x57, 0xe2, 0x48, 0xca, 0x4c, 0xc6, 0x57, 0xf4, + 0x48, 0xee, 0x4e, 0x94, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x9a, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x94, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xcc, 0x58, 0x36, + 0x48, 0xee, 0x4e, 0xa0, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xd2, 0x57, 0xf4, + 0x48, 0xbe, 0x4e, 0xa6, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xac, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0xb2, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xac, 0x57, 0xe2, + 0x48, 0xf4, 0x4e, 0xb8, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xb2, 0x57, 0xe2, + 0x48, 0xfa, 0x4e, 0xbe, 0x57, 0xe2, 0x49, 0x00, 0x4e, 0xc4, 0x57, 0xe2, + 0x49, 0x06, 0x4e, 0xca, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x76, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xd8, 0x58, 0x06, 0x48, 0xee, 0x4e, 0xd0, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0xd0, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xd0, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0xd0, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xd6, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x76, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xd6, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x76, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xdc, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0xdc, 0x57, 0xe2, 0x49, 0x24, 0x4e, 0xe2, 0x57, 0xe2, + 0x48, 0xa6, 0x4c, 0xfc, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x02, 0x57, 0xe2, + 0x48, 0xd6, 0x4d, 0x08, 0x57, 0xe8, 0x48, 0xd0, 0x4d, 0x0e, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x14, 0x57, 0xe2, 0x48, 0xdc, 0x4d, 0x1a, 0x57, 0xfa, + 0x48, 0xa6, 0x4d, 0x20, 0x58, 0x00, 0x48, 0xd0, 0x4d, 0x02, 0x57, 0xe2, + 0x48, 0xd0, 0x4d, 0x26, 0x57, 0xe2, 0x48, 0xe2, 0x4d, 0x2c, 0x58, 0x00, + 0x48, 0xd0, 0x4d, 0x32, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x38, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x3e, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x44, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x4a, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x50, 0x57, 0xf4, + 0x48, 0xa6, 0x4d, 0x56, 0x57, 0xf4, 0x48, 0xa6, 0x4d, 0x5c, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x62, 0x57, 0xe2, 0x48, 0xe8, 0x4d, 0x68, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x44, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x6e, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x74, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x7a, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x80, 0x57, 0xf4, 0x48, 0xa6, 0x4d, 0x86, 0x57, 0xe2, + 0x49, 0x4e, 0x4e, 0xe8, 0x57, 0xe2, 0x49, 0x4e, 0x4e, 0xee, 0x57, 0xe2, + 0x49, 0x4e, 0x4e, 0xe8, 0x57, 0xe2, 0x49, 0x4e, 0x4e, 0xee, 0x57, 0xe2, + 0x49, 0x54, 0x4e, 0xf4, 0x57, 0xe2, 0x49, 0x5a, 0x4e, 0xfa, 0x57, 0xe2, + 0x49, 0x4e, 0x4e, 0xee, 0x57, 0xe2, 0x49, 0x60, 0x4f, 0x00, 0x57, 0xe2, + 0x48, 0xa6, 0x4c, 0xfc, 0x58, 0x06, 0x48, 0xa6, 0x4f, 0x06, 0x57, 0xe2, + 0x49, 0x66, 0x4f, 0x0c, 0x57, 0xe8, 0x49, 0x6c, 0x4f, 0x12, 0x57, 0xe8, + 0x49, 0x66, 0x4f, 0x12, 0x57, 0xe8, 0x49, 0x72, 0x4f, 0x18, 0x57, 0xe8, + 0x48, 0xd6, 0x4d, 0x08, 0x58, 0x12, 0x48, 0xd0, 0x4f, 0x1e, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x24, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x0e, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x2a, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x30, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x2a, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x30, 0x57, 0xe2, + 0x49, 0x54, 0x4f, 0x36, 0x57, 0xe2, 0x49, 0x78, 0x4f, 0x3c, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x30, 0x57, 0xe2, 0x49, 0x7e, 0x4f, 0x42, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x14, 0x58, 0x06, 0x49, 0x4e, 0x4f, 0x48, 0x58, 0x00, + 0x49, 0x4e, 0x4f, 0x48, 0x58, 0x00, 0x49, 0x84, 0x4f, 0x4e, 0x58, 0x00, + 0x49, 0x36, 0x4f, 0x54, 0x58, 0x00, 0x49, 0x8a, 0x4f, 0x5a, 0x57, 0xe2, + 0x49, 0x90, 0x4f, 0x60, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x66, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x6c, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x72, 0x57, 0xe2, + 0x49, 0x96, 0x4f, 0x6c, 0x57, 0xe2, 0x49, 0x54, 0x4f, 0x78, 0x57, 0xe2, + 0x49, 0x78, 0x4f, 0x7e, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x84, 0x57, 0xe2, + 0x48, 0xd0, 0x4d, 0x26, 0x58, 0x06, 0x49, 0x9c, 0x4f, 0x8a, 0x57, 0xe2, + 0x48, 0xd0, 0x4f, 0x90, 0x58, 0x00, 0x49, 0xa2, 0x4f, 0x96, 0x58, 0x00, + 0x49, 0xa8, 0x4f, 0x9c, 0x58, 0x00, 0x48, 0xd0, 0x4d, 0x32, 0x57, 0xf4, + 0x49, 0x9c, 0x4f, 0xa2, 0x57, 0xe2, 0x49, 0xae, 0x4f, 0xa8, 0x57, 0xe2, + 0x49, 0xb4, 0x4f, 0xae, 0x57, 0xe2, 0x48, 0xd0, 0x4f, 0xb4, 0x57, 0xf4, + 0x48, 0xd0, 0x4f, 0xb4, 0x57, 0xe2, 0x49, 0xba, 0x4f, 0xba, 0x58, 0x3c, + 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x44, 0x57, 0xf4, + 0x49, 0xc0, 0x4f, 0xc6, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x44, 0x58, 0x24, + 0x49, 0x4e, 0x4f, 0xcc, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xd2, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xd8, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xde, 0x57, 0xe2, + 0x49, 0x54, 0x4f, 0xe4, 0x57, 0xe2, 0x49, 0xc6, 0x4f, 0xea, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xd8, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xf0, 0x57, 0xe2, + 0x49, 0xcc, 0x4f, 0xf6, 0x58, 0x2a, 0x48, 0xa6, 0x4f, 0xfc, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0x02, 0x57, 0xf4, 0x49, 0x4e, 0x50, 0x08, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0x0e, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x5c, 0x57, 0xf4, + 0x49, 0x4e, 0x50, 0x14, 0x57, 0xe2, 0x49, 0x4e, 0x50, 0x1a, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0x20, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x62, 0x58, 0x36, + 0x49, 0xd2, 0x50, 0x26, 0x57, 0xe2, 0x49, 0xd8, 0x50, 0x2c, 0x57, 0xe2, + 0x49, 0xde, 0x50, 0x32, 0x57, 0xe2, 0x48, 0xe8, 0x4d, 0x68, 0x57, 0xf4, + 0x48, 0xe8, 0x50, 0x38, 0x57, 0xe2, 0x49, 0x4e, 0x50, 0x3e, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, 0x49, 0x4e, 0x50, 0x3e, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, 0x49, 0x54, 0x50, 0x44, 0x57, 0xe2, + 0x49, 0xc6, 0x50, 0x4a, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, + 0x49, 0xe4, 0x50, 0x50, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xf0, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x44, 0x58, 0x06, 0x49, 0x4e, 0x50, 0x56, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0x56, 0x57, 0xe2, 0x49, 0x4e, 0x50, 0x56, 0x57, 0xe2, + 0x49, 0x54, 0x50, 0x5c, 0x57, 0xe2, 0x49, 0x4e, 0x50, 0x62, 0x57, 0xf4, + 0x49, 0x4e, 0x50, 0x68, 0x57, 0xf4, 0x49, 0x4e, 0x50, 0x6e, 0x57, 0xf4, + 0x49, 0x54, 0x50, 0x74, 0x57, 0xf4, 0x49, 0x4e, 0x50, 0x7a, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0x80, 0x57, 0xe2, 0x49, 0x84, 0x50, 0x86, 0x57, 0xe2, + 0x49, 0xea, 0x50, 0x8c, 0x58, 0x42, 0x48, 0xbe, 0x4c, 0x6c, 0x58, 0x48, + 0x49, 0xf0, 0x50, 0x92, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x84, 0x58, 0x48, + 0x49, 0xf0, 0x50, 0x98, 0x57, 0xe2, 0x49, 0xf6, 0x50, 0x9e, 0x57, 0xe2, + 0x49, 0xf0, 0x50, 0xa4, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x9c, 0x58, 0x48, + 0x48, 0xbe, 0x4c, 0xba, 0x58, 0x48, 0x49, 0xf0, 0x50, 0xaa, 0x57, 0xe2, + 0x49, 0xfc, 0x50, 0xb0, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xd8, 0x58, 0x48, + 0x49, 0xf0, 0x50, 0xb6, 0x57, 0xe2, 0x49, 0xfc, 0x50, 0xb0, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xf0, 0x58, 0x48, 0x4a, 0x02, 0x50, 0xbc, 0x57, 0xe2, + 0x48, 0xa6, 0x4c, 0xfc, 0x58, 0x48, 0x4a, 0x08, 0x50, 0xc2, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x14, 0x58, 0x48, 0x4a, 0x08, 0x50, 0xc8, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0xce, 0x57, 0xe2, 0x4a, 0x08, 0x50, 0xd4, 0x57, 0xe2, + 0x4a, 0x0e, 0x4d, 0x26, 0x58, 0x48, 0x48, 0xa6, 0x4d, 0x4a, 0x58, 0x48, + 0x4a, 0x08, 0x50, 0xda, 0x57, 0xe2, 0x4a, 0x14, 0x50, 0xe0, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x44, 0x58, 0x48, 0x4a, 0x08, 0x50, 0xe6, 0x57, 0xe2, + 0x4a, 0x1a, 0x50, 0xe0, 0x57, 0xee, 0x48, 0xa6, 0x4d, 0x80, 0x58, 0x4e, + 0x4a, 0x20, 0x50, 0xec, 0x57, 0xe2, 0x4a, 0x08, 0x50, 0xf2, 0x57, 0xf4, + 0x49, 0x4e, 0x50, 0x68, 0x57, 0xf4, 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0x06, + 0x49, 0x30, 0x50, 0xf8, 0x57, 0xe2, 0x49, 0x30, 0x50, 0xfe, 0x57, 0xe2, + 0x49, 0x30, 0x51, 0x04, 0x57, 0xe2, 0x47, 0xbc, 0x51, 0x0a, 0x57, 0xe2, + 0x4a, 0x26, 0x51, 0x10, 0x58, 0x54, 0x49, 0x30, 0x51, 0x16, 0x57, 0xe2, + 0x4a, 0x2c, 0x51, 0x16, 0x57, 0xe8, 0x49, 0x30, 0x51, 0x1c, 0x57, 0xe2, + 0x49, 0x30, 0x51, 0x22, 0x57, 0xe2, 0x4a, 0x32, 0x51, 0x28, 0x57, 0xe2, + 0x47, 0xbc, 0x51, 0x2e, 0x57, 0xe2, 0x49, 0x30, 0x51, 0x34, 0x58, 0x5a, + 0x4a, 0x26, 0x51, 0x3a, 0x58, 0x54, 0x49, 0x30, 0x51, 0x40, 0x57, 0xe2, + 0x4a, 0x38, 0x51, 0x46, 0x58, 0x60, 0x49, 0x30, 0x51, 0x4c, 0x57, 0xe2, + 0x4a, 0x3e, 0x51, 0x52, 0x57, 0xe2, 0x49, 0x30, 0x51, 0x58, 0x57, 0xe2, + 0x49, 0x30, 0x51, 0x5e, 0x58, 0x66, 0x4a, 0x44, 0x51, 0x64, 0x57, 0xe2, + 0x4a, 0x4a, 0x51, 0x6a, 0x57, 0xe8, 0x49, 0x30, 0x51, 0x70, 0x57, 0xe2, + 0x49, 0x30, 0x51, 0x76, 0x58, 0x6c, 0x48, 0xbe, 0x51, 0x7c, 0x57, 0xe2, + 0x49, 0x30, 0x51, 0x82, 0x57, 0xe2, 0x49, 0x30, 0x4e, 0xa6, 0x57, 0xe2, + 0x49, 0x30, 0x4e, 0xa6, 0x58, 0x72, 0x4a, 0x50, 0x51, 0x88, 0x57, 0xe2, + 0x4a, 0x56, 0x51, 0x8e, 0x57, 0xe2, 0x48, 0xbe, 0x51, 0x94, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xf6, 0x57, 0xe2, 0x48, 0xbe, 0x51, 0x9a, 0x57, 0xe2, + 0x48, 0xc4, 0x51, 0xa0, 0x57, 0xe8, 0x49, 0x30, 0x51, 0x22, 0x57, 0xe2, + 0x4a, 0x5c, 0x51, 0xa6, 0x58, 0x78, 0x4a, 0x62, 0x51, 0xac, 0x58, 0x78, + 0x4a, 0x68, 0x51, 0xb2, 0x58, 0x7e, 0x4a, 0x6e, 0x51, 0xb8, 0x58, 0x84, + 0x4a, 0x74, 0x51, 0xbe, 0x58, 0x8a, 0x4a, 0x7a, 0x51, 0xc4, 0x58, 0x90, + 0x48, 0xee, 0x4d, 0x92, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x16, 0x57, 0xe2, + 0x48, 0xee, 0x4e, 0x58, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xb2, 0x57, 0xe2, + 0x4a, 0x80, 0x51, 0xca, 0x58, 0x96, 0x48, 0xc4, 0x4c, 0x90, 0x57, 0xe8, + 0x4a, 0x86, 0x51, 0xd0, 0x57, 0xe8, 0x4a, 0x8c, 0x51, 0xd6, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xba, 0x58, 0x06, 0x48, 0xfa, 0x51, 0xdc, 0x58, 0x06, + 0x48, 0xee, 0x51, 0xe2, 0x57, 0xe2, 0x4a, 0x92, 0x51, 0xe8, 0x58, 0x78, + 0x4a, 0x98, 0x51, 0xee, 0x58, 0x78, 0x49, 0x12, 0x51, 0xd0, 0x57, 0xe8, + 0x4a, 0x9e, 0x51, 0xf4, 0x58, 0x9c, 0x4a, 0x3e, 0x51, 0xfa, 0x58, 0xa2, + 0x48, 0xee, 0x4e, 0x4c, 0x57, 0xe2, 0x48, 0xee, 0x52, 0x00, 0x57, 0xe2, + 0x49, 0x00, 0x4d, 0xaa, 0x57, 0xe2, 0x48, 0xee, 0x4d, 0xda, 0x57, 0xe2, + 0x49, 0x00, 0x4d, 0xe6, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x16, 0x57, 0xe2, + 0x49, 0x00, 0x4e, 0x28, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0x58, 0x57, 0xe2, + 0x49, 0x00, 0x52, 0x06, 0x57, 0xe2, 0x49, 0x1e, 0x4e, 0x8e, 0x57, 0xe2, + 0x49, 0x00, 0x52, 0x0c, 0x57, 0xe2, 0x48, 0xee, 0x4e, 0xb2, 0x57, 0xe2, + 0x49, 0x00, 0x52, 0x12, 0x57, 0xe2, 0x49, 0x30, 0x52, 0x18, 0x57, 0xe2, + 0x48, 0xee, 0x52, 0x1e, 0x57, 0xe2, 0x4a, 0x44, 0x52, 0x24, 0x57, 0xf4, + 0x49, 0x30, 0x52, 0x2a, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xf6, 0x58, 0xa8, + 0x49, 0x24, 0x52, 0x30, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x84, 0x58, 0x36, + 0x49, 0x24, 0x52, 0x36, 0x57, 0xe2, 0x48, 0xfa, 0x52, 0x3c, 0x57, 0xe2, + 0x4a, 0xa4, 0x52, 0x42, 0x58, 0xae, 0x4a, 0xaa, 0x52, 0x48, 0x58, 0xb4, + 0x48, 0xbe, 0x52, 0x4e, 0x57, 0xe2, 0x4a, 0xa4, 0x52, 0x54, 0x58, 0xae, + 0x49, 0x4e, 0x52, 0x5a, 0x58, 0xba, 0x48, 0xbe, 0x4c, 0x6c, 0x58, 0xc0, + 0x49, 0x24, 0x52, 0x60, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x72, 0x58, 0x48, + 0x48, 0xbe, 0x4c, 0x72, 0x58, 0x36, 0x49, 0x24, 0x52, 0x66, 0x57, 0xe2, + 0x48, 0xca, 0x4c, 0x7e, 0x58, 0x48, 0x48, 0xca, 0x4c, 0x7e, 0x58, 0x36, + 0x48, 0xca, 0x4c, 0x7e, 0x58, 0xc6, 0x48, 0xca, 0x4c, 0x7e, 0x58, 0xcc, + 0x48, 0xbe, 0x4c, 0x84, 0x58, 0xcc, 0x48, 0xbe, 0x4c, 0x84, 0x58, 0xcc, + 0x49, 0x24, 0x52, 0x6c, 0x57, 0xe2, 0x4a, 0xb0, 0x52, 0x72, 0x57, 0xe8, + 0x49, 0x24, 0x52, 0x78, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x96, 0x58, 0x48, + 0x48, 0xee, 0x52, 0x7e, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0x96, 0x58, 0x36, + 0x48, 0xbe, 0x4c, 0x96, 0x58, 0xcc, 0x48, 0xbe, 0x4c, 0x9c, 0x58, 0xcc, + 0x48, 0xee, 0x4e, 0x94, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xa8, 0x58, 0x48, + 0x48, 0xbe, 0x4c, 0xa8, 0x58, 0x36, 0x48, 0xbe, 0x4c, 0xae, 0x58, 0xd2, + 0x48, 0xfa, 0x52, 0x84, 0x58, 0xd2, 0x48, 0xbe, 0x4c, 0xae, 0x58, 0x12, + 0x48, 0xbe, 0x4c, 0xae, 0x58, 0xd8, 0x48, 0xee, 0x52, 0x8a, 0x57, 0xe2, + 0x49, 0x24, 0x52, 0x90, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xa8, 0x58, 0x48, + 0x49, 0x24, 0x52, 0x96, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xb4, 0x58, 0x48, + 0x48, 0xbe, 0x4c, 0xb4, 0x58, 0x36, 0x48, 0xbe, 0x4c, 0xb4, 0x58, 0xcc, + 0x48, 0xee, 0x52, 0x7e, 0x57, 0xe2, 0x49, 0x24, 0x52, 0x9c, 0x57, 0xe2, + 0x49, 0x24, 0x52, 0xa2, 0x57, 0xe2, 0x48, 0xca, 0x4c, 0xc6, 0x58, 0x48, + 0x48, 0xca, 0x4c, 0xc6, 0x58, 0x36, 0x49, 0x24, 0x52, 0xa8, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xcc, 0x58, 0x48, 0x4a, 0xb6, 0x52, 0xae, 0x57, 0xe2, + 0x4a, 0xbc, 0x52, 0xb4, 0x57, 0xe2, 0x49, 0x24, 0x52, 0xa8, 0x58, 0x48, + 0x49, 0x24, 0x52, 0xba, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xd2, 0x58, 0x48, + 0x48, 0xbe, 0x4c, 0xd2, 0x58, 0x36, 0x48, 0xbe, 0x4c, 0xd2, 0x58, 0xcc, + 0x48, 0xbe, 0x4c, 0xd8, 0x58, 0xde, 0x48, 0xbe, 0x4c, 0xd8, 0x58, 0xcc, + 0x48, 0xbe, 0x4c, 0xd8, 0x58, 0xcc, 0x48, 0xf4, 0x52, 0xc0, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xde, 0x58, 0x48, 0x49, 0x24, 0x52, 0xc6, 0x57, 0xe2, + 0x48, 0xbe, 0x4c, 0xe4, 0x58, 0x48, 0x49, 0x24, 0x52, 0xcc, 0x57, 0xe2, + 0x48, 0xee, 0x52, 0xd2, 0x57, 0xe2, 0x49, 0x24, 0x52, 0xd8, 0x57, 0xe2, + 0x48, 0xee, 0x52, 0xde, 0x57, 0xe2, 0x48, 0xbe, 0x4c, 0xf6, 0x58, 0x48, + 0x48, 0xbe, 0x4c, 0xf6, 0x58, 0x36, 0x49, 0x90, 0x52, 0xe4, 0x57, 0xe2, + 0x49, 0x90, 0x52, 0xea, 0x57, 0xe2, 0x4a, 0xc2, 0x52, 0xf0, 0x57, 0xe2, + 0x4a, 0xc8, 0x52, 0xf6, 0x58, 0x54, 0x49, 0x4e, 0x4e, 0xee, 0x57, 0xe2, + 0x49, 0xd2, 0x52, 0xfc, 0x57, 0xe2, 0x4a, 0xce, 0x53, 0x02, 0x58, 0xe4, + 0x4a, 0xd4, 0x53, 0x08, 0x58, 0xa2, 0x49, 0xd2, 0x53, 0x0e, 0x57, 0xe2, + 0x48, 0xd0, 0x4d, 0x26, 0x57, 0xe2, 0x4a, 0xda, 0x53, 0x14, 0x57, 0xe2, + 0x4a, 0xd4, 0x53, 0x1a, 0x57, 0xf4, 0x4a, 0xe0, 0x53, 0x20, 0x57, 0xe8, + 0x49, 0xd2, 0x53, 0x26, 0x57, 0xf4, 0x48, 0xa6, 0x4d, 0x62, 0x57, 0xe2, + 0x4a, 0xe6, 0x50, 0x38, 0x58, 0xea, 0x49, 0xd2, 0x53, 0x2c, 0x57, 0xe2, + 0x48, 0xa6, 0x53, 0x32, 0x58, 0xf0, 0x48, 0xa6, 0x4d, 0x86, 0x57, 0xe2, + 0x4a, 0xec, 0x53, 0x38, 0x57, 0xe2, 0x4a, 0x62, 0x53, 0x3e, 0x58, 0xf6, + 0x4a, 0xf2, 0x51, 0xb8, 0x58, 0xfc, 0x4a, 0x7a, 0x51, 0xc4, 0x58, 0x90, + 0x49, 0x4e, 0x4e, 0xee, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x6c, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xcc, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x14, 0x57, 0xe2, 0x49, 0x5a, 0x53, 0x44, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x20, 0x58, 0x00, 0x49, 0x4e, 0x53, 0x4a, 0x58, 0x00, + 0x4a, 0xf8, 0x53, 0x50, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x4a, 0x58, 0x06, + 0x49, 0x5a, 0x53, 0x56, 0x58, 0x06, 0x49, 0x4e, 0x53, 0x5c, 0x59, 0x02, + 0x49, 0x4e, 0x53, 0x62, 0x58, 0x00, 0x4a, 0xfe, 0x53, 0x68, 0x58, 0xf6, + 0x49, 0x4e, 0x4f, 0x48, 0x58, 0x00, 0x49, 0x4e, 0x4f, 0x60, 0x57, 0xe2, + 0x49, 0x4e, 0x4e, 0xe8, 0x57, 0xe2, 0x49, 0x4e, 0x4e, 0xe8, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x2a, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x2a, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0x6c, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0x6c, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xcc, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xcc, 0x57, 0xe2, + 0x49, 0x4e, 0x50, 0x08, 0x57, 0xe2, 0x49, 0x4e, 0x50, 0x08, 0x57, 0xe2, + 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, 0x49, 0x4e, 0x4f, 0xc0, 0x57, 0xe2, + 0x49, 0x9c, 0x53, 0x6e, 0x59, 0x08, 0x48, 0xee, 0x53, 0x74, 0x57, 0xe2, + 0x49, 0x90, 0x53, 0x7a, 0x59, 0x0e, 0x49, 0x4e, 0x53, 0x80, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x86, 0x59, 0x14, 0x49, 0x84, 0x53, 0x86, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x14, 0x58, 0x36, 0x49, 0x84, 0x53, 0x8c, 0x57, 0xe2, + 0x49, 0x5a, 0x53, 0x92, 0x57, 0xf4, 0x48, 0xd0, 0x53, 0x98, 0x59, 0x0e, + 0x4a, 0xd4, 0x53, 0x9e, 0x59, 0x0e, 0x4b, 0x04, 0x50, 0x38, 0x59, 0x0e, + 0x48, 0xd0, 0x53, 0xa4, 0x57, 0xe2, 0x48, 0xa6, 0x53, 0xaa, 0x57, 0xf4, + 0x4b, 0x0a, 0x53, 0xb0, 0x58, 0xae, 0x48, 0xa6, 0x4d, 0x62, 0x58, 0x4e, + 0x48, 0xa6, 0x4d, 0x86, 0x58, 0x24, 0x49, 0xa2, 0x53, 0xb6, 0x58, 0x00, + 0x4b, 0x10, 0x53, 0xbc, 0x58, 0xf0, 0x48, 0xa6, 0x4c, 0xfc, 0x59, 0x1a, + 0x48, 0xdc, 0x4d, 0x02, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x02, 0x58, 0x48, + 0x48, 0xd0, 0x4d, 0x02, 0x58, 0x36, 0x4b, 0x16, 0x4d, 0x0e, 0x57, 0xe2, + 0x48, 0xd0, 0x4d, 0x0e, 0x58, 0x48, 0x48, 0xd0, 0x4d, 0x0e, 0x58, 0x36, + 0x48, 0xd0, 0x4d, 0x0e, 0x59, 0x20, 0x48, 0xd0, 0x4d, 0x0e, 0x58, 0xcc, + 0x48, 0xa6, 0x4d, 0x14, 0x59, 0x26, 0x48, 0xa6, 0x4d, 0x14, 0x58, 0xcc, + 0x4b, 0x1c, 0x53, 0xc2, 0x57, 0xfa, 0x49, 0x5a, 0x53, 0xc8, 0x58, 0x00, + 0x4b, 0x22, 0x4d, 0x02, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x02, 0x58, 0x48, + 0x4b, 0x28, 0x53, 0xce, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x02, 0x58, 0x36, + 0x48, 0xd0, 0x4d, 0x02, 0x58, 0xcc, 0x48, 0xd0, 0x4d, 0x26, 0x58, 0xcc, + 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0xcc, 0x48, 0xee, 0x53, 0xd4, 0x57, 0xe2, + 0x48, 0xd0, 0x4d, 0x32, 0x58, 0x48, 0x48, 0xd0, 0x4d, 0x32, 0x58, 0x36, + 0x48, 0xd0, 0x4d, 0x38, 0x59, 0x2c, 0x4b, 0x2e, 0x53, 0xda, 0x59, 0x2c, + 0x48, 0xd0, 0x4d, 0x38, 0x59, 0x32, 0x48, 0xd0, 0x4d, 0x38, 0x59, 0x38, + 0x49, 0x4e, 0x53, 0xe0, 0x57, 0xe2, 0x49, 0x84, 0x53, 0xe6, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x3e, 0x58, 0x48, 0x49, 0x84, 0x53, 0xec, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x44, 0x58, 0x48, 0x48, 0xa6, 0x4d, 0x44, 0x58, 0x36, + 0x48, 0xa6, 0x4d, 0x44, 0x58, 0xcc, 0x49, 0x4e, 0x53, 0xf2, 0x57, 0xf4, + 0x49, 0x84, 0x53, 0xf8, 0x57, 0xf4, 0x49, 0x84, 0x53, 0xfe, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x5c, 0x58, 0x48, 0x48, 0xa6, 0x4d, 0x5c, 0x58, 0x36, + 0x49, 0x84, 0x54, 0x04, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x62, 0x58, 0x48, + 0x4b, 0x34, 0x54, 0x0a, 0x57, 0xe2, 0x4b, 0x3a, 0x54, 0x10, 0x57, 0xe2, + 0x49, 0x84, 0x54, 0x04, 0x58, 0x48, 0x4b, 0x40, 0x54, 0x16, 0x57, 0xe2, + 0x48, 0xe8, 0x4d, 0x68, 0x58, 0x48, 0x48, 0xe8, 0x4d, 0x68, 0x58, 0x36, + 0x48, 0xe8, 0x4d, 0x68, 0x58, 0xcc, 0x48, 0xa6, 0x4d, 0x44, 0x59, 0x3e, + 0x48, 0xa6, 0x4d, 0x44, 0x58, 0xcc, 0x48, 0xa6, 0x4d, 0x44, 0x58, 0xcc, + 0x49, 0x4e, 0x50, 0x68, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x6e, 0x58, 0x48, + 0x49, 0x84, 0x54, 0x1c, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x74, 0x58, 0x48, + 0x49, 0x84, 0x54, 0x22, 0x57, 0xe2, 0x49, 0x54, 0x54, 0x28, 0x57, 0xe2, + 0x49, 0x84, 0x54, 0x2e, 0x57, 0xf4, 0x49, 0x4e, 0x54, 0x34, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x86, 0x58, 0x48, 0x48, 0xa6, 0x4d, 0x86, 0x58, 0x36, + 0x48, 0xd0, 0x4d, 0x02, 0x58, 0x36, 0x4b, 0x46, 0x54, 0x3a, 0x57, 0xe2, + 0x49, 0xe4, 0x54, 0x40, 0x57, 0xe2, 0x49, 0xe4, 0x54, 0x46, 0x57, 0xf4, + 0x49, 0xe4, 0x54, 0x4c, 0x57, 0xe2, 0x4b, 0x4c, 0x54, 0x52, 0x57, 0xe2, + 0x4a, 0xd4, 0x54, 0x58, 0x57, 0xe2, 0x4a, 0xd4, 0x54, 0x5e, 0x57, 0xe2, + 0x4a, 0xd4, 0x54, 0x64, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x02, 0x57, 0xe2, + 0x48, 0xa6, 0x54, 0x6a, 0x57, 0xe2, 0x4b, 0x52, 0x54, 0x70, 0x59, 0x44, + 0x49, 0x90, 0x54, 0x76, 0x58, 0x4e, 0x49, 0xd2, 0x54, 0x7c, 0x57, 0xe2, + 0x4a, 0xd4, 0x54, 0x82, 0x57, 0xe2, 0x4a, 0xd4, 0x54, 0x82, 0x57, 0xe2, + 0x4b, 0x58, 0x54, 0x88, 0x58, 0xe4, 0x4a, 0xd4, 0x54, 0x8e, 0x57, 0xe2, + 0x4a, 0xd4, 0x54, 0x94, 0x57, 0xe2, 0x4b, 0x5e, 0x54, 0x9a, 0x57, 0xee, + 0x4b, 0x52, 0x54, 0xa0, 0x57, 0xe2, 0x4b, 0x64, 0x54, 0xa6, 0x58, 0x24, + 0x4b, 0x6a, 0x54, 0x7c, 0x58, 0x00, 0x48, 0xa6, 0x54, 0xac, 0x58, 0x00, + 0x4b, 0x52, 0x54, 0xb2, 0x57, 0xe2, 0x4b, 0x70, 0x54, 0xb8, 0x58, 0xea, + 0x4b, 0x76, 0x54, 0xbe, 0x57, 0xe2, 0x49, 0x9c, 0x54, 0xc4, 0x57, 0xf4, + 0x49, 0xd2, 0x4d, 0x02, 0x57, 0xe2, 0x49, 0xd2, 0x4d, 0x02, 0x58, 0xea, + 0x48, 0xd0, 0x54, 0xca, 0x57, 0xe2, 0x49, 0x9c, 0x4f, 0x8a, 0x57, 0xe2, + 0x4b, 0x7c, 0x4f, 0x8a, 0x59, 0x4a, 0x49, 0x9c, 0x54, 0xd0, 0x57, 0xe2, + 0x48, 0xd0, 0x54, 0xd6, 0x57, 0xe2, 0x48, 0xd0, 0x54, 0xd6, 0x57, 0xe2, + 0x48, 0xd0, 0x54, 0xd6, 0x58, 0x4e, 0x4b, 0x82, 0x54, 0xdc, 0x59, 0x50, + 0x49, 0x9c, 0x54, 0xe2, 0x57, 0xe2, 0x49, 0x9c, 0x54, 0xe2, 0x57, 0xf4, + 0x48, 0xa6, 0x4d, 0x3e, 0x59, 0x14, 0x48, 0xa6, 0x4d, 0x44, 0x59, 0x14, + 0x48, 0xa6, 0x4d, 0x44, 0x59, 0x14, 0x49, 0x9c, 0x54, 0xe8, 0x57, 0xe2, + 0x4a, 0xd4, 0x4d, 0x4a, 0x57, 0xe2, 0x4b, 0x88, 0x54, 0xee, 0x57, 0xe8, + 0x4b, 0x8e, 0x54, 0xf4, 0x57, 0xe2, 0x49, 0x4e, 0x54, 0xfa, 0x57, 0xf4, + 0x4b, 0x94, 0x55, 0x00, 0x57, 0xe2, 0x4b, 0x9a, 0x55, 0x06, 0x57, 0xe2, + 0x4b, 0x94, 0x55, 0x0c, 0x59, 0x14, 0x4a, 0xd4, 0x55, 0x12, 0x59, 0x56, + 0x4a, 0xd4, 0x55, 0x12, 0x59, 0x5c, 0x4a, 0xd4, 0x55, 0x18, 0x57, 0xe2, + 0x4a, 0xd4, 0x55, 0x1e, 0x57, 0xe2, 0x49, 0x9c, 0x55, 0x24, 0x57, 0xe2, + 0x49, 0x9c, 0x55, 0x2a, 0x57, 0xee, 0x48, 0xa6, 0x4d, 0x62, 0x59, 0x14, + 0x4b, 0xa0, 0x55, 0x30, 0x59, 0x62, 0x4b, 0xa0, 0x55, 0x30, 0x59, 0x62, + 0x4b, 0xa6, 0x55, 0x36, 0x59, 0x68, 0x4b, 0xa0, 0x55, 0x3c, 0x59, 0x6e, + 0x4b, 0xac, 0x55, 0x42, 0x57, 0xe2, 0x48, 0xe8, 0x4d, 0x68, 0x59, 0x74, + 0x49, 0x9c, 0x55, 0x48, 0x57, 0xe2, 0x49, 0x9c, 0x55, 0x4e, 0x57, 0xe2, + 0x4b, 0xb2, 0x55, 0x54, 0x57, 0xe2, 0x49, 0x9c, 0x55, 0x5a, 0x57, 0xe2, + 0x49, 0x9c, 0x55, 0x60, 0x57, 0xe2, 0x4b, 0xb8, 0x55, 0x66, 0x57, 0xe2, + 0x49, 0x9c, 0x55, 0x6c, 0x57, 0xe2, 0x48, 0xa6, 0x4d, 0x86, 0x58, 0xa8, + 0x4b, 0xbe, 0x55, 0x72, 0x59, 0x7a, 0x48, 0xa6, 0x55, 0x78, 0x59, 0x80, + 0x48, 0xa6, 0x55, 0x78, 0x59, 0x86, 0x49, 0x4e, 0x55, 0x7e, 0x59, 0x8c, + 0x4b, 0xc4, 0x55, 0x84, 0x59, 0x92, 0x4b, 0xca, 0x55, 0x8a, 0x58, 0x1e, + 0x4a, 0xe0, 0x55, 0x90, 0x59, 0x98, 0x48, 0xbe, 0x55, 0x96, 0x57, 0xe2, + 0x49, 0x9c, 0x55, 0x9c, 0x57, 0xe2, 0x4b, 0x52, 0x55, 0xa2, 0x57, 0xe2, + 0x4b, 0xd0, 0x55, 0xa8, 0x58, 0x54, 0x49, 0x9c, 0x54, 0xc4, 0x57, 0xe2, + 0x4b, 0xd6, 0x55, 0xae, 0x58, 0x24, 0x49, 0x9c, 0x55, 0xb4, 0x57, 0xf4, + 0x4b, 0xdc, 0x55, 0xba, 0x57, 0xee, 0x4b, 0xe2, 0x54, 0x7c, 0x57, 0xf4, + 0x4b, 0xe8, 0x55, 0x7e, 0x59, 0x8c, 0x4b, 0xee, 0x55, 0xc0, 0x59, 0x9e, + 0x4b, 0xf4, 0x55, 0xc6, 0x59, 0xa4, 0x4b, 0xfa, 0x55, 0xcc, 0x59, 0xaa, + 0x4b, 0xfa, 0x55, 0xd2, 0x59, 0xb0, 0x4c, 0x00, 0x55, 0xd8, 0x59, 0xb6, + 0x4c, 0x06, 0x55, 0xde, 0x59, 0xbc, 0x4c, 0x00, 0x55, 0xe4, 0x59, 0xc2, + 0x4c, 0x06, 0x55, 0xea, 0x59, 0xb6, 0x4b, 0xfa, 0x55, 0xf0, 0x59, 0xb6, + 0x4c, 0x0c, 0x55, 0xf6, 0x59, 0xc8, 0x4c, 0x12, 0x55, 0xfc, 0x57, 0xe2, + 0x4c, 0x12, 0x56, 0x02, 0x57, 0xe2, 0x49, 0xd2, 0x56, 0x08, 0x59, 0xce, + 0x49, 0xd2, 0x56, 0x08, 0x59, 0x14, 0x49, 0x9c, 0x56, 0x0e, 0x57, 0xe2, + 0x4c, 0x18, 0x56, 0x14, 0x59, 0xd4, 0x4a, 0xd4, 0x56, 0x1a, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x20, 0x57, 0xe2, 0x4a, 0xd4, 0x56, 0x26, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x2c, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0x2c, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x32, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0x38, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x3e, 0x59, 0x2c, 0x49, 0x9c, 0x56, 0x44, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x4a, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0x50, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x56, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0x5c, 0x57, 0xe2, + 0x4a, 0xd4, 0x56, 0x62, 0x57, 0xe2, 0x4b, 0x5e, 0x56, 0x68, 0x57, 0xee, + 0x4c, 0x1e, 0x56, 0x6e, 0x57, 0xe2, 0x4c, 0x24, 0x56, 0x74, 0x57, 0xe2, + 0x4c, 0x2a, 0x56, 0x7a, 0x57, 0xe2, 0x4a, 0xd4, 0x56, 0x80, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0x86, 0x57, 0xe2, 0x4b, 0x8e, 0x56, 0x8c, 0x57, 0xe2, + 0x4c, 0x30, 0x56, 0x92, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0x2c, 0x57, 0xe2, + 0x49, 0x9c, 0x55, 0xb4, 0x57, 0xe2, 0x49, 0x9c, 0x55, 0xb4, 0x57, 0xe8, + 0x49, 0x9c, 0x56, 0x98, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0x9e, 0x57, 0xe2, + 0x48, 0x58, 0x56, 0xa4, 0x57, 0xe2, 0x48, 0x58, 0x56, 0xaa, 0x57, 0xe2, + 0x4b, 0x0a, 0x56, 0xb0, 0x57, 0xe2, 0x49, 0x9c, 0x54, 0xb8, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0xb6, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0xbc, 0x57, 0xe2, + 0x4b, 0xdc, 0x56, 0xc2, 0x57, 0xee, 0x4c, 0x36, 0x56, 0xc8, 0x58, 0x1e, + 0x4b, 0x8e, 0x56, 0xce, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0xd4, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0xda, 0x57, 0xe2, 0x49, 0x9c, 0x54, 0xd0, 0x57, 0xe2, + 0x49, 0x9c, 0x54, 0xd0, 0x57, 0xe2, 0x49, 0x9c, 0x56, 0xe0, 0x57, 0xe2, + 0x49, 0x9c, 0x56, 0xe6, 0x57, 0xe2, 0x48, 0xd0, 0x56, 0xec, 0x57, 0xe2, + 0x48, 0xd0, 0x56, 0xf2, 0x57, 0xe2, 0x48, 0xdc, 0x56, 0xf8, 0x57, 0xfa, + 0x48, 0xa6, 0x56, 0xfe, 0x57, 0xe2, 0x48, 0xa6, 0x56, 0xfe, 0x57, 0xe2, + 0x48, 0xa6, 0x57, 0x04, 0x57, 0xf4, 0x48, 0xa6, 0x57, 0x0a, 0x57, 0xe2, + 0x48, 0xa6, 0x57, 0x10, 0x57, 0xe2, 0x48, 0xa6, 0x57, 0x16, 0x57, 0xe2, + 0x48, 0xe8, 0x4d, 0x68, 0x57, 0xe2, 0x48, 0xa6, 0x57, 0x1c, 0x57, 0xe2, + 0x4c, 0x3c, 0x57, 0x22, 0x59, 0xda, 0x47, 0x20, 0x57, 0x28, 0x57, 0xe2, + 0x4c, 0x42, 0x55, 0x60, 0x58, 0x24, 0x49, 0x96, 0x57, 0x2e, 0x59, 0xb6, + 0x49, 0x9c, 0x57, 0x34, 0x57, 0xe2, 0x49, 0x9c, 0x57, 0x34, 0x57, 0xe2, + 0x48, 0xa6, 0x4d, 0x50, 0x57, 0xf4, 0x49, 0x9c, 0x57, 0x3a, 0x57, 0xe2, + 0x49, 0x9c, 0x57, 0x3a, 0x57, 0xe2, 0x48, 0xd0, 0x4d, 0x02, 0x59, 0x14, + 0x48, 0xd0, 0x4d, 0x0e, 0x59, 0x14, 0x48, 0xdc, 0x4d, 0x1a, 0x59, 0xe0, + 0x48, 0xa6, 0x4d, 0x20, 0x58, 0x00, 0x48, 0xd0, 0x4d, 0x32, 0x59, 0x14, + 0x48, 0xd0, 0x4d, 0x38, 0x59, 0x14, 0x48, 0xa6, 0x4d, 0x3e, 0x59, 0x14, + 0x48, 0xa6, 0x4d, 0x44, 0x59, 0x14, 0x48, 0xa6, 0x4d, 0x50, 0x57, 0xf4, + 0x48, 0xa6, 0x4d, 0x5c, 0x59, 0x14, 0x48, 0xa6, 0x4d, 0x62, 0x59, 0x14, + 0x4b, 0xa0, 0x57, 0x40, 0x59, 0xe6, 0x48, 0xa6, 0x57, 0x46, 0x59, 0x14, + 0x48, 0xa6, 0x4d, 0x7a, 0x59, 0x14, 0x48, 0xa6, 0x4d, 0x86, 0x59, 0x14, + 0x48, 0xa6, 0x4c, 0xfc, 0x59, 0x14, 0x48, 0xa6, 0x57, 0x4c, 0x57, 0xf4, + 0x4c, 0x48, 0x54, 0x7c, 0x59, 0x14, 0x48, 0xa6, 0x4d, 0x14, 0x59, 0x14, + 0x4c, 0x4e, 0x57, 0x52, 0x59, 0x14, 0x4a, 0xd4, 0x56, 0x68, 0x59, 0x74, + 0x48, 0xa6, 0x4d, 0x14, 0x59, 0x14, 0x4a, 0x0e, 0x4d, 0x26, 0x59, 0xec, + 0x48, 0xa6, 0x4d, 0x08, 0x59, 0x74, 0x4b, 0xa0, 0x55, 0x3c, 0x59, 0xf2, + 0x48, 0xa6, 0x4d, 0x44, 0x59, 0x74, 0x49, 0x9c, 0x57, 0x58, 0x59, 0xf8, + 0x48, 0xd0, 0x4d, 0x26, 0x58, 0x48, 0x48, 0xd0, 0x4d, 0x26, 0x58, 0x48, + 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0x48, 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0x48, + 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0x48, 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0x48, + 0x49, 0x9c, 0x4f, 0x8a, 0x58, 0x48, 0x00, 0x02, 0x00, 0x17, 0x01, 0x3d, + 0x01, 0x3d, 0x00, 0x00, 0x01, 0x3f, 0x01, 0x3f, 0x00, 0x01, 0x01, 0x41, + 0x01, 0x41, 0x00, 0x02, 0x01, 0x43, 0x01, 0x44, 0x00, 0x03, 0x01, 0x46, + 0x01, 0x46, 0x00, 0x05, 0x01, 0x48, 0x01, 0x48, 0x00, 0x06, 0x01, 0x4a, + 0x01, 0x4a, 0x00, 0x07, 0x01, 0x4c, 0x01, 0x4c, 0x00, 0x08, 0x01, 0x4e, + 0x01, 0x4e, 0x00, 0x09, 0x01, 0x51, 0x01, 0x51, 0x00, 0x0a, 0x01, 0x53, + 0x01, 0x53, 0x00, 0x0b, 0x01, 0x56, 0x01, 0x56, 0x00, 0x0c, 0x02, 0xc5, + 0x02, 0xd7, 0x00, 0x0d, 0x03, 0xba, 0x03, 0xd6, 0x00, 0x20, 0x03, 0xd9, + 0x03, 0xe5, 0x00, 0x3d, 0x03, 0xf0, 0x03, 0xf9, 0x00, 0x4a, 0x03, 0xfe, + 0x04, 0x0a, 0x00, 0x54, 0x04, 0x0c, 0x04, 0x1d, 0x00, 0x61, 0x04, 0x29, + 0x04, 0x58, 0x00, 0x73, 0x08, 0x02, 0x08, 0x26, 0x00, 0xa3, 0x0a, 0x03, + 0x0a, 0x0b, 0x00, 0xc8, 0x0a, 0x2d, 0x0a, 0x37, 0x00, 0xd1, 0x0a, 0x3b, + 0x0a, 0x3b, 0x00, 0xdc, 0x00, 0x02, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, + 0x00, 0x00, 0x00, 0x27, 0x00, 0x28, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x5f, + 0x00, 0x24, 0x00, 0x61, 0x00, 0x69, 0x00, 0x5a, 0x00, 0x6b, 0x00, 0xa4, + 0x00, 0x63, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x9d, 0x00, 0xa9, 0x00, 0xb9, + 0x00, 0x9f, 0x00, 0xbc, 0x00, 0xe3, 0x00, 0xb0, 0x00, 0xe5, 0x00, 0xed, + 0x00, 0xd8, 0x00, 0xef, 0x01, 0x08, 0x00, 0xe1, 0x02, 0x5f, 0x02, 0x5f, + 0x00, 0xfb, 0x02, 0xd8, 0x02, 0xd9, 0x00, 0xfc, 0x02, 0xe4, 0x02, 0xe6, + 0x00, 0xfe, 0x02, 0xec, 0x02, 0xef, 0x01, 0x01, 0x02, 0xf5, 0x02, 0xf5, + 0x01, 0x05, 0x02, 0xfb, 0x02, 0xfd, 0x01, 0x06, 0x03, 0x03, 0x03, 0x06, + 0x01, 0x09, 0x03, 0x11, 0x03, 0x13, 0x01, 0x0d, 0x03, 0x19, 0x03, 0x1c, + 0x01, 0x10, 0x03, 0x22, 0x03, 0x22, 0x01, 0x14, 0x03, 0x28, 0x03, 0x2a, + 0x01, 0x15, 0x03, 0x30, 0x03, 0x33, 0x01, 0x18, 0x03, 0x9f, 0x03, 0x9f, + 0x01, 0x1c, 0x04, 0x59, 0x04, 0x84, 0x01, 0x1d, 0x04, 0x8b, 0x04, 0xaa, + 0x01, 0x49, 0x04, 0xad, 0x04, 0xad, 0x01, 0x69, 0x04, 0xaf, 0x04, 0xb4, + 0x01, 0x6a, 0x04, 0xbd, 0x04, 0xc0, 0x01, 0x70, 0x04, 0xc2, 0x04, 0xc6, + 0x01, 0x74, 0x04, 0xc9, 0x04, 0xca, 0x01, 0x79, 0x04, 0xcc, 0x04, 0xd3, + 0x01, 0x7b, 0x04, 0xd5, 0x04, 0xe2, 0x01, 0x83, 0x04, 0xe7, 0x04, 0xea, + 0x01, 0x91, 0x04, 0xec, 0x04, 0xf8, 0x01, 0x95, 0x04, 0xfb, 0x05, 0x04, + 0x01, 0xa2, 0x05, 0x0f, 0x05, 0x14, 0x01, 0xac, 0x05, 0x16, 0x05, 0x19, + 0x01, 0xb2, 0x05, 0x1c, 0x05, 0x24, 0x01, 0xb6, 0x05, 0x27, 0x05, 0x2c, + 0x01, 0xbf, 0x05, 0x2f, 0x05, 0x30, 0x01, 0xc5, 0x05, 0x35, 0x05, 0x35, + 0x01, 0xc7, 0x05, 0x38, 0x05, 0x3f, 0x01, 0xc8, 0x05, 0x41, 0x05, 0x48, + 0x01, 0xd0, 0x05, 0x4b, 0x05, 0x4b, 0x01, 0xd8, 0x05, 0x4e, 0x05, 0x50, + 0x01, 0xd9, 0x05, 0x54, 0x05, 0x54, 0x01, 0xdc, 0x05, 0x58, 0x05, 0x60, + 0x01, 0xdd, 0x05, 0x63, 0x05, 0x63, 0x01, 0xe6, 0x05, 0x65, 0x05, 0x6d, + 0x01, 0xe7, 0x05, 0x72, 0x05, 0x72, 0x01, 0xf0, 0x05, 0x7a, 0x05, 0x7a, + 0x01, 0xf1, 0x05, 0x81, 0x05, 0x84, 0x01, 0xf2, 0x05, 0x86, 0x05, 0x8a, + 0x01, 0xf6, 0x05, 0x8d, 0x05, 0x8e, 0x01, 0xfb, 0x05, 0x90, 0x05, 0x90, + 0x01, 0xfd, 0x05, 0x93, 0x05, 0x99, 0x01, 0xfe, 0x05, 0x9c, 0x05, 0x9c, + 0x02, 0x05, 0x05, 0xa0, 0x05, 0xa3, 0x02, 0x06, 0x05, 0xa6, 0x05, 0xa6, + 0x02, 0x0a, 0x05, 0xa9, 0x05, 0xa9, 0x02, 0x0b, 0x05, 0xac, 0x05, 0xac, + 0x02, 0x0c, 0x05, 0xaf, 0x05, 0xb5, 0x02, 0x0d, 0x05, 0xba, 0x05, 0xbc, + 0x02, 0x14, 0x05, 0xc0, 0x05, 0xc0, 0x02, 0x17, 0x05, 0xc8, 0x05, 0xc8, + 0x02, 0x18, 0x05, 0xcc, 0x05, 0xd7, 0x02, 0x19, 0x05, 0xda, 0x05, 0xe9, + 0x02, 0x25, 0x05, 0xf7, 0x06, 0x0f, 0x02, 0x35, 0x06, 0x12, 0x06, 0x12, + 0x02, 0x4e, 0x06, 0x15, 0x06, 0x87, 0x02, 0x4f, 0x06, 0xc8, 0x06, 0xf6, + 0x02, 0xc2, 0x0a, 0x84, 0x0a, 0x8a, 0x02, 0xf1, 0x00, 0x01, 0x00, 0x54, + 0x00, 0x6a, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x00, + 0x45, 0xde, 0x00, 0x00, 0x45, 0xe4, 0x00, 0x00, 0x45, 0xea, 0x00, 0x00, + 0x45, 0xf0, 0x00, 0x1a, 0x34, 0x8c, 0x34, 0x8c, 0x34, 0x8c, 0x45, 0xe4, + 0x34, 0x8c, 0x34, 0x8c, 0x34, 0x8c, 0x34, 0x8c, 0x34, 0x8c, 0x34, 0x8c, + 0x34, 0xbc, 0x45, 0xea, 0x34, 0x74, 0x34, 0x74, 0x34, 0x74, 0x45, 0xf0, + 0x34, 0x74, 0x34, 0x74, 0x34, 0x74, 0x34, 0x74, 0x34, 0x74, 0x34, 0x74, + 0x35, 0x22, 0x45, 0xf6, 0x34, 0x74, 0x34, 0x74, 0x00, 0x02, 0x00, 0x03, + 0x0a, 0x2d, 0x0a, 0x2e, 0x00, 0x00, 0x0a, 0x31, 0x0a, 0x31, 0x00, 0x02, + 0x0a, 0x37, 0x0a, 0x37, 0x00, 0x03, 0x00, 0x02, 0x00, 0x14, 0x01, 0xe0, + 0x01, 0xe0, 0x00, 0x00, 0x01, 0xe5, 0x01, 0xe5, 0x00, 0x01, 0x01, 0xe8, + 0x01, 0xe9, 0x00, 0x02, 0x01, 0xee, 0x01, 0xee, 0x00, 0x04, 0x01, 0xf3, + 0x01, 0xf3, 0x00, 0x05, 0x01, 0xfb, 0x01, 0xfb, 0x00, 0x06, 0x01, 0xfd, + 0x01, 0xff, 0x00, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, 0x0a, 0x02, 0x0f, + 0x02, 0x0f, 0x00, 0x0b, 0x02, 0x14, 0x02, 0x14, 0x00, 0x0c, 0x02, 0x19, + 0x02, 0x19, 0x00, 0x0d, 0x02, 0x1c, 0x02, 0x1d, 0x00, 0x0e, 0x02, 0x22, + 0x02, 0x22, 0x00, 0x10, 0x02, 0x27, 0x02, 0x27, 0x00, 0x11, 0x02, 0x2f, + 0x02, 0x2f, 0x00, 0x12, 0x02, 0x31, 0x02, 0x33, 0x00, 0x13, 0x02, 0x3a, + 0x02, 0x3a, 0x00, 0x16, 0x02, 0x43, 0x02, 0x43, 0x00, 0x17, 0x05, 0x35, + 0x05, 0x35, 0x00, 0x18, 0x09, 0x7f, 0x09, 0x7f, 0x00, 0x19, 0x00, 0x01, + 0x00, 0xd8, 0x00, 0xde, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x01, + 0x00, 0x00, 0x45, 0x28, 0x00, 0x62, 0x45, 0x28, 0x45, 0x2e, 0x45, 0x34, + 0x45, 0x3a, 0x45, 0x40, 0x45, 0x46, 0x45, 0x4c, 0x45, 0x52, 0x45, 0x58, + 0x45, 0x5e, 0x45, 0x64, 0x45, 0x6a, 0x45, 0x70, 0x45, 0x52, 0x45, 0x76, + 0x45, 0x7c, 0x45, 0x76, 0x45, 0x82, 0x45, 0x88, 0x45, 0x8e, 0x45, 0x94, + 0x45, 0x9a, 0x45, 0xa0, 0x45, 0xa6, 0x45, 0x52, 0x45, 0x70, 0x45, 0xac, + 0x45, 0xb2, 0x45, 0xb8, 0x45, 0xbe, 0x45, 0xc4, 0x45, 0xca, 0x45, 0xd0, + 0x45, 0xac, 0x45, 0xd6, 0x45, 0xdc, 0x45, 0xe2, 0x45, 0xe8, 0x45, 0xee, + 0x45, 0xf4, 0x45, 0xfa, 0x45, 0xfa, 0x46, 0x00, 0x46, 0x06, 0x45, 0xe2, + 0x46, 0x0c, 0x46, 0x0c, 0x46, 0x12, 0x46, 0x18, 0x46, 0x1e, 0x46, 0x12, + 0x46, 0x24, 0x45, 0xac, 0x45, 0xac, 0x45, 0xac, 0x45, 0xac, 0x45, 0xac, + 0x45, 0xac, 0x46, 0x2a, 0x45, 0xc4, 0x45, 0xc4, 0x45, 0xc4, 0x45, 0xc4, + 0x45, 0xd6, 0x45, 0xd6, 0x45, 0xd6, 0x45, 0xd6, 0x45, 0xd6, 0x45, 0xfa, + 0x45, 0xfa, 0x45, 0xfa, 0x45, 0xfa, 0x45, 0xfa, 0x45, 0xfa, 0x46, 0x30, + 0x46, 0x0c, 0x46, 0x0c, 0x46, 0x0c, 0x46, 0x0c, 0x46, 0x12, 0x46, 0x12, + 0x46, 0x36, 0x45, 0xb2, 0x46, 0x00, 0x46, 0x06, 0x46, 0x3c, 0x46, 0x42, + 0x46, 0x00, 0x45, 0xac, 0x45, 0xb2, 0x46, 0x48, 0x45, 0xd6, 0x46, 0x4e, + 0x45, 0xfa, 0x46, 0x54, 0x46, 0x0c, 0x46, 0x5a, 0x46, 0x60, 0x00, 0x01, + 0x00, 0x01, 0x07, 0x41, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x04, 0x00, 0x1d, + 0x00, 0x00, 0x00, 0x83, 0x00, 0xa1, 0x00, 0x1a, 0x00, 0xa4, 0x00, 0xa4, + 0x00, 0x39, 0x00, 0xa7, 0x00, 0xa7, 0x00, 0x3a, 0x00, 0xb1, 0x00, 0xb3, + 0x00, 0x3b, 0x00, 0xb5, 0x00, 0xb5, 0x00, 0x3e, 0x00, 0xc2, 0x00, 0xc4, + 0x00, 0x3f, 0x00, 0xc6, 0x00, 0xc6, 0x00, 0x42, 0x00, 0xca, 0x00, 0xca, + 0x00, 0x43, 0x00, 0xdb, 0x00, 0xdf, 0x00, 0x44, 0x00, 0xe3, 0x00, 0xe3, + 0x00, 0x49, 0x00, 0xe5, 0x00, 0xe5, 0x00, 0x4a, 0x00, 0xf4, 0x00, 0xf6, + 0x00, 0x4b, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x4e, 0x01, 0x03, 0x01, 0x03, + 0x00, 0x4f, 0x01, 0x05, 0x01, 0x05, 0x00, 0x50, 0x05, 0x35, 0x05, 0x35, + 0x00, 0x51, 0x05, 0xf7, 0x05, 0xf9, 0x00, 0x52, 0x05, 0xfb, 0x05, 0xfb, + 0x00, 0x55, 0x05, 0xff, 0x05, 0xff, 0x00, 0x56, 0x06, 0x02, 0x06, 0x03, + 0x00, 0x57, 0x06, 0x05, 0x06, 0x05, 0x00, 0x59, 0x06, 0x0b, 0x06, 0x0b, + 0x00, 0x5a, 0x06, 0x0f, 0x06, 0x0f, 0x00, 0x5b, 0x06, 0x16, 0x06, 0x16, + 0x00, 0x5c, 0x06, 0x21, 0x06, 0x22, 0x00, 0x5d, 0x06, 0x35, 0x06, 0x36, + 0x00, 0x5f, 0x06, 0x38, 0x06, 0x38, 0x00, 0x61, 0x00, 0x01, 0x00, 0xb0, + 0x00, 0xba, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x36, 0x00, 0x0a, 0x00, 0x00, + 0x44, 0xe2, 0x00, 0x00, 0x44, 0xe8, 0x00, 0x00, 0x44, 0xee, 0x00, 0x00, + 0x44, 0xf4, 0x00, 0x00, 0x44, 0xfa, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, + 0x45, 0x06, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x45, 0x0c, 0x00, 0x00, + 0x45, 0x0c, 0x00, 0x3c, 0x44, 0xca, 0x44, 0xca, 0x44, 0xe8, 0x44, 0xca, + 0x44, 0xca, 0x44, 0xca, 0x44, 0xee, 0x44, 0xca, 0x44, 0xca, 0x44, 0xf4, + 0x44, 0xfa, 0x45, 0x00, 0x44, 0xca, 0x44, 0xca, 0x44, 0xee, 0x45, 0x06, + 0x44, 0xee, 0x45, 0x0c, 0x44, 0xee, 0x44, 0xca, 0x44, 0xca, 0x44, 0xca, + 0x44, 0xca, 0x44, 0xca, 0x45, 0x12, 0x44, 0xca, 0x44, 0xee, 0x45, 0x18, + 0x45, 0x1e, 0x45, 0x24, 0x45, 0x1e, 0x45, 0x2a, 0x45, 0x30, 0x45, 0x36, + 0x45, 0x3c, 0x45, 0x42, 0x45, 0x48, 0x45, 0x4e, 0x45, 0x54, 0x45, 0x2a, + 0x45, 0x2a, 0x45, 0x2a, 0x45, 0x2a, 0x45, 0x2a, 0x45, 0x5a, 0x45, 0x2a, + 0x45, 0x60, 0x45, 0x66, 0x45, 0x66, 0x45, 0x6c, 0x45, 0x6c, 0x45, 0x72, + 0x45, 0x6c, 0x45, 0x2a, 0x45, 0x2a, 0x45, 0x2a, 0x45, 0x6c, 0x45, 0x5a, + 0x45, 0x78, 0x45, 0x7e, 0x00, 0x02, 0x00, 0x01, 0x03, 0xe6, 0x03, 0xef, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x58, 0x00, 0x58, 0x00, 0x1a, 0x00, 0x83, 0x00, 0x9c, 0x00, 0x1b, + 0x00, 0xaf, 0x00, 0xaf, 0x00, 0x35, 0x00, 0xdc, 0x00, 0xdc, 0x00, 0x36, + 0x00, 0xec, 0x00, 0xec, 0x00, 0x37, 0x01, 0x07, 0x01, 0x07, 0x00, 0x38, + 0x06, 0x2a, 0x06, 0x2a, 0x00, 0x39, 0x06, 0x2f, 0x06, 0x2f, 0x00, 0x3a, + 0x06, 0x3e, 0x06, 0x3e, 0x00, 0x3b, 0x00, 0x01, 0x0c, 0x1c, 0x0c, 0x26, + 0x00, 0x02, 0x00, 0x0c, 0x00, 0x3a, 0x00, 0x0b, 0x00, 0x01, 0x44, 0xe4, + 0x00, 0x00, 0x44, 0xb4, 0x00, 0x00, 0x44, 0xba, 0x00, 0x00, 0x44, 0xc0, + 0x00, 0x00, 0x44, 0xba, 0x00, 0x01, 0x44, 0xea, 0x00, 0x00, 0x44, 0xc6, + 0x00, 0x00, 0x33, 0xaa, 0x00, 0x00, 0x44, 0xb4, 0x00, 0x00, 0x44, 0xcc, + 0x00, 0x01, 0x40, 0x40, 0x02, 0xf8, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xb0, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xb0, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xb0, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xaa, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, + 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x44, 0xa4, 0x44, 0xc2, 0x00, 0x02, + 0x00, 0x01, 0x04, 0x1e, 0x04, 0x28, 0x00, 0x00, 0x00, 0x02, 0x00, 0x48, + 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x27, 0x00, 0x28, 0x00, 0x22, + 0x00, 0x2a, 0x00, 0x5f, 0x00, 0x24, 0x00, 0x61, 0x00, 0x69, 0x00, 0x5a, + 0x00, 0x6b, 0x00, 0xa4, 0x00, 0x63, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x9d, + 0x00, 0xa9, 0x00, 0xb9, 0x00, 0x9f, 0x00, 0xbc, 0x00, 0xe3, 0x00, 0xb0, + 0x00, 0xe5, 0x00, 0xed, 0x00, 0xd8, 0x00, 0xef, 0x01, 0x08, 0x00, 0xe1, + 0x02, 0x5f, 0x02, 0x5f, 0x00, 0xfb, 0x02, 0xd8, 0x02, 0xd9, 0x00, 0xfc, + 0x02, 0xe4, 0x02, 0xe6, 0x00, 0xfe, 0x02, 0xec, 0x02, 0xef, 0x01, 0x01, + 0x02, 0xf5, 0x02, 0xf5, 0x01, 0x05, 0x02, 0xfb, 0x02, 0xfd, 0x01, 0x06, + 0x03, 0x03, 0x03, 0x06, 0x01, 0x09, 0x03, 0x11, 0x03, 0x13, 0x01, 0x0d, + 0x03, 0x19, 0x03, 0x1c, 0x01, 0x10, 0x03, 0x22, 0x03, 0x22, 0x01, 0x14, + 0x03, 0x28, 0x03, 0x2a, 0x01, 0x15, 0x03, 0x30, 0x03, 0x33, 0x01, 0x18, + 0x03, 0x9f, 0x03, 0x9f, 0x01, 0x1c, 0x04, 0x59, 0x04, 0x84, 0x01, 0x1d, + 0x04, 0x8b, 0x04, 0xaa, 0x01, 0x49, 0x04, 0xad, 0x04, 0xad, 0x01, 0x69, + 0x04, 0xaf, 0x04, 0xb4, 0x01, 0x6a, 0x04, 0xbd, 0x04, 0xc0, 0x01, 0x70, + 0x04, 0xc2, 0x04, 0xc6, 0x01, 0x74, 0x04, 0xc9, 0x04, 0xca, 0x01, 0x79, + 0x04, 0xcc, 0x04, 0xd3, 0x01, 0x7b, 0x04, 0xd5, 0x04, 0xe2, 0x01, 0x83, + 0x04, 0xe7, 0x04, 0xea, 0x01, 0x91, 0x04, 0xec, 0x04, 0xf8, 0x01, 0x95, + 0x04, 0xfb, 0x05, 0x04, 0x01, 0xa2, 0x05, 0x0f, 0x05, 0x14, 0x01, 0xac, + 0x05, 0x16, 0x05, 0x19, 0x01, 0xb2, 0x05, 0x1c, 0x05, 0x24, 0x01, 0xb6, + 0x05, 0x27, 0x05, 0x2c, 0x01, 0xbf, 0x05, 0x2f, 0x05, 0x30, 0x01, 0xc5, + 0x05, 0x35, 0x05, 0x35, 0x01, 0xc7, 0x05, 0x38, 0x05, 0x3f, 0x01, 0xc8, + 0x05, 0x41, 0x05, 0x48, 0x01, 0xd0, 0x05, 0x4b, 0x05, 0x4b, 0x01, 0xd8, + 0x05, 0x4e, 0x05, 0x50, 0x01, 0xd9, 0x05, 0x54, 0x05, 0x54, 0x01, 0xdc, + 0x05, 0x58, 0x05, 0x60, 0x01, 0xdd, 0x05, 0x63, 0x05, 0x63, 0x01, 0xe6, + 0x05, 0x65, 0x05, 0x6d, 0x01, 0xe7, 0x05, 0x72, 0x05, 0x72, 0x01, 0xf0, + 0x05, 0x7a, 0x05, 0x7a, 0x01, 0xf1, 0x05, 0x81, 0x05, 0x84, 0x01, 0xf2, + 0x05, 0x86, 0x05, 0x8a, 0x01, 0xf6, 0x05, 0x8d, 0x05, 0x8e, 0x01, 0xfb, + 0x05, 0x90, 0x05, 0x90, 0x01, 0xfd, 0x05, 0x93, 0x05, 0x99, 0x01, 0xfe, + 0x05, 0x9c, 0x05, 0x9c, 0x02, 0x05, 0x05, 0xa0, 0x05, 0xa3, 0x02, 0x06, + 0x05, 0xa6, 0x05, 0xa6, 0x02, 0x0a, 0x05, 0xa9, 0x05, 0xa9, 0x02, 0x0b, + 0x05, 0xac, 0x05, 0xac, 0x02, 0x0c, 0x05, 0xaf, 0x05, 0xb5, 0x02, 0x0d, + 0x05, 0xba, 0x05, 0xbc, 0x02, 0x14, 0x05, 0xc0, 0x05, 0xc0, 0x02, 0x17, + 0x05, 0xc8, 0x05, 0xc8, 0x02, 0x18, 0x05, 0xcc, 0x05, 0xd7, 0x02, 0x19, + 0x05, 0xda, 0x05, 0xe9, 0x02, 0x25, 0x05, 0xf7, 0x06, 0x0f, 0x02, 0x35, + 0x06, 0x12, 0x06, 0x12, 0x02, 0x4e, 0x06, 0x15, 0x06, 0x87, 0x02, 0x4f, + 0x06, 0xc8, 0x06, 0xf6, 0x02, 0xc2, 0x0a, 0x84, 0x0a, 0x8a, 0x02, 0xf1, + 0x00, 0x01, 0x00, 0xa4, 0x00, 0xaa, 0x00, 0x01, 0x00, 0x0c, 0x00, 0x12, + 0x00, 0x01, 0x00, 0x00, 0x37, 0x1c, 0x00, 0x48, 0x37, 0x1c, 0x37, 0x22, + 0x37, 0x28, 0x37, 0x2e, 0x35, 0x06, 0x35, 0x06, 0x37, 0x28, 0x34, 0xf4, + 0x35, 0x06, 0x35, 0x00, 0x35, 0x06, 0x37, 0x34, 0x34, 0xf4, 0x35, 0x36, + 0x37, 0x3a, 0x37, 0x22, 0x37, 0x3a, 0x37, 0x22, 0x37, 0x40, 0x37, 0x46, + 0x35, 0x36, 0x35, 0x42, 0x37, 0x4c, 0x35, 0x48, 0x37, 0x52, 0x35, 0x48, + 0x37, 0x3a, 0x37, 0x3a, 0x37, 0x3a, 0x35, 0x36, 0x35, 0x36, 0x35, 0x36, + 0x37, 0x58, 0x37, 0x5e, 0x37, 0x64, 0x35, 0x60, 0x37, 0x6a, 0x35, 0x6c, + 0x37, 0x70, 0x37, 0x58, 0x37, 0x76, 0x37, 0x7c, 0x35, 0xc0, 0x37, 0x82, + 0x37, 0x88, 0x37, 0x6a, 0x37, 0x8e, 0x37, 0x64, 0x35, 0xa2, 0x37, 0x64, + 0x37, 0x94, 0x35, 0xc0, 0x37, 0x9a, 0x37, 0xa0, 0x35, 0xba, 0x35, 0xc6, + 0x37, 0xa0, 0x37, 0x7c, 0x37, 0x8e, 0x37, 0x8e, 0x37, 0x8e, 0x37, 0x9a, + 0x37, 0x9a, 0x37, 0x9a, 0x37, 0x3a, 0x37, 0x3a, 0x35, 0x36, 0x35, 0x36, + 0x37, 0x8e, 0x37, 0x8e, 0x37, 0x9a, 0x37, 0x9a, 0x00, 0x01, 0x00, 0x01, + 0x0a, 0x38, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x57, 0x00, 0x58, 0x00, 0x1a, 0x00, 0x5a, 0x00, 0x5a, 0x00, 0x1c, + 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x1d, 0x00, 0x71, 0x00, 0x71, 0x00, 0x1f, + 0x00, 0x83, 0x00, 0x9c, 0x00, 0x20, 0x00, 0xdb, 0x00, 0xdc, 0x00, 0x3a, + 0x00, 0xde, 0x00, 0xde, 0x00, 0x3c, 0x00, 0xf4, 0x00, 0xf5, 0x00, 0x3d, + 0x00, 0xf7, 0x00, 0xf7, 0x00, 0x3f, 0x02, 0xee, 0x02, 0xef, 0x00, 0x40, + 0x02, 0xfb, 0x02, 0xfc, 0x00, 0x42, 0x03, 0x1b, 0x03, 0x1c, 0x00, 0x44, + 0x03, 0x28, 0x03, 0x29, 0x00, 0x46, 0x00, 0x01, 0x00, 0x58, 0x00, 0x5e, + 0x00, 0x01, 0x00, 0x0c, 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x36, 0xaa, + 0x00, 0x22, 0x36, 0x02, 0x36, 0xaa, 0x36, 0xb0, 0x36, 0xaa, 0x36, 0xb0, + 0x36, 0x02, 0x36, 0xaa, 0x36, 0x02, 0x36, 0xb0, 0x36, 0x02, 0x36, 0xb0, + 0x36, 0xb0, 0x36, 0xb0, 0x36, 0xb0, 0x36, 0xb0, 0x36, 0xb0, 0x36, 0xb6, + 0x36, 0xaa, 0x36, 0xaa, 0x32, 0x72, 0x36, 0xb0, 0x36, 0x02, 0x36, 0xb0, + 0x36, 0x02, 0x36, 0xb0, 0x36, 0xbc, 0x36, 0xb0, 0x36, 0xc2, 0x36, 0xb6, + 0x36, 0xb0, 0x36, 0xb0, 0x36, 0xb0, 0x36, 0xb6, 0x36, 0xb6, 0x00, 0x01, + 0x00, 0x01, 0x0a, 0x39, 0x00, 0x02, 0x00, 0x15, 0x00, 0x04, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x01, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x02, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x03, 0x00, 0x0c, 0x00, 0x0c, + 0x00, 0x04, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x05, 0x00, 0x11, 0x00, 0x12, + 0x00, 0x07, 0x00, 0x15, 0x00, 0x18, 0x00, 0x09, 0x00, 0x43, 0x00, 0x43, + 0x00, 0x0d, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x0e, 0x00, 0x83, 0x00, 0x83, + 0x00, 0x10, 0x00, 0x85, 0x00, 0x85, 0x00, 0x11, 0x00, 0x87, 0x00, 0x87, + 0x00, 0x12, 0x00, 0x89, 0x00, 0x89, 0x00, 0x13, 0x00, 0x8b, 0x00, 0x8b, + 0x00, 0x14, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x15, 0x00, 0x90, 0x00, 0x91, + 0x00, 0x17, 0x00, 0x94, 0x00, 0x97, 0x00, 0x19, 0x00, 0xc3, 0x00, 0xc4, + 0x00, 0x1d, 0x00, 0xd0, 0x00, 0xd0, 0x00, 0x1f, 0x00, 0xf5, 0x00, 0xf6, + 0x00, 0x20, 0x00, 0x01, 0x06, 0x04, 0x06, 0x0a, 0x00, 0x01, 0x00, 0x0c, + 0x00, 0x12, 0x00, 0x01, 0x00, 0x00, 0x35, 0xee, 0x02, 0xf8, 0x35, 0xee, + 0x35, 0xf4, 0x35, 0xfa, 0x36, 0x00, 0x36, 0x06, 0x36, 0x0c, 0x36, 0x12, + 0x36, 0x18, 0x36, 0x06, 0x36, 0x1e, 0x36, 0x24, 0x36, 0x2a, 0x36, 0x30, + 0x36, 0x36, 0x36, 0x3c, 0x35, 0xdc, 0x36, 0x42, 0x36, 0x48, 0x36, 0x4e, + 0x36, 0x54, 0x36, 0x5a, 0x36, 0x3c, 0x36, 0x60, 0x36, 0x66, 0x36, 0x6c, + 0x36, 0x18, 0x35, 0xee, 0x35, 0xee, 0x35, 0xee, 0x35, 0xee, 0x35, 0xee, + 0x35, 0xee, 0x35, 0xee, 0x35, 0xee, 0x36, 0xba, 0x36, 0x30, 0x35, 0xfa, + 0x35, 0xfa, 0x35, 0xfa, 0x35, 0xfa, 0x36, 0xc0, 0x36, 0x00, 0x36, 0x00, + 0x36, 0x00, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, + 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0xc6, 0x36, 0x12, 0x36, 0x12, + 0x36, 0x12, 0x36, 0xcc, 0x36, 0x18, 0x36, 0x60, 0x36, 0x06, 0x36, 0x06, + 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, + 0x36, 0xd2, 0x36, 0x12, 0x36, 0x1e, 0x36, 0x24, 0x36, 0x2a, 0x36, 0x2a, + 0x36, 0x2a, 0x36, 0x60, 0x36, 0xd8, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, + 0x36, 0x36, 0x36, 0xde, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, + 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0x3c, 0x36, 0xe4, + 0x35, 0xdc, 0x36, 0x48, 0x36, 0x48, 0x36, 0x48, 0x36, 0x4e, 0x36, 0x4e, + 0x36, 0x4e, 0x36, 0xea, 0x36, 0x54, 0x36, 0xcc, 0x36, 0x54, 0x36, 0x5a, + 0x36, 0x5a, 0x36, 0x5a, 0x36, 0x5a, 0x36, 0x5a, 0x36, 0x5a, 0x36, 0x5a, + 0x36, 0x5a, 0x36, 0x5a, 0x36, 0xf0, 0x36, 0x60, 0x36, 0x60, 0x36, 0x60, + 0x36, 0x60, 0x36, 0x6c, 0x36, 0x6c, 0x36, 0x6c, 0x36, 0x6c, 0x36, 0x18, + 0x36, 0x18, 0x36, 0x18, 0x36, 0x72, 0x36, 0x78, 0x36, 0x7e, 0x36, 0x84, + 0x36, 0x7e, 0x36, 0x8a, 0x36, 0x90, 0x36, 0x84, 0x36, 0x96, 0x36, 0x9c, + 0x36, 0x24, 0x36, 0x96, 0x36, 0x48, 0x36, 0x84, 0x36, 0xa2, 0x36, 0xa8, + 0x36, 0xae, 0x36, 0x0c, 0x35, 0xca, 0x36, 0x7e, 0x36, 0x72, 0x36, 0x4e, + 0x36, 0x72, 0x36, 0x24, 0x36, 0xb4, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, + 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, + 0x36, 0xd2, 0x36, 0x72, 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x7e, + 0x36, 0xf6, 0x36, 0xfc, 0x37, 0x02, 0x36, 0x84, 0x36, 0x7e, 0x36, 0x7e, + 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x7e, + 0x37, 0x08, 0x36, 0x90, 0x36, 0x90, 0x36, 0x90, 0x36, 0x90, 0x36, 0x84, + 0x36, 0x84, 0x36, 0x96, 0x36, 0x96, 0x36, 0x96, 0x36, 0x96, 0x36, 0x96, + 0x36, 0x96, 0x36, 0x96, 0x37, 0x0e, 0x36, 0x96, 0x37, 0x14, 0x36, 0x9c, + 0x36, 0x9c, 0x36, 0x24, 0x36, 0x24, 0x36, 0x96, 0x36, 0x96, 0x36, 0x96, + 0x36, 0x96, 0x36, 0xfc, 0x36, 0x84, 0x36, 0x84, 0x36, 0x84, 0x36, 0x84, + 0x36, 0x96, 0x37, 0x1a, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, + 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0xa2, 0x36, 0x72, + 0x37, 0x20, 0x36, 0x0c, 0x36, 0x0c, 0x36, 0xcc, 0x35, 0xca, 0x35, 0xca, + 0x35, 0xca, 0x37, 0x26, 0x37, 0x2c, 0x37, 0x32, 0x36, 0x7e, 0x36, 0xcc, + 0x36, 0x7e, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, + 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0xd2, 0x36, 0x72, + 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x36, 0xb4, 0x36, 0xb4, 0x36, 0xb4, + 0x36, 0xb4, 0x36, 0x72, 0x36, 0x72, 0x36, 0x72, 0x37, 0x38, 0x35, 0xee, + 0x35, 0xee, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x37, 0x3e, + 0x37, 0x3e, 0x36, 0x3c, 0x36, 0x3c, 0x37, 0x3e, 0x36, 0x5a, 0x37, 0x44, + 0x37, 0x3e, 0x36, 0x6c, 0x36, 0x72, 0x36, 0x72, 0x37, 0x3e, 0x36, 0x7e, + 0x36, 0x7e, 0x36, 0x96, 0x37, 0x3e, 0x37, 0x3e, 0x36, 0xa2, 0x37, 0x4a, + 0x36, 0x72, 0x36, 0x72, 0x37, 0x50, 0x36, 0xb4, 0x36, 0x6c, 0x36, 0xb4, + 0x36, 0xb4, 0x37, 0x56, 0x37, 0x5c, 0x37, 0x62, 0x37, 0x62, 0x37, 0x68, + 0x37, 0x6e, 0x36, 0x00, 0x37, 0x74, 0x36, 0x2a, 0x37, 0x7a, 0x36, 0x3c, + 0x37, 0x80, 0x37, 0x86, 0x36, 0x12, 0x36, 0x2a, 0x37, 0x7a, 0x36, 0x72, + 0x36, 0x24, 0x36, 0x24, 0x37, 0x8c, 0x36, 0x3c, 0x36, 0x36, 0x37, 0x92, + 0x37, 0x98, 0x37, 0x9e, 0x36, 0x60, 0x36, 0x54, 0x37, 0xa4, 0x36, 0x3c, + 0x36, 0x5a, 0x36, 0x54, 0x36, 0x18, 0x37, 0xaa, 0x37, 0xb0, 0x35, 0xd0, + 0x36, 0x66, 0x36, 0x66, 0x37, 0xb6, 0x37, 0xbc, 0x37, 0xc2, 0x37, 0xc8, + 0x35, 0xee, 0x36, 0x06, 0x36, 0x3c, 0x36, 0x5a, 0x36, 0x30, 0x36, 0x12, + 0x36, 0x12, 0x36, 0x24, 0x37, 0xce, 0x37, 0xce, 0x37, 0xaa, 0x36, 0x66, + 0x36, 0x66, 0x36, 0x12, 0x37, 0xd4, 0x37, 0xda, 0x36, 0x36, 0x35, 0xee, + 0x35, 0xee, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x06, 0x36, 0x3c, + 0x36, 0x3c, 0x36, 0x48, 0x36, 0x48, 0x36, 0x5a, 0x36, 0x5a, 0x37, 0xe0, + 0x36, 0x18, 0x37, 0xe6, 0x37, 0xec, 0x37, 0xf2, 0x35, 0xee, 0x36, 0x06, + 0x36, 0x3c, 0x36, 0x6c, 0x35, 0xee, 0x35, 0xfa, 0x36, 0x72, 0x36, 0x54, + 0x37, 0xf8, 0x35, 0xee, 0x35, 0xf4, 0x37, 0x3e, 0x37, 0xfe, 0x36, 0x00, + 0x37, 0x3e, 0x37, 0xfe, 0x38, 0x04, 0x38, 0x0a, 0x38, 0x0a, 0x38, 0x10, + 0x36, 0x0c, 0x36, 0x12, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, 0x36, 0x18, + 0x36, 0x18, 0x38, 0x10, 0x36, 0x24, 0x36, 0x24, 0x37, 0xfe, 0x38, 0x16, + 0x38, 0x16, 0x38, 0x1c, 0x38, 0x22, 0x36, 0x30, 0x36, 0x30, 0x36, 0x30, + 0x36, 0x36, 0x36, 0x36, 0x37, 0xfe, 0x38, 0x0a, 0x35, 0xdc, 0x35, 0xdc, + 0x36, 0x48, 0x36, 0x48, 0x37, 0xfe, 0x36, 0x4e, 0x37, 0x3e, 0x36, 0x4e, + 0x36, 0x4e, 0x37, 0x3e, 0x36, 0x54, 0x37, 0x3e, 0x37, 0xfe, 0x38, 0x0a, + 0x38, 0x28, 0x38, 0x10, 0x38, 0x0a, 0x36, 0x3c, 0x37, 0x3e, 0x36, 0x60, + 0x36, 0x60, 0x36, 0x66, 0x36, 0x66, 0x36, 0x6c, 0x36, 0x18, 0x36, 0x18, + 0x37, 0xfe, 0x36, 0x78, 0x36, 0x78, 0x36, 0x78, 0x36, 0x7e, 0x36, 0x72, + 0x38, 0x2e, 0x38, 0x34, 0x37, 0x20, 0x36, 0x24, 0x36, 0x96, 0x36, 0x66, + 0x38, 0x3a, 0x36, 0x36, 0x37, 0x20, 0x37, 0xec, 0x38, 0x40, 0x36, 0x7e, + 0x36, 0xb4, 0x36, 0x84, 0x37, 0xaa, 0x36, 0x66, 0x37, 0xbc, 0x37, 0xc8, + 0x36, 0x72, 0x36, 0x96, 0x36, 0xa2, 0x36, 0x84, 0x36, 0x3c, 0x36, 0x72, + 0x36, 0x90, 0x36, 0x90, 0x36, 0x24, 0x38, 0x46, 0x38, 0x46, 0x38, 0x4c, + 0x36, 0x9c, 0x36, 0x66, 0x36, 0x90, 0x36, 0x84, 0x36, 0x72, 0x36, 0x72, + 0x36, 0x7e, 0x36, 0x7e, 0x36, 0x96, 0x36, 0x96, 0x36, 0xa2, 0x36, 0xa2, + 0x36, 0x0c, 0x36, 0x0c, 0x36, 0x72, 0x36, 0x72, 0x38, 0x4c, 0x36, 0x84, + 0x38, 0x52, 0x37, 0x9e, 0x38, 0x58, 0x36, 0x72, 0x38, 0x5e, 0x36, 0xa2, + 0x36, 0xb4, 0x38, 0x64, 0x38, 0x6a, 0x38, 0x70, 0x38, 0x76, 0x38, 0x7c, + 0x36, 0x7e, 0x38, 0x82, 0x38, 0x88, 0x36, 0x9c, 0x36, 0xae, 0x36, 0x72, + 0x36, 0x78, 0x38, 0x8e, 0x37, 0xfe, 0x36, 0x84, 0x37, 0x3e, 0x37, 0xfe, + 0x38, 0x94, 0x38, 0x0a, 0x38, 0x9a, 0x38, 0xa0, 0x36, 0x8a, 0x36, 0x90, + 0x36, 0x84, 0x37, 0x3e, 0x36, 0x84, 0x36, 0x84, 0x38, 0xa6, 0x38, 0x10, + 0x38, 0x10, 0x36, 0x24, 0x36, 0x24, 0x37, 0xfe, 0x38, 0xac, 0x38, 0xac, + 0x38, 0xb2, 0x38, 0xb8, 0x36, 0x48, 0x36, 0x48, 0x36, 0x48, 0x36, 0x84, + 0x37, 0x3e, 0x37, 0xfe, 0x38, 0x0a, 0x36, 0xa8, 0x36, 0xa8, 0x36, 0x0c, + 0x37, 0x3e, 0x37, 0xfe, 0x35, 0xca, 0x37, 0x3e, 0x35, 0xca, 0x35, 0xca, + 0x37, 0x3e, 0x36, 0x7e, 0x37, 0x3e, 0x37, 0xfe, 0x38, 0x0a, 0x38, 0x28, + 0x38, 0x10, 0x38, 0x0a, 0x36, 0x4e, 0x37, 0x3e, 0x36, 0x72, 0x37, 0x3e, + 0x36, 0x24, 0x36, 0x24, 0x36, 0xb4, 0x36, 0x72, 0x36, 0x72, 0x37, 0xfe, + 0x37, 0xfe, 0x36, 0x7e, 0x36, 0x72, 0x36, 0xb4, 0x36, 0x72, 0x37, 0x32, + 0x36, 0x5a, 0x36, 0x2a, 0x38, 0xbe, 0x38, 0xbe, 0x38, 0xc4, 0x38, 0xca, + 0x38, 0xd0, 0x36, 0x84, 0x38, 0xd6, 0x38, 0xd6, 0x38, 0xdc, 0x37, 0x80, + 0x38, 0xe2, 0x38, 0xe8, 0x38, 0xee, 0x38, 0xf4, 0x38, 0xfa, 0x38, 0xfa, + 0x39, 0x00, 0x39, 0x06, 0x39, 0x0c, 0x39, 0x12, 0x36, 0x84, 0x39, 0x18, + 0x36, 0x96, 0x36, 0x96, 0x36, 0x2a, 0x36, 0x2a, 0x36, 0x96, 0x36, 0x96, + 0x36, 0xae, 0x39, 0x1e, 0x36, 0x48, 0x39, 0x24, 0x39, 0x2a, 0x36, 0x84, + 0x39, 0x30, 0x36, 0x60, 0x36, 0xa2, 0x36, 0x36, 0x37, 0x6e, 0x39, 0x36, + 0x36, 0xfc, 0x36, 0xfc, 0x39, 0x3c, 0x39, 0x42, 0x39, 0x48, 0x36, 0x0c, + 0x36, 0xd8, 0x36, 0x48, 0x38, 0xd6, 0x39, 0x4e, 0x39, 0x54, 0x39, 0x54, + 0x39, 0x5a, 0x36, 0xa8, 0x38, 0xee, 0x39, 0x60, 0x36, 0x84, 0x39, 0x66, + 0x39, 0x6c, 0x36, 0x66, 0x36, 0xe4, 0x36, 0xe4, 0x36, 0x6c, 0x39, 0x72, + 0x36, 0xd8, 0x38, 0x4c, 0x39, 0x78, 0x39, 0x7e, 0x39, 0x84, 0x39, 0x8a, + 0x39, 0x18, 0x36, 0x3c, 0x39, 0x90, 0x39, 0x96, 0x39, 0x9c, 0x36, 0x84, + 0x39, 0xa2, 0x39, 0x12, 0x37, 0x7a, 0x38, 0x3a, 0x39, 0x7e, 0x37, 0x9e, + 0x36, 0x66, 0x39, 0xa8, 0x36, 0x96, 0x39, 0x9c, 0x39, 0xae, 0x39, 0xb4, + 0x37, 0x8c, 0x36, 0x7e, 0x36, 0x18, 0x39, 0xba, 0x36, 0x72, 0x36, 0xae, + 0x39, 0xc0, 0x36, 0x24, 0x36, 0x48, 0x39, 0xc6, 0x39, 0xcc, 0x39, 0xd2, + 0x37, 0x62, 0x37, 0x62, 0x36, 0xfc, 0x36, 0xa2, 0x39, 0xd8, 0x36, 0x6c, + 0x36, 0x48, 0x36, 0x2a, 0x36, 0x24, 0x36, 0x2a, 0x36, 0xa2, 0x39, 0xde, + 0x39, 0xe4, 0x39, 0xea, 0x39, 0xf0, 0x37, 0x50, 0x37, 0x9e, 0x39, 0xf6, + 0x36, 0x3c, 0x39, 0xfc, 0x36, 0xd8, 0x37, 0x8c, 0x38, 0xe8, 0x36, 0x3c, + 0x3a, 0x02, 0x3a, 0x02, 0x3a, 0x08, 0x38, 0xe8, 0x36, 0xd8, 0x36, 0x72, + 0x39, 0x66, 0x3a, 0x0e, 0x37, 0x8c, 0x3a, 0x14, 0x36, 0x24, 0x36, 0x84, + 0x3a, 0x1a, 0x38, 0xe8, 0x36, 0x06, 0x36, 0x78, 0x36, 0x84, 0x36, 0x8a, + 0x37, 0x8c, 0x36, 0x84, 0x36, 0xa8, 0x36, 0x0c, 0x36, 0x0c, 0x35, 0xca, + 0x36, 0x7e, 0x36, 0x72, 0x3a, 0x20, 0x3a, 0x26, 0x3a, 0x2c, 0x36, 0x30, + 0x36, 0x96, 0x36, 0x2a, 0x36, 0xa8, 0x3a, 0x32, 0x3a, 0x38, 0x3a, 0x3e, + 0x3a, 0x44, 0x3a, 0x4a, 0x3a, 0x44, 0x3a, 0x50, 0x3a, 0x56, 0x3a, 0x50, + 0x3a, 0x44, 0x36, 0xa8, 0x3a, 0x5c, 0x3a, 0x62, 0x3a, 0x68, 0x38, 0x40, + 0x3a, 0x44, 0x38, 0x58, 0x3a, 0x6e, 0x3a, 0x6e, 0x39, 0x3c, 0x3a, 0x74, + 0x3a, 0x7a, 0x3a, 0x80, 0x3a, 0x86, 0x3a, 0x8c, 0x3a, 0x92, 0x3a, 0x98, + 0x3a, 0x9e, 0x3a, 0xa4, 0x37, 0x3e, 0x37, 0x3e, 0x37, 0x3e, 0x37, 0x3e, + 0x37, 0x3e, 0x36, 0xd2, 0x36, 0xd2, 0x00, 0x01, 0x00, 0x01, 0x0a, 0x3a, + 0x00, 0x02, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, 0x00, 0x00, 0x00, 0x27, + 0x00, 0x28, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x5f, 0x00, 0x24, 0x00, 0x61, + 0x00, 0x69, 0x00, 0x5a, 0x00, 0x6b, 0x00, 0xa4, 0x00, 0x63, 0x00, 0xa6, + 0x00, 0xa7, 0x00, 0x9d, 0x00, 0xa9, 0x00, 0xb9, 0x00, 0x9f, 0x00, 0xbc, + 0x00, 0xe3, 0x00, 0xb0, 0x00, 0xe5, 0x00, 0xed, 0x00, 0xd8, 0x00, 0xef, + 0x01, 0x08, 0x00, 0xe1, 0x02, 0x5f, 0x02, 0x5f, 0x00, 0xfb, 0x02, 0xd8, + 0x02, 0xd9, 0x00, 0xfc, 0x02, 0xe4, 0x02, 0xe6, 0x00, 0xfe, 0x02, 0xec, + 0x02, 0xef, 0x01, 0x01, 0x02, 0xf5, 0x02, 0xf5, 0x01, 0x05, 0x02, 0xfb, + 0x02, 0xfd, 0x01, 0x06, 0x03, 0x03, 0x03, 0x06, 0x01, 0x09, 0x03, 0x11, + 0x03, 0x13, 0x01, 0x0d, 0x03, 0x19, 0x03, 0x1c, 0x01, 0x10, 0x03, 0x22, + 0x03, 0x22, 0x01, 0x14, 0x03, 0x28, 0x03, 0x2a, 0x01, 0x15, 0x03, 0x30, + 0x03, 0x33, 0x01, 0x18, 0x03, 0x9f, 0x03, 0x9f, 0x01, 0x1c, 0x04, 0x59, + 0x04, 0x84, 0x01, 0x1d, 0x04, 0x8b, 0x04, 0xaa, 0x01, 0x49, 0x04, 0xad, + 0x04, 0xad, 0x01, 0x69, 0x04, 0xaf, 0x04, 0xb4, 0x01, 0x6a, 0x04, 0xbd, + 0x04, 0xc0, 0x01, 0x70, 0x04, 0xc2, 0x04, 0xc6, 0x01, 0x74, 0x04, 0xc9, + 0x04, 0xca, 0x01, 0x79, 0x04, 0xcc, 0x04, 0xd3, 0x01, 0x7b, 0x04, 0xd5, + 0x04, 0xe2, 0x01, 0x83, 0x04, 0xe7, 0x04, 0xea, 0x01, 0x91, 0x04, 0xec, + 0x04, 0xf8, 0x01, 0x95, 0x04, 0xfb, 0x05, 0x04, 0x01, 0xa2, 0x05, 0x0f, + 0x05, 0x14, 0x01, 0xac, 0x05, 0x16, 0x05, 0x19, 0x01, 0xb2, 0x05, 0x1c, + 0x05, 0x24, 0x01, 0xb6, 0x05, 0x27, 0x05, 0x2c, 0x01, 0xbf, 0x05, 0x2f, + 0x05, 0x30, 0x01, 0xc5, 0x05, 0x35, 0x05, 0x35, 0x01, 0xc7, 0x05, 0x38, + 0x05, 0x3f, 0x01, 0xc8, 0x05, 0x41, 0x05, 0x48, 0x01, 0xd0, 0x05, 0x4b, + 0x05, 0x4b, 0x01, 0xd8, 0x05, 0x4e, 0x05, 0x50, 0x01, 0xd9, 0x05, 0x54, + 0x05, 0x54, 0x01, 0xdc, 0x05, 0x58, 0x05, 0x60, 0x01, 0xdd, 0x05, 0x63, + 0x05, 0x63, 0x01, 0xe6, 0x05, 0x65, 0x05, 0x6d, 0x01, 0xe7, 0x05, 0x72, + 0x05, 0x72, 0x01, 0xf0, 0x05, 0x7a, 0x05, 0x7a, 0x01, 0xf1, 0x05, 0x81, + 0x05, 0x84, 0x01, 0xf2, 0x05, 0x86, 0x05, 0x8a, 0x01, 0xf6, 0x05, 0x8d, + 0x05, 0x8e, 0x01, 0xfb, 0x05, 0x90, 0x05, 0x90, 0x01, 0xfd, 0x05, 0x93, + 0x05, 0x99, 0x01, 0xfe, 0x05, 0x9c, 0x05, 0x9c, 0x02, 0x05, 0x05, 0xa0, + 0x05, 0xa3, 0x02, 0x06, 0x05, 0xa6, 0x05, 0xa6, 0x02, 0x0a, 0x05, 0xa9, + 0x05, 0xa9, 0x02, 0x0b, 0x05, 0xac, 0x05, 0xac, 0x02, 0x0c, 0x05, 0xaf, + 0x05, 0xb5, 0x02, 0x0d, 0x05, 0xba, 0x05, 0xbc, 0x02, 0x14, 0x05, 0xc0, + 0x05, 0xc0, 0x02, 0x17, 0x05, 0xc8, 0x05, 0xc8, 0x02, 0x18, 0x05, 0xcc, + 0x05, 0xd7, 0x02, 0x19, 0x05, 0xda, 0x05, 0xe9, 0x02, 0x25, 0x05, 0xf7, + 0x06, 0x0f, 0x02, 0x35, 0x06, 0x12, 0x06, 0x12, 0x02, 0x4e, 0x06, 0x15, + 0x06, 0x87, 0x02, 0x4f, 0x06, 0xc8, 0x06, 0xf6, 0x02, 0xc2, 0x0a, 0x84, + 0x0a, 0x8a, 0x02, 0xf1, 0x00, 0x01, 0x00, 0x68, 0x00, 0x70, 0x00, 0x02, + 0x00, 0x0c, 0x00, 0x16, 0x00, 0x02, 0x00, 0x00, 0x32, 0xf2, 0x00, 0x01, + 0x33, 0x34, 0x00, 0x14, 0x32, 0xee, 0x32, 0xee, 0x32, 0xf4, 0x32, 0xf4, + 0x2f, 0xca, 0x2f, 0xca, 0x2e, 0xaa, 0x2e, 0xaa, 0x32, 0xfa, 0x32, 0xfa, + 0x2f, 0xca, 0x2f, 0xca, 0x33, 0x00, 0x33, 0x00, 0x33, 0x06, 0x33, 0x06, + 0x2e, 0x86, 0x2e, 0x86, 0x33, 0x0c, 0x33, 0x0c, 0x2f, 0xca, 0x2f, 0xca, + 0x33, 0x12, 0x33, 0x12, 0x33, 0x18, 0x33, 0x18, 0x33, 0x1e, 0x33, 0x1e, + 0x33, 0x12, 0x33, 0x12, 0x33, 0x24, 0x33, 0x24, 0x2f, 0xca, 0x2f, 0xca, + 0x31, 0xc2, 0x31, 0xc2, 0x2e, 0x56, 0x2e, 0x56, 0x33, 0x24, 0x33, 0x24, + 0x00, 0x01, 0x00, 0x02, 0x03, 0xd7, 0x03, 0xd8, 0x00, 0x02, 0x00, 0x05, + 0x00, 0x84, 0x00, 0x86, 0x00, 0x00, 0x00, 0x88, 0x00, 0x8a, 0x00, 0x03, + 0x00, 0x8c, 0x00, 0x90, 0x00, 0x06, 0x00, 0x92, 0x00, 0x99, 0x00, 0x0b, + 0x00, 0x9c, 0x00, 0x9c, 0x00, 0x13, 0x00, 0x01, 0x0c, 0x00, 0x0c, 0x0a, + 0x00, 0x02, 0x00, 0x0c, 0x00, 0x1e, 0x00, 0x04, 0x00, 0x00, 0x32, 0xa8, + 0x00, 0x01, 0x32, 0xb4, 0x00, 0x00, 0x32, 0xae, 0x00, 0x01, 0x32, 0xba, + 0x02, 0xf8, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x2c, 0xb4, + 0x32, 0xae, 0x2c, 0xb4, 0x32, 0xae, 0x00, 0x02, 0x00, 0x01, 0x0a, 0x48, + 0x0a, 0x4b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x48, 0x00, 0x04, 0x00, 0x25, + 0x00, 0x00, 0x00, 0x27, 0x00, 0x28, 0x00, 0x22, 0x00, 0x2a, 0x00, 0x5f, + 0x00, 0x24, 0x00, 0x61, 0x00, 0x69, 0x00, 0x5a, 0x00, 0x6b, 0x00, 0xa4, + 0x00, 0x63, 0x00, 0xa6, 0x00, 0xa7, 0x00, 0x9d, 0x00, 0xa9, 0x00, 0xb9, + 0x00, 0x9f, 0x00, 0xbc, 0x00, 0xe3, 0x00, 0xb0, 0x00, 0xe5, 0x00, 0xed, + 0x00, 0xd8, 0x00, 0xef, 0x01, 0x08, 0x00, 0xe1, 0x02, 0x5f, 0x02, 0x5f, + 0x00, 0xfb, 0x02, 0xd8, 0x02, 0xd9, 0x00, 0xfc, 0x02, 0xe4, 0x02, 0xe6, + 0x00, 0xfe, 0x02, 0xec, 0x02, 0xef, 0x01, 0x01, 0x02, 0xf5, 0x02, 0xf5, + 0x01, 0x05, 0x02, 0xfb, 0x02, 0xfd, 0x01, 0x06, 0x03, 0x03, 0x03, 0x06, + 0x01, 0x09, 0x03, 0x11, 0x03, 0x13, 0x01, 0x0d, 0x03, 0x19, 0x03, 0x1c, + 0x01, 0x10, 0x03, 0x22, 0x03, 0x22, 0x01, 0x14, 0x03, 0x28, 0x03, 0x2a, + 0x01, 0x15, 0x03, 0x30, 0x03, 0x33, 0x01, 0x18, 0x03, 0x9f, 0x03, 0x9f, + 0x01, 0x1c, 0x04, 0x59, 0x04, 0x84, 0x01, 0x1d, 0x04, 0x8b, 0x04, 0xaa, + 0x01, 0x49, 0x04, 0xad, 0x04, 0xad, 0x01, 0x69, 0x04, 0xaf, 0x04, 0xb4, + 0x01, 0x6a, 0x04, 0xbd, 0x04, 0xc0, 0x01, 0x70, 0x04, 0xc2, 0x04, 0xc6, + 0x01, 0x74, 0x04, 0xc9, 0x04, 0xca, 0x01, 0x79, 0x04, 0xcc, 0x04, 0xd3, + 0x01, 0x7b, 0x04, 0xd5, 0x04, 0xe2, 0x01, 0x83, 0x04, 0xe7, 0x04, 0xea, + 0x01, 0x91, 0x04, 0xec, 0x04, 0xf8, 0x01, 0x95, 0x04, 0xfb, 0x05, 0x04, + 0x01, 0xa2, 0x05, 0x0f, 0x05, 0x14, 0x01, 0xac, 0x05, 0x16, 0x05, 0x19, + 0x01, 0xb2, 0x05, 0x1c, 0x05, 0x24, 0x01, 0xb6, 0x05, 0x27, 0x05, 0x2c, + 0x01, 0xbf, 0x05, 0x2f, 0x05, 0x30, 0x01, 0xc5, 0x05, 0x35, 0x05, 0x35, + 0x01, 0xc7, 0x05, 0x38, 0x05, 0x3f, 0x01, 0xc8, 0x05, 0x41, 0x05, 0x48, + 0x01, 0xd0, 0x05, 0x4b, 0x05, 0x4b, 0x01, 0xd8, 0x05, 0x4e, 0x05, 0x50, + 0x01, 0xd9, 0x05, 0x54, 0x05, 0x54, 0x01, 0xdc, 0x05, 0x58, 0x05, 0x60, + 0x01, 0xdd, 0x05, 0x63, 0x05, 0x63, 0x01, 0xe6, 0x05, 0x65, 0x05, 0x6d, + 0x01, 0xe7, 0x05, 0x72, 0x05, 0x72, 0x01, 0xf0, 0x05, 0x7a, 0x05, 0x7a, + 0x01, 0xf1, 0x05, 0x81, 0x05, 0x84, 0x01, 0xf2, 0x05, 0x86, 0x05, 0x8a, + 0x01, 0xf6, 0x05, 0x8d, 0x05, 0x8e, 0x01, 0xfb, 0x05, 0x90, 0x05, 0x90, + 0x01, 0xfd, 0x05, 0x93, 0x05, 0x99, 0x01, 0xfe, 0x05, 0x9c, 0x05, 0x9c, + 0x02, 0x05, 0x05, 0xa0, 0x05, 0xa3, 0x02, 0x06, 0x05, 0xa6, 0x05, 0xa6, + 0x02, 0x0a, 0x05, 0xa9, 0x05, 0xa9, 0x02, 0x0b, 0x05, 0xac, 0x05, 0xac, + 0x02, 0x0c, 0x05, 0xaf, 0x05, 0xb5, 0x02, 0x0d, 0x05, 0xba, 0x05, 0xbc, + 0x02, 0x14, 0x05, 0xc0, 0x05, 0xc0, 0x02, 0x17, 0x05, 0xc8, 0x05, 0xc8, + 0x02, 0x18, 0x05, 0xcc, 0x05, 0xd7, 0x02, 0x19, 0x05, 0xda, 0x05, 0xe9, + 0x02, 0x25, 0x05, 0xf7, 0x06, 0x0f, 0x02, 0x35, 0x06, 0x12, 0x06, 0x12, + 0x02, 0x4e, 0x06, 0x15, 0x06, 0x87, 0x02, 0x4f, 0x06, 0xc8, 0x06, 0xf6, + 0x02, 0xc2, 0x0a, 0x84, 0x0a, 0x8a, 0x02, 0xf1, 0x00, 0x02, 0x02, 0x00, + 0x00, 0x04, 0x00, 0xfc, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, 0xfb, 0x9a, + 0xfb, 0x9a, 0xfb, 0x9a, 0x00, 0x02, 0x00, 0x15, 0x01, 0x3d, 0x01, 0x3d, + 0x00, 0x00, 0x01, 0x3f, 0x01, 0x3f, 0x00, 0x01, 0x01, 0x41, 0x01, 0x41, + 0x00, 0x02, 0x01, 0x43, 0x01, 0x44, 0x00, 0x03, 0x01, 0x46, 0x01, 0x46, + 0x00, 0x05, 0x01, 0x48, 0x01, 0x48, 0x00, 0x06, 0x01, 0x4a, 0x01, 0x4a, + 0x00, 0x07, 0x01, 0x4c, 0x01, 0x4c, 0x00, 0x08, 0x01, 0x4e, 0x01, 0x4e, + 0x00, 0x09, 0x01, 0x51, 0x01, 0x51, 0x00, 0x0a, 0x01, 0x53, 0x01, 0x53, + 0x00, 0x0b, 0x01, 0x56, 0x01, 0x56, 0x00, 0x0c, 0x02, 0xc5, 0x02, 0xd7, + 0x00, 0x0d, 0x03, 0xba, 0x03, 0xf9, 0x00, 0x20, 0x03, 0xfe, 0x04, 0x0a, + 0x00, 0x60, 0x04, 0x0c, 0x04, 0x58, 0x00, 0x6d, 0x07, 0x41, 0x07, 0x41, + 0x00, 0xba, 0x08, 0x02, 0x08, 0x26, 0x00, 0xbb, 0x0a, 0x03, 0x0a, 0x0b, + 0x00, 0xe0, 0x0a, 0x2d, 0x0a, 0x3b, 0x00, 0xe9, 0x0a, 0x48, 0x0a, 0x4b, + 0x00, 0xf8, 0x00, 0x01, 0x04, 0x1e, 0x04, 0xbe, 0x00, 0x01, 0x00, 0x0c, + 0x02, 0xc2, 0x00, 0xad, 0x00, 0x00, 0x07, 0x14, 0x00, 0x00, 0x07, 0x1a, + 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x26, + 0x00, 0x00, 0x07, 0x2c, 0x00, 0x00, 0x07, 0x32, 0x00, 0x00, 0x07, 0x38, + 0x00, 0x00, 0x07, 0x3e, 0x00, 0x00, 0x07, 0x44, 0x00, 0x00, 0x07, 0x4a, + 0x00, 0x00, 0x07, 0x50, 0x00, 0x00, 0x07, 0x56, 0x00, 0x00, 0x07, 0x5c, + 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x5c, 0x00, 0x00, 0x07, 0x20, + 0x00, 0x00, 0x07, 0x5c, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x5c, + 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0x2c, + 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0x68, 0x00, 0x00, 0x07, 0x62, + 0x00, 0x00, 0x07, 0x2c, 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0x2c, + 0x00, 0x00, 0x07, 0x6e, 0x00, 0x00, 0x07, 0x6e, 0x00, 0x00, 0x07, 0x74, + 0x00, 0x00, 0x07, 0x7a, 0x00, 0x00, 0x07, 0x74, 0x00, 0x00, 0x07, 0x7a, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x07, 0x86, 0x00, 0x00, 0x07, 0x62, + 0x00, 0x00, 0x07, 0x8c, 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0x92, + 0x00, 0x00, 0x07, 0x98, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x98, + 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0x9e, 0x00, 0x00, 0x07, 0x20, + 0x00, 0x00, 0x07, 0x9e, 0x00, 0x00, 0x07, 0xa4, 0x00, 0x00, 0x07, 0xaa, + 0x00, 0x00, 0x07, 0xb0, 0x00, 0x00, 0x07, 0xb6, 0x00, 0x00, 0x07, 0x2c, + 0x00, 0x00, 0x07, 0xaa, 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0xbc, + 0x00, 0x00, 0x07, 0x4a, 0x00, 0x00, 0x07, 0xc2, 0x00, 0x00, 0x07, 0xc8, + 0x00, 0x00, 0x07, 0xce, 0x00, 0x00, 0x07, 0xd4, 0x00, 0x00, 0x07, 0xaa, + 0x00, 0x00, 0x07, 0x20, 0x00, 0x00, 0x07, 0xda, 0x00, 0x00, 0x07, 0xe0, + 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0xe6, 0x00, 0x00, 0x07, 0xec, + 0x00, 0x00, 0x07, 0xf2, 0x00, 0x00, 0x07, 0xaa, 0x00, 0x00, 0x07, 0x20, + 0x00, 0x00, 0x07, 0xf8, 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x07, 0xf8, + 0x00, 0x00, 0x07, 0xfe, 0x00, 0x00, 0x08, 0x04, 0x00, 0x00, 0x08, 0x0a, + 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x16, 0x00, 0x00, 0x08, 0x10, + 0x00, 0x00, 0x08, 0x16, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x00, 0x08, 0x16, + 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x16, 0x00, 0x00, 0x08, 0x22, + 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x08, 0x28, + 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0x08, 0x1c, + 0x00, 0x00, 0x08, 0x16, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x08, 0x28, + 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0x08, 0x2e, + 0x00, 0x00, 0x08, 0x34, 0x00, 0x00, 0x08, 0x2e, 0x00, 0x00, 0x08, 0x34, + 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x08, 0x3a, 0x00, 0x00, 0x08, 0x40, + 0x00, 0x00, 0x08, 0x46, 0x00, 0x00, 0x08, 0x4c, 0x00, 0x00, 0x08, 0x52, + 0x00, 0x00, 0x08, 0x58, 0x00, 0x00, 0x08, 0x5e, 0x00, 0x00, 0x08, 0x64, + 0x00, 0x00, 0x08, 0x6a, 0x00, 0x00, 0x08, 0x70, 0x00, 0x00, 0x08, 0x6a, + 0x00, 0x00, 0x08, 0x70, 0x00, 0x00, 0x07, 0xaa, 0x00, 0x00, 0x08, 0x76, + 0x00, 0x00, 0x08, 0x7c, 0x00, 0x00, 0x08, 0x7c, 0x00, 0x00, 0x08, 0x82, + 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, + 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, + 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, + 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x82, 0x00, 0x00, 0x08, 0x88, + 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x08, 0x88, + 0x00, 0x00, 0x08, 0x8e, 0x00, 0x00, 0x08, 0x8e, 0x00, 0x00, 0x08, 0x94, + 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x08, 0x9a, 0x00, 0x00, 0x08, 0x9a, + 0x00, 0x00, 0x08, 0x94, 0x00, 0x00, 0x08, 0x94, 0x00, 0x00, 0x08, 0x94, + 0x00, 0x00, 0x08, 0x94, 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0x62, + 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x07, 0x62, 0x00, 0x00, 0x08, 0x88, + 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x08, 0x88, 0x00, 0x00, 0x08, 0x88, + 0x00, 0x00, 0x08, 0xa0, 0x00, 0x00, 0x08, 0xa6, 0x00, 0x00, 0x08, 0xac, + 0x00, 0x00, 0x08, 0xb2, 0x00, 0x00, 0x08, 0xb8, 0x00, 0x00, 0x08, 0xb2, + 0x00, 0x00, 0x08, 0xb8, 0x00, 0x00, 0x08, 0xbe, 0x00, 0x00, 0x08, 0xac, + 0x00, 0x00, 0x08, 0xc4, 0x00, 0x00, 0x08, 0xca, 0x00, 0x00, 0x07, 0x5c, + 0x00, 0x00, 0x07, 0xce, 0x00, 0x00, 0x08, 0xd0, 0x00, 0x00, 0x07, 0x62, + 0x00, 0x00, 0x07, 0xc2, 0x00, 0x00, 0x08, 0xd6, 0x00, 0x00, 0x07, 0xec, + 0x00, 0x00, 0x08, 0xdc, 0x00, 0x00, 0x07, 0x5c, 0x00, 0x00, 0x08, 0xe2, + 0x00, 0xad, 0x1f, 0xd0, 0x1f, 0xd6, 0x06, 0x68, 0x06, 0x68, 0x1f, 0xdc, + 0x1f, 0xe2, 0x1f, 0xe8, 0x06, 0x98, 0x1f, 0xee, 0x1f, 0xf4, 0x1f, 0xfa, + 0x20, 0x00, 0x20, 0x06, 0x20, 0x0c, 0x20, 0x12, 0x20, 0x0c, 0x20, 0x12, + 0x20, 0x18, 0x08, 0x30, 0x20, 0x1e, 0x20, 0x24, 0x20, 0x2a, 0x20, 0x30, + 0x20, 0x2a, 0x20, 0x36, 0x20, 0x3c, 0x08, 0x30, 0x20, 0x42, 0x20, 0x24, + 0x20, 0x48, 0x20, 0x48, 0x20, 0x4e, 0x20, 0x54, 0x20, 0x4e, 0x20, 0x54, + 0x20, 0x5a, 0x20, 0x60, 0x20, 0x66, 0x08, 0x30, 0x06, 0xc2, 0x20, 0x6c, + 0x20, 0x72, 0x20, 0x78, 0x07, 0x46, 0x20, 0x7e, 0x20, 0x72, 0x20, 0x78, + 0x20, 0x84, 0x20, 0x8a, 0x20, 0x90, 0x20, 0x24, 0x20, 0x96, 0x20, 0x9c, + 0x20, 0xa2, 0x20, 0xa8, 0x20, 0xae, 0x20, 0x9c, 0x20, 0xb4, 0x08, 0x30, + 0x20, 0xba, 0x08, 0x30, 0x20, 0xc0, 0x20, 0xc6, 0x20, 0xcc, 0x20, 0xd2, + 0x20, 0xd8, 0x08, 0x30, 0x20, 0xde, 0x20, 0xe4, 0x20, 0xea, 0x20, 0xf0, + 0x20, 0xf6, 0x20, 0x90, 0x20, 0xf6, 0x20, 0x90, 0x20, 0xfc, 0x21, 0x02, + 0x21, 0x08, 0x21, 0x0e, 0x21, 0x14, 0x21, 0x1a, 0x21, 0x20, 0x21, 0x26, + 0x21, 0x0e, 0x21, 0x2c, 0x20, 0x90, 0x21, 0x32, 0x21, 0x38, 0x21, 0x3e, + 0x20, 0xf6, 0x20, 0x90, 0x21, 0x44, 0x21, 0x4a, 0x21, 0x50, 0x21, 0x56, + 0x21, 0x50, 0x21, 0x56, 0x21, 0x5c, 0x08, 0x30, 0x21, 0x5c, 0x08, 0x30, + 0x21, 0x62, 0x21, 0x68, 0x21, 0x6e, 0x21, 0x74, 0x21, 0x7a, 0x21, 0x80, + 0x21, 0x86, 0x21, 0x8c, 0x21, 0x92, 0x21, 0x98, 0x21, 0x9e, 0x21, 0x98, + 0x21, 0x9e, 0x20, 0xc0, 0x20, 0xc6, 0x07, 0x04, 0x07, 0x04, 0x07, 0x28, + 0x07, 0x28, 0x07, 0x28, 0x07, 0x28, 0x21, 0xa4, 0x21, 0xa4, 0x07, 0x28, + 0x07, 0x28, 0x07, 0x28, 0x07, 0x28, 0x21, 0xa4, 0x21, 0xa4, 0x21, 0xaa, + 0x21, 0xaa, 0x21, 0xaa, 0x21, 0xaa, 0x21, 0xb0, 0x21, 0xb0, 0x06, 0xec, + 0x06, 0xc2, 0x07, 0x46, 0x07, 0x46, 0x21, 0xb6, 0x21, 0xb6, 0x21, 0xb6, + 0x21, 0xb6, 0x21, 0xb6, 0x21, 0xb6, 0x21, 0xb6, 0x21, 0xb6, 0x21, 0xbc, + 0x21, 0xbc, 0x21, 0xc2, 0x21, 0xc2, 0x21, 0xc8, 0x04, 0xee, 0x20, 0xa8, + 0x21, 0xce, 0x20, 0x66, 0x21, 0xce, 0x20, 0x66, 0x08, 0x36, 0x21, 0xd4, + 0x21, 0xda, 0x21, 0xe0, 0x06, 0xc2, 0x07, 0x04, 0x06, 0xec, 0x06, 0xc2, + 0x06, 0xf8, 0x06, 0x44, 0x20, 0xde, 0x09, 0x5c, 0x06, 0xc2, 0x21, 0xaa, + 0x00, 0x02, 0x00, 0x1a, 0x01, 0x3d, 0x01, 0x3d, 0x00, 0x00, 0x01, 0x3f, + 0x01, 0x3f, 0x00, 0x01, 0x01, 0x41, 0x01, 0x41, 0x00, 0x02, 0x01, 0x43, + 0x01, 0x43, 0x00, 0x03, 0x01, 0x46, 0x01, 0x46, 0x00, 0x04, 0x01, 0x48, + 0x01, 0x48, 0x00, 0x05, 0x01, 0x4a, 0x01, 0x4a, 0x00, 0x06, 0x01, 0x4c, + 0x01, 0x4c, 0x00, 0x07, 0x01, 0x4e, 0x01, 0x4e, 0x00, 0x08, 0x01, 0x51, + 0x01, 0x51, 0x00, 0x09, 0x01, 0x53, 0x01, 0x53, 0x00, 0x0a, 0x02, 0xc5, + 0x02, 0xd6, 0x00, 0x0b, 0x03, 0xba, 0x03, 0xcb, 0x00, 0x1d, 0x03, 0xf4, + 0x03, 0xf9, 0x00, 0x2f, 0x03, 0xfe, 0x03, 0xff, 0x00, 0x35, 0x04, 0x03, + 0x04, 0x08, 0x00, 0x37, 0x04, 0x0c, 0x04, 0x11, 0x00, 0x3d, 0x04, 0x16, + 0x04, 0x17, 0x00, 0x43, 0x04, 0x1c, 0x04, 0x1d, 0x00, 0x45, 0x04, 0x29, + 0x04, 0x46, 0x00, 0x47, 0x04, 0x48, 0x04, 0x54, 0x00, 0x65, 0x04, 0x56, + 0x04, 0x57, 0x00, 0x72, 0x08, 0x02, 0x08, 0x25, 0x00, 0x74, 0x0a, 0x03, + 0x0a, 0x0b, 0x00, 0x98, 0x0a, 0x2d, 0x0a, 0x37, 0x00, 0xa1, 0x0a, 0x3b, + 0x0a, 0x3b, 0x00, 0xac, 0x00, 0x02, 0x00, 0x1a, 0x01, 0x3d, 0x01, 0x3d, + 0x00, 0x00, 0x01, 0x3f, 0x01, 0x3f, 0x00, 0x01, 0x01, 0x41, 0x01, 0x41, + 0x00, 0x02, 0x01, 0x43, 0x01, 0x43, 0x00, 0x03, 0x01, 0x46, 0x01, 0x46, + 0x00, 0x04, 0x01, 0x48, 0x01, 0x48, 0x00, 0x05, 0x01, 0x4a, 0x01, 0x4a, + 0x00, 0x06, 0x01, 0x4c, 0x01, 0x4c, 0x00, 0x07, 0x01, 0x4e, 0x01, 0x4e, + 0x00, 0x08, 0x01, 0x51, 0x01, 0x51, 0x00, 0x09, 0x01, 0x53, 0x01, 0x53, + 0x00, 0x0a, 0x02, 0xc5, 0x02, 0xd6, 0x00, 0x0b, 0x03, 0xba, 0x03, 0xcb, + 0x00, 0x1d, 0x03, 0xf4, 0x03, 0xf9, 0x00, 0x2f, 0x03, 0xfe, 0x03, 0xff, + 0x00, 0x35, 0x04, 0x03, 0x04, 0x08, 0x00, 0x37, 0x04, 0x0c, 0x04, 0x11, + 0x00, 0x3d, 0x04, 0x16, 0x04, 0x17, 0x00, 0x43, 0x04, 0x1c, 0x04, 0x1d, + 0x00, 0x45, 0x04, 0x29, 0x04, 0x46, 0x00, 0x47, 0x04, 0x48, 0x04, 0x54, + 0x00, 0x65, 0x04, 0x56, 0x04, 0x57, 0x00, 0x72, 0x08, 0x02, 0x08, 0x25, + 0x00, 0x74, 0x0a, 0x03, 0x0a, 0x0b, 0x00, 0x98, 0x0a, 0x2d, 0x0a, 0x37, + 0x00, 0xa1, 0x0a, 0x3b, 0x0a, 0x3b, 0x00, 0xac, 0x00, 0x01, 0x01, 0x12, + 0x01, 0x6a, 0x00, 0x01, 0x00, 0x0c, 0x00, 0xba, 0x00, 0x2b, 0x00, 0x00, + 0x12, 0x2a, 0x00, 0x00, 0x12, 0x30, 0x00, 0x00, 0x12, 0x36, 0x00, 0x00, + 0x12, 0x36, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, + 0x12, 0x42, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, + 0x12, 0x3c, 0x00, 0x00, 0x12, 0x48, 0x00, 0x00, 0x12, 0x4e, 0x00, 0x00, + 0x12, 0x3c, 0x00, 0x00, 0x12, 0x54, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, + 0x12, 0x3c, 0x00, 0x00, 0x12, 0x36, 0x00, 0x00, 0x12, 0x36, 0x00, 0x00, + 0x12, 0x36, 0x00, 0x00, 0x12, 0x36, 0x00, 0x00, 0x12, 0x5a, 0x00, 0x00, + 0x12, 0x60, 0x00, 0x00, 0x12, 0x66, 0x00, 0x00, 0x12, 0x6c, 0x00, 0x00, + 0x12, 0x72, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, 0x12, 0x78, 0x00, 0x00, + 0x12, 0x3c, 0x00, 0x00, 0x12, 0x6c, 0x00, 0x00, 0x12, 0x7e, 0x00, 0x00, + 0x12, 0x84, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, 0x12, 0x8a, 0x00, 0x00, + 0x12, 0x3c, 0x00, 0x00, 0x12, 0x90, 0x00, 0x00, 0x12, 0x90, 0x00, 0x00, + 0x12, 0x90, 0x00, 0x00, 0x12, 0x96, 0x00, 0x00, 0x12, 0x3c, 0x00, 0x00, + 0x12, 0x9c, 0x00, 0x00, 0x12, 0xa2, 0x00, 0x00, 0x12, 0x90, 0x00, 0x00, + 0x12, 0xa8, 0x00, 0x2b, 0x12, 0x12, 0x12, 0x12, 0x13, 0x5c, 0x13, 0x5c, + 0x1e, 0x90, 0x1e, 0x90, 0x1e, 0x96, 0x1e, 0x90, 0x1e, 0x90, 0x1e, 0x90, + 0x1e, 0x9c, 0x13, 0x5c, 0x1e, 0xa2, 0x1e, 0xa8, 0x1e, 0x9c, 0x1e, 0xae, + 0x13, 0x5c, 0x13, 0x5c, 0x13, 0x5c, 0x13, 0x5c, 0x13, 0x5c, 0x1e, 0xb4, + 0x12, 0x12, 0x1e, 0xa8, 0x1e, 0xba, 0x1e, 0x9c, 0x1e, 0xc0, 0x1e, 0xae, + 0x1e, 0xa8, 0x1e, 0xc6, 0x1e, 0xcc, 0x1e, 0x90, 0x1e, 0xd2, 0x1e, 0xc6, + 0x1e, 0xd8, 0x1e, 0xd8, 0x1e, 0xd8, 0x1e, 0xde, 0x1e, 0xe4, 0x1e, 0xea, + 0x1e, 0xf0, 0x1e, 0xd8, 0x1e, 0xf6, 0x00, 0x02, 0x00, 0x0e, 0x01, 0x56, + 0x01, 0x56, 0x00, 0x00, 0x02, 0xd7, 0x02, 0xd7, 0x00, 0x01, 0x03, 0xcc, + 0x03, 0xcf, 0x00, 0x02, 0x03, 0xd2, 0x03, 0xd6, 0x00, 0x06, 0x03, 0xd9, + 0x03, 0xe5, 0x00, 0x0b, 0x03, 0xf0, 0x03, 0xf3, 0x00, 0x18, 0x04, 0x00, + 0x04, 0x02, 0x00, 0x1c, 0x04, 0x09, 0x04, 0x0a, 0x00, 0x1f, 0x04, 0x12, + 0x04, 0x15, 0x00, 0x21, 0x04, 0x1a, 0x04, 0x1b, 0x00, 0x25, 0x04, 0x47, + 0x04, 0x47, 0x00, 0x27, 0x04, 0x55, 0x04, 0x55, 0x00, 0x28, 0x04, 0x58, + 0x04, 0x58, 0x00, 0x29, 0x08, 0x26, 0x08, 0x26, 0x00, 0x2a, 0x00, 0x02, + 0x00, 0x0e, 0x01, 0x56, 0x01, 0x56, 0x00, 0x00, 0x02, 0xd7, 0x02, 0xd7, + 0x00, 0x01, 0x03, 0xcc, 0x03, 0xcf, 0x00, 0x02, 0x03, 0xd2, 0x03, 0xd6, + 0x00, 0x06, 0x03, 0xd9, 0x03, 0xe5, 0x00, 0x0b, 0x03, 0xf0, 0x03, 0xf3, + 0x00, 0x18, 0x04, 0x00, 0x04, 0x02, 0x00, 0x1c, 0x04, 0x09, 0x04, 0x0a, + 0x00, 0x1f, 0x04, 0x12, 0x04, 0x15, 0x00, 0x21, 0x04, 0x1a, 0x04, 0x1b, + 0x00, 0x25, 0x04, 0x47, 0x04, 0x47, 0x00, 0x27, 0x04, 0x55, 0x04, 0x55, + 0x00, 0x28, 0x04, 0x58, 0x04, 0x58, 0x00, 0x29, 0x08, 0x26, 0x08, 0x26, + 0x00, 0x2a, 0x00, 0x01, 0x02, 0x1a, 0x05, 0xa6, 0x00, 0x01, 0x02, 0x42, + 0x05, 0xa6, 0x00, 0x01, 0x02, 0x33, 0x05, 0xa6, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x90, 0x00, 0x01, 0x02, 0x33, 0x05, 0x92, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xb7, 0x00, 0x01, 0x02, 0x33, 0x05, 0x9a, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x44, 0x00, 0x01, 0x02, 0x51, 0x05, 0x9c, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x82, 0x00, 0x01, 0x02, 0x08, 0x04, 0x76, 0x00, 0x01, 0x02, 0x08, + 0x05, 0x9b, 0x00, 0x01, 0x02, 0x33, 0x04, 0x7f, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x75, 0x00, 0x01, 0x02, 0x33, 0x05, 0x97, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x0d, 0x00, 0x01, 0x02, 0x33, 0x04, 0x5a, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x9b, 0x00, 0x01, 0x02, 0x97, 0x04, 0x7f, 0x00, 0x01, 0x02, 0x97, + 0x05, 0xa7, 0x00, 0x01, 0x02, 0x33, 0x05, 0x91, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xae, 0x00, 0x01, 0x02, 0x33, 0x04, 0x25, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x39, 0x00, 0x01, 0x02, 0x33, 0x05, 0xa5, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x43, 0x00, 0x01, 0x02, 0x33, 0x05, 0x04, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x2f, 0x00, 0x01, 0x02, 0x33, 0x04, 0x1c, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x83, 0x00, 0x01, 0x02, 0x33, 0x05, 0x14, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x80, 0x00, 0x01, 0x02, 0x33, 0x05, 0x56, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x0f, 0x00, 0x01, 0x02, 0x33, 0x05, 0x6c, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x85, 0x00, 0x01, 0x02, 0x33, 0x04, 0x40, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x9d, 0x00, 0x01, 0x02, 0x33, 0x04, 0x0b, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xc5, 0x00, 0x01, 0x02, 0x51, 0x04, 0x15, 0x00, 0x01, 0x02, 0x51, + 0x04, 0xcf, 0x00, 0x01, 0x02, 0x51, 0x04, 0x0b, 0x00, 0x01, 0x02, 0x51, + 0x04, 0xc5, 0x00, 0x01, 0x02, 0x51, 0x04, 0x0e, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x15, 0x00, 0x01, 0x02, 0x33, 0x04, 0xcf, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x2a, 0x00, 0x01, 0x02, 0x33, 0x05, 0x3f, 0x00, 0x01, 0x01, 0xcf, + 0x04, 0xb5, 0x00, 0x01, 0x01, 0xcf, 0x05, 0xb6, 0x00, 0x01, 0x02, 0x97, + 0x04, 0xb5, 0x00, 0x01, 0x02, 0x97, 0x05, 0xb6, 0x00, 0x01, 0x01, 0xcf, + 0x04, 0xfe, 0x00, 0x01, 0x01, 0xcf, 0x05, 0xfc, 0x00, 0x01, 0x02, 0x97, + 0x04, 0xfe, 0x00, 0x01, 0x02, 0x97, 0x05, 0xfc, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xc8, 0x00, 0x01, 0x02, 0x33, 0x05, 0xca, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xaa, 0x00, 0x01, 0x02, 0x33, 0x04, 0x76, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x34, 0x00, 0x01, 0x02, 0x33, 0x04, 0x66, 0x00, 0x01, 0x02, 0x47, + 0x04, 0x48, 0x00, 0x01, 0x02, 0x33, 0x04, 0xb5, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x11, 0x00, 0x01, 0x02, 0x33, 0x04, 0x45, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x29, 0x00, 0x01, 0x02, 0x33, 0x05, 0x73, 0x00, 0x01, 0x02, 0x33, + 0x03, 0xe1, 0x00, 0x01, 0x02, 0x33, 0x05, 0x9c, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x94, 0x00, 0x01, 0x02, 0x15, 0x04, 0x7f, 0x00, 0x01, 0x02, 0x3d, + 0x04, 0x7f, 0x00, 0x01, 0x02, 0x33, 0x04, 0xb0, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x88, 0x00, 0x01, 0x02, 0x47, 0x04, 0x7f, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x6f, 0x00, 0x01, 0x02, 0x33, 0x05, 0x96, 0x00, 0x01, 0x02, 0x6f, + 0x05, 0x96, 0x00, 0x01, 0x02, 0x0b, 0x05, 0x96, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xf0, 0x00, 0x01, 0x02, 0x6f, 0x04, 0xb0, 0x00, 0x01, 0x02, 0x97, + 0x05, 0xf0, 0x00, 0x01, 0x02, 0xdd, 0x05, 0xf0, 0x00, 0x01, 0x01, 0xb1, + 0x05, 0xaa, 0x00, 0x01, 0x02, 0x33, 0x06, 0xd5, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xe1, 0x00, 0x01, 0x02, 0x33, 0x06, 0xaa, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xdb, 0x00, 0x01, 0x02, 0x33, 0x07, 0x26, 0x00, 0x01, 0x02, 0xb5, + 0x05, 0x96, 0x00, 0x01, 0x02, 0x6f, 0x06, 0xd5, 0x00, 0x01, 0x02, 0x6f, + 0x06, 0xe9, 0x00, 0x01, 0x02, 0x0b, 0x06, 0xd5, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xe9, 0x00, 0x01, 0x02, 0x6f, 0x06, 0xdb, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x75, 0x00, 0x01, 0x02, 0x33, 0x06, 0x14, 0x00, 0x01, 0x02, 0x47, + 0x05, 0x96, 0x00, 0x01, 0x02, 0x33, 0x06, 0x4c, 0x00, 0x01, 0x02, 0xab, + 0x05, 0x96, 0x00, 0x01, 0x02, 0x33, 0x05, 0xdf, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xd7, 0x00, 0x01, 0x02, 0x33, 0x05, 0xa8, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x5f, 0x00, 0x01, 0x02, 0x6f, 0x05, 0xdf, 0x00, 0x01, 0x02, 0x5b, + 0x05, 0xdf, 0x00, 0x01, 0x02, 0x5b, 0x05, 0xe7, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xbc, 0x00, 0x01, 0x02, 0x33, 0x05, 0xf1, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xe7, 0x00, 0x01, 0x02, 0x33, 0x07, 0x1c, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xf3, 0x00, 0x01, 0x02, 0x33, 0x05, 0xdc, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0xdd, 0x04, 0xa0, 0x00, 0x01, 0x02, 0x51, + 0x05, 0xdf, 0x00, 0x01, 0x02, 0x33, 0x07, 0x12, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x0e, 0x00, 0x01, 0x01, 0xf7, 0x05, 0xf0, 0x00, 0x01, 0x02, 0xa3, + 0x06, 0x71, 0x00, 0x01, 0x02, 0x33, 0x05, 0xb2, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x27, 0x00, 0x01, 0x02, 0x33, 0x05, 0xeb, 0x00, 0x01, 0x02, 0xba, + 0x05, 0xed, 0x00, 0x01, 0x01, 0xb1, 0x06, 0x14, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x55, 0x00, 0x01, 0x03, 0x14, 0x05, 0xfa, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xd1, 0x00, 0x01, 0x02, 0x33, 0x06, 0xf5, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x17, 0x00, 0x01, 0x02, 0x33, 0x06, 0xeb, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xa2, 0x00, 0x01, 0x02, 0x47, 0x05, 0xf0, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x0a, 0x00, 0x01, 0x02, 0x0b, 0x05, 0x0a, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xb5, 0x00, 0x01, 0x02, 0xa3, 0x06, 0x74, 0x00, 0x01, 0x02, 0x6f, + 0x05, 0x75, 0x00, 0x01, 0x02, 0x33, 0x05, 0x84, 0x00, 0x01, 0x02, 0x18, + 0x05, 0xdf, 0x00, 0x01, 0x02, 0x33, 0x05, 0x7b, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x87, 0x00, 0x01, 0x02, 0x6f, 0x05, 0x82, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x76, 0x00, 0x01, 0x02, 0x33, 0x05, 0x83, 0x00, 0x01, 0x03, 0x5c, + 0x06, 0xf3, 0x00, 0x01, 0x03, 0x5c, 0x05, 0xdf, 0x00, 0x01, 0x03, 0x52, + 0x05, 0x75, 0x00, 0x01, 0x03, 0x80, 0x05, 0xeb, 0x00, 0x01, 0x03, 0x7a, + 0x05, 0x75, 0x00, 0x01, 0x03, 0xa8, 0x05, 0xeb, 0x00, 0x01, 0x02, 0xfb, + 0x06, 0xaa, 0x00, 0x01, 0x02, 0x5b, 0x06, 0xd5, 0x00, 0x01, 0x02, 0x1f, + 0x06, 0xd5, 0x00, 0x01, 0x03, 0x5c, 0x05, 0x8c, 0x00, 0x01, 0x03, 0x5c, + 0x05, 0x32, 0x00, 0x01, 0x01, 0x7c, 0x05, 0x96, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xef, 0x00, 0x01, 0x02, 0x6f, 0x05, 0xef, 0x00, 0x01, 0x02, 0x6f, + 0x06, 0xaa, 0x00, 0x01, 0x02, 0x33, 0x07, 0xc0, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xf8, 0x00, 0x01, 0x02, 0x33, 0x05, 0xcf, 0x00, 0x01, 0x02, 0xa3, + 0x05, 0x45, 0x00, 0x01, 0x01, 0xa7, 0x05, 0xe9, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xb2, 0x00, 0x01, 0x02, 0x33, 0x06, 0x09, 0x00, 0x01, 0x02, 0x6f, + 0x04, 0xae, 0x00, 0x01, 0x01, 0xa7, 0x05, 0xaa, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xa1, 0x00, 0x01, 0x03, 0x76, 0x05, 0xeb, 0x00, 0x01, 0x02, 0x65, + 0x06, 0xfd, 0x00, 0x01, 0x03, 0x70, 0x05, 0xdc, 0x00, 0x01, 0x01, 0xbb, + 0x05, 0xaa, 0x00, 0x01, 0x02, 0x33, 0x04, 0x82, 0x00, 0x01, 0x01, 0x5e, + 0x06, 0x4d, 0x00, 0x01, 0x01, 0xcf, 0x05, 0xf0, 0x00, 0x01, 0x02, 0xe7, + 0x07, 0x5d, 0x00, 0x01, 0x02, 0x97, 0x05, 0xf1, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x25, 0x00, 0x01, 0x02, 0x33, 0x07, 0x1e, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x77, 0x00, 0x01, 0x02, 0x33, 0x07, 0x2f, 0x00, 0x01, 0x01, 0xd9, + 0x07, 0x05, 0x00, 0x01, 0x02, 0x33, 0x06, 0xce, 0x00, 0x01, 0x02, 0x80, + 0x07, 0x6b, 0x00, 0x01, 0x02, 0x33, 0x04, 0xae, 0x00, 0x01, 0x01, 0xa7, + 0x04, 0xb2, 0x00, 0x01, 0x02, 0x0b, 0x04, 0xb2, 0x00, 0x01, 0x02, 0xab, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0x33, 0x05, 0xb9, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x78, 0x00, 0x01, 0x02, 0x33, 0x04, 0xa2, 0x00, 0x01, 0x01, 0xfa, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0xdb, 0x05, 0xdc, 0x00, 0x01, 0x02, 0x6f, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0x33, 0x04, 0xb1, 0x00, 0x01, 0x03, 0x3c, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0x3c, 0x05, 0xdf, 0x00, 0x01, 0x02, 0xa3, + 0x05, 0xeb, 0x00, 0x01, 0x01, 0xc2, 0x05, 0xeb, 0x00, 0x01, 0x02, 0x33, + 0x05, 0x86, 0x00, 0x01, 0x02, 0x33, 0x04, 0xaa, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xe6, 0x00, 0x01, 0x02, 0x15, 0x04, 0xb0, 0x00, 0x01, 0x02, 0x8d, + 0x05, 0xdf, 0x00, 0x01, 0x01, 0xe3, 0x05, 0xdf, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x8b, 0x00, 0x01, 0x03, 0x19, 0x05, 0xf0, 0x00, 0x01, 0x02, 0x0b, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0xa3, 0x05, 0xd7, 0x00, 0x01, 0x02, 0x47, + 0x05, 0xdf, 0x00, 0x01, 0x02, 0x83, 0x05, 0xdf, 0x00, 0x01, 0x03, 0x48, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0x14, 0x05, 0xdf, 0x00, 0x01, 0x03, 0x14, + 0x05, 0x87, 0x00, 0x01, 0x03, 0x14, 0x05, 0xeb, 0x00, 0x01, 0x02, 0xec, + 0x05, 0xdf, 0x00, 0x01, 0x02, 0x33, 0x05, 0x89, 0x00, 0x01, 0x02, 0xa1, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0x33, 0x04, 0x90, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x73, 0x00, 0x01, 0x02, 0x33, 0x04, 0x81, 0x00, 0x01, 0x02, 0x33, + 0x02, 0xb9, 0x00, 0x01, 0x02, 0x47, 0x04, 0xb2, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xac, 0x00, 0x01, 0x02, 0x33, 0x04, 0x8c, 0x00, 0x01, 0x02, 0xa3, + 0x05, 0xe6, 0x00, 0x01, 0x02, 0x60, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xc1, + 0x04, 0x75, 0x00, 0x01, 0x02, 0x33, 0x04, 0x61, 0x00, 0x01, 0x01, 0x89, + 0x04, 0x6f, 0x00, 0x01, 0x01, 0x89, 0x05, 0x6e, 0x00, 0x01, 0x03, 0x94, + 0x05, 0x6e, 0x00, 0x01, 0x03, 0xe4, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x15, + 0x05, 0x6e, 0x00, 0x01, 0x03, 0xeb, 0x05, 0x6e, 0x00, 0x01, 0x03, 0xe2, + 0x05, 0x6e, 0x00, 0x01, 0x03, 0xe0, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x26, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x2a, 0x05, 0x6e, 0x00, 0x01, 0x03, 0xec, + 0x05, 0x6e, 0x00, 0x01, 0x03, 0x9f, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x35, + 0x05, 0x6e, 0x00, 0x01, 0x03, 0xd9, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x22, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x02, 0x05, 0x6e, 0x00, 0x01, 0x03, 0xf8, + 0x05, 0x6e, 0x00, 0x01, 0x03, 0xb7, 0x05, 0x6e, 0x00, 0x01, 0x03, 0xc7, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x42, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x2c, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x94, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x6b, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x62, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x98, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x28, 0x05, 0x6e, 0x00, 0x01, 0x03, 0xc1, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xaa, 0x05, 0x78, 0x00, 0x01, 0x03, 0xde, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xfd, 0x05, 0xdc, 0x00, 0x01, 0x03, 0xf0, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x4d, 0x05, 0xdc, 0x00, 0x01, 0x04, 0x46, + 0x04, 0x88, 0x00, 0x01, 0x03, 0x09, 0x05, 0xdc, 0x00, 0x01, 0x03, 0xa9, + 0x05, 0xdc, 0x00, 0x01, 0x04, 0x27, 0x05, 0x78, 0x00, 0x01, 0x02, 0xfb, + 0x05, 0xdc, 0x00, 0x01, 0x04, 0x3e, 0x04, 0x88, 0x00, 0x01, 0x03, 0xf9, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xe2, 0x04, 0x88, 0x00, 0x01, 0x03, 0xdc, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xf3, 0x04, 0x88, 0x00, 0x01, 0x04, 0x1c, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xa7, 0x04, 0x88, 0x00, 0x01, 0x03, 0xc9, + 0x05, 0x78, 0x00, 0x01, 0x04, 0x6d, 0x04, 0x88, 0x00, 0x01, 0x04, 0x74, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x47, 0x04, 0x88, 0x00, 0x01, 0x04, 0x4f, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xf5, 0x04, 0x88, 0x00, 0x01, 0x02, 0xf4, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x02, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xa8, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x02, 0x06, 0xe1, 0x00, 0x01, 0x04, 0x02, + 0x06, 0xaa, 0x00, 0x01, 0x04, 0x02, 0x06, 0xdb, 0x00, 0x01, 0x03, 0xa8, + 0x07, 0x26, 0x00, 0x01, 0x04, 0x4d, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x25, + 0x06, 0xd5, 0x00, 0x01, 0x03, 0xe3, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x15, + 0x06, 0x8f, 0x00, 0x01, 0x04, 0x1d, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xb0, + 0x06, 0xd5, 0x00, 0x01, 0x03, 0xf2, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xf2, + 0x06, 0xaa, 0x00, 0x01, 0x03, 0xf2, 0x06, 0xdb, 0x00, 0x01, 0x03, 0xe2, + 0x06, 0x8f, 0x00, 0x01, 0x03, 0xf4, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x36, + 0x06, 0xdb, 0x00, 0x01, 0x04, 0x36, 0x06, 0x8f, 0x00, 0x01, 0x03, 0xf8, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x8a, 0x05, 0x75, 0x00, 0x01, 0x03, 0xba, + 0x06, 0xd5, 0x00, 0x01, 0x03, 0xfc, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xfc, + 0x06, 0xe1, 0x00, 0x01, 0x03, 0xfc, 0x06, 0xaa, 0x00, 0x01, 0x03, 0xfc, + 0x06, 0xdb, 0x00, 0x01, 0x03, 0xfc, 0x06, 0xe9, 0x00, 0x01, 0x04, 0x3a, + 0x05, 0x75, 0x00, 0x01, 0x03, 0x6f, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xd9, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x21, 0x06, 0x14, 0x00, 0x01, 0x04, 0x32, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x32, 0x06, 0xe1, 0x00, 0x01, 0x04, 0x2f, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x71, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x71, + 0x06, 0xe1, 0x00, 0x01, 0x04, 0x71, 0x06, 0xaa, 0x00, 0x01, 0x04, 0x71, + 0x06, 0xdb, 0x00, 0x01, 0x04, 0xa8, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x6f, + 0x06, 0x4c, 0x00, 0x01, 0x04, 0x60, 0x05, 0x6e, 0x00, 0x01, 0x03, 0xf8, + 0x05, 0x1b, 0x00, 0x01, 0x04, 0x1b, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x27, + 0x06, 0xd5, 0x00, 0x01, 0x03, 0xe5, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x10, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x52, 0x05, 0x75, 0x00, 0x01, 0x03, 0xfa, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x3c, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x3c, + 0x06, 0xe1, 0x00, 0x01, 0x04, 0x3c, 0x06, 0xaa, 0x00, 0x01, 0x03, 0xfa, + 0x06, 0xdb, 0x00, 0x01, 0x03, 0xfa, 0x07, 0x26, 0x00, 0x01, 0x04, 0x7b, + 0x06, 0x7b, 0x00, 0x01, 0x04, 0x66, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x38, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x28, 0x06, 0x8f, 0x00, 0x01, 0x03, 0xc1, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x03, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x03, + 0x05, 0xd7, 0x00, 0x01, 0x04, 0x03, 0x05, 0xa8, 0x00, 0x01, 0x03, 0xc1, + 0x06, 0x37, 0x00, 0x01, 0x04, 0x59, 0x04, 0x88, 0x00, 0x01, 0x04, 0x23, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xee, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xde, + 0x05, 0x8d, 0x00, 0x01, 0x05, 0x07, 0x06, 0x14, 0x00, 0x01, 0x04, 0x30, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xf0, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x32, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x32, 0x05, 0xd7, 0x00, 0x01, 0x04, 0x32, + 0x05, 0xa8, 0x00, 0x01, 0x04, 0x32, 0x05, 0x8d, 0x00, 0x01, 0x04, 0x56, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x46, 0x05, 0x8d, 0x00, 0x01, 0x04, 0x14, + 0x06, 0x14, 0x00, 0x01, 0x04, 0x49, 0x05, 0x78, 0x00, 0x01, 0x03, 0xc7, + 0x05, 0x85, 0x00, 0x01, 0x03, 0x09, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x13, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xaf, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xd7, + 0x05, 0xd7, 0x00, 0x01, 0x03, 0xa5, 0x05, 0xa8, 0x00, 0x01, 0x03, 0x87, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0x09, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x3e, + 0x05, 0xe9, 0x00, 0x01, 0x03, 0x8a, 0x04, 0x46, 0x00, 0x01, 0x03, 0xb1, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x38, 0x04, 0x46, 0x00, 0x01, 0x04, 0x13, + 0x07, 0x12, 0x00, 0x01, 0x04, 0x88, 0x06, 0x14, 0x00, 0x01, 0x03, 0x05, + 0x05, 0xdc, 0x00, 0x01, 0x02, 0xdd, 0x05, 0xdc, 0x00, 0x01, 0x04, 0x09, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x1d, 0x04, 0x88, 0x00, 0x01, 0x04, 0x0a, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x4c, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xe8, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xfc, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xe8, + 0x05, 0xd7, 0x00, 0x01, 0x03, 0xe8, 0x05, 0xa8, 0x00, 0x01, 0x04, 0x90, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x06, 0x05, 0x1d, 0x00, 0x01, 0x04, 0x52, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xd2, 0x05, 0x85, 0x00, 0x01, 0x04, 0x4a, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x1c, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xfd, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xa7, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xcb, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xa4, 0x05, 0xeb, 0x00, 0x01, 0x04, 0x48, + 0x05, 0xed, 0x00, 0x01, 0x04, 0x5f, 0x06, 0x14, 0x00, 0x01, 0x03, 0xc9, + 0x05, 0x87, 0x00, 0x01, 0x03, 0xc7, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x09, + 0x05, 0xd7, 0x00, 0x01, 0x04, 0x09, 0x05, 0xa8, 0x00, 0x01, 0x03, 0xc7, + 0x06, 0x37, 0x00, 0x01, 0x04, 0x84, 0x05, 0x85, 0x00, 0x01, 0x04, 0x84, + 0x05, 0xd7, 0x00, 0x01, 0x04, 0x1d, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x5f, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x4f, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x4f, + 0x05, 0xd7, 0x00, 0x01, 0x04, 0x0f, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xd7, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xd7, 0x05, 0x8d, 0x00, 0x01, 0x04, 0x44, + 0x05, 0xe9, 0x00, 0x01, 0x03, 0xa8, 0x07, 0x4f, 0x00, 0x01, 0x03, 0xe2, + 0x07, 0x4f, 0x00, 0x01, 0x03, 0xf2, 0x06, 0xe1, 0x00, 0x01, 0x03, 0xec, + 0x07, 0xa9, 0x00, 0x01, 0x04, 0x02, 0x07, 0x4f, 0x00, 0x01, 0x04, 0xe5, + 0x06, 0x17, 0x00, 0x01, 0x04, 0x2c, 0x07, 0x4f, 0x00, 0x01, 0x04, 0x98, + 0x06, 0xe1, 0x00, 0x01, 0x03, 0xd1, 0x06, 0x2a, 0x00, 0x01, 0x03, 0xec, + 0x06, 0x2a, 0x00, 0x01, 0x04, 0x14, 0x05, 0xdf, 0x00, 0x01, 0x03, 0x45, + 0x06, 0x84, 0x00, 0x01, 0x04, 0x0a, 0x06, 0x2a, 0x00, 0x01, 0x04, 0xc7, + 0x04, 0xe8, 0x00, 0x01, 0x04, 0x09, 0x06, 0x2a, 0x00, 0x01, 0x04, 0xa8, + 0x07, 0x33, 0x00, 0x01, 0x04, 0x5f, 0x06, 0x2a, 0x00, 0x01, 0x03, 0xee, + 0x05, 0x75, 0x00, 0x01, 0x03, 0xea, 0x05, 0x75, 0x00, 0x01, 0x04, 0x0c, + 0x05, 0x1b, 0x00, 0x01, 0x04, 0x0a, 0x05, 0x85, 0x00, 0x01, 0x04, 0xd8, + 0x06, 0x8d, 0x00, 0x01, 0x04, 0x1d, 0x05, 0x75, 0x00, 0x01, 0x04, 0x0a, + 0x05, 0x75, 0x00, 0x01, 0x03, 0xdf, 0x05, 0x75, 0x00, 0x01, 0x04, 0x2d, + 0x05, 0x84, 0x00, 0x01, 0x03, 0xf3, 0x05, 0x85, 0x00, 0x01, 0x03, 0xf0, + 0x05, 0x75, 0x00, 0x01, 0x04, 0xe3, 0x06, 0x8d, 0x00, 0x01, 0x04, 0xa4, + 0x05, 0x75, 0x00, 0x01, 0x03, 0x9c, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xf6, + 0x05, 0x75, 0x00, 0x01, 0x04, 0x4f, 0x05, 0x7b, 0x00, 0x01, 0x04, 0x4e, + 0x05, 0x75, 0x00, 0x01, 0x04, 0x32, 0x05, 0x75, 0x00, 0x01, 0x04, 0x35, + 0x05, 0x87, 0x00, 0x01, 0x04, 0x42, 0x05, 0x82, 0x00, 0x01, 0x04, 0x25, + 0x05, 0x75, 0x00, 0x01, 0x03, 0xc1, 0x05, 0x75, 0x00, 0x01, 0x03, 0xe5, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x38, 0x05, 0x75, 0x00, 0x01, 0x04, 0x7d, + 0x05, 0x76, 0x00, 0x01, 0x04, 0x3c, 0x05, 0x83, 0x00, 0x01, 0x04, 0xa8, + 0x05, 0x7d, 0x00, 0x01, 0x03, 0xf4, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x0b, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x9b, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x9a, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x3f, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x4b, + 0x05, 0xdc, 0x00, 0x01, 0x04, 0x6c, 0x05, 0x6e, 0x00, 0x01, 0x04, 0x7c, + 0x05, 0xdc, 0x00, 0x01, 0x04, 0x7f, 0x06, 0xaa, 0x00, 0x01, 0x04, 0x36, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x31, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x2f, + 0x06, 0xaa, 0x00, 0x01, 0x03, 0xf0, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x6e, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x78, 0x04, 0xb5, 0x00, 0x01, 0x04, 0x4f, + 0x05, 0x6e, 0x00, 0x01, 0x04, 0x10, 0x05, 0x7b, 0x00, 0x01, 0x03, 0xd5, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x2f, 0x06, 0xdb, 0x00, 0x01, 0x04, 0x1b, + 0x06, 0xdb, 0x00, 0x01, 0x04, 0x3c, 0x06, 0xdb, 0x00, 0x01, 0x03, 0xf4, + 0x05, 0xcf, 0x00, 0x01, 0x04, 0x26, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x00, + 0x05, 0x87, 0x00, 0x01, 0x04, 0x03, 0x05, 0xcf, 0x00, 0x01, 0x03, 0x94, + 0x06, 0x8f, 0x00, 0x01, 0x04, 0x02, 0x06, 0x8f, 0x00, 0x01, 0x04, 0xa8, + 0x06, 0xaa, 0x00, 0x01, 0x04, 0xfe, 0x05, 0xef, 0x00, 0x01, 0x05, 0x15, + 0x05, 0xef, 0x00, 0x01, 0x03, 0xed, 0x05, 0x6e, 0x00, 0x01, 0x05, 0x28, + 0x05, 0xef, 0x00, 0x01, 0x03, 0x89, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xe4, + 0x06, 0x8f, 0x00, 0x01, 0x03, 0xeb, 0x06, 0x8f, 0x00, 0x01, 0x03, 0xf0, + 0x06, 0x8f, 0x00, 0x01, 0x04, 0x26, 0x06, 0xaa, 0x00, 0x01, 0x04, 0x2a, + 0x06, 0x8f, 0x00, 0x01, 0x04, 0x3a, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xd5, + 0x06, 0xaa, 0x00, 0x01, 0x04, 0x77, 0x06, 0x7b, 0x00, 0x01, 0x04, 0x35, + 0x06, 0x8f, 0x00, 0x01, 0x04, 0x22, 0x06, 0x8f, 0x00, 0x01, 0x03, 0xf8, + 0x06, 0x8f, 0x00, 0x01, 0x03, 0xb7, 0x06, 0x8f, 0x00, 0x01, 0x03, 0xc7, + 0x06, 0x8f, 0x00, 0x01, 0x03, 0xc7, 0x07, 0x66, 0x00, 0x01, 0x03, 0xc7, + 0x07, 0x9e, 0x00, 0x01, 0x04, 0x42, 0x06, 0x8f, 0x00, 0x01, 0x04, 0xa4, + 0x06, 0xe1, 0x00, 0x01, 0x04, 0x6b, 0x06, 0x8f, 0x00, 0x01, 0x04, 0x62, + 0x06, 0x8f, 0x00, 0x01, 0x04, 0x90, 0x06, 0xd5, 0x00, 0x01, 0x04, 0x98, + 0x06, 0x8f, 0x00, 0x01, 0x03, 0xf6, 0x06, 0xd5, 0x00, 0x01, 0x03, 0xaa, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xd8, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xfa, + 0x05, 0x1b, 0x00, 0x01, 0x04, 0x8d, 0x05, 0x90, 0x00, 0x01, 0x03, 0xe4, + 0x05, 0xeb, 0x00, 0x01, 0x04, 0x26, 0x05, 0x85, 0x00, 0x01, 0x03, 0xec, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0xc3, 0x05, 0xeb, 0x00, 0x01, 0x03, 0x8b, + 0x05, 0xeb, 0x00, 0x01, 0x04, 0x0d, 0x04, 0xb2, 0x00, 0x01, 0x04, 0x44, + 0x04, 0xae, 0x00, 0x01, 0x03, 0xd2, 0x05, 0x91, 0x00, 0x01, 0x03, 0xa7, + 0x05, 0xeb, 0x00, 0x01, 0x04, 0xa0, 0x04, 0xa8, 0x00, 0x01, 0x03, 0xda, + 0x04, 0xa1, 0x00, 0x01, 0x04, 0x92, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x1d, + 0x05, 0x4e, 0x00, 0x01, 0x04, 0x46, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x05, + 0x06, 0xfd, 0x00, 0x01, 0x03, 0xa6, 0x05, 0xa8, 0x00, 0x01, 0x03, 0xbe, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0x8a, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x8c, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xea, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x09, + 0x06, 0xd5, 0x00, 0x01, 0x04, 0x11, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x0d, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x03, 0x05, 0xe7, 0x00, 0x01, 0x03, 0xe2, + 0x05, 0xe7, 0x00, 0x01, 0x04, 0x5f, 0x05, 0xa8, 0x00, 0x01, 0x03, 0x05, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0xf9, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xd0, + 0x05, 0x78, 0x00, 0x01, 0x04, 0x2a, 0x04, 0x88, 0x00, 0x01, 0x04, 0xa2, + 0x04, 0x82, 0x00, 0x01, 0x03, 0xa9, 0x04, 0xa0, 0x00, 0x01, 0x02, 0xdd, + 0x06, 0x4d, 0x00, 0x01, 0x04, 0x5d, 0x07, 0x5d, 0x00, 0x01, 0x04, 0x56, + 0x05, 0xa8, 0x00, 0x01, 0x03, 0xaa, 0x07, 0x25, 0x00, 0x01, 0x04, 0x69, + 0x06, 0xd5, 0x00, 0x01, 0x03, 0x69, 0x07, 0x1e, 0x00, 0x01, 0x04, 0x4e, + 0x05, 0x85, 0x00, 0x01, 0x04, 0x3e, 0x05, 0x8d, 0x00, 0x01, 0x03, 0xf9, + 0x05, 0x8d, 0x00, 0x01, 0x04, 0x3c, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xdc, + 0x05, 0x8d, 0x00, 0x01, 0x04, 0x1c, 0x05, 0x8d, 0x00, 0x01, 0x03, 0xa7, + 0x05, 0x8d, 0x00, 0x01, 0x03, 0xfd, 0x06, 0x1d, 0x00, 0x01, 0x03, 0xfd, + 0x06, 0xb7, 0x00, 0x01, 0x03, 0xc9, 0x06, 0xab, 0x00, 0x01, 0x04, 0x74, + 0x05, 0x8d, 0x00, 0x01, 0x04, 0x3d, 0x05, 0x8d, 0x00, 0x01, 0x04, 0x6b, + 0x05, 0xd7, 0x00, 0x01, 0x04, 0x4f, 0x05, 0x8d, 0x00, 0x01, 0x03, 0xcd, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x23, 0x06, 0xce, 0x00, 0x01, 0x04, 0x84, + 0x05, 0xdd, 0x00, 0x01, 0x04, 0x5f, 0x05, 0xdd, 0x00, 0x01, 0x03, 0xe5, + 0x06, 0x37, 0x00, 0x01, 0x04, 0x48, 0x07, 0x11, 0x00, 0x01, 0x03, 0xd1, + 0x04, 0xb2, 0x00, 0x01, 0x04, 0x03, 0x04, 0xb2, 0x00, 0x01, 0x04, 0x00, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0xce, 0x04, 0x54, 0x00, 0x01, 0x03, 0xed, + 0x04, 0x54, 0x00, 0x01, 0x03, 0xfe, 0x05, 0xdf, 0x00, 0x01, 0x05, 0x0f, + 0x05, 0xeb, 0x00, 0x01, 0x03, 0xcf, 0x04, 0xb2, 0x00, 0x01, 0x03, 0x4e, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0xfb, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xb3, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0xb2, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xdf, + 0x04, 0xae, 0x00, 0x01, 0x03, 0x97, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x0a, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x01, 0x04, 0xae, 0x00, 0x01, 0x04, 0x5f, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x3b, 0x04, 0xa2, 0x00, 0x01, 0x04, 0x09, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0x09, 0x05, 0xeb, 0x00, 0x01, 0x04, 0x10, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0x1d, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x30, + 0x05, 0x2b, 0x00, 0x01, 0x04, 0x4e, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x27, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x2f, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x1b, + 0x04, 0x57, 0x00, 0x01, 0x03, 0xe5, 0x05, 0x85, 0x00, 0x01, 0x03, 0xdf, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xdf, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xfb, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x18, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xe3, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0x99, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xcb, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x35, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x10, + 0x05, 0xeb, 0x00, 0x01, 0x03, 0x2e, 0x05, 0xeb, 0x00, 0x01, 0x04, 0x06, + 0x05, 0xeb, 0x00, 0x01, 0x03, 0xc3, 0x05, 0x86, 0x00, 0x01, 0x04, 0x0a, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x53, 0x04, 0xa0, 0x00, 0x01, 0x03, 0xe1, + 0x04, 0xaa, 0x00, 0x01, 0x03, 0xb9, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x24, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x59, 0x05, 0xe6, 0x00, 0x01, 0x04, 0x64, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xd7, 0x04, 0x88, 0x00, 0x01, 0x03, 0xe0, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0x9d, 0x05, 0xdf, 0x00, 0x01, 0x03, 0x75, + 0x05, 0xdf, 0x00, 0x01, 0x03, 0x29, 0x05, 0xdf, 0x00, 0x01, 0x03, 0xda, + 0x04, 0xae, 0x00, 0x01, 0x03, 0xfd, 0x05, 0x87, 0x00, 0x01, 0x03, 0xdf, + 0x04, 0x46, 0x00, 0x01, 0x03, 0xdf, 0x04, 0x54, 0x00, 0x01, 0x04, 0x0b, + 0x04, 0xae, 0x00, 0x01, 0x03, 0xd2, 0x05, 0xeb, 0x00, 0x01, 0x03, 0xf2, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0x29, 0x03, 0xec, 0x00, 0x01, 0x03, 0x79, + 0x05, 0xdf, 0x00, 0x01, 0x04, 0x70, 0x04, 0x88, 0x00, 0x01, 0x04, 0x67, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x62, 0x04, 0x88, 0x00, 0x01, 0x04, 0x19, + 0x05, 0x2d, 0x00, 0x01, 0x04, 0x81, 0x05, 0xeb, 0x00, 0x01, 0x04, 0x62, + 0x05, 0x2d, 0x00, 0x01, 0x04, 0x16, 0x05, 0x91, 0x00, 0x01, 0x04, 0x2d, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x27, 0x04, 0x88, 0x00, 0x01, 0x03, 0xed, + 0x05, 0x75, 0x00, 0x01, 0x03, 0xee, 0x05, 0x57, 0x00, 0x01, 0x04, 0x21, + 0x05, 0x91, 0x00, 0x01, 0x03, 0xd6, 0x04, 0x46, 0x00, 0x01, 0x04, 0x46, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x81, 0x04, 0xb2, 0x00, 0x01, 0x03, 0xee, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xef, 0x04, 0xb2, 0x00, 0x01, 0x04, 0x07, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xe9, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x1d, + 0x04, 0xb2, 0x00, 0x01, 0x04, 0x13, 0x04, 0xa0, 0x00, 0x01, 0x03, 0xc4, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x55, 0x04, 0xa0, 0x00, 0x01, 0x03, 0xe6, + 0x03, 0xec, 0x00, 0x01, 0x04, 0x77, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x0e, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x60, 0x04, 0x58, 0x00, 0x01, 0x04, 0x17, + 0x04, 0x58, 0x00, 0x01, 0x04, 0x69, 0x04, 0x36, 0x00, 0x01, 0x04, 0x69, + 0x04, 0x19, 0x00, 0x01, 0x04, 0x5c, 0x04, 0x27, 0x00, 0x01, 0x04, 0x20, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0xeb, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x37, + 0x04, 0xb1, 0x00, 0x01, 0x04, 0x55, 0x02, 0xb9, 0x00, 0x01, 0x04, 0x31, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x17, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x4c, + 0x04, 0x34, 0x00, 0x01, 0x04, 0x56, 0x04, 0x34, 0x00, 0x01, 0x04, 0x2e, + 0x04, 0x82, 0x00, 0x01, 0x04, 0x84, 0x04, 0xa0, 0x00, 0x01, 0x03, 0xf1, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xb7, 0x04, 0xa0, 0x00, 0x01, 0x03, 0xbb, + 0x04, 0xb2, 0x00, 0x01, 0x03, 0xb2, 0x04, 0xb1, 0x00, 0x01, 0x03, 0xe5, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xe8, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x41, + 0x04, 0xa0, 0x00, 0x01, 0x04, 0x00, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x04, + 0x05, 0xdf, 0x00, 0x01, 0x05, 0x0d, 0x05, 0xdf, 0x00, 0x01, 0x04, 0x4c, + 0x05, 0xeb, 0x00, 0x01, 0x04, 0x02, 0x04, 0x88, 0x00, 0x01, 0x03, 0xfa, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x0e, 0x04, 0x88, 0x00, 0x01, 0x04, 0x0b, + 0x04, 0x88, 0x00, 0x01, 0x03, 0xcb, 0x04, 0x88, 0x00, 0x01, 0x03, 0xfb, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x56, 0x04, 0xac, 0x00, 0x01, 0x03, 0xa4, + 0x05, 0x50, 0x00, 0x01, 0x04, 0xc6, 0x05, 0xef, 0x00, 0x01, 0x03, 0x63, + 0x04, 0xa0, 0x00, 0x01, 0x03, 0xfd, 0x04, 0xa0, 0x00, 0x01, 0x04, 0x16, + 0x05, 0xeb, 0x00, 0x01, 0x04, 0x81, 0x04, 0x88, 0x00, 0x01, 0x04, 0x07, + 0x04, 0x88, 0x00, 0x01, 0x04, 0x0d, 0x04, 0x58, 0x00, 0x01, 0x03, 0xad, + 0x04, 0xa0, 0x00, 0x01, 0x02, 0x33, 0xff, 0x8d, 0x00, 0x01, 0x02, 0x33, + 0xff, 0x80, 0x00, 0x01, 0x02, 0x33, 0xff, 0xb4, 0x00, 0x01, 0x02, 0x33, + 0xff, 0xad, 0x00, 0x01, 0x02, 0x33, 0xff, 0xa7, 0x00, 0x01, 0x02, 0x33, + 0xff, 0x29, 0x00, 0x01, 0x02, 0x33, 0xff, 0xab, 0x00, 0x01, 0x02, 0x33, + 0xff, 0x93, 0x00, 0x01, 0x02, 0x33, 0xff, 0xd2, 0x00, 0x01, 0x02, 0x33, + 0xff, 0xcd, 0x00, 0x01, 0x02, 0x33, 0xff, 0x32, 0x00, 0x01, 0x02, 0x33, + 0xff, 0x99, 0x00, 0x01, 0x02, 0x33, 0xff, 0xb1, 0x00, 0x01, 0x02, 0x33, + 0xff, 0xae, 0x00, 0x01, 0x02, 0x33, 0x00, 0x10, 0x00, 0x01, 0x02, 0x33, + 0xff, 0x9a, 0x00, 0x01, 0x02, 0x33, 0xff, 0xac, 0x00, 0x01, 0x02, 0x33, + 0xff, 0xdd, 0x00, 0x01, 0x02, 0x33, 0xff, 0xba, 0x00, 0x01, 0x02, 0x33, + 0xff, 0xd3, 0x00, 0x01, 0x02, 0x33, 0x00, 0x1c, 0x00, 0x01, 0x01, 0xbb, + 0xff, 0xec, 0x00, 0x01, 0x02, 0x33, 0xff, 0x4c, 0x00, 0x01, 0x02, 0x6f, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x0b, 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x0c, 0x00, 0x01, 0x01, 0xed, 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xda, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x25, 0x00, 0x01, 0x02, 0xb5, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x6f, 0xfe, 0x7f, 0x00, 0x01, 0x02, 0x6f, + 0xfe, 0x0c, 0x00, 0x01, 0x02, 0x47, 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x02, 0x00, 0x01, 0x02, 0x33, 0xfe, 0xcf, 0x00, 0x01, 0x02, 0xab, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x7f, 0x00, 0x01, 0x01, 0xf7, + 0xff, 0x4c, 0x00, 0x01, 0x01, 0x51, 0xfe, 0xbd, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x1c, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x06, 0x00, 0x01, 0x02, 0xa3, + 0xff, 0x4c, 0x00, 0x01, 0x01, 0x51, 0xfe, 0x0e, 0x00, 0x01, 0x02, 0x72, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0xa3, 0xfe, 0x01, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x98, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x00, 0x00, 0x01, 0x03, 0x5c, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0xfe, 0xff, 0x4c, 0x00, 0x01, 0x03, 0x1c, + 0xfd, 0xda, 0x00, 0x01, 0x03, 0x44, 0xff, 0x4c, 0x00, 0x01, 0x03, 0x62, + 0xfd, 0xda, 0x00, 0x01, 0x02, 0xfb, 0xff, 0x4c, 0x00, 0x01, 0x01, 0x9a, + 0xff, 0x4c, 0x00, 0x01, 0x01, 0x73, 0xfe, 0x0c, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x23, 0x00, 0x01, 0x02, 0x33, 0xfe, 0xf2, 0x00, 0x01, 0x02, 0x6f, + 0xfe, 0xf2, 0x00, 0x01, 0x01, 0xcf, 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xa8, 0x00, 0x01, 0x02, 0x0b, 0xfd, 0xd7, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x4d, 0x00, 0x01, 0x02, 0x6f, 0xfe, 0x1c, 0x00, 0x01, 0x02, 0x65, + 0xfe, 0x4d, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x70, 0x00, 0x01, 0x01, 0xa7, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x08, 0x00, 0x01, 0x02, 0xa3, + 0xfe, 0x06, 0x00, 0x01, 0x03, 0x70, 0xff, 0x4c, 0x00, 0x01, 0x02, 0xfe, + 0xfd, 0xda, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x63, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x4f, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xeb, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x04, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xb8, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xd7, 0x00, 0x01, 0x02, 0x51, 0xfe, 0x4d, 0x00, 0x01, 0x02, 0x47, + 0xfe, 0x1c, 0x00, 0x01, 0x02, 0x47, 0xfe, 0x7f, 0x00, 0x01, 0x02, 0x47, + 0xfe, 0x4d, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x52, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0xdc, 0x00, 0x01, 0x01, 0xfa, 0xff, 0x4c, 0x00, 0x01, 0x02, 0xdb, + 0xfe, 0x45, 0x00, 0x01, 0x01, 0xc2, 0xfe, 0x0c, 0x00, 0x01, 0x01, 0xc2, + 0xfe, 0x04, 0x00, 0x01, 0x01, 0xc2, 0xfe, 0x02, 0x00, 0x01, 0x02, 0x6b, + 0xfe, 0x02, 0x00, 0x01, 0x01, 0xc2, 0xfd, 0xeb, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xfa, 0x00, 0x01, 0x02, 0x33, 0xfe, 0xd9, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x45, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xee, 0x00, 0x01, 0x01, 0xe3, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x8d, 0xff, 0x4c, 0x00, 0x01, 0x02, 0x6f, + 0xfd, 0xff, 0x00, 0x01, 0x02, 0x83, 0xff, 0x4c, 0x00, 0x01, 0x03, 0x48, + 0xff, 0x4c, 0x00, 0x01, 0x03, 0x14, 0xfe, 0x63, 0x00, 0x01, 0x03, 0x14, + 0xfe, 0xf9, 0x00, 0x01, 0x03, 0x14, 0xff, 0x4c, 0x00, 0x01, 0x02, 0xd8, + 0xfe, 0x02, 0x00, 0x01, 0x03, 0x14, 0xfe, 0xdc, 0x00, 0x01, 0x02, 0xec, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x0d, 0x00, 0x01, 0x02, 0xa1, + 0xff, 0x4c, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xfc, 0x00, 0x01, 0x01, 0xed, + 0xfe, 0x04, 0x00, 0x01, 0x01, 0x51, 0xfd, 0xee, 0x00, 0x01, 0x02, 0x47, + 0xfe, 0x04, 0x00, 0x01, 0x01, 0xc2, 0xfe, 0x05, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xfb, 0x00, 0x01, 0x02, 0x97, 0x04, 0x93, 0x00, 0x01, 0x01, 0xcf, + 0x04, 0x93, 0x00, 0x01, 0x02, 0x33, 0x04, 0xc9, 0x00, 0x01, 0x02, 0x33, + 0x04, 0x93, 0x00, 0x01, 0x02, 0x33, 0x06, 0xc0, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xc4, 0x00, 0x01, 0x02, 0x33, 0x05, 0xd3, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xc9, 0x00, 0x01, 0x01, 0x54, 0x02, 0xa8, 0x00, 0x01, 0x02, 0x9e, + 0x05, 0x14, 0x00, 0x01, 0x03, 0x70, 0x04, 0xce, 0x00, 0x01, 0x03, 0x84, + 0x04, 0xf6, 0x00, 0x01, 0x03, 0x8e, 0x04, 0x92, 0x00, 0x01, 0x03, 0x5c, + 0x05, 0x14, 0x00, 0x01, 0x03, 0x52, 0x05, 0x14, 0x00, 0x01, 0x03, 0x98, + 0x04, 0xf6, 0x00, 0x01, 0x03, 0x98, 0x05, 0x14, 0x00, 0x01, 0x03, 0x66, + 0x05, 0x14, 0x00, 0x01, 0x03, 0x16, 0x05, 0x14, 0x00, 0x01, 0x03, 0x48, + 0x05, 0x14, 0x00, 0x01, 0x01, 0x54, 0x05, 0x14, 0x00, 0x01, 0x03, 0x8e, + 0x05, 0x14, 0x00, 0x01, 0x03, 0x98, 0x04, 0x92, 0x00, 0x01, 0x03, 0x84, + 0x04, 0xb0, 0x00, 0x01, 0x03, 0x5c, 0x04, 0xba, 0x00, 0x01, 0x03, 0x34, + 0x05, 0x00, 0x00, 0x01, 0x03, 0xb1, 0x05, 0x14, 0x00, 0x01, 0x03, 0xa2, + 0x05, 0x14, 0x00, 0x01, 0x03, 0xc0, 0x05, 0x14, 0x00, 0x01, 0x03, 0xca, + 0x05, 0x14, 0x00, 0x01, 0x03, 0x70, 0x05, 0x14, 0x00, 0x01, 0x03, 0x5c, + 0x03, 0xb6, 0x00, 0x01, 0x03, 0x84, 0x03, 0xb6, 0x00, 0x01, 0x03, 0x52, + 0x03, 0xca, 0x00, 0x01, 0x03, 0x70, 0x05, 0x85, 0x00, 0x01, 0x03, 0x7a, + 0x03, 0xa2, 0x00, 0x01, 0x03, 0xac, 0x05, 0x85, 0x00, 0x01, 0x03, 0x84, + 0x03, 0xe8, 0x00, 0x01, 0x02, 0x62, 0x03, 0xe8, 0x00, 0x01, 0x03, 0x02, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0x20, 0x03, 0xe8, 0x00, 0x01, 0x02, 0x62, + 0x05, 0x85, 0x00, 0x01, 0x03, 0xb6, 0x03, 0xca, 0x00, 0x01, 0x03, 0x66, + 0x03, 0xca, 0x00, 0x01, 0x03, 0x8e, 0x03, 0xa2, 0x00, 0x01, 0x03, 0x70, + 0x03, 0xf2, 0x00, 0x01, 0x03, 0x8e, 0x03, 0xb6, 0x00, 0x01, 0x03, 0x70, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0xa2, 0x03, 0xe8, 0x00, 0x01, 0x03, 0xd4, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0x52, 0x03, 0xe8, 0x00, 0x01, 0x03, 0x5c, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0xd4, 0x03, 0xa2, 0x00, 0x01, 0x03, 0xca, + 0x03, 0xa2, 0x00, 0x01, 0x03, 0x70, 0x03, 0xa2, 0x00, 0x01, 0x03, 0x48, + 0x03, 0xa2, 0x00, 0x01, 0x03, 0x5c, 0x03, 0xa2, 0x00, 0x01, 0x03, 0x98, + 0x03, 0xfc, 0x00, 0x01, 0x03, 0x84, 0x03, 0xf2, 0x00, 0x01, 0x03, 0xac, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0xd4, 0x03, 0xfc, 0x00, 0x01, 0x02, 0x9e, + 0x03, 0xe8, 0x00, 0x01, 0x02, 0x33, 0x02, 0x38, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x98, 0x00, 0x01, 0x02, 0x33, 0x02, 0x00, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x8d, 0x00, 0x01, 0x02, 0x33, 0x01, 0xed, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x8e, 0x00, 0x01, 0x02, 0x33, 0x01, 0xbe, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x74, 0x00, 0x01, 0x02, 0x33, 0x02, 0x95, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x96, 0x00, 0x01, 0x02, 0xa3, 0x02, 0x8d, 0x00, 0x01, 0x01, 0x5e, + 0x02, 0x8d, 0x00, 0x01, 0x01, 0xae, 0x02, 0x8d, 0x00, 0x01, 0x02, 0x33, + 0x03, 0x74, 0x00, 0x01, 0x02, 0x33, 0x03, 0x92, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x0a, 0x00, 0x01, 0x02, 0x33, 0x01, 0x32, 0x00, 0x01, 0x02, 0x33, + 0x01, 0xee, 0x00, 0x01, 0x02, 0x33, 0x01, 0xfd, 0x00, 0x01, 0x02, 0x33, + 0x01, 0xff, 0x00, 0x01, 0x01, 0xf4, 0x02, 0x3a, 0x00, 0x01, 0x02, 0x33, + 0x02, 0xab, 0x00, 0x01, 0x00, 0xe1, 0x04, 0x87, 0x00, 0x01, 0x02, 0x4e, + 0x02, 0x0f, 0x00, 0x01, 0x02, 0x94, 0x01, 0x81, 0x00, 0x01, 0x01, 0x72, + 0x02, 0x26, 0x00, 0x01, 0x02, 0x4e, 0x02, 0xc2, 0x00, 0x01, 0x01, 0x22, + 0x01, 0xff, 0x00, 0x01, 0x01, 0xae, 0x02, 0x12, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x28, 0x00, 0x01, 0x02, 0x33, 0x01, 0xf6, 0x00, 0x01, 0x02, 0x33, + 0x02, 0x31, 0x00, 0x01, 0x02, 0x33, 0x02, 0x3a, 0x00, 0x01, 0x03, 0x3e, + 0x00, 0x64, 0x00, 0x01, 0x02, 0x33, 0x04, 0xea, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x8b, 0x00, 0x01, 0x02, 0x33, 0x06, 0x0c, 0x00, 0x01, 0x02, 0x33, + 0x04, 0xf3, 0x00, 0x01, 0x02, 0x33, 0x06, 0x81, 0x00, 0x01, 0x04, 0x66, + 0x06, 0xa4, 0x00, 0x01, 0x04, 0x66, 0x07, 0x6c, 0x00, 0x01, 0x04, 0x4c, + 0x06, 0xa4, 0x00, 0x01, 0x02, 0x33, 0xff, 0xce, 0x00, 0x01, 0x02, 0x33, + 0xff, 0x88, 0x00, 0x01, 0x04, 0x66, 0xfe, 0xa2, 0x00, 0x01, 0x01, 0x86, + 0x03, 0x02, 0x00, 0x01, 0x02, 0x58, 0x05, 0x14, 0x00, 0x01, 0x03, 0x02, + 0x04, 0xe2, 0x00, 0x01, 0x03, 0x84, 0x04, 0xe2, 0x00, 0x01, 0x03, 0x02, + 0x04, 0xce, 0x00, 0x01, 0x01, 0x40, 0x05, 0x14, 0x00, 0x01, 0x03, 0x70, + 0x04, 0x92, 0x00, 0x01, 0x03, 0x34, 0x04, 0xfb, 0x00, 0x01, 0x03, 0x84, + 0x05, 0x14, 0x00, 0x01, 0x03, 0xde, 0x05, 0x14, 0x00, 0x01, 0x03, 0xac, + 0x05, 0x14, 0x00, 0x01, 0x03, 0x34, 0x03, 0xca, 0x00, 0x01, 0x03, 0x3e, + 0x03, 0xca, 0x00, 0x01, 0x03, 0x48, 0x03, 0xca, 0x00, 0x01, 0x03, 0x20, + 0x03, 0xca, 0x00, 0x01, 0x03, 0x84, 0x03, 0xde, 0x00, 0x01, 0x02, 0xa8, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0x48, 0x03, 0xe8, 0x00, 0x01, 0x02, 0x58, + 0x05, 0x85, 0x00, 0x01, 0x03, 0xac, 0x03, 0xca, 0x00, 0x01, 0x03, 0x20, + 0x03, 0xb6, 0x00, 0x01, 0x03, 0x0c, 0x03, 0xe8, 0x00, 0x01, 0x03, 0x66, + 0x03, 0xe8, 0x00, 0x01, 0x03, 0x98, 0x03, 0xe8, 0x00, 0x01, 0x02, 0x58, + 0xff, 0xfb, 0x00, 0x01, 0x02, 0x80, 0x00, 0x00, 0x00, 0x01, 0x02, 0x33, + 0x00, 0x00, 0x00, 0x01, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x01, 0x01, 0x2c, + 0x00, 0x00, 0x00, 0x01, 0x02, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x02, 0x62, + 0xff, 0xf6, 0x00, 0x01, 0x04, 0x15, 0x00, 0x00, 0x00, 0x01, 0x02, 0x94, + 0x00, 0x19, 0x00, 0x01, 0x02, 0xda, 0x00, 0x00, 0x00, 0x01, 0x02, 0x3a, + 0x00, 0x19, 0x00, 0x01, 0x03, 0x7a, 0x00, 0x00, 0x00, 0x01, 0x01, 0x5e, + 0x00, 0x00, 0x00, 0x01, 0x02, 0xee, 0x00, 0x00, 0x00, 0x01, 0x03, 0xb6, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x26, 0x00, 0x00, 0x00, 0x01, 0x03, 0xe8, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x98, 0x00, 0x00, 0x00, 0x01, 0x03, 0xf2, + 0x00, 0x00, 0x00, 0x01, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x02, 0x8a, + 0x00, 0x00, 0x00, 0x01, 0x02, 0xbc, 0xfe, 0xd4, 0x00, 0x01, 0x03, 0xde, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x76, 0x00, 0x00, 0x00, 0x01, 0x02, 0x62, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x9e, 0x00, 0x00, 0x00, 0x01, 0x03, 0xac, + 0x00, 0x00, 0x00, 0x01, 0x04, 0x06, 0x00, 0x00, 0x00, 0x01, 0x02, 0x58, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x84, 0x00, 0x00, 0x00, 0x01, 0x02, 0x6c, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x03, 0x8e, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x02, 0xda, + 0xfe, 0x7f, 0x00, 0x01, 0x03, 0xa2, 0x00, 0x00, 0x00, 0x01, 0x02, 0x76, + 0xfe, 0xa2, 0x00, 0x01, 0x02, 0x94, 0x00, 0x00, 0x00, 0x01, 0x01, 0x2c, + 0xfe, 0x70, 0x00, 0x01, 0x03, 0x8e, 0xfe, 0x70, 0x00, 0x01, 0x01, 0x68, + 0xfe, 0xa2, 0x00, 0x01, 0x03, 0xfc, 0xfe, 0x7f, 0x00, 0x01, 0x02, 0x1c, + 0xfe, 0xd9, 0x00, 0x01, 0x03, 0xa2, 0xfe, 0x7f, 0x00, 0x01, 0x01, 0xfe, + 0xfe, 0x66, 0x00, 0x01, 0x03, 0xac, 0xfe, 0x7f, 0x00, 0x01, 0x03, 0x70, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x2a, 0xfe, 0xa2, 0x00, 0x01, 0x03, 0xfc, + 0x00, 0x00, 0x00, 0x01, 0x01, 0xe0, 0xfe, 0xd9, 0x00, 0x01, 0x02, 0xbc, + 0xfe, 0x7f, 0x00, 0x01, 0x02, 0x12, 0xfe, 0xd9, 0x00, 0x01, 0x03, 0x66, + 0x00, 0x00, 0x00, 0x01, 0x02, 0xbc, 0x00, 0x14, 0x00, 0x01, 0x03, 0x20, + 0xfe, 0x7f, 0x00, 0x01, 0x03, 0xd4, 0xfe, 0x7f, 0x00, 0x01, 0x03, 0x0c, + 0xfe, 0xa2, 0x00, 0x01, 0x02, 0xe4, 0xfe, 0xa2, 0x00, 0x01, 0x01, 0x2c, + 0xfe, 0x66, 0x00, 0x01, 0x01, 0xf9, 0xfe, 0xd9, 0x00, 0x01, 0x03, 0x02, + 0x00, 0x00, 0x00, 0x01, 0x01, 0xb8, 0x00, 0x00, 0x00, 0x01, 0x01, 0x36, + 0xff, 0x38, 0x00, 0x01, 0x02, 0x62, 0xfe, 0x89, 0x00, 0x01, 0x02, 0x49, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x03, 0x3e, + 0x00, 0x00, 0x00, 0x01, 0x03, 0xca, 0xfe, 0x7f, 0x00, 0x01, 0x02, 0x9e, + 0x00, 0x19, 0x00, 0x01, 0x02, 0xa8, 0x00, 0x19, 0x00, 0x01, 0x02, 0x30, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x20, 0x00, 0x00, 0x00, 0x01, 0x02, 0x8a, + 0x00, 0x19, 0x00, 0x01, 0x03, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x02, 0xe7, + 0x00, 0x00, 0x00, 0x01, 0x00, 0xfa, 0xfe, 0xa2, 0x00, 0x01, 0x03, 0xca, + 0x00, 0x00, 0x00, 0x01, 0x01, 0xc2, 0x00, 0x00, 0x00, 0x01, 0x03, 0xde, + 0xff, 0x5c, 0x00, 0x01, 0x02, 0xbc, 0x00, 0x00, 0x00, 0x01, 0x03, 0x16, + 0xfe, 0x5a, 0x00, 0x01, 0x02, 0x8a, 0x00, 0x14, 0x00, 0x01, 0x02, 0xe7, + 0xff, 0xee, 0x00, 0x01, 0x03, 0x3e, 0x00, 0x32, 0x00, 0x01, 0x03, 0x34, + 0xfe, 0xa2, 0x00, 0x01, 0x03, 0x84, 0x00, 0x32, 0x00, 0x01, 0x03, 0x7a, + 0xfe, 0xa2, 0x00, 0x01, 0x02, 0x8a, 0xfe, 0x7f, 0x00, 0x01, 0x03, 0x43, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x04, 0xfe, 0x70, 0x00, 0x01, 0x02, 0xa8, + 0x00, 0x14, 0x00, 0x01, 0x03, 0xa2, 0xfe, 0x66, 0x00, 0x01, 0x02, 0xd0, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x6b, 0xfe, 0xa2, 0x00, 0x01, 0x02, 0x12, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x8d, 0xfe, 0xed, 0x00, 0x01, 0x02, 0x30, + 0xfe, 0x5c, 0x00, 0x01, 0x02, 0x5d, 0xfe, 0x89, 0x00, 0x01, 0x02, 0x85, + 0xfe, 0xd4, 0x00, 0x01, 0x02, 0xa8, 0xfe, 0x89, 0x00, 0x01, 0x02, 0xbf, + 0xfe, 0xed, 0x00, 0x01, 0x02, 0x8f, 0xfe, 0x89, 0x00, 0x01, 0x02, 0x44, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0x76, 0x00, 0x14, 0x00, 0x01, 0x03, 0x66, + 0x00, 0x14, 0x00, 0x01, 0x03, 0x8e, 0xfe, 0x66, 0x00, 0x01, 0x03, 0x0c, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0x9e, 0xfe, 0x7f, 0x00, 0x01, 0x02, 0x62, + 0xfe, 0xd4, 0x00, 0x01, 0x04, 0xce, 0xfe, 0x57, 0x00, 0x01, 0x03, 0x2a, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0x08, 0xfe, 0xd9, 0x00, 0x01, 0x03, 0xac, + 0xfe, 0x57, 0x00, 0x01, 0x04, 0xc4, 0xfe, 0x57, 0x00, 0x01, 0x03, 0x2a, + 0xfe, 0x57, 0x00, 0x01, 0x03, 0x7a, 0x00, 0x19, 0x00, 0x01, 0x02, 0x4e, + 0xfe, 0x70, 0x00, 0x01, 0x03, 0x48, 0xfe, 0x70, 0x00, 0x01, 0x03, 0xde, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0x62, 0xfe, 0x8b, 0x00, 0x01, 0x02, 0x26, + 0xfe, 0x57, 0x00, 0x01, 0x02, 0x71, 0xfe, 0x89, 0x00, 0x01, 0x02, 0xa3, + 0xfe, 0xd4, 0x00, 0x01, 0x02, 0x9e, 0xfe, 0xd4, 0x00, 0x01, 0x02, 0x80, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0xa1, 0xfe, 0xed, 0x00, 0x01, 0x02, 0x67, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0x9e, 0x00, 0x0f, 0x00, 0x01, 0x02, 0x62, + 0x00, 0x0f, 0x00, 0x01, 0x03, 0x70, 0x00, 0x32, 0x00, 0x01, 0x04, 0x9c, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0xa8, 0x00, 0x0f, 0x00, 0x01, 0x02, 0x1c, + 0x00, 0x0f, 0x00, 0x01, 0x02, 0xda, 0x00, 0x19, 0x00, 0x01, 0x02, 0x4e, + 0x00, 0x00, 0x00, 0x01, 0x02, 0xc6, 0x00, 0x00, 0x00, 0x01, 0x02, 0x12, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0xc6, 0xfe, 0x7f, 0x00, 0x01, 0x02, 0xe4, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x99, 0xfe, 0x89, 0x00, 0x01, 0x02, 0x94, + 0x00, 0x14, 0x00, 0x01, 0x03, 0x84, 0xfe, 0x66, 0x00, 0x01, 0x02, 0xe7, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0xe7, 0xfe, 0xd4, 0x00, 0x01, 0x03, 0xde, + 0xfe, 0x66, 0x00, 0x01, 0x03, 0x3e, 0xfe, 0x70, 0x00, 0x01, 0x04, 0x7e, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0x58, 0xfe, 0x66, 0x00, 0x01, 0x04, 0x56, + 0xfe, 0x70, 0x00, 0x01, 0x01, 0x5e, 0xfe, 0x66, 0x00, 0x01, 0x02, 0x58, + 0xfe, 0x70, 0x00, 0x01, 0x01, 0xea, 0xfe, 0x70, 0x00, 0x01, 0x01, 0x7c, + 0xfe, 0x70, 0x00, 0x01, 0x03, 0x98, 0xfe, 0x70, 0x00, 0x01, 0x03, 0x84, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0xd0, 0x00, 0x19, 0x00, 0x01, 0x02, 0x9e, + 0x00, 0x14, 0x00, 0x01, 0x04, 0x4c, 0xfe, 0x70, 0x00, 0x01, 0x01, 0x68, + 0xfe, 0xed, 0x00, 0x01, 0x02, 0x08, 0x00, 0x00, 0x00, 0x01, 0x02, 0xb2, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x08, 0x00, 0x14, 0x00, 0x01, 0x02, 0xbc, + 0x00, 0x0f, 0x00, 0x01, 0x02, 0xbc, 0x00, 0x19, 0x00, 0x01, 0x02, 0xf8, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x4a, 0xfe, 0xed, 0x00, 0x01, 0x03, 0x3e, + 0xfe, 0xd4, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x5c, 0x00, 0x01, 0x03, 0x84, + 0x00, 0x0a, 0x00, 0x01, 0x03, 0x34, 0x00, 0x00, 0x00, 0x01, 0x04, 0xa6, + 0xfe, 0x70, 0x00, 0x01, 0x03, 0x48, 0x00, 0x00, 0x00, 0x01, 0x02, 0xe4, + 0x00, 0x19, 0x00, 0x01, 0x03, 0x07, 0x00, 0x00, 0x00, 0x01, 0x02, 0x58, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x02, 0x80, + 0x00, 0x19, 0x00, 0x01, 0x03, 0xca, 0x00, 0x67, 0x00, 0x01, 0x02, 0x80, + 0x00, 0x23, 0x00, 0x01, 0x03, 0xde, 0x01, 0xe6, 0x00, 0x01, 0x01, 0x40, + 0x00, 0x00, 0x00, 0x01, 0x03, 0x20, 0x00, 0x64, 0x00, 0x01, 0x03, 0x7a, + 0x00, 0x23, 0x00, 0x01, 0x02, 0xc8, 0x00, 0x00, 0x00, 0x01, 0x01, 0x68, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x54, 0x00, 0x00, 0x00, 0x01, 0x02, 0xd0, + 0xfe, 0x7f, 0x00, 0x01, 0x03, 0x20, 0x02, 0x92, 0x00, 0x01, 0x02, 0xa8, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0x8d, 0x00, 0x00, 0x00, 0x01, 0x02, 0x8d, + 0x00, 0x0f, 0x00, 0x01, 0x02, 0xda, 0xfe, 0x89, 0x00, 0x01, 0x03, 0xc0, + 0xfe, 0x89, 0x00, 0x01, 0x02, 0x76, 0xfe, 0x89, 0x00, 0x01, 0x03, 0xe8, + 0xfe, 0x89, 0x00, 0x01, 0x03, 0x48, 0xfe, 0x89, 0x00, 0x01, 0x01, 0xea, + 0xfe, 0x89, 0x00, 0x01, 0x03, 0x98, 0xfe, 0x89, 0x00, 0x01, 0x03, 0xca, + 0xfe, 0x89, 0x00, 0x01, 0x04, 0xc4, 0xfe, 0x70, 0x00, 0x01, 0x04, 0x42, + 0xfe, 0x70, 0x00, 0x01, 0x04, 0x74, 0xfe, 0x70, 0x00, 0x01, 0x01, 0xc2, + 0xfe, 0x70, 0x00, 0x01, 0x04, 0x06, 0xfe, 0x70, 0x00, 0x01, 0x04, 0x6a, + 0xfe, 0x70, 0x00, 0x01, 0x01, 0xf4, 0xfe, 0x70, 0x00, 0x01, 0x01, 0xcc, + 0xfe, 0x70, 0x00, 0x01, 0x04, 0xd8, 0xfe, 0x70, 0x00, 0x01, 0x01, 0xb8, + 0xfe, 0x70, 0x00, 0x01, 0x02, 0xe4, 0xff, 0xe2, 0x00, 0x01, 0x03, 0x48, + 0x00, 0x5a, 0x00, 0x01, 0x03, 0xac, 0x00, 0x32, 0x00, 0x01, 0x03, 0x3e, + 0xfe, 0xa2, 0x00, 0x01, 0x02, 0xd0, 0xfe, 0xca, 0x00, 0x01, 0x04, 0x1a, + 0x00, 0x0a, 0x00, 0x01, 0x04, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x03, 0x2a, + 0x00, 0x32, 0x00, 0x01, 0x03, 0xca, 0xfe, 0x70, 0x00, 0x01, 0x01, 0x9f, + 0x00, 0x00, 0x00, 0x01, 0x03, 0xbc, 0x00, 0x00, 0x00, 0x01, 0x01, 0xf4, + 0xff, 0xe2, 0x00, 0x01, 0x04, 0x6a, 0x04, 0xba, 0x00, 0x01, 0x04, 0x6a, + 0x04, 0x56, 0x00, 0x01, 0x00, 0x0a, 0x04, 0xba, 0x00, 0x01, 0x00, 0x0a, + 0x04, 0x56, 0x00, 0x01, 0x00, 0x00, 0x06, 0xa4, 0x00, 0x01, 0x02, 0x1a, + 0x06, 0xe1, 0x00, 0x01, 0x02, 0x42, 0x06, 0xe1, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xfa, 0x00, 0x01, 0x02, 0x33, 0x06, 0xf4, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xbe, 0x00, 0x01, 0x02, 0x33, 0x07, 0x27, 0x00, 0x01, 0x02, 0x51, + 0x06, 0xe1, 0x00, 0x01, 0x02, 0x33, 0x07, 0x00, 0x00, 0x01, 0x02, 0x08, + 0x06, 0xbe, 0x00, 0x01, 0x02, 0x08, 0x07, 0xe3, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x51, 0x00, 0x01, 0x02, 0x33, 0x07, 0x78, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xd8, 0x00, 0x01, 0x02, 0x33, 0x06, 0xd3, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xf7, 0x00, 0x01, 0x02, 0x33, 0x06, 0xd2, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xf4, 0x00, 0x01, 0x02, 0x33, 0x07, 0xf3, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x47, 0x00, 0x01, 0x02, 0x33, 0x06, 0xdf, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x15, 0x00, 0x01, 0x02, 0x33, 0x06, 0x9d, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xde, 0x00, 0x01, 0x02, 0x97, 0x05, 0xdf, 0x00, 0x01, 0x02, 0x97, + 0x06, 0xe1, 0x00, 0x01, 0x02, 0x33, 0x07, 0x49, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x16, 0x00, 0x01, 0x02, 0x33, 0x05, 0xff, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x80, 0x00, 0x01, 0x02, 0x33, 0x07, 0x6c, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x18, 0x00, 0x01, 0x02, 0x33, 0x07, 0x84, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x36, 0x00, 0x01, 0x02, 0x33, 0x07, 0x5f, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xc3, 0x00, 0x01, 0x02, 0x33, 0x05, 0x8c, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xef, 0x00, 0x01, 0x02, 0x33, 0x06, 0x5b, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x61, 0x00, 0x01, 0x02, 0x33, 0x07, 0x20, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x3a, 0x00, 0x01, 0x02, 0x33, 0x07, 0x9d, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xd2, 0x00, 0x01, 0x02, 0x33, 0x07, 0x30, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x4c, 0x00, 0x01, 0x02, 0x33, 0x06, 0x6a, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xc8, 0x00, 0x01, 0x02, 0x33, 0x06, 0x87, 0x00, 0x01, 0x02, 0x33, + 0x07, 0xea, 0x00, 0x01, 0x02, 0x33, 0x06, 0x7c, 0x00, 0x01, 0x02, 0x51, + 0x07, 0x60, 0x00, 0x01, 0x02, 0x51, 0x08, 0x1a, 0x00, 0x01, 0x02, 0x51, + 0x06, 0x7c, 0x00, 0x01, 0x02, 0x51, 0x07, 0x36, 0x00, 0x01, 0x02, 0x51, + 0x06, 0x71, 0x00, 0x01, 0x02, 0x51, 0x07, 0x2b, 0x00, 0x01, 0x02, 0x51, + 0x06, 0x79, 0x00, 0x01, 0x02, 0x51, 0x07, 0x33, 0x00, 0x01, 0x02, 0x51, + 0x07, 0xf0, 0x00, 0x01, 0x02, 0x33, 0x07, 0xf0, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x7b, 0x00, 0x01, 0x02, 0x33, 0x07, 0x35, 0x00, 0x01, 0x02, 0x51, + 0x07, 0x14, 0x00, 0x01, 0x02, 0x51, 0x07, 0xce, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x71, 0x00, 0x01, 0x02, 0x33, 0x07, 0x2b, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xee, 0x00, 0x01, 0x02, 0x33, 0x06, 0x52, 0x00, 0x01, 0x01, 0xcf, + 0x06, 0x14, 0x00, 0x01, 0x01, 0xcf, 0x07, 0x15, 0x00, 0x01, 0x02, 0x97, + 0x06, 0x14, 0x00, 0x01, 0x02, 0x97, 0x07, 0x15, 0x00, 0x01, 0x01, 0xcf, + 0x06, 0x72, 0x00, 0x01, 0x01, 0xcf, 0x07, 0x73, 0x00, 0x01, 0x02, 0x97, + 0x06, 0x72, 0x00, 0x01, 0x02, 0x97, 0x07, 0x73, 0x00, 0x01, 0x02, 0x33, + 0x06, 0x28, 0x00, 0x01, 0x02, 0x33, 0x07, 0x29, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x5e, 0x00, 0x01, 0x02, 0x33, 0x05, 0xf4, 0x00, 0x01, 0x02, 0x47, + 0x07, 0x00, 0x00, 0x01, 0x02, 0x33, 0x07, 0x6e, 0x00, 0x01, 0x02, 0x33, + 0x07, 0x1b, 0x00, 0x01, 0x02, 0x33, 0x07, 0x87, 0x00, 0x01, 0x02, 0x33, + 0x05, 0xea, 0x00, 0x01, 0x02, 0x33, 0x05, 0x8b, 0x00, 0x01, 0x02, 0x33, + 0x06, 0xae, 0x00, 0x01, 0x02, 0x15, 0x05, 0xdf, 0x00, 0x01, 0x02, 0x3d, + 0x05, 0xdf, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xe1, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xe4, 0x00, 0x01, 0x02, 0x33, 0xfe, 0x64, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0x8a, 0x00, 0x01, 0x02, 0x33, 0xfd, 0x97, 0x00, 0x01, 0x02, 0x33, + 0xfe, 0x77, 0x00, 0x01, 0x02, 0x33, 0xfe, 0xb6, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xcd, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xc9, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xc1, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xc8, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xbb, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xe6, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xd1, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xea, 0x00, 0x01, 0x02, 0x33, + 0xfd, 0xd5, 0x00, 0x01, 0x02, 0x33, 0xfd, 0xba, 0x00, 0x01, 0x01, 0xbb, + 0xfe, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x01, 0x70, + 0x07, 0xf8, 0x00, 0x03, 0x63, 0x79, 0x72, 0x6c, 0x00, 0x14, 0x67, 0x72, + 0x65, 0x6b, 0x00, 0x7a, 0x6c, 0x61, 0x74, 0x6e, 0x00, 0xac, 0x00, 0x0a, + 0x00, 0x01, 0x53, 0x52, 0x42, 0x20, 0x00, 0x38, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x14, 0x00, 0x06, 0x00, 0x00, 0x00, 0x17, 0x00, 0x1e, 0x00, 0x0c, + 0x00, 0x25, 0x00, 0x29, 0x00, 0x30, 0x00, 0x40, 0x00, 0x3a, 0x00, 0x46, + 0x00, 0x4c, 0x00, 0x52, 0x00, 0x58, 0x00, 0x5e, 0x00, 0x64, 0x00, 0x6a, + 0x00, 0x70, 0x00, 0x76, 0x00, 0x7c, 0x00, 0x00, 0xff, 0xff, 0x00, 0x14, + 0x00, 0x07, 0x00, 0x01, 0x00, 0x18, 0x00, 0x1f, 0x00, 0x0d, 0x00, 0x26, + 0x00, 0x2a, 0x00, 0x31, 0x00, 0x41, 0x00, 0x3b, 0x00, 0x47, 0x00, 0x4d, + 0x00, 0x53, 0x00, 0x59, 0x00, 0x5f, 0x00, 0x65, 0x00, 0x6b, 0x00, 0x71, + 0x00, 0x77, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0x14, 0x00, 0x08, 0x00, 0x02, 0x00, 0x19, 0x00, 0x20, 0x00, 0x0e, + 0x00, 0x27, 0x00, 0x2b, 0x00, 0x32, 0x00, 0x42, 0x00, 0x3c, 0x00, 0x48, + 0x00, 0x4e, 0x00, 0x54, 0x00, 0x5a, 0x00, 0x60, 0x00, 0x66, 0x00, 0x6c, + 0x00, 0x72, 0x00, 0x78, 0x00, 0x7e, 0x00, 0x16, 0x00, 0x03, 0x49, 0x50, + 0x50, 0x48, 0x00, 0x46, 0x52, 0x4f, 0x4d, 0x20, 0x00, 0x58, 0x54, 0x52, + 0x4b, 0x20, 0x00, 0x8a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x15, 0x00, 0x09, + 0x00, 0x03, 0x00, 0x1a, 0x00, 0x13, 0x00, 0x21, 0x00, 0x0f, 0x00, 0x2c, + 0x00, 0x33, 0x00, 0x37, 0x00, 0x43, 0x00, 0x3d, 0x00, 0x49, 0x00, 0x4f, + 0x00, 0x55, 0x00, 0x5b, 0x00, 0x61, 0x00, 0x67, 0x00, 0x6d, 0x00, 0x73, + 0x00, 0x79, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0x00, 0x06, 0x00, 0x1b, + 0x00, 0x14, 0x00, 0x22, 0x00, 0x10, 0x00, 0x2d, 0x00, 0x34, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x16, 0x00, 0x0a, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x15, + 0x00, 0x23, 0x00, 0x11, 0x00, 0x28, 0x00, 0x2e, 0x00, 0x35, 0x00, 0x38, + 0x00, 0x44, 0x00, 0x3e, 0x00, 0x4a, 0x00, 0x50, 0x00, 0x56, 0x00, 0x5c, + 0x00, 0x62, 0x00, 0x68, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x7a, 0x00, 0x80, + 0x00, 0x00, 0xff, 0xff, 0x00, 0x15, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x1d, + 0x00, 0x16, 0x00, 0x24, 0x00, 0x12, 0x00, 0x2f, 0x00, 0x36, 0x00, 0x39, + 0x00, 0x45, 0x00, 0x3f, 0x00, 0x4b, 0x00, 0x51, 0x00, 0x57, 0x00, 0x5d, + 0x00, 0x63, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x75, 0x00, 0x7b, 0x00, 0x81, + 0x00, 0x82, 0x63, 0x61, 0x6c, 0x74, 0x03, 0x0e, 0x63, 0x61, 0x6c, 0x74, + 0x03, 0x16, 0x63, 0x61, 0x6c, 0x74, 0x03, 0x1e, 0x63, 0x61, 0x6c, 0x74, + 0x03, 0x26, 0x63, 0x61, 0x6c, 0x74, 0x03, 0x2e, 0x63, 0x61, 0x6c, 0x74, + 0x03, 0x36, 0x63, 0x61, 0x73, 0x65, 0x03, 0x3e, 0x63, 0x61, 0x73, 0x65, + 0x03, 0x44, 0x63, 0x61, 0x73, 0x65, 0x03, 0x4a, 0x63, 0x61, 0x73, 0x65, + 0x03, 0x50, 0x63, 0x61, 0x73, 0x65, 0x03, 0x56, 0x63, 0x61, 0x73, 0x65, + 0x03, 0x5c, 0x63, 0x63, 0x6d, 0x70, 0x03, 0x62, 0x63, 0x63, 0x6d, 0x70, + 0x03, 0x70, 0x63, 0x63, 0x6d, 0x70, 0x03, 0x7e, 0x63, 0x63, 0x6d, 0x70, + 0x03, 0x8c, 0x63, 0x63, 0x6d, 0x70, 0x03, 0x9a, 0x63, 0x63, 0x6d, 0x70, + 0x03, 0xa8, 0x63, 0x63, 0x6d, 0x70, 0x03, 0xb6, 0x64, 0x6c, 0x69, 0x67, + 0x03, 0xc2, 0x64, 0x6c, 0x69, 0x67, 0x03, 0xc8, 0x64, 0x6c, 0x69, 0x67, + 0x03, 0xce, 0x64, 0x6c, 0x69, 0x67, 0x03, 0xd4, 0x64, 0x6e, 0x6f, 0x6d, + 0x03, 0xda, 0x64, 0x6e, 0x6f, 0x6d, 0x03, 0xe0, 0x64, 0x6e, 0x6f, 0x6d, + 0x03, 0xe6, 0x64, 0x6e, 0x6f, 0x6d, 0x03, 0xec, 0x64, 0x6e, 0x6f, 0x6d, + 0x03, 0xf2, 0x64, 0x6e, 0x6f, 0x6d, 0x03, 0xf8, 0x64, 0x6e, 0x6f, 0x6d, + 0x03, 0xfe, 0x66, 0x72, 0x61, 0x63, 0x04, 0x04, 0x66, 0x72, 0x61, 0x63, + 0x04, 0x0c, 0x66, 0x72, 0x61, 0x63, 0x04, 0x14, 0x66, 0x72, 0x61, 0x63, + 0x04, 0x1c, 0x66, 0x72, 0x61, 0x63, 0x04, 0x24, 0x66, 0x72, 0x61, 0x63, + 0x04, 0x2c, 0x66, 0x72, 0x61, 0x63, 0x04, 0x34, 0x6c, 0x6f, 0x63, 0x6c, + 0x04, 0x3c, 0x6c, 0x6f, 0x63, 0x6c, 0x04, 0x42, 0x6c, 0x6f, 0x63, 0x6c, + 0x04, 0x4a, 0x6c, 0x6f, 0x63, 0x6c, 0x04, 0x50, 0x6e, 0x75, 0x6d, 0x72, + 0x04, 0x56, 0x6e, 0x75, 0x6d, 0x72, 0x04, 0x5c, 0x6e, 0x75, 0x6d, 0x72, + 0x04, 0x62, 0x6e, 0x75, 0x6d, 0x72, 0x04, 0x68, 0x6e, 0x75, 0x6d, 0x72, + 0x04, 0x6e, 0x6e, 0x75, 0x6d, 0x72, 0x04, 0x74, 0x6e, 0x75, 0x6d, 0x72, + 0x04, 0x7a, 0x6f, 0x6e, 0x75, 0x6d, 0x04, 0x80, 0x6f, 0x6e, 0x75, 0x6d, + 0x04, 0x86, 0x6f, 0x6e, 0x75, 0x6d, 0x04, 0x8c, 0x6f, 0x6e, 0x75, 0x6d, + 0x04, 0x92, 0x6f, 0x6e, 0x75, 0x6d, 0x04, 0x98, 0x6f, 0x6e, 0x75, 0x6d, + 0x04, 0x9e, 0x6f, 0x6e, 0x75, 0x6d, 0x04, 0xa4, 0x6f, 0x72, 0x64, 0x6e, + 0x04, 0xaa, 0x6f, 0x72, 0x64, 0x6e, 0x04, 0xb0, 0x6f, 0x72, 0x64, 0x6e, + 0x04, 0xb6, 0x73, 0x61, 0x6c, 0x74, 0x04, 0xbc, 0x73, 0x61, 0x6c, 0x74, + 0x04, 0xc2, 0x73, 0x61, 0x6c, 0x74, 0x04, 0xca, 0x73, 0x61, 0x6c, 0x74, + 0x04, 0xd0, 0x73, 0x61, 0x6c, 0x74, 0x04, 0xd6, 0x73, 0x61, 0x6c, 0x74, + 0x04, 0xde, 0x73, 0x69, 0x6e, 0x66, 0x04, 0xe4, 0x73, 0x69, 0x6e, 0x66, + 0x04, 0xea, 0x73, 0x69, 0x6e, 0x66, 0x04, 0xf0, 0x73, 0x69, 0x6e, 0x66, + 0x04, 0xf6, 0x73, 0x69, 0x6e, 0x66, 0x04, 0xfc, 0x73, 0x69, 0x6e, 0x66, + 0x05, 0x02, 0x73, 0x73, 0x30, 0x31, 0x05, 0x08, 0x73, 0x73, 0x30, 0x31, + 0x05, 0x0e, 0x73, 0x73, 0x30, 0x31, 0x05, 0x14, 0x73, 0x73, 0x30, 0x31, + 0x05, 0x1a, 0x73, 0x73, 0x30, 0x31, 0x05, 0x20, 0x73, 0x73, 0x30, 0x31, + 0x05, 0x26, 0x73, 0x73, 0x30, 0x32, 0x05, 0x2c, 0x73, 0x73, 0x30, 0x32, + 0x05, 0x34, 0x73, 0x73, 0x30, 0x32, 0x05, 0x3c, 0x73, 0x73, 0x30, 0x32, + 0x05, 0x44, 0x73, 0x73, 0x30, 0x32, 0x05, 0x4c, 0x73, 0x73, 0x30, 0x32, + 0x05, 0x54, 0x73, 0x73, 0x30, 0x33, 0x05, 0x5c, 0x73, 0x73, 0x30, 0x33, + 0x05, 0x64, 0x73, 0x73, 0x30, 0x33, 0x05, 0x6c, 0x73, 0x73, 0x30, 0x33, + 0x05, 0x74, 0x73, 0x73, 0x30, 0x33, 0x05, 0x7c, 0x73, 0x73, 0x30, 0x33, + 0x05, 0x84, 0x73, 0x73, 0x30, 0x34, 0x05, 0x8c, 0x73, 0x73, 0x30, 0x34, + 0x05, 0x92, 0x73, 0x73, 0x30, 0x34, 0x05, 0x98, 0x73, 0x73, 0x30, 0x34, + 0x05, 0x9e, 0x73, 0x73, 0x30, 0x34, 0x05, 0xa4, 0x73, 0x73, 0x30, 0x34, + 0x05, 0xaa, 0x73, 0x73, 0x30, 0x35, 0x05, 0xb0, 0x73, 0x73, 0x30, 0x35, + 0x05, 0xb6, 0x73, 0x73, 0x30, 0x35, 0x05, 0xbc, 0x73, 0x73, 0x30, 0x35, + 0x05, 0xc2, 0x73, 0x73, 0x30, 0x35, 0x05, 0xc8, 0x73, 0x73, 0x30, 0x35, + 0x05, 0xce, 0x73, 0x73, 0x30, 0x36, 0x05, 0xd4, 0x73, 0x73, 0x30, 0x36, + 0x05, 0xda, 0x73, 0x73, 0x30, 0x36, 0x05, 0xe0, 0x73, 0x73, 0x30, 0x36, + 0x05, 0xe6, 0x73, 0x73, 0x30, 0x36, 0x05, 0xec, 0x73, 0x73, 0x30, 0x36, + 0x05, 0xf2, 0x73, 0x73, 0x30, 0x37, 0x05, 0xf8, 0x73, 0x73, 0x30, 0x37, + 0x05, 0xfe, 0x73, 0x73, 0x30, 0x37, 0x06, 0x04, 0x73, 0x73, 0x30, 0x37, + 0x06, 0x0a, 0x73, 0x73, 0x30, 0x37, 0x06, 0x10, 0x73, 0x73, 0x30, 0x37, + 0x06, 0x16, 0x73, 0x73, 0x30, 0x38, 0x06, 0x1c, 0x73, 0x73, 0x30, 0x38, + 0x06, 0x22, 0x73, 0x73, 0x30, 0x38, 0x06, 0x28, 0x73, 0x73, 0x30, 0x38, + 0x06, 0x2e, 0x73, 0x73, 0x30, 0x38, 0x06, 0x34, 0x73, 0x73, 0x30, 0x38, + 0x06, 0x3a, 0x73, 0x75, 0x62, 0x73, 0x06, 0x40, 0x73, 0x75, 0x62, 0x73, + 0x06, 0x46, 0x73, 0x75, 0x62, 0x73, 0x06, 0x4c, 0x73, 0x75, 0x62, 0x73, + 0x06, 0x52, 0x73, 0x75, 0x62, 0x73, 0x06, 0x58, 0x73, 0x75, 0x62, 0x73, + 0x06, 0x5e, 0x73, 0x75, 0x70, 0x73, 0x06, 0x64, 0x73, 0x75, 0x70, 0x73, + 0x06, 0x6a, 0x73, 0x75, 0x70, 0x73, 0x06, 0x70, 0x73, 0x75, 0x70, 0x73, + 0x06, 0x76, 0x73, 0x75, 0x70, 0x73, 0x06, 0x7c, 0x73, 0x75, 0x70, 0x73, + 0x06, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x11, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x11, 0x00, 0x12, 0x00, 0x00, 0x00, 0x02, 0x00, 0x11, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, + 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, + 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x05, 0x00, 0x07, + 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x0d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x0b, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, + 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x15, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x16, 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x18, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x17, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x19, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x0e, 0x00, 0x28, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x62, + 0x00, 0x6a, 0x00, 0x72, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x92, + 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xba, 0x00, 0xc2, + 0x00, 0xca, 0x00, 0xd2, 0x00, 0xda, 0x00, 0xe4, 0x00, 0xf2, 0x00, 0xfa, + 0x01, 0x02, 0x01, 0x0a, 0x01, 0x12, 0x01, 0x1a, 0x01, 0x22, 0x01, 0x2a, + 0x01, 0x32, 0x01, 0x3a, 0x01, 0x42, 0x01, 0x4a, 0x01, 0x52, 0x01, 0x5a, + 0x01, 0x62, 0x01, 0x6a, 0x01, 0x72, 0x01, 0x7a, 0x01, 0x82, 0x01, 0x8a, + 0x01, 0x92, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x48, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x01, 0x64, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x90, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x9a, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x01, 0x01, 0xa0, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, + 0x02, 0xee, 0x00, 0x06, 0x01, 0x00, 0x00, 0x01, 0x07, 0xf8, 0x00, 0x06, + 0x01, 0x00, 0x00, 0x01, 0x0a, 0x32, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, + 0x0c, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x11, 0xbe, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x12, 0x3a, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, + 0x12, 0x5c, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x12, 0x76, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x12, 0x9a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x12, 0xbc, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x13, 0x82, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x13, 0xda, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, + 0x14, 0x04, 0x14, 0x56, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x14, 0xb6, + 0x14, 0xc8, 0x14, 0xda, 0x14, 0xee, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x15, 0x8c, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x15, 0xdc, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x01, 0x15, 0xf4, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x18, 0xd4, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x18, 0xda, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x18, 0xee, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x18, 0xf4, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x19, 0x0e, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x19, 0x14, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x19, 0x72, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x1a, 0x70, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x1c, 0x88, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x1c, 0x92, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x1c, 0x9c, 0x00, 0x01, + 0x01, 0x00, 0x00, 0x01, 0x1f, 0x6a, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x1f, 0x94, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x1f, 0x9e, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x1f, 0xa4, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x1f, 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x1f, 0xc6, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x1f, 0xcc, 0x00, 0x02, 0x00, 0x0e, 0x00, 0x04, + 0x00, 0x6a, 0x00, 0xee, 0x00, 0x6c, 0x00, 0xf2, 0x00, 0x02, 0x00, 0x03, + 0x00, 0x69, 0x00, 0x69, 0x00, 0x00, 0x00, 0xed, 0x00, 0xed, 0x00, 0x01, + 0x03, 0x9d, 0x03, 0x9e, 0x00, 0x02, 0x00, 0x02, 0x00, 0x12, 0x00, 0x06, + 0x09, 0x29, 0x09, 0x28, 0x07, 0xfa, 0x07, 0xfc, 0x08, 0x00, 0x07, 0xfe, + 0x00, 0x02, 0x00, 0x05, 0x01, 0x3c, 0x01, 0x3c, 0x00, 0x00, 0x01, 0x3e, + 0x01, 0x3e, 0x00, 0x01, 0x03, 0xc8, 0x03, 0xc8, 0x00, 0x02, 0x03, 0xca, + 0x03, 0xca, 0x00, 0x03, 0x0a, 0x2d, 0x0a, 0x2e, 0x00, 0x04, 0x00, 0x02, + 0x00, 0x0a, 0x00, 0x02, 0x02, 0x49, 0x02, 0x49, 0x00, 0x01, 0x00, 0x02, + 0x01, 0x4b, 0x0a, 0x32, 0x00, 0x02, 0x00, 0x08, 0x00, 0x01, 0x02, 0x48, + 0x00, 0x01, 0x00, 0x01, 0x02, 0x15, 0x00, 0x01, 0x01, 0x2e, 0x00, 0x08, + 0x00, 0x16, 0x00, 0x30, 0x00, 0x4a, 0x00, 0x64, 0x00, 0x7e, 0x00, 0x98, + 0x00, 0xc2, 0x00, 0xec, 0x00, 0x03, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x14, + 0x09, 0x31, 0x00, 0x02, 0x09, 0x28, 0x09, 0x32, 0x00, 0x02, 0x09, 0x29, + 0x09, 0x33, 0x00, 0x02, 0x09, 0x2a, 0x00, 0x03, 0x00, 0x08, 0x00, 0x0e, + 0x00, 0x14, 0x08, 0x04, 0x00, 0x02, 0x07, 0xfe, 0x08, 0x06, 0x00, 0x02, + 0x08, 0x00, 0x08, 0x08, 0x00, 0x02, 0x08, 0x02, 0x00, 0x03, 0x00, 0x08, + 0x00, 0x0e, 0x00, 0x14, 0x08, 0x0a, 0x00, 0x02, 0x07, 0xfe, 0x08, 0x0c, + 0x00, 0x02, 0x08, 0x00, 0x08, 0x0e, 0x00, 0x02, 0x08, 0x02, 0x00, 0x03, + 0x00, 0x08, 0x00, 0x0e, 0x00, 0x14, 0x09, 0x2b, 0x00, 0x02, 0x09, 0x28, + 0x09, 0x2c, 0x00, 0x02, 0x09, 0x29, 0x09, 0x2d, 0x00, 0x02, 0x09, 0x2a, + 0x00, 0x03, 0x00, 0x08, 0x00, 0x0e, 0x00, 0x14, 0x09, 0x2e, 0x00, 0x02, + 0x09, 0x28, 0x09, 0x2f, 0x00, 0x02, 0x09, 0x29, 0x09, 0x30, 0x00, 0x02, + 0x09, 0x2a, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x12, 0x00, 0x1a, 0x00, 0x22, + 0x08, 0x1a, 0x00, 0x03, 0x07, 0xfa, 0x07, 0xfe, 0x08, 0x1b, 0x00, 0x03, + 0x07, 0xfa, 0x08, 0x00, 0x08, 0x1c, 0x00, 0x03, 0x07, 0xfc, 0x07, 0xfe, + 0x08, 0x1d, 0x00, 0x03, 0x07, 0xfc, 0x08, 0x00, 0x00, 0x04, 0x00, 0x0a, + 0x00, 0x12, 0x00, 0x1a, 0x00, 0x22, 0x08, 0x1e, 0x00, 0x03, 0x07, 0xfa, + 0x07, 0xfe, 0x08, 0x1f, 0x00, 0x03, 0x07, 0xfa, 0x08, 0x00, 0x08, 0x20, + 0x00, 0x03, 0x07, 0xfc, 0x07, 0xfe, 0x08, 0x21, 0x00, 0x03, 0x07, 0xfc, + 0x08, 0x00, 0x00, 0x07, 0x00, 0x10, 0x00, 0x18, 0x00, 0x20, 0x00, 0x28, + 0x00, 0x30, 0x00, 0x36, 0x00, 0x3c, 0x08, 0x22, 0x00, 0x03, 0x0a, 0x31, + 0x07, 0xfe, 0x08, 0x23, 0x00, 0x03, 0x0a, 0x31, 0x08, 0x00, 0x08, 0x24, + 0x00, 0x03, 0x0a, 0x32, 0x07, 0xfe, 0x08, 0x25, 0x00, 0x03, 0x0a, 0x32, + 0x08, 0x00, 0x08, 0x10, 0x00, 0x02, 0x07, 0xfe, 0x08, 0x12, 0x00, 0x02, + 0x08, 0x00, 0x08, 0x14, 0x00, 0x02, 0x08, 0x02, 0x00, 0x02, 0x00, 0x06, + 0x01, 0x47, 0x01, 0x47, 0x00, 0x00, 0x07, 0xfa, 0x07, 0xfa, 0x00, 0x01, + 0x07, 0xfc, 0x07, 0xfc, 0x00, 0x02, 0x09, 0x26, 0x09, 0x27, 0x00, 0x03, + 0x0a, 0x31, 0x0a, 0x32, 0x00, 0x05, 0x0a, 0x34, 0x0a, 0x34, 0x00, 0x07, + 0x00, 0x03, 0x00, 0x01, 0x02, 0x20, 0x00, 0x01, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x57, 0x02, 0x49, + 0x02, 0x49, 0x00, 0x00, 0x02, 0xc5, 0x02, 0xc5, 0x00, 0x01, 0x02, 0xc7, + 0x02, 0xc7, 0x00, 0x02, 0x02, 0xc9, 0x02, 0xc9, 0x00, 0x03, 0x02, 0xcb, + 0x02, 0xcb, 0x00, 0x04, 0x02, 0xcd, 0x02, 0xcd, 0x00, 0x05, 0x02, 0xcf, + 0x02, 0xcf, 0x00, 0x06, 0x02, 0xd1, 0x02, 0xd1, 0x00, 0x07, 0x02, 0xd3, + 0x02, 0xd3, 0x00, 0x08, 0x02, 0xd5, 0x02, 0xd5, 0x00, 0x09, 0x03, 0xba, + 0x03, 0xba, 0x00, 0x0a, 0x03, 0xbc, 0x03, 0xbc, 0x00, 0x0b, 0x03, 0xbe, + 0x03, 0xbe, 0x00, 0x0c, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x0d, 0x03, 0xc2, + 0x03, 0xc2, 0x00, 0x0e, 0x03, 0xc4, 0x03, 0xc4, 0x00, 0x0f, 0x03, 0xc6, + 0x03, 0xc6, 0x00, 0x10, 0x03, 0xc8, 0x03, 0xc8, 0x00, 0x11, 0x03, 0xca, + 0x03, 0xca, 0x00, 0x12, 0x03, 0xd0, 0x03, 0xd0, 0x00, 0x13, 0x03, 0xe6, + 0x03, 0xe6, 0x00, 0x14, 0x03, 0xe8, 0x03, 0xe8, 0x00, 0x15, 0x03, 0xea, + 0x03, 0xea, 0x00, 0x16, 0x03, 0xec, 0x03, 0xec, 0x00, 0x17, 0x03, 0xee, + 0x03, 0xee, 0x00, 0x18, 0x03, 0xf4, 0x03, 0xf4, 0x00, 0x19, 0x03, 0xf6, + 0x03, 0xf6, 0x00, 0x1a, 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x1b, 0x03, 0xfa, + 0x03, 0xfa, 0x00, 0x1c, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x1d, 0x03, 0xfe, + 0x03, 0xfe, 0x00, 0x1e, 0x04, 0x03, 0x04, 0x03, 0x00, 0x1f, 0x04, 0x05, + 0x04, 0x05, 0x00, 0x20, 0x04, 0x07, 0x04, 0x07, 0x00, 0x21, 0x04, 0x0c, + 0x04, 0x0c, 0x00, 0x22, 0x04, 0x0e, 0x04, 0x0e, 0x00, 0x23, 0x04, 0x10, + 0x04, 0x10, 0x00, 0x24, 0x04, 0x16, 0x04, 0x16, 0x00, 0x25, 0x04, 0x18, + 0x04, 0x18, 0x00, 0x26, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x27, 0x04, 0x1f, + 0x04, 0x1f, 0x00, 0x28, 0x04, 0x21, 0x04, 0x21, 0x00, 0x29, 0x04, 0x24, + 0x04, 0x24, 0x00, 0x2a, 0x04, 0x26, 0x04, 0x26, 0x00, 0x2b, 0x04, 0x29, + 0x04, 0x29, 0x00, 0x2c, 0x04, 0x2b, 0x04, 0x2b, 0x00, 0x2d, 0x04, 0x2d, + 0x04, 0x2d, 0x00, 0x2e, 0x04, 0x2f, 0x04, 0x2f, 0x00, 0x2f, 0x04, 0x31, + 0x04, 0x31, 0x00, 0x30, 0x04, 0x33, 0x04, 0x33, 0x00, 0x31, 0x04, 0x35, + 0x04, 0x35, 0x00, 0x32, 0x04, 0x37, 0x04, 0x37, 0x00, 0x33, 0x04, 0x39, + 0x04, 0x39, 0x00, 0x34, 0x04, 0x3b, 0x04, 0x3b, 0x00, 0x35, 0x04, 0x3d, + 0x04, 0x3d, 0x00, 0x36, 0x04, 0x3f, 0x04, 0x3f, 0x00, 0x37, 0x04, 0x41, + 0x04, 0x41, 0x00, 0x38, 0x04, 0x43, 0x04, 0x43, 0x00, 0x39, 0x04, 0x45, + 0x04, 0x45, 0x00, 0x3a, 0x04, 0x49, 0x04, 0x49, 0x00, 0x3b, 0x04, 0x4b, + 0x04, 0x4b, 0x00, 0x3c, 0x04, 0x4d, 0x04, 0x4d, 0x00, 0x3d, 0x04, 0x4f, + 0x04, 0x4f, 0x00, 0x3e, 0x04, 0x51, 0x04, 0x51, 0x00, 0x3f, 0x04, 0x53, + 0x04, 0x53, 0x00, 0x40, 0x04, 0x56, 0x04, 0x56, 0x00, 0x41, 0x07, 0xfa, + 0x07, 0xfa, 0x00, 0x42, 0x07, 0xfc, 0x07, 0xfc, 0x00, 0x43, 0x07, 0xfe, + 0x07, 0xfe, 0x00, 0x44, 0x08, 0x00, 0x08, 0x00, 0x00, 0x45, 0x08, 0x02, + 0x08, 0x02, 0x00, 0x46, 0x08, 0x04, 0x08, 0x04, 0x00, 0x47, 0x08, 0x06, + 0x08, 0x06, 0x00, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x49, 0x08, 0x0a, + 0x08, 0x0a, 0x00, 0x4a, 0x08, 0x0c, 0x08, 0x0c, 0x00, 0x4b, 0x08, 0x0e, + 0x08, 0x0e, 0x00, 0x4c, 0x08, 0x10, 0x08, 0x10, 0x00, 0x4d, 0x08, 0x12, + 0x08, 0x12, 0x00, 0x4e, 0x08, 0x14, 0x08, 0x14, 0x00, 0x4f, 0x08, 0x18, + 0x08, 0x18, 0x00, 0x50, 0x08, 0x26, 0x08, 0x26, 0x00, 0x51, 0x0a, 0x04, + 0x0a, 0x04, 0x00, 0x52, 0x0a, 0x06, 0x0a, 0x06, 0x00, 0x53, 0x0a, 0x08, + 0x0a, 0x08, 0x00, 0x54, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x55, 0x0a, 0x2d, + 0x0a, 0x37, 0x00, 0x56, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x04, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x84, 0x00, 0x84, 0x00, 0x7f, 0x00, 0x86, 0x00, 0x86, + 0x00, 0x80, 0x00, 0x88, 0x00, 0x88, 0x00, 0x81, 0x00, 0x8a, 0x00, 0x8a, + 0x00, 0x82, 0x00, 0x8d, 0x00, 0x8e, 0x00, 0x83, 0x00, 0xae, 0x00, 0xb0, + 0x00, 0x85, 0x00, 0xc0, 0x00, 0xc1, 0x00, 0x88, 0x00, 0xce, 0x00, 0xce, + 0x00, 0x8a, 0x00, 0xd1, 0x00, 0xd4, 0x00, 0x8b, 0x00, 0xe6, 0x00, 0xe6, + 0x00, 0x8f, 0x00, 0xef, 0x00, 0xf0, 0x00, 0x90, 0x01, 0x3d, 0x01, 0x3d, + 0x00, 0x92, 0x01, 0x3f, 0x01, 0x3f, 0x00, 0x93, 0x01, 0x41, 0x01, 0x41, + 0x00, 0x94, 0x01, 0x43, 0x01, 0x43, 0x00, 0x95, 0x01, 0x46, 0x01, 0x46, + 0x00, 0x96, 0x01, 0x48, 0x01, 0x48, 0x00, 0x97, 0x01, 0x4a, 0x01, 0x4a, + 0x00, 0x98, 0x01, 0x4c, 0x01, 0x4c, 0x00, 0x99, 0x01, 0x4e, 0x01, 0x4e, + 0x00, 0x9a, 0x01, 0x51, 0x01, 0x51, 0x00, 0x9b, 0x01, 0x53, 0x01, 0x53, + 0x00, 0x9c, 0x01, 0x90, 0x01, 0xb0, 0x00, 0x9d, 0x01, 0xb2, 0x01, 0xb3, + 0x00, 0xbe, 0x01, 0xb5, 0x01, 0xb5, 0x00, 0xc0, 0x01, 0xb7, 0x01, 0xb7, + 0x00, 0xc1, 0x01, 0xb9, 0x01, 0xba, 0x00, 0xc2, 0x01, 0xbd, 0x01, 0xbd, + 0x00, 0xc4, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xc5, 0x01, 0xc8, 0x01, 0xc8, + 0x00, 0xc6, 0x01, 0xcb, 0x01, 0xcb, 0x00, 0xc7, 0x01, 0xe0, 0x02, 0x13, + 0x00, 0xc8, 0x02, 0x15, 0x02, 0x15, 0x00, 0xfc, 0x02, 0x28, 0x02, 0x28, + 0x00, 0xfd, 0x02, 0x36, 0x02, 0x36, 0x00, 0xfe, 0x02, 0x42, 0x02, 0x42, + 0x00, 0xff, 0x02, 0x45, 0x02, 0x45, 0x01, 0x00, 0x02, 0x48, 0x02, 0x48, + 0x01, 0x01, 0x02, 0x4a, 0x02, 0x4a, 0x01, 0x02, 0x02, 0xc6, 0x02, 0xc6, + 0x01, 0x03, 0x02, 0xc8, 0x02, 0xc8, 0x01, 0x04, 0x02, 0xca, 0x02, 0xca, + 0x01, 0x05, 0x02, 0xcc, 0x02, 0xcc, 0x01, 0x06, 0x02, 0xce, 0x02, 0xce, + 0x01, 0x07, 0x02, 0xd0, 0x02, 0xd0, 0x01, 0x08, 0x02, 0xd2, 0x02, 0xd2, + 0x01, 0x09, 0x02, 0xd4, 0x02, 0xd4, 0x01, 0x0a, 0x02, 0xd6, 0x02, 0xd6, + 0x01, 0x0b, 0x03, 0xbb, 0x03, 0xbb, 0x01, 0x0c, 0x03, 0xbd, 0x03, 0xbd, + 0x01, 0x0d, 0x03, 0xbf, 0x03, 0xbf, 0x01, 0x0e, 0x03, 0xc1, 0x03, 0xc1, + 0x01, 0x0f, 0x03, 0xc3, 0x03, 0xc3, 0x01, 0x10, 0x03, 0xc5, 0x03, 0xc5, + 0x01, 0x11, 0x03, 0xc7, 0x03, 0xc7, 0x01, 0x12, 0x03, 0xc9, 0x03, 0xc9, + 0x01, 0x13, 0x03, 0xcb, 0x03, 0xcb, 0x01, 0x14, 0x03, 0xd1, 0x03, 0xd1, + 0x01, 0x15, 0x03, 0xe7, 0x03, 0xe7, 0x01, 0x16, 0x03, 0xe9, 0x03, 0xe9, + 0x01, 0x17, 0x03, 0xeb, 0x03, 0xeb, 0x01, 0x18, 0x03, 0xed, 0x03, 0xed, + 0x01, 0x19, 0x03, 0xef, 0x03, 0xef, 0x01, 0x1a, 0x03, 0xf5, 0x03, 0xf5, + 0x01, 0x1b, 0x03, 0xf7, 0x03, 0xf7, 0x01, 0x1c, 0x03, 0xf9, 0x03, 0xf9, + 0x01, 0x1d, 0x03, 0xfb, 0x03, 0xfb, 0x01, 0x1e, 0x03, 0xfd, 0x03, 0xfd, + 0x01, 0x1f, 0x03, 0xff, 0x03, 0xff, 0x01, 0x20, 0x04, 0x04, 0x04, 0x04, + 0x01, 0x21, 0x04, 0x06, 0x04, 0x06, 0x01, 0x22, 0x04, 0x08, 0x04, 0x08, + 0x01, 0x23, 0x04, 0x0d, 0x04, 0x0d, 0x01, 0x24, 0x04, 0x0f, 0x04, 0x0f, + 0x01, 0x25, 0x04, 0x11, 0x04, 0x11, 0x01, 0x26, 0x04, 0x17, 0x04, 0x17, + 0x01, 0x27, 0x04, 0x19, 0x04, 0x19, 0x01, 0x28, 0x04, 0x1d, 0x04, 0x1d, + 0x01, 0x29, 0x04, 0x20, 0x04, 0x20, 0x01, 0x2a, 0x04, 0x22, 0x04, 0x22, + 0x01, 0x2b, 0x04, 0x25, 0x04, 0x25, 0x01, 0x2c, 0x04, 0x27, 0x04, 0x27, + 0x01, 0x2d, 0x04, 0x2a, 0x04, 0x2a, 0x01, 0x2e, 0x04, 0x2c, 0x04, 0x2c, + 0x01, 0x2f, 0x04, 0x2e, 0x04, 0x2e, 0x01, 0x30, 0x04, 0x30, 0x04, 0x30, + 0x01, 0x31, 0x04, 0x32, 0x04, 0x32, 0x01, 0x32, 0x04, 0x34, 0x04, 0x34, + 0x01, 0x33, 0x04, 0x36, 0x04, 0x36, 0x01, 0x34, 0x04, 0x38, 0x04, 0x38, + 0x01, 0x35, 0x04, 0x3a, 0x04, 0x3a, 0x01, 0x36, 0x04, 0x3c, 0x04, 0x3c, + 0x01, 0x37, 0x04, 0x3e, 0x04, 0x3e, 0x01, 0x38, 0x04, 0x40, 0x04, 0x40, + 0x01, 0x39, 0x04, 0x42, 0x04, 0x42, 0x01, 0x3a, 0x04, 0x44, 0x04, 0x44, + 0x01, 0x3b, 0x04, 0x46, 0x04, 0x46, 0x01, 0x3c, 0x04, 0x4a, 0x04, 0x4a, + 0x01, 0x3d, 0x04, 0x4c, 0x04, 0x4c, 0x01, 0x3e, 0x04, 0x4e, 0x04, 0x4e, + 0x01, 0x3f, 0x04, 0x50, 0x04, 0x50, 0x01, 0x40, 0x04, 0x52, 0x04, 0x52, + 0x01, 0x41, 0x04, 0x54, 0x04, 0x54, 0x01, 0x42, 0x04, 0x57, 0x04, 0x57, + 0x01, 0x43, 0x07, 0xfb, 0x07, 0xfb, 0x01, 0x44, 0x07, 0xfd, 0x07, 0xfd, + 0x01, 0x45, 0x07, 0xff, 0x07, 0xff, 0x01, 0x46, 0x08, 0x01, 0x08, 0x01, + 0x01, 0x47, 0x08, 0x03, 0x08, 0x03, 0x01, 0x48, 0x08, 0x05, 0x08, 0x05, + 0x01, 0x49, 0x08, 0x07, 0x08, 0x07, 0x01, 0x4a, 0x08, 0x09, 0x08, 0x09, + 0x01, 0x4b, 0x08, 0x0b, 0x08, 0x0b, 0x01, 0x4c, 0x08, 0x0d, 0x08, 0x0d, + 0x01, 0x4d, 0x08, 0x0f, 0x08, 0x0f, 0x01, 0x4e, 0x08, 0x11, 0x08, 0x11, + 0x01, 0x4f, 0x08, 0x13, 0x08, 0x13, 0x01, 0x50, 0x08, 0x15, 0x08, 0x15, + 0x01, 0x51, 0x08, 0x19, 0x08, 0x19, 0x01, 0x52, 0x08, 0x27, 0x08, 0x27, + 0x01, 0x53, 0x0a, 0x05, 0x0a, 0x05, 0x01, 0x54, 0x0a, 0x07, 0x0a, 0x07, + 0x01, 0x55, 0x0a, 0x09, 0x0a, 0x09, 0x01, 0x56, 0x0a, 0x0b, 0x0a, 0x0b, + 0x01, 0x57, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x12, 0x00, 0x01, + 0x00, 0x34, 0x00, 0x01, 0x00, 0x00, 0x00, 0x21, 0x00, 0x02, 0x00, 0x05, + 0x00, 0x8b, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0x01, + 0x03, 0x1a, 0x03, 0x1a, 0x00, 0x02, 0x05, 0x99, 0x05, 0x99, 0x00, 0x03, + 0x06, 0x0f, 0x06, 0x0f, 0x00, 0x04, 0x00, 0x02, 0x00, 0x57, 0x02, 0x49, + 0x02, 0x49, 0x00, 0x00, 0x02, 0xc5, 0x02, 0xc5, 0x00, 0x01, 0x02, 0xc7, + 0x02, 0xc7, 0x00, 0x02, 0x02, 0xc9, 0x02, 0xc9, 0x00, 0x03, 0x02, 0xcb, + 0x02, 0xcb, 0x00, 0x04, 0x02, 0xcd, 0x02, 0xcd, 0x00, 0x05, 0x02, 0xcf, + 0x02, 0xcf, 0x00, 0x06, 0x02, 0xd1, 0x02, 0xd1, 0x00, 0x07, 0x02, 0xd3, + 0x02, 0xd3, 0x00, 0x08, 0x02, 0xd5, 0x02, 0xd5, 0x00, 0x09, 0x03, 0xba, + 0x03, 0xba, 0x00, 0x0a, 0x03, 0xbc, 0x03, 0xbc, 0x00, 0x0b, 0x03, 0xbe, + 0x03, 0xbe, 0x00, 0x0c, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x0d, 0x03, 0xc2, + 0x03, 0xc2, 0x00, 0x0e, 0x03, 0xc4, 0x03, 0xc4, 0x00, 0x0f, 0x03, 0xc6, + 0x03, 0xc6, 0x00, 0x10, 0x03, 0xc8, 0x03, 0xc8, 0x00, 0x11, 0x03, 0xca, + 0x03, 0xca, 0x00, 0x12, 0x03, 0xd0, 0x03, 0xd0, 0x00, 0x13, 0x03, 0xe6, + 0x03, 0xe6, 0x00, 0x14, 0x03, 0xe8, 0x03, 0xe8, 0x00, 0x15, 0x03, 0xea, + 0x03, 0xea, 0x00, 0x16, 0x03, 0xec, 0x03, 0xec, 0x00, 0x17, 0x03, 0xee, + 0x03, 0xee, 0x00, 0x18, 0x03, 0xf4, 0x03, 0xf4, 0x00, 0x19, 0x03, 0xf6, + 0x03, 0xf6, 0x00, 0x1a, 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x1b, 0x03, 0xfa, + 0x03, 0xfa, 0x00, 0x1c, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x1d, 0x03, 0xfe, + 0x03, 0xfe, 0x00, 0x1e, 0x04, 0x03, 0x04, 0x03, 0x00, 0x1f, 0x04, 0x05, + 0x04, 0x05, 0x00, 0x20, 0x04, 0x07, 0x04, 0x07, 0x00, 0x21, 0x04, 0x0c, + 0x04, 0x0c, 0x00, 0x22, 0x04, 0x0e, 0x04, 0x0e, 0x00, 0x23, 0x04, 0x10, + 0x04, 0x10, 0x00, 0x24, 0x04, 0x16, 0x04, 0x16, 0x00, 0x25, 0x04, 0x18, + 0x04, 0x18, 0x00, 0x26, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x27, 0x04, 0x1f, + 0x04, 0x1f, 0x00, 0x28, 0x04, 0x21, 0x04, 0x21, 0x00, 0x29, 0x04, 0x24, + 0x04, 0x24, 0x00, 0x2a, 0x04, 0x26, 0x04, 0x26, 0x00, 0x2b, 0x04, 0x29, + 0x04, 0x29, 0x00, 0x2c, 0x04, 0x2b, 0x04, 0x2b, 0x00, 0x2d, 0x04, 0x2d, + 0x04, 0x2d, 0x00, 0x2e, 0x04, 0x2f, 0x04, 0x2f, 0x00, 0x2f, 0x04, 0x31, + 0x04, 0x31, 0x00, 0x30, 0x04, 0x33, 0x04, 0x33, 0x00, 0x31, 0x04, 0x35, + 0x04, 0x35, 0x00, 0x32, 0x04, 0x37, 0x04, 0x37, 0x00, 0x33, 0x04, 0x39, + 0x04, 0x39, 0x00, 0x34, 0x04, 0x3b, 0x04, 0x3b, 0x00, 0x35, 0x04, 0x3d, + 0x04, 0x3d, 0x00, 0x36, 0x04, 0x3f, 0x04, 0x3f, 0x00, 0x37, 0x04, 0x41, + 0x04, 0x41, 0x00, 0x38, 0x04, 0x43, 0x04, 0x43, 0x00, 0x39, 0x04, 0x45, + 0x04, 0x45, 0x00, 0x3a, 0x04, 0x49, 0x04, 0x49, 0x00, 0x3b, 0x04, 0x4b, + 0x04, 0x4b, 0x00, 0x3c, 0x04, 0x4d, 0x04, 0x4d, 0x00, 0x3d, 0x04, 0x4f, + 0x04, 0x4f, 0x00, 0x3e, 0x04, 0x51, 0x04, 0x51, 0x00, 0x3f, 0x04, 0x53, + 0x04, 0x53, 0x00, 0x40, 0x04, 0x56, 0x04, 0x56, 0x00, 0x41, 0x07, 0xfa, + 0x07, 0xfa, 0x00, 0x42, 0x07, 0xfc, 0x07, 0xfc, 0x00, 0x43, 0x07, 0xfe, + 0x07, 0xfe, 0x00, 0x44, 0x08, 0x00, 0x08, 0x00, 0x00, 0x45, 0x08, 0x02, + 0x08, 0x02, 0x00, 0x46, 0x08, 0x04, 0x08, 0x04, 0x00, 0x47, 0x08, 0x06, + 0x08, 0x06, 0x00, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x49, 0x08, 0x0a, + 0x08, 0x0a, 0x00, 0x4a, 0x08, 0x0c, 0x08, 0x0c, 0x00, 0x4b, 0x08, 0x0e, + 0x08, 0x0e, 0x00, 0x4c, 0x08, 0x10, 0x08, 0x10, 0x00, 0x4d, 0x08, 0x12, + 0x08, 0x12, 0x00, 0x4e, 0x08, 0x14, 0x08, 0x14, 0x00, 0x4f, 0x08, 0x18, + 0x08, 0x18, 0x00, 0x50, 0x08, 0x26, 0x08, 0x26, 0x00, 0x51, 0x0a, 0x04, + 0x0a, 0x04, 0x00, 0x52, 0x0a, 0x06, 0x0a, 0x06, 0x00, 0x53, 0x0a, 0x08, + 0x0a, 0x08, 0x00, 0x54, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x55, 0x0a, 0x2d, + 0x0a, 0x37, 0x00, 0x56, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x12, + 0x00, 0x01, 0x00, 0x1a, 0x00, 0x01, 0x00, 0x00, 0x00, 0x22, 0x00, 0x01, + 0x00, 0x02, 0x00, 0x8c, 0x05, 0x70, 0x00, 0x02, 0x00, 0x57, 0x02, 0x49, + 0x02, 0x49, 0x00, 0x00, 0x02, 0xc5, 0x02, 0xc5, 0x00, 0x01, 0x02, 0xc7, + 0x02, 0xc7, 0x00, 0x02, 0x02, 0xc9, 0x02, 0xc9, 0x00, 0x03, 0x02, 0xcb, + 0x02, 0xcb, 0x00, 0x04, 0x02, 0xcd, 0x02, 0xcd, 0x00, 0x05, 0x02, 0xcf, + 0x02, 0xcf, 0x00, 0x06, 0x02, 0xd1, 0x02, 0xd1, 0x00, 0x07, 0x02, 0xd3, + 0x02, 0xd3, 0x00, 0x08, 0x02, 0xd5, 0x02, 0xd5, 0x00, 0x09, 0x03, 0xba, + 0x03, 0xba, 0x00, 0x0a, 0x03, 0xbc, 0x03, 0xbc, 0x00, 0x0b, 0x03, 0xbe, + 0x03, 0xbe, 0x00, 0x0c, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x0d, 0x03, 0xc2, + 0x03, 0xc2, 0x00, 0x0e, 0x03, 0xc4, 0x03, 0xc4, 0x00, 0x0f, 0x03, 0xc6, + 0x03, 0xc6, 0x00, 0x10, 0x03, 0xc8, 0x03, 0xc8, 0x00, 0x11, 0x03, 0xca, + 0x03, 0xca, 0x00, 0x12, 0x03, 0xd0, 0x03, 0xd0, 0x00, 0x13, 0x03, 0xe6, + 0x03, 0xe6, 0x00, 0x14, 0x03, 0xe8, 0x03, 0xe8, 0x00, 0x15, 0x03, 0xea, + 0x03, 0xea, 0x00, 0x16, 0x03, 0xec, 0x03, 0xec, 0x00, 0x17, 0x03, 0xee, + 0x03, 0xee, 0x00, 0x18, 0x03, 0xf4, 0x03, 0xf4, 0x00, 0x19, 0x03, 0xf6, + 0x03, 0xf6, 0x00, 0x1a, 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x1b, 0x03, 0xfa, + 0x03, 0xfa, 0x00, 0x1c, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x1d, 0x03, 0xfe, + 0x03, 0xfe, 0x00, 0x1e, 0x04, 0x03, 0x04, 0x03, 0x00, 0x1f, 0x04, 0x05, + 0x04, 0x05, 0x00, 0x20, 0x04, 0x07, 0x04, 0x07, 0x00, 0x21, 0x04, 0x0c, + 0x04, 0x0c, 0x00, 0x22, 0x04, 0x0e, 0x04, 0x0e, 0x00, 0x23, 0x04, 0x10, + 0x04, 0x10, 0x00, 0x24, 0x04, 0x16, 0x04, 0x16, 0x00, 0x25, 0x04, 0x18, + 0x04, 0x18, 0x00, 0x26, 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x27, 0x04, 0x1f, + 0x04, 0x1f, 0x00, 0x28, 0x04, 0x21, 0x04, 0x21, 0x00, 0x29, 0x04, 0x24, + 0x04, 0x24, 0x00, 0x2a, 0x04, 0x26, 0x04, 0x26, 0x00, 0x2b, 0x04, 0x29, + 0x04, 0x29, 0x00, 0x2c, 0x04, 0x2b, 0x04, 0x2b, 0x00, 0x2d, 0x04, 0x2d, + 0x04, 0x2d, 0x00, 0x2e, 0x04, 0x2f, 0x04, 0x2f, 0x00, 0x2f, 0x04, 0x31, + 0x04, 0x31, 0x00, 0x30, 0x04, 0x33, 0x04, 0x33, 0x00, 0x31, 0x04, 0x35, + 0x04, 0x35, 0x00, 0x32, 0x04, 0x37, 0x04, 0x37, 0x00, 0x33, 0x04, 0x39, + 0x04, 0x39, 0x00, 0x34, 0x04, 0x3b, 0x04, 0x3b, 0x00, 0x35, 0x04, 0x3d, + 0x04, 0x3d, 0x00, 0x36, 0x04, 0x3f, 0x04, 0x3f, 0x00, 0x37, 0x04, 0x41, + 0x04, 0x41, 0x00, 0x38, 0x04, 0x43, 0x04, 0x43, 0x00, 0x39, 0x04, 0x45, + 0x04, 0x45, 0x00, 0x3a, 0x04, 0x49, 0x04, 0x49, 0x00, 0x3b, 0x04, 0x4b, + 0x04, 0x4b, 0x00, 0x3c, 0x04, 0x4d, 0x04, 0x4d, 0x00, 0x3d, 0x04, 0x4f, + 0x04, 0x4f, 0x00, 0x3e, 0x04, 0x51, 0x04, 0x51, 0x00, 0x3f, 0x04, 0x53, + 0x04, 0x53, 0x00, 0x40, 0x04, 0x56, 0x04, 0x56, 0x00, 0x41, 0x07, 0xfa, + 0x07, 0xfa, 0x00, 0x42, 0x07, 0xfc, 0x07, 0xfc, 0x00, 0x43, 0x07, 0xfe, + 0x07, 0xfe, 0x00, 0x44, 0x08, 0x00, 0x08, 0x00, 0x00, 0x45, 0x08, 0x02, + 0x08, 0x02, 0x00, 0x46, 0x08, 0x04, 0x08, 0x04, 0x00, 0x47, 0x08, 0x06, + 0x08, 0x06, 0x00, 0x48, 0x08, 0x08, 0x08, 0x08, 0x00, 0x49, 0x08, 0x0a, + 0x08, 0x0a, 0x00, 0x4a, 0x08, 0x0c, 0x08, 0x0c, 0x00, 0x4b, 0x08, 0x0e, + 0x08, 0x0e, 0x00, 0x4c, 0x08, 0x10, 0x08, 0x10, 0x00, 0x4d, 0x08, 0x12, + 0x08, 0x12, 0x00, 0x4e, 0x08, 0x14, 0x08, 0x14, 0x00, 0x4f, 0x08, 0x18, + 0x08, 0x18, 0x00, 0x50, 0x08, 0x26, 0x08, 0x26, 0x00, 0x51, 0x0a, 0x04, + 0x0a, 0x04, 0x00, 0x52, 0x0a, 0x06, 0x0a, 0x06, 0x00, 0x53, 0x0a, 0x08, + 0x0a, 0x08, 0x00, 0x54, 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x55, 0x0a, 0x2d, + 0x0a, 0x37, 0x00, 0x56, 0x00, 0x01, 0x05, 0x6a, 0x00, 0x05, 0x00, 0x10, + 0x01, 0x22, 0x02, 0x34, 0x03, 0x46, 0x04, 0x58, 0x00, 0x1c, 0x00, 0x3a, + 0x00, 0x42, 0x00, 0x4a, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x62, 0x00, 0x6a, + 0x00, 0x72, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x92, 0x00, 0x9a, + 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xba, 0x00, 0xc2, 0x00, 0xca, + 0x00, 0xd2, 0x00, 0xda, 0x00, 0xe2, 0x00, 0xea, 0x00, 0xf2, 0x00, 0xfa, + 0x01, 0x00, 0x01, 0x06, 0x01, 0x0c, 0x07, 0x4d, 0x00, 0x03, 0x07, 0x48, + 0x07, 0x49, 0x07, 0x4e, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4a, 0x07, 0x4f, + 0x00, 0x03, 0x07, 0x48, 0x07, 0x4b, 0x07, 0x50, 0x00, 0x03, 0x07, 0x48, + 0x07, 0x4c, 0x07, 0x52, 0x00, 0x03, 0x07, 0x49, 0x07, 0x48, 0x07, 0x53, + 0x00, 0x03, 0x07, 0x49, 0x07, 0x49, 0x07, 0x54, 0x00, 0x03, 0x07, 0x49, + 0x07, 0x4a, 0x07, 0x55, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4b, 0x07, 0x56, + 0x00, 0x03, 0x07, 0x49, 0x07, 0x4c, 0x07, 0x58, 0x00, 0x03, 0x07, 0x4a, + 0x07, 0x48, 0x07, 0x59, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x49, 0x07, 0x5a, + 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4a, 0x07, 0x5b, 0x00, 0x03, 0x07, 0x4a, + 0x07, 0x4b, 0x07, 0x5c, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4c, 0x07, 0x5e, + 0x00, 0x03, 0x07, 0x4b, 0x07, 0x48, 0x07, 0x5f, 0x00, 0x03, 0x07, 0x4b, + 0x07, 0x49, 0x07, 0x60, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4a, 0x07, 0x61, + 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4b, 0x07, 0x62, 0x00, 0x03, 0x07, 0x4b, + 0x07, 0x4c, 0x07, 0x64, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x48, 0x07, 0x65, + 0x00, 0x03, 0x07, 0x4c, 0x07, 0x49, 0x07, 0x66, 0x00, 0x03, 0x07, 0x4c, + 0x07, 0x4a, 0x07, 0x67, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4b, 0x07, 0x68, + 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4c, 0x07, 0x51, 0x00, 0x02, 0x07, 0x49, + 0x07, 0x57, 0x00, 0x02, 0x07, 0x4a, 0x07, 0x5d, 0x00, 0x02, 0x07, 0x4b, + 0x07, 0x63, 0x00, 0x02, 0x07, 0x4c, 0x00, 0x1c, 0x00, 0x3a, 0x00, 0x42, + 0x00, 0x4a, 0x00, 0x52, 0x00, 0x5a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x72, + 0x00, 0x7a, 0x00, 0x82, 0x00, 0x8a, 0x00, 0x92, 0x00, 0x9a, 0x00, 0xa2, + 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xba, 0x00, 0xc2, 0x00, 0xca, 0x00, 0xd2, + 0x00, 0xda, 0x00, 0xe2, 0x00, 0xea, 0x00, 0xf2, 0x00, 0xfa, 0x01, 0x00, + 0x01, 0x06, 0x01, 0x0c, 0x07, 0x6a, 0x00, 0x03, 0x07, 0x48, 0x07, 0x48, + 0x07, 0x6b, 0x00, 0x03, 0x07, 0x48, 0x07, 0x49, 0x07, 0x6c, 0x00, 0x03, + 0x07, 0x48, 0x07, 0x4a, 0x07, 0x6d, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4b, + 0x07, 0x6e, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4c, 0x07, 0x6f, 0x00, 0x03, + 0x07, 0x49, 0x07, 0x48, 0x07, 0x70, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4a, + 0x07, 0x71, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4b, 0x07, 0x72, 0x00, 0x03, + 0x07, 0x49, 0x07, 0x4c, 0x07, 0x74, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x48, + 0x07, 0x75, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x49, 0x07, 0x76, 0x00, 0x03, + 0x07, 0x4a, 0x07, 0x4a, 0x07, 0x77, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4b, + 0x07, 0x78, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4c, 0x07, 0x7a, 0x00, 0x03, + 0x07, 0x4b, 0x07, 0x48, 0x07, 0x7b, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x49, + 0x07, 0x7c, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4a, 0x07, 0x7d, 0x00, 0x03, + 0x07, 0x4b, 0x07, 0x4b, 0x07, 0x7e, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4c, + 0x07, 0x80, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x48, 0x07, 0x81, 0x00, 0x03, + 0x07, 0x4c, 0x07, 0x49, 0x07, 0x82, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4a, + 0x07, 0x83, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4b, 0x07, 0x84, 0x00, 0x03, + 0x07, 0x4c, 0x07, 0x4c, 0x07, 0x69, 0x00, 0x02, 0x07, 0x48, 0x07, 0x73, + 0x00, 0x02, 0x07, 0x4a, 0x07, 0x79, 0x00, 0x02, 0x07, 0x4b, 0x07, 0x7f, + 0x00, 0x02, 0x07, 0x4c, 0x00, 0x1c, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x4a, + 0x00, 0x52, 0x00, 0x5a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x72, 0x00, 0x7a, + 0x00, 0x82, 0x00, 0x8a, 0x00, 0x92, 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xaa, + 0x00, 0xb2, 0x00, 0xba, 0x00, 0xc2, 0x00, 0xca, 0x00, 0xd2, 0x00, 0xda, + 0x00, 0xe2, 0x00, 0xea, 0x00, 0xf2, 0x00, 0xfa, 0x01, 0x00, 0x01, 0x06, + 0x01, 0x0c, 0x07, 0x86, 0x00, 0x03, 0x07, 0x48, 0x07, 0x48, 0x07, 0x87, + 0x00, 0x03, 0x07, 0x48, 0x07, 0x49, 0x07, 0x88, 0x00, 0x03, 0x07, 0x48, + 0x07, 0x4a, 0x07, 0x89, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4b, 0x07, 0x8a, + 0x00, 0x03, 0x07, 0x48, 0x07, 0x4c, 0x07, 0x8c, 0x00, 0x03, 0x07, 0x49, + 0x07, 0x48, 0x07, 0x8d, 0x00, 0x03, 0x07, 0x49, 0x07, 0x49, 0x07, 0x8e, + 0x00, 0x03, 0x07, 0x49, 0x07, 0x4a, 0x07, 0x8f, 0x00, 0x03, 0x07, 0x49, + 0x07, 0x4b, 0x07, 0x90, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4c, 0x07, 0x91, + 0x00, 0x03, 0x07, 0x4a, 0x07, 0x48, 0x07, 0x92, 0x00, 0x03, 0x07, 0x4a, + 0x07, 0x49, 0x07, 0x93, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4b, 0x07, 0x94, + 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4c, 0x07, 0x96, 0x00, 0x03, 0x07, 0x4b, + 0x07, 0x48, 0x07, 0x97, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x49, 0x07, 0x98, + 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4a, 0x07, 0x99, 0x00, 0x03, 0x07, 0x4b, + 0x07, 0x4b, 0x07, 0x9a, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4c, 0x07, 0x9c, + 0x00, 0x03, 0x07, 0x4c, 0x07, 0x48, 0x07, 0x9d, 0x00, 0x03, 0x07, 0x4c, + 0x07, 0x49, 0x07, 0x9e, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4a, 0x07, 0x9f, + 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4b, 0x07, 0xa0, 0x00, 0x03, 0x07, 0x4c, + 0x07, 0x4c, 0x07, 0x85, 0x00, 0x02, 0x07, 0x48, 0x07, 0x8b, 0x00, 0x02, + 0x07, 0x49, 0x07, 0x95, 0x00, 0x02, 0x07, 0x4b, 0x07, 0x9b, 0x00, 0x02, + 0x07, 0x4c, 0x00, 0x1c, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x52, + 0x00, 0x5a, 0x00, 0x62, 0x00, 0x6a, 0x00, 0x72, 0x00, 0x7a, 0x00, 0x82, + 0x00, 0x8a, 0x00, 0x92, 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xb2, + 0x00, 0xba, 0x00, 0xc2, 0x00, 0xca, 0x00, 0xd2, 0x00, 0xda, 0x00, 0xe2, + 0x00, 0xea, 0x00, 0xf2, 0x00, 0xfa, 0x01, 0x00, 0x01, 0x06, 0x01, 0x0c, + 0x07, 0xa2, 0x00, 0x03, 0x07, 0x48, 0x07, 0x48, 0x07, 0xa3, 0x00, 0x03, + 0x07, 0x48, 0x07, 0x49, 0x07, 0xa4, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4a, + 0x07, 0xa5, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4b, 0x07, 0xa6, 0x00, 0x03, + 0x07, 0x48, 0x07, 0x4c, 0x07, 0xa8, 0x00, 0x03, 0x07, 0x49, 0x07, 0x48, + 0x07, 0xa9, 0x00, 0x03, 0x07, 0x49, 0x07, 0x49, 0x07, 0xaa, 0x00, 0x03, + 0x07, 0x49, 0x07, 0x4a, 0x07, 0xab, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4b, + 0x07, 0xac, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4c, 0x07, 0xae, 0x00, 0x03, + 0x07, 0x4a, 0x07, 0x48, 0x07, 0xaf, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x49, + 0x07, 0xb0, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4a, 0x07, 0xb1, 0x00, 0x03, + 0x07, 0x4a, 0x07, 0x4b, 0x07, 0xb2, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4c, + 0x07, 0xb3, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x48, 0x07, 0xb4, 0x00, 0x03, + 0x07, 0x4b, 0x07, 0x49, 0x07, 0xb5, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4a, + 0x07, 0xb6, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4c, 0x07, 0xb8, 0x00, 0x03, + 0x07, 0x4c, 0x07, 0x48, 0x07, 0xb9, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x49, + 0x07, 0xba, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4a, 0x07, 0xbb, 0x00, 0x03, + 0x07, 0x4c, 0x07, 0x4b, 0x07, 0xbc, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4c, + 0x07, 0xa1, 0x00, 0x02, 0x07, 0x48, 0x07, 0xa7, 0x00, 0x02, 0x07, 0x49, + 0x07, 0xad, 0x00, 0x02, 0x07, 0x4a, 0x07, 0xb7, 0x00, 0x02, 0x07, 0x4c, + 0x00, 0x1c, 0x00, 0x3a, 0x00, 0x42, 0x00, 0x4a, 0x00, 0x52, 0x00, 0x5a, + 0x00, 0x62, 0x00, 0x6a, 0x00, 0x72, 0x00, 0x7a, 0x00, 0x82, 0x00, 0x8a, + 0x00, 0x92, 0x00, 0x9a, 0x00, 0xa2, 0x00, 0xaa, 0x00, 0xb2, 0x00, 0xba, + 0x00, 0xc2, 0x00, 0xca, 0x00, 0xd2, 0x00, 0xda, 0x00, 0xe2, 0x00, 0xea, + 0x00, 0xf2, 0x00, 0xfa, 0x01, 0x00, 0x01, 0x06, 0x01, 0x0c, 0x07, 0xbe, + 0x00, 0x03, 0x07, 0x48, 0x07, 0x48, 0x07, 0xbf, 0x00, 0x03, 0x07, 0x48, + 0x07, 0x49, 0x07, 0xc0, 0x00, 0x03, 0x07, 0x48, 0x07, 0x4a, 0x07, 0xc1, + 0x00, 0x03, 0x07, 0x48, 0x07, 0x4b, 0x07, 0xc2, 0x00, 0x03, 0x07, 0x48, + 0x07, 0x4c, 0x07, 0xc4, 0x00, 0x03, 0x07, 0x49, 0x07, 0x48, 0x07, 0xc5, + 0x00, 0x03, 0x07, 0x49, 0x07, 0x49, 0x07, 0xc6, 0x00, 0x03, 0x07, 0x49, + 0x07, 0x4a, 0x07, 0xc7, 0x00, 0x03, 0x07, 0x49, 0x07, 0x4b, 0x07, 0xc8, + 0x00, 0x03, 0x07, 0x49, 0x07, 0x4c, 0x07, 0xca, 0x00, 0x03, 0x07, 0x4a, + 0x07, 0x48, 0x07, 0xcb, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x49, 0x07, 0xcc, + 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4a, 0x07, 0xcd, 0x00, 0x03, 0x07, 0x4a, + 0x07, 0x4b, 0x07, 0xce, 0x00, 0x03, 0x07, 0x4a, 0x07, 0x4c, 0x07, 0xd0, + 0x00, 0x03, 0x07, 0x4b, 0x07, 0x48, 0x07, 0xd1, 0x00, 0x03, 0x07, 0x4b, + 0x07, 0x49, 0x07, 0xd2, 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4a, 0x07, 0xd3, + 0x00, 0x03, 0x07, 0x4b, 0x07, 0x4b, 0x07, 0xd4, 0x00, 0x03, 0x07, 0x4b, + 0x07, 0x4c, 0x07, 0xd5, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x48, 0x07, 0xd6, + 0x00, 0x03, 0x07, 0x4c, 0x07, 0x49, 0x07, 0xd7, 0x00, 0x03, 0x07, 0x4c, + 0x07, 0x4a, 0x07, 0xd8, 0x00, 0x03, 0x07, 0x4c, 0x07, 0x4b, 0x07, 0xbd, + 0x00, 0x02, 0x07, 0x48, 0x07, 0xc3, 0x00, 0x02, 0x07, 0x49, 0x07, 0xc9, + 0x00, 0x02, 0x07, 0x4a, 0x07, 0xcf, 0x00, 0x02, 0x07, 0x4b, 0x00, 0x02, + 0x00, 0x01, 0x07, 0x48, 0x07, 0x4c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x2c, + 0x00, 0x13, 0x01, 0x5f, 0x01, 0x62, 0x01, 0x65, 0x01, 0x6f, 0x01, 0x70, + 0x01, 0x73, 0x01, 0x74, 0x01, 0x78, 0x01, 0x7a, 0x01, 0x7e, 0x01, 0x81, + 0x01, 0x82, 0x01, 0x85, 0x01, 0x86, 0x01, 0x89, 0x01, 0x8a, 0x01, 0xdc, + 0x02, 0x53, 0x09, 0xd0, 0x00, 0x02, 0x00, 0x0e, 0x01, 0x5e, 0x01, 0x5e, + 0x00, 0x00, 0x01, 0x61, 0x01, 0x61, 0x00, 0x01, 0x01, 0x64, 0x01, 0x64, + 0x00, 0x02, 0x01, 0x6d, 0x01, 0x6e, 0x00, 0x03, 0x01, 0x71, 0x01, 0x72, + 0x00, 0x05, 0x01, 0x77, 0x01, 0x77, 0x00, 0x07, 0x01, 0x79, 0x01, 0x79, + 0x00, 0x08, 0x01, 0x7d, 0x01, 0x7d, 0x00, 0x09, 0x01, 0x7f, 0x01, 0x80, + 0x00, 0x0a, 0x01, 0x83, 0x01, 0x84, 0x00, 0x0c, 0x01, 0x87, 0x01, 0x88, + 0x00, 0x0e, 0x01, 0xdb, 0x01, 0xdb, 0x00, 0x10, 0x02, 0x52, 0x02, 0x52, + 0x00, 0x11, 0x09, 0xcf, 0x09, 0xcf, 0x00, 0x12, 0x00, 0x02, 0x00, 0x1a, + 0x00, 0x0a, 0x02, 0x7d, 0x02, 0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, + 0x02, 0x82, 0x02, 0x83, 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, 0x00, 0x02, + 0x00, 0x02, 0x02, 0x65, 0x02, 0x65, 0x00, 0x00, 0x02, 0x68, 0x02, 0x70, + 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x18, 0x00, 0x01, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x01, 0x00, 0x01, + 0x01, 0x75, 0x00, 0x02, 0x00, 0x01, 0x02, 0x7d, 0x02, 0x86, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x01, 0x00, 0x1c, 0x00, 0x01, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x02, 0x00, 0x01, 0x02, 0x7d, + 0x02, 0x86, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, 0x01, 0x75, 0x01, 0x75, + 0x00, 0x00, 0x02, 0x9b, 0x02, 0xa5, 0x00, 0x01, 0x00, 0x02, 0x00, 0x1a, + 0x00, 0x0a, 0x02, 0x9b, 0x02, 0x9c, 0x02, 0x9d, 0x02, 0x9e, 0x02, 0x9f, + 0x02, 0xa0, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0xa3, 0x02, 0xa4, 0x00, 0x02, + 0x00, 0x02, 0x02, 0x65, 0x02, 0x65, 0x00, 0x00, 0x02, 0x68, 0x02, 0x70, + 0x00, 0x01, 0x00, 0x02, 0x00, 0x82, 0x00, 0x3e, 0x03, 0xa0, 0x03, 0xa1, + 0x03, 0xa2, 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0xa6, 0x03, 0xa7, + 0x03, 0xa8, 0x03, 0xa9, 0x03, 0xaa, 0x03, 0xab, 0x03, 0xac, 0x03, 0xad, + 0x03, 0xae, 0x03, 0xaf, 0x03, 0xb0, 0x03, 0xb1, 0x03, 0xb2, 0x03, 0xb3, + 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xb9, + 0x06, 0x9f, 0x06, 0xa3, 0x06, 0xf8, 0x06, 0xa4, 0x06, 0xa5, 0x06, 0xfc, + 0x06, 0xa9, 0x07, 0x1c, 0x07, 0x1e, 0x06, 0xab, 0x06, 0xac, 0x03, 0x3b, + 0x06, 0xae, 0x06, 0xb2, 0x07, 0x1f, 0x06, 0xb3, 0x06, 0xb4, 0x06, 0xb7, + 0x07, 0x23, 0x07, 0x24, 0x07, 0x17, 0x02, 0x8a, 0x02, 0x8b, 0x02, 0x7d, + 0x02, 0x7e, 0x02, 0x7f, 0x02, 0x80, 0x02, 0x81, 0x02, 0x82, 0x02, 0x83, + 0x02, 0x84, 0x02, 0x85, 0x02, 0x86, 0x02, 0x87, 0x02, 0x88, 0x02, 0x89, + 0x00, 0x02, 0x00, 0x0c, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x83, + 0x00, 0x8a, 0x00, 0x1a, 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x22, 0x00, 0x8f, + 0x00, 0x92, 0x00, 0x24, 0x00, 0x94, 0x00, 0x94, 0x00, 0x28, 0x00, 0x96, + 0x00, 0x99, 0x00, 0x29, 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x2d, 0x01, 0x7f, + 0x01, 0x80, 0x00, 0x2f, 0x02, 0x71, 0x02, 0x71, 0x00, 0x31, 0x02, 0x74, + 0x02, 0x7c, 0x00, 0x32, 0x02, 0xab, 0x02, 0xac, 0x00, 0x3b, 0x02, 0xb0, + 0x02, 0xb0, 0x00, 0x3d, 0x00, 0x02, 0x00, 0x38, 0x00, 0x19, 0x02, 0x99, + 0x02, 0x9a, 0x02, 0x8c, 0x02, 0x8d, 0x02, 0x8e, 0x02, 0x8f, 0x02, 0x90, + 0x02, 0x91, 0x02, 0x92, 0x02, 0x93, 0x02, 0x94, 0x02, 0x95, 0x02, 0x8c, + 0x02, 0x8d, 0x02, 0x8e, 0x02, 0x8f, 0x02, 0x90, 0x02, 0x91, 0x02, 0x92, + 0x02, 0x93, 0x02, 0x94, 0x02, 0x95, 0x02, 0x96, 0x02, 0x97, 0x02, 0x98, + 0x00, 0x02, 0x00, 0x06, 0x01, 0x7f, 0x01, 0x80, 0x00, 0x00, 0x02, 0x65, + 0x02, 0x65, 0x00, 0x02, 0x02, 0x68, 0x02, 0x71, 0x00, 0x03, 0x02, 0x74, + 0x02, 0x7c, 0x00, 0x0d, 0x02, 0xab, 0x02, 0xac, 0x00, 0x16, 0x02, 0xb0, + 0x02, 0xb0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x1c, 0x00, 0x0b, 0x02, 0x5c, + 0x02, 0x71, 0x02, 0x74, 0x02, 0x75, 0x02, 0x76, 0x02, 0x77, 0x02, 0x78, + 0x02, 0x79, 0x02, 0x7a, 0x02, 0x7b, 0x02, 0x7c, 0x00, 0x02, 0x00, 0x03, + 0x02, 0x5b, 0x02, 0x5b, 0x00, 0x00, 0x02, 0x65, 0x02, 0x65, 0x00, 0x01, + 0x02, 0x68, 0x02, 0x70, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x18, + 0x00, 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, + 0x00, 0x01, 0x00, 0x01, 0x01, 0x98, 0x00, 0x02, 0x00, 0x09, 0x01, 0xa8, + 0x01, 0xa9, 0x00, 0x00, 0x01, 0xad, 0x01, 0xae, 0x00, 0x02, 0x08, 0x4e, + 0x08, 0x50, 0x00, 0x04, 0x08, 0x52, 0x08, 0x56, 0x00, 0x07, 0x08, 0x63, + 0x08, 0x64, 0x00, 0x0c, 0x08, 0x66, 0x08, 0x69, 0x00, 0x0e, 0x08, 0x8a, + 0x08, 0x8b, 0x00, 0x12, 0x08, 0x8d, 0x08, 0x90, 0x00, 0x14, 0x08, 0x93, + 0x08, 0x97, 0x00, 0x18, 0x00, 0x03, 0x00, 0x01, 0x00, 0x18, 0x00, 0x01, + 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x01, + 0x00, 0x01, 0x01, 0xa3, 0x00, 0x02, 0x00, 0x0d, 0x01, 0xa8, 0x01, 0xaa, + 0x00, 0x00, 0x01, 0xad, 0x01, 0xad, 0x00, 0x03, 0x01, 0xb0, 0x01, 0xb0, + 0x00, 0x04, 0x08, 0x4e, 0x08, 0x50, 0x00, 0x05, 0x08, 0x52, 0x08, 0x56, + 0x00, 0x08, 0x08, 0x63, 0x08, 0x64, 0x00, 0x0d, 0x08, 0x66, 0x08, 0x69, + 0x00, 0x0f, 0x08, 0x6b, 0x08, 0x6d, 0x00, 0x13, 0x08, 0x6f, 0x08, 0x73, + 0x00, 0x16, 0x08, 0x8a, 0x08, 0x8b, 0x00, 0x1b, 0x08, 0x8d, 0x08, 0x90, + 0x00, 0x1d, 0x08, 0x9b, 0x08, 0x9d, 0x00, 0x21, 0x08, 0x9f, 0x08, 0xa3, + 0x00, 0x24, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x4c, 0x00, 0x01, + 0x00, 0x80, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x03, 0x00, 0x01, + 0x00, 0x84, 0x00, 0x01, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x27, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x28, 0x00, 0x02, + 0x00, 0x88, 0x00, 0x8e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x03, + 0x00, 0x02, 0x00, 0xa6, 0x00, 0x90, 0x00, 0x01, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x27, 0x00, 0x02, 0x00, 0x08, 0x01, 0xa8, + 0x01, 0xab, 0x00, 0x00, 0x01, 0xad, 0x01, 0xae, 0x00, 0x04, 0x01, 0xb0, + 0x01, 0xb0, 0x00, 0x06, 0x08, 0x2e, 0x08, 0x2e, 0x00, 0x07, 0x08, 0x4d, + 0x08, 0x58, 0x00, 0x08, 0x08, 0x5a, 0x08, 0x73, 0x00, 0x14, 0x08, 0x75, + 0x08, 0xa3, 0x00, 0x2e, 0x08, 0xa5, 0x08, 0xac, 0x00, 0x5d, 0x00, 0x02, + 0x00, 0x03, 0x01, 0x90, 0x01, 0xb0, 0x00, 0x00, 0x08, 0x28, 0x08, 0x36, + 0x00, 0x21, 0x08, 0x4d, 0x08, 0xac, 0x00, 0x30, 0x00, 0x02, 0x00, 0x03, + 0x01, 0x90, 0x01, 0xb0, 0x00, 0x00, 0x08, 0x28, 0x08, 0x36, 0x00, 0x21, + 0x08, 0x4d, 0x08, 0xac, 0x00, 0x30, 0x00, 0x01, 0x00, 0x01, 0x00, 0x03, + 0x00, 0x02, 0x00, 0x03, 0x01, 0x90, 0x01, 0xb0, 0x00, 0x00, 0x08, 0x28, + 0x08, 0x36, 0x00, 0x21, 0x08, 0x4d, 0x08, 0xac, 0x00, 0x30, 0x00, 0x02, + 0x00, 0x03, 0x01, 0x90, 0x01, 0xb0, 0x00, 0x00, 0x08, 0x28, 0x08, 0x36, + 0x00, 0x21, 0x08, 0x4d, 0x08, 0xac, 0x00, 0x30, 0x00, 0x01, 0x00, 0x01, + 0x00, 0x03, 0x00, 0x02, 0x00, 0x30, 0x00, 0x15, 0x06, 0x9f, 0x06, 0xa3, + 0x06, 0xf8, 0x06, 0xa4, 0x06, 0xa5, 0x06, 0xfc, 0x06, 0xa9, 0x07, 0x1c, + 0x07, 0x1e, 0x06, 0xab, 0x06, 0xac, 0x03, 0x3b, 0x06, 0xae, 0x06, 0xb2, + 0x07, 0x1f, 0x06, 0xb3, 0x06, 0xb4, 0x06, 0xb7, 0x07, 0x23, 0x07, 0x24, + 0x07, 0x17, 0x00, 0x02, 0x00, 0x06, 0x00, 0x83, 0x00, 0x8a, 0x00, 0x00, + 0x00, 0x8c, 0x00, 0x8d, 0x00, 0x08, 0x00, 0x8f, 0x00, 0x92, 0x00, 0x0a, + 0x00, 0x94, 0x00, 0x94, 0x00, 0x0e, 0x00, 0x96, 0x00, 0x99, 0x00, 0x0f, + 0x00, 0x9b, 0x00, 0x9c, 0x00, 0x13, 0x00, 0x01, 0x00, 0x1a, 0x00, 0x01, + 0x00, 0x08, 0x00, 0x02, 0x00, 0x06, 0x00, 0x0c, 0x00, 0xba, 0x00, 0x02, + 0x00, 0x8b, 0x00, 0xbb, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x01, 0x00, 0x01, + 0x00, 0x88, 0x00, 0x01, 0x01, 0xe2, 0x00, 0x3c, 0x00, 0x7e, 0x00, 0x84, + 0x00, 0x8a, 0x00, 0x8e, 0x00, 0x94, 0x00, 0x9c, 0x00, 0xa2, 0x00, 0xa8, + 0x00, 0xae, 0x00, 0xb4, 0x00, 0xba, 0x00, 0xc0, 0x00, 0xc6, 0x00, 0xcc, + 0x00, 0xd2, 0x00, 0xd6, 0x00, 0xda, 0x00, 0xe0, 0x00, 0xe6, 0x00, 0xec, + 0x00, 0xf2, 0x00, 0xf8, 0x01, 0x00, 0x01, 0x08, 0x01, 0x10, 0x01, 0x14, + 0x01, 0x18, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x24, 0x01, 0x28, 0x01, 0x2c, + 0x01, 0x32, 0x01, 0x38, 0x01, 0x3e, 0x01, 0x44, 0x01, 0x4a, 0x01, 0x50, + 0x01, 0x54, 0x01, 0x5a, 0x01, 0x60, 0x01, 0x68, 0x01, 0x70, 0x01, 0x74, + 0x01, 0x78, 0x01, 0x80, 0x01, 0x86, 0x01, 0x8c, 0x01, 0x92, 0x01, 0x98, + 0x01, 0x9e, 0x01, 0xa4, 0x01, 0xaa, 0x01, 0xb2, 0x01, 0xba, 0x01, 0xc2, + 0x01, 0xca, 0x01, 0xd0, 0x01, 0xd6, 0x01, 0xdc, 0x00, 0x02, 0x01, 0x09, + 0x01, 0x0a, 0x00, 0x02, 0x01, 0x0b, 0x01, 0x15, 0x00, 0x01, 0x01, 0x1f, + 0x00, 0x02, 0x01, 0x22, 0x01, 0x28, 0x00, 0x03, 0x01, 0x2e, 0x01, 0x32, + 0x01, 0x36, 0x00, 0x02, 0x01, 0x0c, 0x01, 0x16, 0x00, 0x02, 0x01, 0x0d, + 0x01, 0x17, 0x00, 0x02, 0x01, 0x0e, 0x01, 0x18, 0x00, 0x02, 0x01, 0x0f, + 0x01, 0x19, 0x00, 0x02, 0x01, 0x10, 0x01, 0x1a, 0x00, 0x02, 0x01, 0x11, + 0x01, 0x1b, 0x00, 0x02, 0x01, 0x12, 0x01, 0x1c, 0x00, 0x02, 0x01, 0x13, + 0x01, 0x1d, 0x00, 0x02, 0x01, 0x14, 0x01, 0x1e, 0x00, 0x01, 0x01, 0x20, + 0x00, 0x01, 0x01, 0x21, 0x00, 0x02, 0x01, 0x23, 0x01, 0x29, 0x00, 0x02, + 0x01, 0x24, 0x01, 0x2a, 0x00, 0x02, 0x01, 0x25, 0x01, 0x2b, 0x00, 0x02, + 0x01, 0x26, 0x01, 0x2c, 0x00, 0x02, 0x01, 0x27, 0x01, 0x2d, 0x00, 0x03, + 0x01, 0x2f, 0x01, 0x33, 0x01, 0x37, 0x00, 0x03, 0x01, 0x30, 0x01, 0x34, + 0x01, 0x38, 0x00, 0x03, 0x01, 0x31, 0x01, 0x35, 0x01, 0x39, 0x00, 0x01, + 0x01, 0x3b, 0x00, 0x01, 0x08, 0x2d, 0x00, 0x01, 0x08, 0x2e, 0x00, 0x01, + 0x08, 0x2f, 0x00, 0x01, 0x01, 0xb3, 0x00, 0x01, 0x01, 0xba, 0x00, 0x01, + 0x01, 0xc9, 0x00, 0x02, 0x02, 0x67, 0x02, 0x66, 0x00, 0x02, 0x02, 0x73, + 0x02, 0x72, 0x00, 0x02, 0x0a, 0x84, 0x0a, 0x85, 0x00, 0x02, 0x0a, 0x89, + 0x0a, 0x8a, 0x00, 0x02, 0x05, 0x1a, 0x05, 0x1b, 0x00, 0x02, 0x05, 0x2d, + 0x05, 0x2e, 0x00, 0x01, 0x05, 0x40, 0x00, 0x02, 0x05, 0x49, 0x05, 0x4a, + 0x00, 0x02, 0x05, 0x4c, 0x05, 0x4d, 0x00, 0x03, 0x05, 0x51, 0x05, 0x52, + 0x05, 0x53, 0x00, 0x03, 0x05, 0x55, 0x05, 0x56, 0x05, 0x57, 0x00, 0x01, + 0x05, 0x71, 0x00, 0x01, 0x05, 0x73, 0x00, 0x03, 0x05, 0x76, 0x05, 0x77, + 0x05, 0x78, 0x00, 0x02, 0x05, 0x91, 0x05, 0x92, 0x00, 0x02, 0x05, 0x9a, + 0x05, 0x9b, 0x00, 0x02, 0x05, 0x9d, 0x05, 0x9e, 0x00, 0x02, 0x05, 0xa4, + 0x05, 0xa5, 0x00, 0x02, 0x05, 0xa7, 0x05, 0xa8, 0x00, 0x02, 0x05, 0xaa, + 0x05, 0xab, 0x00, 0x02, 0x05, 0xad, 0x05, 0xae, 0x00, 0x03, 0x05, 0xbd, + 0x05, 0xbe, 0x05, 0xbf, 0x00, 0x03, 0x05, 0xc1, 0x05, 0xc2, 0x05, 0xc3, + 0x00, 0x03, 0x05, 0xc5, 0x05, 0xc6, 0x05, 0xc7, 0x00, 0x03, 0x05, 0xc9, + 0x05, 0xca, 0x05, 0xcb, 0x00, 0x02, 0x05, 0xeb, 0x05, 0xec, 0x00, 0x02, + 0x06, 0x10, 0x06, 0x11, 0x00, 0x02, 0x06, 0x13, 0x06, 0x14, 0x00, 0x02, + 0x0a, 0x87, 0x0a, 0x88, 0x00, 0x02, 0x00, 0x2b, 0x00, 0x88, 0x00, 0x88, + 0x00, 0x00, 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x01, 0x00, 0x8e, 0x00, 0x8e, + 0x00, 0x03, 0x00, 0x94, 0x00, 0x94, 0x00, 0x04, 0x00, 0xc2, 0x00, 0xca, + 0x00, 0x05, 0x00, 0xcc, 0x00, 0xcd, 0x00, 0x0e, 0x00, 0xd0, 0x00, 0xd4, + 0x00, 0x10, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0x15, 0x01, 0x3a, 0x01, 0x3a, + 0x00, 0x18, 0x01, 0xa3, 0x01, 0xa3, 0x00, 0x19, 0x01, 0xae, 0x01, 0xaf, + 0x00, 0x1a, 0x01, 0xb2, 0x01, 0xb2, 0x00, 0x1c, 0x01, 0xb9, 0x01, 0xb9, + 0x00, 0x1d, 0x01, 0xc8, 0x01, 0xc8, 0x00, 0x1e, 0x02, 0x65, 0x02, 0x65, + 0x00, 0x1f, 0x02, 0x71, 0x02, 0x71, 0x00, 0x20, 0x03, 0x1a, 0x03, 0x1a, + 0x00, 0x21, 0x03, 0x9f, 0x03, 0x9f, 0x00, 0x22, 0x05, 0x19, 0x05, 0x19, + 0x00, 0x23, 0x05, 0x2c, 0x05, 0x2c, 0x00, 0x24, 0x05, 0x3f, 0x05, 0x3f, + 0x00, 0x25, 0x05, 0x48, 0x05, 0x48, 0x00, 0x26, 0x05, 0x4b, 0x05, 0x4b, + 0x00, 0x27, 0x05, 0x50, 0x05, 0x50, 0x00, 0x28, 0x05, 0x54, 0x05, 0x54, + 0x00, 0x29, 0x05, 0x70, 0x05, 0x70, 0x00, 0x2a, 0x05, 0x72, 0x05, 0x72, + 0x00, 0x2b, 0x05, 0x75, 0x05, 0x75, 0x00, 0x2c, 0x05, 0x90, 0x05, 0x90, + 0x00, 0x2d, 0x05, 0x99, 0x05, 0x99, 0x00, 0x2e, 0x05, 0x9c, 0x05, 0x9c, + 0x00, 0x2f, 0x05, 0xa3, 0x05, 0xa3, 0x00, 0x30, 0x05, 0xa6, 0x05, 0xa6, + 0x00, 0x31, 0x05, 0xa9, 0x05, 0xa9, 0x00, 0x32, 0x05, 0xac, 0x05, 0xac, + 0x00, 0x33, 0x05, 0xbc, 0x05, 0xbc, 0x00, 0x34, 0x05, 0xc0, 0x05, 0xc0, + 0x00, 0x35, 0x05, 0xc4, 0x05, 0xc4, 0x00, 0x36, 0x05, 0xc8, 0x05, 0xc8, + 0x00, 0x37, 0x05, 0xea, 0x05, 0xea, 0x00, 0x38, 0x06, 0x0f, 0x06, 0x0f, + 0x00, 0x39, 0x06, 0x12, 0x06, 0x12, 0x00, 0x3a, 0x0a, 0x86, 0x0a, 0x86, + 0x00, 0x3b, 0x00, 0x02, 0x00, 0x08, 0x00, 0x01, 0x03, 0x9a, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x56, 0x00, 0x02, 0x00, 0x0c, 0x00, 0x03, 0x08, 0x2d, + 0x08, 0x2e, 0x08, 0x2f, 0x00, 0x02, 0x00, 0x02, 0x01, 0xa3, 0x01, 0xa3, + 0x00, 0x00, 0x01, 0xae, 0x01, 0xaf, 0x00, 0x01, 0x00, 0x02, 0x00, 0x08, + 0x00, 0x01, 0x03, 0x9b, 0x00, 0x01, 0x00, 0x01, 0x00, 0x56, 0x00, 0x02, + 0x00, 0x0c, 0x00, 0x03, 0x01, 0xb3, 0x01, 0xba, 0x01, 0xc9, 0x00, 0x02, + 0x00, 0x03, 0x01, 0xb2, 0x01, 0xb2, 0x00, 0x00, 0x01, 0xb9, 0x01, 0xb9, + 0x00, 0x01, 0x01, 0xc8, 0x01, 0xc8, 0x00, 0x02, 0x00, 0x02, 0x00, 0x08, + 0x00, 0x01, 0x03, 0x9c, 0x00, 0x01, 0x00, 0x01, 0x00, 0x56, 0x00, 0x02, + 0x00, 0x20, 0x00, 0x0d, 0x01, 0x09, 0x01, 0x2e, 0x01, 0x2f, 0x01, 0x30, + 0x01, 0x31, 0x05, 0x51, 0x05, 0x55, 0x05, 0x76, 0x05, 0x91, 0x05, 0xbd, + 0x05, 0xc1, 0x05, 0xc5, 0x05, 0xc9, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x88, + 0x00, 0x88, 0x00, 0x00, 0x00, 0x94, 0x00, 0x94, 0x00, 0x01, 0x00, 0xe7, + 0x00, 0xe9, 0x00, 0x02, 0x05, 0x50, 0x05, 0x50, 0x00, 0x05, 0x05, 0x54, + 0x05, 0x54, 0x00, 0x06, 0x05, 0x75, 0x05, 0x75, 0x00, 0x07, 0x05, 0x90, + 0x05, 0x90, 0x00, 0x08, 0x05, 0xbc, 0x05, 0xbc, 0x00, 0x09, 0x05, 0xc0, + 0x05, 0xc0, 0x00, 0x0a, 0x05, 0xc4, 0x05, 0xc4, 0x00, 0x0b, 0x05, 0xc8, + 0x05, 0xc8, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x2a, 0x01, 0x0a, + 0x01, 0x0b, 0x01, 0x22, 0x01, 0x32, 0x01, 0x0c, 0x01, 0x0d, 0x01, 0x0e, + 0x01, 0x0f, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, + 0x01, 0x23, 0x01, 0x24, 0x01, 0x25, 0x01, 0x26, 0x01, 0x27, 0x01, 0x33, + 0x01, 0x34, 0x01, 0x35, 0x01, 0x3b, 0x0a, 0x84, 0x0a, 0x89, 0x05, 0x1a, + 0x05, 0x2d, 0x05, 0x49, 0x05, 0x4c, 0x05, 0x9a, 0x05, 0x9d, 0x05, 0xa4, + 0x05, 0xa7, 0x05, 0xaa, 0x05, 0xad, 0x05, 0xbe, 0x05, 0xc2, 0x05, 0xc6, + 0x05, 0xca, 0x05, 0xeb, 0x06, 0x10, 0x06, 0x13, 0x0a, 0x87, 0x00, 0x02, + 0x00, 0x1c, 0x00, 0x88, 0x00, 0x88, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x8b, + 0x00, 0x01, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x02, 0x00, 0x94, 0x00, 0x94, + 0x00, 0x03, 0x00, 0xc2, 0x00, 0xca, 0x00, 0x04, 0x00, 0xd0, 0x00, 0xd4, + 0x00, 0x0d, 0x00, 0xe7, 0x00, 0xe9, 0x00, 0x12, 0x01, 0x3a, 0x01, 0x3a, + 0x00, 0x15, 0x03, 0x1a, 0x03, 0x1a, 0x00, 0x16, 0x03, 0x9f, 0x03, 0x9f, + 0x00, 0x17, 0x05, 0x19, 0x05, 0x19, 0x00, 0x18, 0x05, 0x2c, 0x05, 0x2c, + 0x00, 0x19, 0x05, 0x48, 0x05, 0x48, 0x00, 0x1a, 0x05, 0x4b, 0x05, 0x4b, + 0x00, 0x1b, 0x05, 0x99, 0x05, 0x99, 0x00, 0x1c, 0x05, 0x9c, 0x05, 0x9c, + 0x00, 0x1d, 0x05, 0xa3, 0x05, 0xa3, 0x00, 0x1e, 0x05, 0xa6, 0x05, 0xa6, + 0x00, 0x1f, 0x05, 0xa9, 0x05, 0xa9, 0x00, 0x20, 0x05, 0xac, 0x05, 0xac, + 0x00, 0x21, 0x05, 0xbc, 0x05, 0xbc, 0x00, 0x22, 0x05, 0xc0, 0x05, 0xc0, + 0x00, 0x23, 0x05, 0xc4, 0x05, 0xc4, 0x00, 0x24, 0x05, 0xc8, 0x05, 0xc8, + 0x00, 0x25, 0x05, 0xea, 0x05, 0xea, 0x00, 0x26, 0x06, 0x0f, 0x06, 0x0f, + 0x00, 0x27, 0x06, 0x12, 0x06, 0x12, 0x00, 0x28, 0x0a, 0x86, 0x0a, 0x86, + 0x00, 0x29, 0x00, 0x01, 0x01, 0x44, 0x00, 0x34, 0x00, 0x6e, 0x00, 0x72, + 0x00, 0x76, 0x00, 0x7a, 0x00, 0x7e, 0x00, 0x82, 0x00, 0x86, 0x00, 0x8a, + 0x00, 0x8e, 0x00, 0x92, 0x00, 0x96, 0x00, 0x9a, 0x00, 0x9e, 0x00, 0xa2, + 0x00, 0xa6, 0x00, 0xaa, 0x00, 0xae, 0x00, 0xb2, 0x00, 0xb6, 0x00, 0xba, + 0x00, 0xbe, 0x00, 0xc2, 0x00, 0xc6, 0x00, 0xca, 0x00, 0xce, 0x00, 0xd2, + 0x00, 0xd6, 0x00, 0xda, 0x00, 0xde, 0x00, 0xe2, 0x00, 0xe6, 0x00, 0xea, + 0x00, 0xee, 0x00, 0xf4, 0x00, 0xfa, 0x00, 0xfe, 0x01, 0x02, 0x01, 0x08, + 0x01, 0x0c, 0x01, 0x10, 0x01, 0x14, 0x01, 0x18, 0x01, 0x1c, 0x01, 0x20, + 0x01, 0x24, 0x01, 0x28, 0x01, 0x2c, 0x01, 0x30, 0x01, 0x34, 0x01, 0x38, + 0x01, 0x3c, 0x01, 0x40, 0x00, 0x01, 0x01, 0x0a, 0x00, 0x01, 0x01, 0x15, + 0x00, 0x01, 0x01, 0x1f, 0x00, 0x01, 0x01, 0x28, 0x00, 0x01, 0x01, 0x36, + 0x00, 0x01, 0x01, 0x16, 0x00, 0x01, 0x01, 0x17, 0x00, 0x01, 0x01, 0x18, + 0x00, 0x01, 0x01, 0x19, 0x00, 0x01, 0x01, 0x1a, 0x00, 0x01, 0x01, 0x1b, + 0x00, 0x01, 0x01, 0x1c, 0x00, 0x01, 0x01, 0x1d, 0x00, 0x01, 0x01, 0x1e, + 0x00, 0x01, 0x01, 0x20, 0x00, 0x01, 0x01, 0x21, 0x00, 0x01, 0x01, 0x29, + 0x00, 0x01, 0x01, 0x2a, 0x00, 0x01, 0x01, 0x2b, 0x00, 0x01, 0x01, 0x2c, + 0x00, 0x01, 0x01, 0x2d, 0x00, 0x01, 0x01, 0x37, 0x00, 0x01, 0x01, 0x38, + 0x00, 0x01, 0x01, 0x39, 0x00, 0x01, 0x01, 0x3b, 0x00, 0x01, 0x0a, 0x85, + 0x00, 0x01, 0x0a, 0x8a, 0x00, 0x01, 0x05, 0x1b, 0x00, 0x01, 0x05, 0x2e, + 0x00, 0x01, 0x05, 0x40, 0x00, 0x01, 0x05, 0x4a, 0x00, 0x01, 0x05, 0x4d, + 0x00, 0x02, 0x05, 0x53, 0x05, 0x53, 0x00, 0x02, 0x05, 0x57, 0x05, 0x57, + 0x00, 0x01, 0x05, 0x71, 0x00, 0x01, 0x05, 0x73, 0x00, 0x02, 0x05, 0x78, + 0x05, 0x78, 0x00, 0x01, 0x05, 0x92, 0x00, 0x01, 0x05, 0x9b, 0x00, 0x01, + 0x05, 0x9e, 0x00, 0x01, 0x05, 0xa5, 0x00, 0x01, 0x05, 0xa8, 0x00, 0x01, + 0x05, 0xab, 0x00, 0x01, 0x05, 0xae, 0x00, 0x01, 0x05, 0xbf, 0x00, 0x01, + 0x05, 0xc3, 0x00, 0x01, 0x05, 0xc7, 0x00, 0x01, 0x05, 0xcb, 0x00, 0x01, + 0x05, 0xec, 0x00, 0x01, 0x06, 0x11, 0x00, 0x01, 0x06, 0x14, 0x00, 0x01, + 0x0a, 0x88, 0x00, 0x02, 0x00, 0x24, 0x00, 0x88, 0x00, 0x88, 0x00, 0x00, + 0x00, 0x8b, 0x00, 0x8c, 0x00, 0x01, 0x00, 0x8e, 0x00, 0x8e, 0x00, 0x03, + 0x00, 0x94, 0x00, 0x94, 0x00, 0x04, 0x00, 0xc2, 0x00, 0xca, 0x00, 0x05, + 0x00, 0xcc, 0x00, 0xcd, 0x00, 0x0e, 0x00, 0xd0, 0x00, 0xd4, 0x00, 0x10, + 0x00, 0xe7, 0x00, 0xe9, 0x00, 0x15, 0x01, 0x3a, 0x01, 0x3a, 0x00, 0x18, + 0x03, 0x1a, 0x03, 0x1a, 0x00, 0x19, 0x03, 0x9f, 0x03, 0x9f, 0x00, 0x1a, + 0x05, 0x19, 0x05, 0x19, 0x00, 0x1b, 0x05, 0x2c, 0x05, 0x2c, 0x00, 0x1c, + 0x05, 0x3f, 0x05, 0x3f, 0x00, 0x1d, 0x05, 0x48, 0x05, 0x48, 0x00, 0x1e, + 0x05, 0x4b, 0x05, 0x4b, 0x00, 0x1f, 0x05, 0x50, 0x05, 0x50, 0x00, 0x20, + 0x05, 0x54, 0x05, 0x54, 0x00, 0x21, 0x05, 0x70, 0x05, 0x70, 0x00, 0x22, + 0x05, 0x72, 0x05, 0x72, 0x00, 0x23, 0x05, 0x75, 0x05, 0x75, 0x00, 0x24, + 0x05, 0x90, 0x05, 0x90, 0x00, 0x25, 0x05, 0x99, 0x05, 0x99, 0x00, 0x26, + 0x05, 0x9c, 0x05, 0x9c, 0x00, 0x27, 0x05, 0xa3, 0x05, 0xa3, 0x00, 0x28, + 0x05, 0xa6, 0x05, 0xa6, 0x00, 0x29, 0x05, 0xa9, 0x05, 0xa9, 0x00, 0x2a, + 0x05, 0xac, 0x05, 0xac, 0x00, 0x2b, 0x05, 0xbc, 0x05, 0xbc, 0x00, 0x2c, + 0x05, 0xc0, 0x05, 0xc0, 0x00, 0x2d, 0x05, 0xc4, 0x05, 0xc4, 0x00, 0x2e, + 0x05, 0xc8, 0x05, 0xc8, 0x00, 0x2f, 0x05, 0xea, 0x05, 0xea, 0x00, 0x30, + 0x06, 0x0f, 0x06, 0x0f, 0x00, 0x31, 0x06, 0x12, 0x06, 0x12, 0x00, 0x32, + 0x0a, 0x86, 0x0a, 0x86, 0x00, 0x33, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, + 0x02, 0x67, 0x02, 0x73, 0x00, 0x01, 0x00, 0x02, 0x02, 0x65, 0x02, 0x71, + 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x02, 0x66, 0x02, 0x72, 0x00, 0x01, + 0x00, 0x02, 0x02, 0x65, 0x02, 0x71, 0x00, 0x02, 0x00, 0xc8, 0x00, 0x61, + 0x02, 0x4a, 0x02, 0xc6, 0x02, 0xc8, 0x02, 0xca, 0x02, 0xcc, 0x02, 0xce, + 0x02, 0xd0, 0x02, 0xd2, 0x02, 0xd4, 0x02, 0xd6, 0x03, 0xbb, 0x03, 0xbd, + 0x03, 0xbf, 0x03, 0xc1, 0x03, 0xc3, 0x03, 0xc5, 0x03, 0xc7, 0x03, 0xc9, + 0x03, 0xcb, 0x03, 0xd1, 0x03, 0xe7, 0x03, 0xe9, 0x03, 0xeb, 0x03, 0xed, + 0x03, 0xef, 0x03, 0xf5, 0x03, 0xf7, 0x03, 0xf9, 0x03, 0xfb, 0x03, 0xfd, + 0x03, 0xff, 0x04, 0x04, 0x04, 0x06, 0x04, 0x08, 0x04, 0x0d, 0x04, 0x0f, + 0x04, 0x11, 0x04, 0x17, 0x04, 0x19, 0x04, 0x1d, 0x04, 0x20, 0x04, 0x22, + 0x04, 0x25, 0x04, 0x27, 0x04, 0x2a, 0x04, 0x2c, 0x04, 0x2e, 0x04, 0x30, + 0x04, 0x32, 0x04, 0x34, 0x04, 0x36, 0x04, 0x38, 0x04, 0x3a, 0x04, 0x3c, + 0x04, 0x3e, 0x04, 0x40, 0x04, 0x42, 0x04, 0x44, 0x04, 0x46, 0x04, 0x4a, + 0x04, 0x4c, 0x04, 0x4e, 0x04, 0x50, 0x04, 0x52, 0x04, 0x54, 0x04, 0x57, + 0x07, 0xfb, 0x07, 0xfd, 0x07, 0xff, 0x08, 0x01, 0x08, 0x03, 0x08, 0x05, + 0x08, 0x07, 0x08, 0x09, 0x08, 0x0b, 0x08, 0x0d, 0x08, 0x0f, 0x08, 0x11, + 0x08, 0x13, 0x08, 0x15, 0x08, 0x19, 0x08, 0x27, 0x0a, 0x05, 0x0a, 0x07, + 0x0a, 0x09, 0x0a, 0x0b, 0x01, 0x3d, 0x01, 0x3f, 0x01, 0x41, 0x01, 0x46, + 0x01, 0x4a, 0x01, 0x4c, 0x01, 0x53, 0x01, 0x48, 0x01, 0x4e, 0x01, 0x51, + 0x01, 0x43, 0x00, 0x02, 0x00, 0x57, 0x02, 0x49, 0x02, 0x49, 0x00, 0x00, + 0x02, 0xc5, 0x02, 0xc5, 0x00, 0x01, 0x02, 0xc7, 0x02, 0xc7, 0x00, 0x02, + 0x02, 0xc9, 0x02, 0xc9, 0x00, 0x03, 0x02, 0xcb, 0x02, 0xcb, 0x00, 0x04, + 0x02, 0xcd, 0x02, 0xcd, 0x00, 0x05, 0x02, 0xcf, 0x02, 0xcf, 0x00, 0x06, + 0x02, 0xd1, 0x02, 0xd1, 0x00, 0x07, 0x02, 0xd3, 0x02, 0xd3, 0x00, 0x08, + 0x02, 0xd5, 0x02, 0xd5, 0x00, 0x09, 0x03, 0xba, 0x03, 0xba, 0x00, 0x0a, + 0x03, 0xbc, 0x03, 0xbc, 0x00, 0x0b, 0x03, 0xbe, 0x03, 0xbe, 0x00, 0x0c, + 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x0d, 0x03, 0xc2, 0x03, 0xc2, 0x00, 0x0e, + 0x03, 0xc4, 0x03, 0xc4, 0x00, 0x0f, 0x03, 0xc6, 0x03, 0xc6, 0x00, 0x10, + 0x03, 0xc8, 0x03, 0xc8, 0x00, 0x11, 0x03, 0xca, 0x03, 0xca, 0x00, 0x12, + 0x03, 0xd0, 0x03, 0xd0, 0x00, 0x13, 0x03, 0xe6, 0x03, 0xe6, 0x00, 0x14, + 0x03, 0xe8, 0x03, 0xe8, 0x00, 0x15, 0x03, 0xea, 0x03, 0xea, 0x00, 0x16, + 0x03, 0xec, 0x03, 0xec, 0x00, 0x17, 0x03, 0xee, 0x03, 0xee, 0x00, 0x18, + 0x03, 0xf4, 0x03, 0xf4, 0x00, 0x19, 0x03, 0xf6, 0x03, 0xf6, 0x00, 0x1a, + 0x03, 0xf8, 0x03, 0xf8, 0x00, 0x1b, 0x03, 0xfa, 0x03, 0xfa, 0x00, 0x1c, + 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x1d, 0x03, 0xfe, 0x03, 0xfe, 0x00, 0x1e, + 0x04, 0x03, 0x04, 0x03, 0x00, 0x1f, 0x04, 0x05, 0x04, 0x05, 0x00, 0x20, + 0x04, 0x07, 0x04, 0x07, 0x00, 0x21, 0x04, 0x0c, 0x04, 0x0c, 0x00, 0x22, + 0x04, 0x0e, 0x04, 0x0e, 0x00, 0x23, 0x04, 0x10, 0x04, 0x10, 0x00, 0x24, + 0x04, 0x16, 0x04, 0x16, 0x00, 0x25, 0x04, 0x18, 0x04, 0x18, 0x00, 0x26, + 0x04, 0x1c, 0x04, 0x1c, 0x00, 0x27, 0x04, 0x1f, 0x04, 0x1f, 0x00, 0x28, + 0x04, 0x21, 0x04, 0x21, 0x00, 0x29, 0x04, 0x24, 0x04, 0x24, 0x00, 0x2a, + 0x04, 0x26, 0x04, 0x26, 0x00, 0x2b, 0x04, 0x29, 0x04, 0x29, 0x00, 0x2c, + 0x04, 0x2b, 0x04, 0x2b, 0x00, 0x2d, 0x04, 0x2d, 0x04, 0x2d, 0x00, 0x2e, + 0x04, 0x2f, 0x04, 0x2f, 0x00, 0x2f, 0x04, 0x31, 0x04, 0x31, 0x00, 0x30, + 0x04, 0x33, 0x04, 0x33, 0x00, 0x31, 0x04, 0x35, 0x04, 0x35, 0x00, 0x32, + 0x04, 0x37, 0x04, 0x37, 0x00, 0x33, 0x04, 0x39, 0x04, 0x39, 0x00, 0x34, + 0x04, 0x3b, 0x04, 0x3b, 0x00, 0x35, 0x04, 0x3d, 0x04, 0x3d, 0x00, 0x36, + 0x04, 0x3f, 0x04, 0x3f, 0x00, 0x37, 0x04, 0x41, 0x04, 0x41, 0x00, 0x38, + 0x04, 0x43, 0x04, 0x43, 0x00, 0x39, 0x04, 0x45, 0x04, 0x45, 0x00, 0x3a, + 0x04, 0x49, 0x04, 0x49, 0x00, 0x3b, 0x04, 0x4b, 0x04, 0x4b, 0x00, 0x3c, + 0x04, 0x4d, 0x04, 0x4d, 0x00, 0x3d, 0x04, 0x4f, 0x04, 0x4f, 0x00, 0x3e, + 0x04, 0x51, 0x04, 0x51, 0x00, 0x3f, 0x04, 0x53, 0x04, 0x53, 0x00, 0x40, + 0x04, 0x56, 0x04, 0x56, 0x00, 0x41, 0x07, 0xfa, 0x07, 0xfa, 0x00, 0x42, + 0x07, 0xfc, 0x07, 0xfc, 0x00, 0x43, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x44, + 0x08, 0x00, 0x08, 0x00, 0x00, 0x45, 0x08, 0x02, 0x08, 0x02, 0x00, 0x46, + 0x08, 0x04, 0x08, 0x04, 0x00, 0x47, 0x08, 0x06, 0x08, 0x06, 0x00, 0x48, + 0x08, 0x08, 0x08, 0x08, 0x00, 0x49, 0x08, 0x0a, 0x08, 0x0a, 0x00, 0x4a, + 0x08, 0x0c, 0x08, 0x0c, 0x00, 0x4b, 0x08, 0x0e, 0x08, 0x0e, 0x00, 0x4c, + 0x08, 0x10, 0x08, 0x10, 0x00, 0x4d, 0x08, 0x12, 0x08, 0x12, 0x00, 0x4e, + 0x08, 0x14, 0x08, 0x14, 0x00, 0x4f, 0x08, 0x18, 0x08, 0x18, 0x00, 0x50, + 0x08, 0x26, 0x08, 0x26, 0x00, 0x51, 0x0a, 0x04, 0x0a, 0x04, 0x00, 0x52, + 0x0a, 0x06, 0x0a, 0x06, 0x00, 0x53, 0x0a, 0x08, 0x0a, 0x08, 0x00, 0x54, + 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x55, 0x0a, 0x2d, 0x0a, 0x37, 0x00, 0x56, + 0x00, 0x02, 0x00, 0x10, 0x00, 0x05, 0x00, 0xca, 0x03, 0x9f, 0x0a, 0x86, + 0x05, 0x9c, 0x06, 0x12, 0x00, 0x02, 0x00, 0x05, 0x00, 0x8b, 0x00, 0x8b, + 0x00, 0x00, 0x00, 0xc9, 0x00, 0xc9, 0x00, 0x01, 0x03, 0x1a, 0x03, 0x1a, + 0x00, 0x02, 0x05, 0x99, 0x05, 0x99, 0x00, 0x03, 0x06, 0x0f, 0x06, 0x0f, + 0x00, 0x04, 0x00, 0x02, 0x00, 0x0a, 0x00, 0x02, 0x00, 0xcc, 0x05, 0x72, + 0x00, 0x01, 0x00, 0x02, 0x00, 0x8c, 0x05, 0x70, 0x00, 0x02, 0x00, 0x08, + 0x00, 0x01, 0x02, 0xa5, 0x00, 0x01, 0x00, 0x01, 0x01, 0x75, 0x00, 0x02, + 0x00, 0x1a, 0x00, 0x0a, 0x02, 0x9b, 0x02, 0x9c, 0x02, 0x9d, 0x02, 0x9e, + 0x02, 0x9f, 0x02, 0xa0, 0x02, 0xa1, 0x02, 0xa2, 0x02, 0xa3, 0x02, 0xa4, + 0x00, 0x02, 0x00, 0x01, 0x02, 0x7d, 0x02, 0x86, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x08, 0x00, 0x01, 0x01, 0xac, 0x00, 0x01, 0x00, 0x01, 0x01, 0x98, + 0x00, 0x02, 0x00, 0x08, 0x00, 0x01, 0x01, 0xaf, 0x00, 0x01, 0x00, 0x01, + 0x01, 0xa3, 0x00, 0x02, 0x00, 0xd0, 0x00, 0x65, 0x01, 0x90, 0x01, 0x94, + 0x01, 0x96, 0x01, 0x98, 0x01, 0x9e, 0x01, 0xa3, 0x01, 0xa7, 0x08, 0x2d, + 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, + 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, 0x01, 0x90, + 0x08, 0x59, 0x08, 0x59, 0x08, 0x59, 0x08, 0x59, 0x08, 0x59, 0x08, 0x59, + 0x08, 0x59, 0x08, 0x59, 0x01, 0x94, 0x01, 0x94, 0x01, 0x94, 0x01, 0x94, + 0x01, 0x94, 0x01, 0x94, 0x01, 0x94, 0x01, 0x94, 0x01, 0x96, 0x01, 0x96, + 0x01, 0x96, 0x01, 0x96, 0x01, 0x96, 0x01, 0x96, 0x01, 0x96, 0x01, 0x96, + 0x01, 0x96, 0x01, 0x96, 0x08, 0x74, 0x08, 0x74, 0x08, 0x74, 0x08, 0x74, + 0x08, 0x74, 0x08, 0x74, 0x08, 0x74, 0x08, 0x74, 0x01, 0x98, 0x01, 0x98, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x01, 0x9e, 0x01, 0x9e, + 0x01, 0x9e, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0x9e, 0x01, 0x9e, + 0x01, 0xa0, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa3, + 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa3, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, + 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, 0x01, 0xa7, + 0x01, 0xa7, 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xa4, + 0x08, 0xa4, 0x08, 0xa4, 0x08, 0xa4, 0x00, 0x02, 0x00, 0x08, 0x01, 0xa8, + 0x01, 0xab, 0x00, 0x00, 0x01, 0xad, 0x01, 0xae, 0x00, 0x04, 0x01, 0xb0, + 0x01, 0xb0, 0x00, 0x06, 0x08, 0x2e, 0x08, 0x2e, 0x00, 0x07, 0x08, 0x4d, + 0x08, 0x58, 0x00, 0x08, 0x08, 0x5a, 0x08, 0x73, 0x00, 0x14, 0x08, 0x75, + 0x08, 0xa3, 0x00, 0x2e, 0x08, 0xa5, 0x08, 0xac, 0x00, 0x5d, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x1a, 0xb7, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1a, 0xaf, 0x30, 0x82, 0x1a, 0xab, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x1a, 0x9c, 0x30, + 0x82, 0x1a, 0x98, 0x02, 0x01, 0x01, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x05, + 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x30, 0x61, 0x06, 0x0a, 0x2b, + 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x53, 0x30, + 0x51, 0x30, 0x2c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, + 0x02, 0x01, 0x1c, 0xa2, 0x1e, 0x80, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, + 0x3c, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, 0x00, + 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x30, + 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, + 0x04, 0x14, 0xde, 0x8b, 0x00, 0x4d, 0xd2, 0x5d, 0xf5, 0x80, 0x49, 0x11, + 0xbd, 0xd5, 0x5f, 0xe5, 0xe8, 0xe8, 0x3f, 0x3c, 0x52, 0xfb, 0xa0, 0x82, + 0x15, 0x79, 0x30, 0x82, 0x04, 0xba, 0x30, 0x82, 0x03, 0xa2, 0xa0, 0x03, + 0x02, 0x01, 0x02, 0x02, 0x0a, 0x61, 0x02, 0x92, 0x4a, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, + 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x77, 0x31, 0x0b, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, + 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, + 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, + 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x21, 0x30, 0x1f, + 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4d, 0x69, 0x63, 0x72, 0x6f, + 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x2d, 0x53, 0x74, + 0x61, 0x6d, 0x70, 0x20, 0x50, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x31, + 0x32, 0x30, 0x31, 0x30, 0x39, 0x32, 0x32, 0x32, 0x35, 0x35, 0x39, 0x5a, + 0x17, 0x0d, 0x31, 0x33, 0x30, 0x34, 0x30, 0x39, 0x32, 0x32, 0x32, 0x35, + 0x35, 0x39, 0x5a, 0x30, 0x81, 0xb3, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, + 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, + 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, + 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, + 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, + 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, + 0x55, 0x04, 0x0b, 0x13, 0x04, 0x4d, 0x4f, 0x50, 0x52, 0x31, 0x27, 0x30, + 0x25, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x1e, 0x6e, 0x43, 0x69, 0x70, + 0x68, 0x65, 0x72, 0x20, 0x44, 0x53, 0x45, 0x20, 0x45, 0x53, 0x4e, 0x3a, + 0x42, 0x38, 0x45, 0x43, 0x2d, 0x33, 0x30, 0x41, 0x34, 0x2d, 0x37, 0x31, + 0x34, 0x34, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x1c, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, + 0x69, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, + 0x01, 0x00, 0xcd, 0x63, 0xc3, 0xf7, 0xa2, 0xb5, 0x47, 0xd9, 0xf9, 0x39, + 0x94, 0x53, 0xac, 0x6b, 0x8f, 0xa6, 0x79, 0x38, 0x21, 0xf4, 0xd1, 0x6e, + 0x3d, 0x15, 0x38, 0x16, 0xc1, 0x73, 0x2c, 0x99, 0x8f, 0xfb, 0xe0, 0x3c, + 0x5b, 0xe1, 0xa2, 0x4c, 0x8b, 0xb2, 0xab, 0x8b, 0xb4, 0xf2, 0x4a, 0xc7, + 0xb9, 0x93, 0x50, 0xd1, 0x26, 0xf5, 0x87, 0x53, 0xb0, 0x7a, 0x75, 0xf3, + 0x47, 0x0f, 0x17, 0x2b, 0x67, 0x2c, 0x64, 0xeb, 0x60, 0xe7, 0x4a, 0x8c, + 0xe0, 0x8b, 0x5e, 0xc4, 0x56, 0x69, 0x37, 0x3a, 0x2a, 0x04, 0x5d, 0x17, + 0x01, 0xc8, 0xbf, 0xa9, 0xb7, 0xd3, 0xc9, 0xab, 0xa3, 0x91, 0xa8, 0x81, + 0xe3, 0x3f, 0x2d, 0xb7, 0xd8, 0xe4, 0xc4, 0x78, 0x00, 0x79, 0x39, 0xcf, + 0xfd, 0xc7, 0x64, 0xe2, 0x23, 0x12, 0x78, 0x9e, 0x0c, 0x76, 0x27, 0x49, + 0x8f, 0x9a, 0xac, 0x0e, 0x74, 0xe3, 0x06, 0x55, 0x55, 0x49, 0xc8, 0xed, + 0xa1, 0x7c, 0x70, 0x45, 0x61, 0x7e, 0xb2, 0x71, 0x16, 0x1e, 0xe1, 0xc1, + 0x41, 0xb9, 0xd2, 0xd2, 0x32, 0xe9, 0x52, 0x24, 0xf3, 0x36, 0x50, 0x04, + 0xd7, 0xdd, 0x6f, 0x3c, 0x49, 0xd5, 0x0b, 0xd4, 0x76, 0x40, 0xfc, 0x65, + 0x65, 0x13, 0x7e, 0x95, 0x51, 0x3a, 0xd5, 0xff, 0xb8, 0x9a, 0xa7, 0x57, + 0x6b, 0x4b, 0x15, 0xe5, 0x37, 0x58, 0x1f, 0xdc, 0x00, 0x0d, 0xc5, 0xae, + 0xea, 0xdf, 0x81, 0x47, 0xf9, 0xf0, 0x52, 0xae, 0xe6, 0xcf, 0x5a, 0xac, + 0xe0, 0x14, 0x4a, 0xa6, 0x71, 0x94, 0x80, 0xfa, 0xfd, 0xb0, 0x23, 0x30, + 0x60, 0xe9, 0x83, 0x60, 0xac, 0x0e, 0x24, 0x1e, 0xff, 0x11, 0xf2, 0xe7, + 0xa5, 0x55, 0x62, 0x95, 0xee, 0x9f, 0x7f, 0x9e, 0x29, 0xd6, 0xcd, 0x4b, + 0x0a, 0x76, 0x83, 0xf0, 0x43, 0x04, 0xdf, 0x06, 0x49, 0x20, 0xf2, 0x53, + 0x5a, 0x44, 0xb0, 0x51, 0x7a, 0x39, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, + 0x82, 0x01, 0x09, 0x30, 0x82, 0x01, 0x05, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xcd, 0x19, 0xac, 0x61, 0x4d, 0x94, + 0x67, 0x2b, 0xf6, 0xaf, 0x94, 0x75, 0x59, 0xdb, 0xf0, 0x58, 0x00, 0x83, + 0xa1, 0x3a, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, + 0x16, 0x80, 0x14, 0x23, 0x34, 0xf8, 0xd9, 0x52, 0x46, 0x70, 0x0a, 0xed, + 0x40, 0xfb, 0x76, 0xfb, 0xb3, 0x2b, 0xb0, 0xc3, 0x35, 0xb3, 0x0f, 0x30, + 0x54, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x4d, 0x30, 0x4b, 0x30, 0x49, + 0xa0, 0x47, 0xa0, 0x45, 0x86, 0x43, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, + 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, + 0x72, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, + 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, + 0x6c, 0x30, 0x58, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, + 0x01, 0x04, 0x4c, 0x30, 0x4a, 0x30, 0x48, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3c, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, + 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, + 0x63, 0x65, 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, + 0x6f, 0x66, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, + 0x50, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x1d, 0x25, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x08, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, + 0x51, 0x1c, 0xd6, 0xdf, 0x36, 0x1d, 0xdc, 0x80, 0xbc, 0x02, 0xa7, 0xc6, + 0x99, 0xdf, 0x16, 0xc8, 0x90, 0x06, 0x69, 0x15, 0x9a, 0x32, 0xb9, 0xf3, + 0x64, 0x10, 0xd2, 0x8a, 0xf3, 0x62, 0x29, 0x1b, 0x79, 0x8f, 0xca, 0x60, + 0xa9, 0xb3, 0x5d, 0xc4, 0xe4, 0x16, 0x2d, 0x35, 0x8c, 0x44, 0x9b, 0xf1, + 0xf4, 0x5c, 0x61, 0xa4, 0x41, 0xae, 0x9a, 0x8b, 0xba, 0x50, 0xd1, 0x6a, + 0x79, 0x6a, 0xb3, 0x62, 0x8c, 0x9d, 0x4d, 0x51, 0x50, 0x0b, 0xa9, 0x8e, + 0xd4, 0xbf, 0xa2, 0x10, 0xc0, 0x47, 0xd5, 0x4e, 0x75, 0x52, 0x89, 0x1e, + 0x3f, 0x96, 0x6a, 0x8f, 0x2e, 0x40, 0x14, 0x06, 0x72, 0xee, 0x3f, 0x70, + 0x59, 0x92, 0x5d, 0x85, 0xed, 0x83, 0x99, 0xfa, 0x82, 0x84, 0x9e, 0xe4, + 0x03, 0x01, 0x21, 0x13, 0xab, 0x27, 0xd6, 0xcc, 0x71, 0x49, 0xe5, 0xda, + 0x1d, 0xff, 0x6f, 0x3c, 0x09, 0x4e, 0xd5, 0x8d, 0x66, 0xe8, 0x0c, 0xc9, + 0x7f, 0xee, 0x31, 0x14, 0x02, 0x37, 0x5f, 0x7b, 0x69, 0xec, 0x89, 0x3e, + 0x45, 0x7f, 0x25, 0x44, 0xe7, 0x1f, 0x1a, 0xd6, 0xc5, 0x1a, 0xc3, 0x4a, + 0xe4, 0xe1, 0xf1, 0x84, 0x98, 0xe7, 0x4f, 0xf9, 0xa9, 0x98, 0xa7, 0x18, + 0x46, 0xec, 0x84, 0x6c, 0xec, 0xa9, 0x03, 0x0a, 0xfd, 0x7c, 0x7a, 0x52, + 0x1d, 0x9c, 0x6b, 0xa4, 0xa8, 0x0f, 0x98, 0x92, 0xa4, 0x92, 0x78, 0x5c, + 0x2b, 0x78, 0xe3, 0x7d, 0xb2, 0xc7, 0xd9, 0xb6, 0x70, 0x7d, 0xdf, 0x5b, + 0x73, 0x53, 0xbf, 0xaa, 0xd4, 0x66, 0x50, 0x4b, 0xf0, 0xc9, 0x3b, 0x95, + 0x85, 0xe5, 0xc1, 0x4a, 0x65, 0x9d, 0x25, 0x58, 0x50, 0xbb, 0x20, 0x54, + 0x91, 0x79, 0x3a, 0x1b, 0x07, 0x5c, 0x6a, 0x57, 0x28, 0xaf, 0x31, 0xc7, + 0x9f, 0xe7, 0xc3, 0x1d, 0xee, 0x47, 0xfd, 0x27, 0xd7, 0x7f, 0xcf, 0x74, + 0xdc, 0x65, 0xc5, 0x3f, 0x30, 0x82, 0x04, 0xec, 0x30, 0x82, 0x03, 0xd4, + 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x13, 0x33, 0x00, 0x00, 0x00, 0xb0, + 0x11, 0xaf, 0x0a, 0x8b, 0xd0, 0x3b, 0x9f, 0xdd, 0x00, 0x01, 0x00, 0x00, + 0x00, 0xb0, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, + 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x79, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, + 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x23, 0x30, 0x21, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, + 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, + 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, + 0x31, 0x33, 0x30, 0x31, 0x32, 0x34, 0x32, 0x32, 0x33, 0x33, 0x33, 0x39, + 0x5a, 0x17, 0x0d, 0x31, 0x34, 0x30, 0x34, 0x32, 0x34, 0x32, 0x32, 0x33, + 0x33, 0x33, 0x39, 0x5a, 0x30, 0x81, 0x83, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, + 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x0d, 0x30, 0x0b, 0x06, + 0x03, 0x55, 0x04, 0x0b, 0x13, 0x04, 0x4d, 0x4f, 0x50, 0x52, 0x31, 0x1e, + 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x4d, 0x69, 0x63, + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0xe8, 0xaf, 0x5c, 0xa2, 0x20, 0x0d, 0xf8, 0x28, 0x7c, + 0xbc, 0x05, 0x7b, 0x7f, 0xad, 0xee, 0xeb, 0x76, 0xac, 0x28, 0x53, 0x3f, + 0x3a, 0xdb, 0x40, 0x7d, 0xb3, 0x8e, 0x33, 0xe6, 0x57, 0x3f, 0xa5, 0x51, + 0x15, 0x34, 0x54, 0xa5, 0xcf, 0xb4, 0x8b, 0xa9, 0x3f, 0xa8, 0x37, 0xe1, + 0x2d, 0x50, 0xed, 0x35, 0x16, 0x4e, 0xef, 0x4d, 0x7a, 0xdb, 0x13, 0x76, + 0x88, 0xb0, 0x2c, 0xf0, 0x59, 0x5c, 0xa9, 0xeb, 0xe1, 0xd7, 0x29, 0x75, + 0xe4, 0x1b, 0x85, 0x27, 0x9b, 0xf3, 0xf8, 0x2d, 0x9e, 0x41, 0x36, 0x2b, + 0x0b, 0x40, 0xfb, 0xbe, 0x3b, 0xba, 0xb9, 0x5c, 0x75, 0x93, 0x16, 0x52, + 0x4b, 0xca, 0x33, 0xc5, 0x37, 0xb0, 0xf3, 0xeb, 0x7e, 0xa8, 0xf5, 0x41, + 0x15, 0x5c, 0x08, 0x65, 0x1d, 0x21, 0x37, 0xf0, 0x2c, 0xba, 0x22, 0x0b, + 0x10, 0xb1, 0x10, 0x9d, 0x77, 0x22, 0x85, 0x84, 0x7c, 0x4f, 0xb9, 0x1b, + 0x90, 0xb0, 0xf5, 0xa3, 0xfe, 0x8b, 0xf4, 0x0c, 0x9a, 0x4e, 0xa0, 0xf5, + 0xc9, 0x0a, 0x21, 0xe2, 0xaa, 0xe3, 0x01, 0x36, 0x47, 0xfd, 0x2f, 0x82, + 0x6a, 0x81, 0x03, 0xf5, 0xa9, 0x35, 0xdc, 0x94, 0x57, 0x9d, 0xfb, 0x4b, + 0xd4, 0x0e, 0x82, 0xdb, 0x38, 0x8f, 0x12, 0xfe, 0xe3, 0xd6, 0x7a, 0x74, + 0x88, 0x64, 0xe1, 0x62, 0xc4, 0x25, 0x2e, 0x2a, 0xae, 0x9d, 0x18, 0x1f, + 0x0e, 0x1e, 0xb6, 0xc2, 0xaf, 0x24, 0xb4, 0x0e, 0x50, 0xbc, 0xde, 0x1c, + 0x93, 0x5c, 0x49, 0xa6, 0x79, 0xb5, 0xb6, 0xdb, 0xce, 0xf9, 0x70, 0x7b, + 0x28, 0x01, 0x84, 0xb8, 0x2a, 0x29, 0xcf, 0xbf, 0xa9, 0x05, 0x05, 0xe1, + 0xe0, 0x0f, 0x71, 0x4d, 0xfd, 0xad, 0x5c, 0x23, 0x83, 0x29, 0xeb, 0xc7, + 0xc5, 0x4a, 0xc8, 0xe8, 0x27, 0x84, 0xd3, 0x7e, 0xc6, 0x43, 0x0b, 0x95, + 0x00, 0x05, 0xb1, 0x4f, 0x65, 0x71, 0xc5, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0x60, 0x30, 0x82, 0x01, 0x5c, 0x30, 0x13, 0x06, 0x03, + 0x55, 0x1d, 0x25, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, + 0x04, 0x16, 0x04, 0x14, 0x59, 0x71, 0xa6, 0x5a, 0x33, 0x4d, 0xda, 0x98, + 0x07, 0x80, 0xff, 0x84, 0x1e, 0xbe, 0x87, 0xf9, 0x72, 0x32, 0x41, 0xf2, + 0x30, 0x51, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x4a, 0x30, 0x48, 0xa4, + 0x46, 0x30, 0x44, 0x31, 0x0d, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x04, 0x0b, + 0x13, 0x04, 0x4d, 0x4f, 0x50, 0x52, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, + 0x55, 0x04, 0x05, 0x13, 0x2a, 0x33, 0x31, 0x35, 0x39, 0x35, 0x2b, 0x34, + 0x66, 0x61, 0x66, 0x30, 0x62, 0x37, 0x31, 0x2d, 0x61, 0x64, 0x33, 0x37, + 0x2d, 0x34, 0x61, 0x61, 0x33, 0x2d, 0x61, 0x36, 0x37, 0x31, 0x2d, 0x37, + 0x36, 0x62, 0x63, 0x30, 0x35, 0x32, 0x33, 0x34, 0x34, 0x61, 0x64, 0x30, + 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, + 0xcb, 0x11, 0xe8, 0xca, 0xd2, 0xb4, 0x16, 0x58, 0x01, 0xc9, 0x37, 0x2e, + 0x33, 0x16, 0x16, 0xb9, 0x4c, 0x9a, 0x0a, 0x1f, 0x30, 0x56, 0x06, 0x03, + 0x55, 0x1d, 0x1f, 0x04, 0x4f, 0x30, 0x4d, 0x30, 0x4b, 0xa0, 0x49, 0xa0, + 0x47, 0x86, 0x45, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, + 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, + 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, + 0x43, 0x6f, 0x64, 0x53, 0x69, 0x67, 0x50, 0x43, 0x41, 0x5f, 0x30, 0x38, + 0x2d, 0x33, 0x31, 0x2d, 0x32, 0x30, 0x31, 0x30, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x5a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x4e, 0x30, 0x4c, 0x30, 0x4a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x3e, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, + 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, + 0x65, 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x43, 0x6f, 0x64, 0x53, + 0x69, 0x67, 0x50, 0x43, 0x41, 0x5f, 0x30, 0x38, 0x2d, 0x33, 0x31, 0x2d, + 0x32, 0x30, 0x31, 0x30, 0x2e, 0x63, 0x72, 0x74, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, + 0x82, 0x01, 0x01, 0x00, 0x31, 0xd7, 0x6e, 0x2a, 0x12, 0x57, 0x33, 0x81, + 0xd5, 0x9d, 0xc6, 0xeb, 0xf9, 0x3a, 0xd4, 0x44, 0x4d, 0x08, 0x9e, 0xee, + 0x5e, 0xdf, 0x6a, 0x5b, 0xb7, 0x79, 0xcf, 0x02, 0x9c, 0xbc, 0x76, 0x68, + 0x9e, 0x90, 0xa1, 0x9c, 0x0b, 0xc3, 0x7f, 0xa2, 0x8c, 0xf1, 0x4d, 0xba, + 0x95, 0x39, 0xfb, 0x0d, 0xe0, 0xe1, 0x9b, 0xf4, 0x5d, 0x24, 0x0f, 0x1b, + 0x8d, 0x88, 0x15, 0x3a, 0x7c, 0xdb, 0xad, 0xce, 0xb3, 0xc9, 0x6c, 0xba, + 0x39, 0x2c, 0x45, 0x7d, 0x24, 0x11, 0x54, 0x26, 0x30, 0x0d, 0x0d, 0xff, + 0x47, 0xea, 0x03, 0x07, 0xe5, 0xe4, 0x66, 0x5d, 0x2c, 0x7b, 0x9d, 0x1d, + 0xa9, 0x10, 0xfa, 0x1c, 0xb0, 0x74, 0xf2, 0x4f, 0x69, 0x6b, 0x9e, 0xa9, + 0x24, 0x84, 0xda, 0xed, 0x96, 0xa0, 0xdf, 0x73, 0xa4, 0xef, 0x6a, 0x1a, + 0xac, 0x4b, 0x62, 0x9e, 0xf1, 0x7c, 0xc0, 0x14, 0x7f, 0x48, 0xcd, 0x4d, + 0xb2, 0x44, 0xf9, 0xf0, 0x3c, 0x93, 0x6d, 0x42, 0xd8, 0xe8, 0x7c, 0xe6, + 0x17, 0xa0, 0x9b, 0x68, 0x68, 0x09, 0x28, 0xf9, 0x02, 0x97, 0xef, 0x11, + 0x03, 0xba, 0x67, 0x52, 0xad, 0xc1, 0xe9, 0xb3, 0x73, 0xa6, 0xd2, 0x63, + 0xcd, 0x4a, 0xe2, 0x3e, 0xe4, 0xf3, 0x4e, 0xfd, 0xff, 0xa1, 0xe0, 0xbb, + 0x02, 0x13, 0x3b, 0x5d, 0x20, 0xde, 0x55, 0x3f, 0xa3, 0xae, 0x90, 0x40, + 0x31, 0x38, 0x75, 0x28, 0x5e, 0x04, 0xa9, 0x46, 0x6d, 0xe6, 0xf5, 0x7a, + 0x79, 0x40, 0xbd, 0x1f, 0xcd, 0xe8, 0x45, 0xd5, 0xae, 0xe2, 0x5d, 0x3e, + 0xf5, 0x75, 0xc7, 0xe6, 0x66, 0x63, 0x60, 0xcc, 0xd5, 0x9a, 0x84, 0x87, + 0x8d, 0x24, 0x30, 0xf7, 0xef, 0x34, 0xd0, 0x63, 0x1d, 0xb1, 0x42, 0x67, + 0x4a, 0x0e, 0x4b, 0xbf, 0x3a, 0x0e, 0xef, 0xb6, 0x95, 0x3a, 0xa7, 0x38, + 0xe4, 0x25, 0x92, 0x08, 0xa6, 0x88, 0x66, 0x82, 0x30, 0x82, 0x05, 0xbc, + 0x30, 0x82, 0x03, 0xa4, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a, 0x61, + 0x33, 0x26, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x30, 0x0d, 0x06, + 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, + 0x30, 0x5f, 0x31, 0x13, 0x30, 0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, + 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, + 0x19, 0x30, 0x17, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, + 0x64, 0x01, 0x19, 0x16, 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, + 0x66, 0x74, 0x31, 0x2d, 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, + 0x24, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x52, + 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, + 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x38, 0x33, 0x31, 0x32, + 0x32, 0x31, 0x39, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x32, 0x30, 0x30, 0x38, + 0x33, 0x31, 0x32, 0x32, 0x32, 0x39, 0x33, 0x32, 0x5a, 0x30, 0x79, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, + 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, + 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, + 0x23, 0x30, 0x21, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, + 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x43, 0x41, + 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, + 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xb2, 0x72, 0x59, + 0x5c, 0x19, 0x30, 0x64, 0xbf, 0x1d, 0x9a, 0x60, 0x20, 0x20, 0x42, 0x99, + 0x76, 0x53, 0x6c, 0x3e, 0x1b, 0xd6, 0x6f, 0xcc, 0xcb, 0xf1, 0xea, 0x6b, + 0xfe, 0x97, 0x16, 0x10, 0xe0, 0xdf, 0x3a, 0x74, 0x83, 0x1a, 0xb7, 0x2f, + 0xa0, 0x32, 0xec, 0xff, 0xde, 0xc2, 0x42, 0x4e, 0x23, 0xd5, 0x72, 0x00, + 0xdb, 0x35, 0x57, 0x0a, 0x89, 0xca, 0xae, 0x20, 0x49, 0xf4, 0xf0, 0x68, + 0xac, 0x4d, 0x4b, 0x8d, 0xa5, 0xbd, 0x79, 0x4b, 0x71, 0x9b, 0x47, 0x07, + 0xda, 0xfd, 0x25, 0xdf, 0x9d, 0x75, 0x88, 0xcf, 0xaa, 0x73, 0x44, 0x7f, + 0xd7, 0x81, 0xdb, 0xf3, 0xbd, 0xf2, 0x36, 0xa4, 0xc9, 0x5c, 0x45, 0xdc, + 0xaf, 0xad, 0x3d, 0xe0, 0x28, 0x68, 0x97, 0x1a, 0xa7, 0xa5, 0x72, 0x73, + 0x56, 0xf1, 0x17, 0x94, 0xe4, 0xfd, 0x35, 0x94, 0x72, 0xa0, 0xd6, 0x76, + 0x5f, 0x1e, 0x77, 0x45, 0x83, 0x85, 0x38, 0x16, 0xd0, 0x73, 0x5b, 0x05, + 0xba, 0x67, 0x52, 0x8d, 0xa5, 0xb2, 0x69, 0x2f, 0xda, 0x19, 0x0b, 0xfe, + 0x92, 0x74, 0x29, 0xe2, 0x76, 0x2f, 0x54, 0xdd, 0x14, 0x30, 0x59, 0xf8, + 0xd2, 0x8d, 0x62, 0xfd, 0xcb, 0xc9, 0x5f, 0x46, 0x31, 0x50, 0xb9, 0x27, + 0x13, 0xe4, 0x40, 0x30, 0xcf, 0x72, 0x29, 0x10, 0x28, 0x22, 0xc7, 0x37, + 0x4e, 0x3d, 0xa0, 0x32, 0x3d, 0x90, 0xcd, 0xa1, 0x38, 0x06, 0x85, 0x5c, + 0x4e, 0x56, 0x82, 0x28, 0x2a, 0x05, 0x32, 0xb7, 0x4b, 0xd7, 0x4f, 0x63, + 0xe7, 0xd2, 0x2d, 0x62, 0xf1, 0x45, 0x3d, 0xe7, 0xac, 0x08, 0x00, 0xf6, + 0x46, 0xa1, 0x9e, 0xd1, 0x5b, 0x8c, 0x26, 0x53, 0xe8, 0x7a, 0xaa, 0x4a, + 0xf2, 0x46, 0xcf, 0x37, 0x3c, 0x38, 0x9e, 0xb4, 0x77, 0x5c, 0xa5, 0x17, + 0x9e, 0x8d, 0xcb, 0x11, 0x8f, 0x56, 0x3c, 0xc1, 0xac, 0x09, 0x5f, 0x03, + 0xd3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x5e, 0x30, 0x82, + 0x01, 0x5a, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, + 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, + 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xcb, 0x11, 0xe8, 0xca, 0xd2, 0xb4, + 0x16, 0x58, 0x01, 0xc9, 0x37, 0x2e, 0x33, 0x16, 0x16, 0xb9, 0x4c, 0x9a, + 0x0a, 0x1f, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, + 0x02, 0x01, 0x86, 0x30, 0x12, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, + 0x82, 0x37, 0x15, 0x01, 0x04, 0x05, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, + 0x23, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x02, + 0x04, 0x16, 0x04, 0x14, 0xfd, 0xd1, 0x31, 0x4e, 0xd3, 0x26, 0x8a, 0x95, + 0xe1, 0x98, 0x60, 0x3b, 0xa8, 0x31, 0x6f, 0xa6, 0x3c, 0xbc, 0xd8, 0x2d, + 0x30, 0x19, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, + 0x02, 0x04, 0x0c, 0x1e, 0x0a, 0x00, 0x53, 0x00, 0x75, 0x00, 0x62, 0x00, + 0x43, 0x00, 0x41, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, + 0x30, 0x16, 0x80, 0x14, 0x0e, 0xac, 0x82, 0x60, 0x40, 0x56, 0x27, 0x97, + 0xe5, 0x25, 0x13, 0xfc, 0x2a, 0xe1, 0x0a, 0x53, 0x95, 0x59, 0xe4, 0xa4, + 0x30, 0x50, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x49, 0x30, 0x47, 0x30, + 0x45, 0xa0, 0x43, 0xa0, 0x41, 0x86, 0x3f, 0x68, 0x74, 0x74, 0x70, 0x3a, + 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, + 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, + 0x63, 0x72, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, + 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x72, 0x6f, + 0x6f, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x54, + 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x48, + 0x30, 0x46, 0x30, 0x44, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x30, 0x02, 0x86, 0x38, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, + 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x65, 0x72, + 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x72, 0x74, + 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, + 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x59, 0x39, 0x3e, 0x7f, + 0x26, 0x46, 0xaf, 0xeb, 0x6f, 0x40, 0xb1, 0x32, 0xb5, 0x6a, 0xeb, 0x0e, + 0x2f, 0x6e, 0xa8, 0x49, 0xf7, 0xeb, 0x5f, 0x75, 0xed, 0x4c, 0x3b, 0x2d, + 0xd7, 0x43, 0xad, 0x0b, 0xfe, 0xcb, 0xe9, 0x2d, 0x31, 0xa3, 0x23, 0xcc, + 0x7c, 0x50, 0x98, 0x80, 0x21, 0x5d, 0xac, 0x3d, 0x2f, 0x4c, 0xba, 0xa2, + 0xa8, 0x56, 0x9c, 0xe3, 0x70, 0xbb, 0xb8, 0xb4, 0xf8, 0x79, 0xb5, 0x49, + 0x72, 0xf7, 0x3e, 0xea, 0x41, 0x7f, 0xca, 0xe1, 0x0c, 0x17, 0x69, 0xcb, + 0xa5, 0x9c, 0x20, 0x2d, 0xfa, 0x0b, 0x50, 0xc4, 0x56, 0xcd, 0x2d, 0xe3, + 0x4a, 0xd2, 0xbc, 0x70, 0xe7, 0xa8, 0x0d, 0xa2, 0x03, 0xa5, 0x56, 0xe0, + 0xb8, 0x8a, 0x4b, 0x57, 0xf2, 0x95, 0x42, 0x9c, 0xf1, 0xf3, 0xef, 0xee, + 0xe3, 0x86, 0x1f, 0x34, 0x3c, 0xb8, 0x56, 0x9a, 0xf0, 0x53, 0x23, 0x85, + 0x2a, 0xa4, 0x82, 0x1c, 0x93, 0xe2, 0x94, 0x07, 0x1d, 0xf2, 0xe2, 0x4e, + 0xf8, 0x8c, 0xa1, 0xca, 0xe8, 0x13, 0xa5, 0x91, 0x4e, 0xc8, 0x1b, 0xd2, + 0x8f, 0x72, 0x95, 0x2a, 0x71, 0x6d, 0x9b, 0x1a, 0xf8, 0x1c, 0xf0, 0x53, + 0xd6, 0x67, 0xcc, 0x22, 0xff, 0x5c, 0x1d, 0xcd, 0xa2, 0x8c, 0xbd, 0x27, + 0xb2, 0x79, 0x63, 0x56, 0x44, 0xa2, 0x51, 0xcd, 0xf9, 0xe9, 0xa3, 0x58, + 0x56, 0xdd, 0x9b, 0x02, 0x45, 0x44, 0x2f, 0x5f, 0xf4, 0xda, 0xae, 0xd4, + 0x82, 0x32, 0x6e, 0xfc, 0xa4, 0x95, 0x13, 0xe4, 0xeb, 0x69, 0xe7, 0xa9, + 0xa2, 0x2c, 0xbe, 0xc8, 0x2b, 0x10, 0x0e, 0x65, 0x8e, 0x99, 0xdb, 0xf5, + 0xa2, 0xfa, 0x12, 0x26, 0x09, 0x65, 0x38, 0x94, 0xf1, 0x7a, 0x1f, 0x4a, + 0xbb, 0xd1, 0xe1, 0x56, 0xe8, 0xd0, 0x78, 0x96, 0x18, 0x5c, 0xc9, 0x35, + 0x16, 0x5f, 0xdd, 0x93, 0x1d, 0x49, 0x8e, 0x2d, 0xbe, 0xad, 0x34, 0x44, + 0x1c, 0xee, 0x10, 0x15, 0x1a, 0x00, 0x5d, 0xdd, 0x35, 0x5b, 0x21, 0xce, + 0x98, 0xc7, 0x09, 0xee, 0x85, 0x0e, 0x8c, 0x4f, 0x6d, 0x0e, 0x13, 0x4e, + 0x3d, 0x7c, 0x29, 0x48, 0x9c, 0x72, 0xd1, 0xf3, 0x6c, 0xca, 0xc1, 0xec, + 0x70, 0xa3, 0x57, 0x92, 0x57, 0x7d, 0x94, 0x8d, 0xa0, 0x1b, 0x48, 0x03, + 0x5a, 0xf7, 0xcf, 0xa3, 0x67, 0x0a, 0x74, 0xa5, 0x36, 0xed, 0x2d, 0x2f, + 0x17, 0xc8, 0xe6, 0x72, 0x37, 0x12, 0xf4, 0x6f, 0xb1, 0x3c, 0x67, 0x82, + 0xf9, 0x52, 0xb2, 0x8d, 0x33, 0x16, 0x65, 0x1e, 0x0e, 0x8a, 0xdd, 0x10, + 0xde, 0x64, 0xf4, 0x6f, 0xce, 0x46, 0xd4, 0xd3, 0x17, 0xe9, 0x79, 0xc4, + 0x04, 0xb4, 0xd3, 0xfb, 0x2c, 0xdf, 0x1f, 0x8a, 0x9e, 0xac, 0x0a, 0xfb, + 0x13, 0x27, 0x40, 0xad, 0xe4, 0xf9, 0xe1, 0xa9, 0x7f, 0x46, 0xbb, 0x07, + 0x60, 0x47, 0x65, 0x60, 0x40, 0x4e, 0xb0, 0x42, 0xec, 0x4e, 0xed, 0xb3, + 0x76, 0x79, 0xd8, 0x0a, 0x34, 0x09, 0x6d, 0x1c, 0x80, 0x31, 0x1f, 0xe2, + 0x0e, 0x54, 0xdd, 0xe5, 0xa1, 0xfb, 0xe5, 0x47, 0x10, 0xad, 0x64, 0x98, + 0xff, 0x50, 0x16, 0x2e, 0x7c, 0xbf, 0x05, 0x21, 0x7a, 0xe2, 0x95, 0x41, + 0x27, 0x69, 0xc3, 0x93, 0x8f, 0x95, 0xc9, 0x8d, 0xd8, 0x9b, 0x21, 0xae, + 0x0d, 0x5c, 0x9c, 0xf0, 0xa2, 0xae, 0x86, 0x68, 0x83, 0x0c, 0x6a, 0x2d, + 0xbb, 0x76, 0x6b, 0x00, 0x1d, 0x96, 0xad, 0xf2, 0x16, 0x7b, 0xf6, 0x16, + 0x83, 0x24, 0xb9, 0x88, 0xcf, 0x6a, 0xa8, 0x47, 0x31, 0x2f, 0x9a, 0xdc, + 0xe3, 0x71, 0x3d, 0xd7, 0x00, 0x7e, 0x62, 0x47, 0xd1, 0xce, 0x88, 0xc9, + 0xb8, 0x18, 0xfa, 0x0e, 0x72, 0x8d, 0xc1, 0xa3, 0x3d, 0xaf, 0x02, 0x40, + 0x6a, 0xff, 0x69, 0x9b, 0x96, 0xe2, 0x10, 0xa8, 0x10, 0xb4, 0x37, 0x50, + 0x08, 0xd6, 0xc3, 0x3d, 0x30, 0x82, 0x06, 0x07, 0x30, 0x82, 0x03, 0xef, + 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a, 0x61, 0x16, 0x68, 0x34, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, + 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, 0x31, 0x13, + 0x30, 0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, + 0x01, 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, 0x19, 0x30, 0x17, 0x06, + 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, + 0x09, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, 0x2d, + 0x30, 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4d, 0x69, 0x63, + 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, + 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, + 0x0d, 0x30, 0x37, 0x30, 0x34, 0x30, 0x33, 0x31, 0x32, 0x35, 0x33, 0x30, + 0x39, 0x5a, 0x17, 0x0d, 0x32, 0x31, 0x30, 0x34, 0x30, 0x33, 0x31, 0x33, + 0x30, 0x33, 0x30, 0x39, 0x5a, 0x30, 0x77, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, + 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x21, 0x30, 0x1f, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, + 0x6f, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x2d, 0x53, 0x74, 0x61, + 0x6d, 0x70, 0x20, 0x50, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, + 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, + 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, + 0x01, 0x01, 0x00, 0x9f, 0xa1, 0x6c, 0xb1, 0xdf, 0xdb, 0x48, 0x92, 0x2a, + 0x7c, 0x6b, 0x2e, 0x19, 0xe1, 0xbd, 0xe2, 0xe3, 0xc5, 0x99, 0x51, 0x23, + 0x50, 0xad, 0xce, 0xdd, 0x18, 0x4e, 0x24, 0x0f, 0xee, 0xd1, 0xa7, 0xd1, + 0x4c, 0xad, 0x74, 0x30, 0x20, 0x11, 0xeb, 0x07, 0xd5, 0x54, 0x95, 0x15, + 0x49, 0x94, 0x1b, 0x42, 0x92, 0xae, 0x98, 0x5c, 0x30, 0x26, 0xda, 0x00, + 0x6b, 0xe8, 0x7b, 0xbd, 0xec, 0x89, 0x07, 0x0f, 0xf7, 0x0e, 0x04, 0x98, + 0xf0, 0x89, 0xcc, 0x1f, 0xcb, 0x33, 0x24, 0x87, 0x9d, 0xf2, 0xf4, 0x67, + 0x1c, 0x2c, 0xfc, 0x7b, 0xe7, 0x88, 0x1d, 0xea, 0xe7, 0x4e, 0xa3, 0xa1, + 0xc1, 0x23, 0x53, 0xca, 0x8d, 0xfa, 0x45, 0xcf, 0x09, 0xd0, 0x5e, 0xaf, + 0xd0, 0xb0, 0x42, 0x04, 0xa2, 0xf9, 0xa6, 0x6c, 0x93, 0x67, 0xd7, 0x28, + 0xdc, 0x46, 0x53, 0xb0, 0x86, 0xd0, 0xe5, 0x28, 0x46, 0x2e, 0x27, 0xac, + 0x86, 0x4f, 0x55, 0x52, 0x0c, 0xe4, 0x03, 0x2c, 0xfb, 0x6a, 0x90, 0x90, + 0x30, 0x6e, 0x87, 0xf3, 0x59, 0x30, 0x9d, 0xfa, 0x7e, 0xd6, 0x97, 0xb3, + 0xe8, 0x21, 0x97, 0x7e, 0xf8, 0xd2, 0x13, 0xf3, 0x08, 0xb7, 0x53, 0x6d, + 0x52, 0xb4, 0x45, 0x90, 0x9f, 0x48, 0x00, 0x4a, 0x47, 0x66, 0x11, 0x27, + 0x29, 0x66, 0xa8, 0x97, 0xe4, 0xd3, 0x06, 0x81, 0x4a, 0xa2, 0xf9, 0x84, + 0xa7, 0x11, 0x47, 0x14, 0x09, 0x82, 0x9f, 0x84, 0xed, 0x55, 0x78, 0xfe, + 0x01, 0x9a, 0x1d, 0x50, 0x08, 0x85, 0x00, 0x10, 0x30, 0x46, 0xed, 0xb7, + 0xde, 0x23, 0x46, 0xbb, 0xc4, 0x2d, 0x54, 0x9f, 0xaf, 0x1e, 0x78, 0x41, + 0x31, 0x77, 0xcc, 0x9b, 0xdf, 0x3b, 0x83, 0x93, 0xa1, 0x61, 0x02, 0xb5, + 0x1d, 0x0d, 0xb1, 0xfc, 0xf7, 0x9b, 0xb2, 0x01, 0xce, 0x22, 0x4b, 0x54, + 0xff, 0xf9, 0x05, 0xc3, 0xc2, 0x20, 0x0b, 0x02, 0x03, 0x01, 0x00, 0x01, + 0xa3, 0x82, 0x01, 0xab, 0x30, 0x82, 0x01, 0xa7, 0x30, 0x0f, 0x06, 0x03, + 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, + 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, + 0x23, 0x34, 0xf8, 0xd9, 0x52, 0x46, 0x70, 0x0a, 0xed, 0x40, 0xfb, 0x76, + 0xfb, 0xb3, 0x2b, 0xb0, 0xc3, 0x35, 0xb3, 0x0f, 0x30, 0x0b, 0x06, 0x03, + 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x10, 0x06, + 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x01, 0x04, 0x03, + 0x02, 0x01, 0x00, 0x30, 0x81, 0x98, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, + 0x81, 0x90, 0x30, 0x81, 0x8d, 0x80, 0x14, 0x0e, 0xac, 0x82, 0x60, 0x40, + 0x56, 0x27, 0x97, 0xe5, 0x25, 0x13, 0xfc, 0x2a, 0xe1, 0x0a, 0x53, 0x95, + 0x59, 0xe4, 0xa4, 0xa1, 0x63, 0xa4, 0x61, 0x30, 0x5f, 0x31, 0x13, 0x30, + 0x11, 0x06, 0x0a, 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, + 0x19, 0x16, 0x03, 0x63, 0x6f, 0x6d, 0x31, 0x19, 0x30, 0x17, 0x06, 0x0a, + 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x01, 0x19, 0x16, 0x09, + 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x31, 0x2d, 0x30, + 0x2b, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x24, 0x4d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, + 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x82, 0x10, 0x79, 0xad, + 0x16, 0xa1, 0x4a, 0xa0, 0xa5, 0xad, 0x4c, 0x73, 0x58, 0xf4, 0x07, 0x13, + 0x2e, 0x65, 0x30, 0x50, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x49, 0x30, + 0x47, 0x30, 0x45, 0xa0, 0x43, 0xa0, 0x41, 0x86, 0x3f, 0x68, 0x74, 0x74, + 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, + 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, + 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, + 0x74, 0x73, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x72, 0x6f, 0x6f, 0x74, 0x63, 0x65, 0x72, 0x74, 0x2e, 0x63, 0x72, 0x6c, + 0x30, 0x54, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, + 0x04, 0x48, 0x30, 0x46, 0x30, 0x44, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x30, 0x02, 0x86, 0x38, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, + 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, + 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, + 0x65, 0x72, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, + 0x66, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x43, 0x65, 0x72, 0x74, 0x2e, 0x63, + 0x72, 0x74, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x0c, 0x30, + 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, + 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, + 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x10, 0x97, 0x8a, 0xc3, 0x5c, + 0x03, 0x44, 0x36, 0xdd, 0xe9, 0xb4, 0xad, 0x77, 0xdb, 0xce, 0x79, 0x51, + 0x4d, 0x01, 0xb1, 0x2e, 0x74, 0x71, 0x5b, 0x6d, 0x0c, 0x13, 0xab, 0xce, + 0xbe, 0x7b, 0x8f, 0xb8, 0x2e, 0xd4, 0x12, 0xa2, 0x8c, 0x6d, 0x62, 0xb8, + 0x57, 0x02, 0xcb, 0x4e, 0x20, 0x13, 0x50, 0x99, 0xdd, 0x7a, 0x40, 0xe2, + 0x57, 0xbb, 0xaf, 0x58, 0x9a, 0x1c, 0xe1, 0x1d, 0x01, 0x86, 0xac, 0xbb, + 0x78, 0xf2, 0x8b, 0xd0, 0xec, 0x3b, 0x01, 0xee, 0xe2, 0xbe, 0x8f, 0x0a, + 0x05, 0xc8, 0x8d, 0x48, 0xe2, 0xf0, 0x53, 0x15, 0xdd, 0x4f, 0xab, 0x92, + 0xe4, 0xe7, 0x8d, 0x6a, 0xd5, 0x80, 0xc1, 0xe6, 0x94, 0xf2, 0x06, 0x2f, + 0x85, 0x03, 0xe9, 0x91, 0x2a, 0x24, 0x22, 0x70, 0xfb, 0xf6, 0xfc, 0xe4, + 0x78, 0x99, 0x2e, 0x0d, 0xf7, 0x07, 0xe2, 0x70, 0xbc, 0x18, 0x4e, 0x9d, + 0x8e, 0x6b, 0x0a, 0x72, 0x95, 0xb8, 0xa1, 0x39, 0x9c, 0x67, 0x2d, 0xc5, + 0x51, 0x0e, 0xea, 0x62, 0x5c, 0x3f, 0x16, 0x98, 0x8b, 0x20, 0x3f, 0xe2, + 0x07, 0x1a, 0x32, 0xf9, 0xcc, 0x31, 0x4a, 0x76, 0x31, 0x3d, 0x2b, 0x72, + 0x0b, 0xc8, 0xea, 0x70, 0x3d, 0xff, 0x85, 0x0a, 0x13, 0xdf, 0xc2, 0x0a, + 0x61, 0x8e, 0xf0, 0xd7, 0xb8, 0x17, 0xeb, 0x4e, 0x8b, 0x7f, 0xc5, 0x35, + 0x2b, 0x5e, 0xa3, 0xbf, 0xeb, 0xbc, 0x7d, 0x0b, 0x42, 0x7b, 0xd4, 0x53, + 0x72, 0x21, 0xee, 0x30, 0xca, 0xbb, 0x78, 0x65, 0x5c, 0x5b, 0x01, 0x17, + 0x0a, 0x14, 0x0e, 0xd2, 0xda, 0x14, 0x98, 0xf5, 0x3c, 0xb9, 0x66, 0x58, + 0xb3, 0x2d, 0x2f, 0xe7, 0xf9, 0x85, 0x86, 0xcc, 0x51, 0x56, 0xe8, 0x9d, + 0x70, 0x94, 0x6c, 0xac, 0x39, 0x4c, 0xd4, 0xf6, 0x79, 0xbf, 0xaa, 0x18, + 0x7a, 0x62, 0x29, 0xef, 0xa2, 0x9b, 0x29, 0x34, 0x06, 0x77, 0x1a, 0x62, + 0xc9, 0x3d, 0x1e, 0x6d, 0x1f, 0x82, 0xf0, 0x0b, 0xc7, 0x2c, 0xbb, 0xcf, + 0x43, 0xb3, 0xe5, 0xf9, 0xec, 0x7d, 0xb5, 0xe3, 0xa4, 0xa8, 0x74, 0x35, + 0xb8, 0x4e, 0xc5, 0x71, 0x23, 0x12, 0x26, 0x76, 0x0b, 0x3c, 0x52, 0x8c, + 0x71, 0x5a, 0x46, 0x43, 0x14, 0xbc, 0xb3, 0xb3, 0xb0, 0x4d, 0x67, 0xc8, + 0x9f, 0x42, 0xff, 0x80, 0x79, 0x21, 0x80, 0x9e, 0x15, 0x30, 0x66, 0xe8, + 0x42, 0x12, 0x5e, 0x1a, 0xc8, 0x9e, 0x22, 0x21, 0xd0, 0x43, 0xe9, 0x2b, + 0xe9, 0xbb, 0xf4, 0x48, 0xcc, 0x2c, 0xd4, 0xd8, 0x32, 0x80, 0x4c, 0x26, + 0x2a, 0x48, 0x24, 0x5f, 0x5a, 0xea, 0x56, 0xef, 0xa6, 0xde, 0x99, 0x9d, + 0xca, 0x3a, 0x6f, 0xbd, 0x81, 0x27, 0x74, 0x06, 0x11, 0xee, 0x76, 0x21, + 0xbf, 0x9b, 0x82, 0xc1, 0x27, 0x54, 0xb6, 0xb1, 0x6a, 0x3d, 0x89, 0xa1, + 0x76, 0x61, 0xb4, 0x6e, 0xa1, 0x13, 0xa6, 0xbf, 0xaa, 0x47, 0xf0, 0x12, + 0x6f, 0xfd, 0x8a, 0x32, 0x6c, 0xb2, 0xfe, 0xdf, 0x51, 0xc8, 0x8c, 0x23, + 0xc9, 0x66, 0xbd, 0x9d, 0x1d, 0x87, 0x12, 0x64, 0x02, 0x3d, 0x2d, 0xaf, + 0x59, 0x8f, 0xb8, 0xe4, 0x21, 0xe5, 0xb5, 0xb0, 0xca, 0x63, 0xb4, 0x78, + 0x54, 0x05, 0xd4, 0x41, 0x2e, 0x50, 0xac, 0x94, 0xb0, 0xa5, 0x78, 0xab, + 0xb3, 0xa0, 0x96, 0x75, 0x1a, 0xd9, 0x92, 0x87, 0x13, 0x75, 0x22, 0x2f, + 0x32, 0xa8, 0x08, 0x6e, 0xa0, 0x5b, 0x8c, 0x25, 0xbf, 0xa0, 0xef, 0x84, + 0xca, 0x21, 0xd6, 0xeb, 0x1e, 0x4f, 0xc9, 0x9a, 0xee, 0x49, 0xe0, 0xf7, + 0x01, 0x65, 0x6f, 0x89, 0x0b, 0x7d, 0xc8, 0x69, 0xc8, 0xe6, 0x6e, 0xea, + 0xa7, 0x97, 0xce, 0x31, 0x29, 0xff, 0x0e, 0xc5, 0x5b, 0x5c, 0xd8, 0x4d, + 0x1b, 0xa1, 0xd8, 0xfa, 0x2f, 0x9e, 0x3f, 0x2e, 0x55, 0x16, 0x6b, 0xc9, + 0x13, 0xa3, 0xfd, 0x31, 0x82, 0x04, 0xa4, 0x30, 0x82, 0x04, 0xa0, 0x02, + 0x01, 0x01, 0x30, 0x81, 0x90, 0x30, 0x79, 0x31, 0x0b, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, + 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, + 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, + 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, + 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, + 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x23, 0x30, 0x21, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x1a, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, + 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, + 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x50, 0x43, 0x41, 0x02, 0x13, 0x33, 0x00, + 0x00, 0x00, 0xb0, 0x11, 0xaf, 0x0a, 0x8b, 0xd0, 0x3b, 0x9f, 0xdd, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xb0, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, + 0x02, 0x1a, 0x05, 0x00, 0xa0, 0x81, 0xc6, 0x30, 0x19, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, + 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1c, + 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0b, + 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, + 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, + 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0xc4, 0x88, 0x30, + 0x8f, 0x22, 0x96, 0x47, 0xc4, 0x13, 0xd0, 0xb8, 0xe3, 0xc7, 0x84, 0xc7, + 0x85, 0xe5, 0xf7, 0x30, 0x83, 0x30, 0x66, 0x06, 0x0a, 0x2b, 0x06, 0x01, + 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0c, 0x31, 0x58, 0x30, 0x56, 0xa0, + 0x2c, 0x80, 0x2a, 0x00, 0x4d, 0x00, 0x69, 0x00, 0x63, 0x00, 0x72, 0x00, + 0x6f, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x66, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, + 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0xa1, 0x26, 0x80, + 0x24, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, + 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x74, 0x79, 0x70, 0x6f, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, + 0x20, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x54, 0x7f, 0x4e, 0xf8, + 0x75, 0xe1, 0x41, 0x10, 0x08, 0x27, 0xa7, 0xa6, 0x2f, 0x78, 0x96, 0xd1, + 0xc7, 0x24, 0xcb, 0xfa, 0x69, 0xe7, 0x03, 0xdd, 0xac, 0xb1, 0x4b, 0xe2, + 0xb3, 0xb3, 0xf7, 0x63, 0x85, 0x62, 0xaa, 0x23, 0x3f, 0x9a, 0xed, 0x09, + 0xa9, 0xd2, 0xdc, 0x5c, 0xe2, 0x2e, 0xce, 0xb5, 0xdb, 0xfc, 0xf5, 0x23, + 0x20, 0x8b, 0x7f, 0x20, 0xa3, 0x48, 0x02, 0x4f, 0x90, 0xe6, 0x39, 0xae, + 0xb4, 0x31, 0x2d, 0x96, 0x01, 0x57, 0xf9, 0x47, 0x52, 0x23, 0x8f, 0xe6, + 0xdd, 0x54, 0xf8, 0x64, 0xe6, 0x78, 0x54, 0x3a, 0x80, 0x8f, 0x18, 0x32, + 0xd3, 0x9a, 0xad, 0x35, 0xd1, 0x92, 0x38, 0x9e, 0x2f, 0xde, 0xc3, 0xde, + 0xc6, 0x81, 0xc7, 0x70, 0x3d, 0x98, 0x84, 0x90, 0x07, 0xd6, 0x7e, 0xd2, + 0x59, 0x53, 0xaf, 0x2f, 0xe0, 0xa9, 0xbb, 0x44, 0xc5, 0xfc, 0xdb, 0x69, + 0xae, 0x79, 0xe9, 0x08, 0x1f, 0x06, 0x4f, 0x6b, 0xce, 0xd1, 0x8e, 0x1c, + 0xac, 0xf9, 0xc2, 0xb0, 0xd6, 0x3f, 0x0a, 0x90, 0x54, 0xdb, 0xe1, 0xf4, + 0x7d, 0xc8, 0x2e, 0xd2, 0xe4, 0x12, 0x49, 0x7a, 0xd6, 0x71, 0x49, 0xed, + 0x12, 0x73, 0xb4, 0xf7, 0x0e, 0x44, 0x2d, 0x1a, 0x1e, 0xe0, 0xa1, 0xa7, + 0x53, 0xb7, 0x41, 0x80, 0x33, 0x34, 0xc1, 0x18, 0xe1, 0x66, 0x59, 0xa0, + 0x9d, 0x21, 0xd0, 0x5b, 0xc2, 0x45, 0xab, 0x47, 0x2c, 0xf4, 0x35, 0xf2, + 0x56, 0xed, 0x17, 0xa3, 0x3d, 0xea, 0x38, 0x60, 0x53, 0xcf, 0x34, 0x04, + 0x14, 0x54, 0x1f, 0x1d, 0x77, 0x0f, 0xdb, 0x8b, 0xb3, 0xc7, 0xb1, 0x43, + 0xff, 0x98, 0xa6, 0x8f, 0x0d, 0x44, 0x10, 0x52, 0x74, 0x6e, 0x7b, 0xb5, + 0x24, 0x56, 0x59, 0xd3, 0x9b, 0x65, 0x04, 0x9b, 0x3c, 0xd1, 0xef, 0xb4, + 0xb5, 0x3d, 0xa6, 0xd9, 0x18, 0x3a, 0x77, 0x52, 0xf2, 0x8b, 0x7d, 0xca, + 0xa1, 0x82, 0x02, 0x1f, 0x30, 0x82, 0x02, 0x1b, 0x06, 0x09, 0x2a, 0x86, + 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x06, 0x31, 0x82, 0x02, 0x0c, 0x30, + 0x82, 0x02, 0x08, 0x02, 0x01, 0x01, 0x30, 0x81, 0x85, 0x30, 0x77, 0x31, + 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, + 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, + 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, + 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, + 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, + 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, + 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, + 0x21, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x54, 0x69, 0x6d, 0x65, + 0x2d, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x20, 0x50, 0x43, 0x41, 0x02, 0x0a, + 0x61, 0x02, 0x92, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x09, + 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0xa0, 0x5d, 0x30, + 0x18, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, + 0x31, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, + 0x01, 0x30, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, + 0x09, 0x05, 0x31, 0x0f, 0x17, 0x0d, 0x31, 0x33, 0x30, 0x32, 0x32, 0x32, + 0x32, 0x32, 0x35, 0x33, 0x35, 0x34, 0x5a, 0x30, 0x23, 0x06, 0x09, 0x2a, + 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, + 0x62, 0x79, 0x78, 0x81, 0xc5, 0x84, 0x74, 0x9e, 0x0d, 0xa5, 0xcd, 0xfb, + 0x9e, 0xf3, 0x54, 0x76, 0x3b, 0xff, 0x04, 0x22, 0x30, 0x0d, 0x06, 0x09, + 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x04, + 0x82, 0x01, 0x00, 0x62, 0xf5, 0x07, 0x31, 0xa4, 0xed, 0x18, 0x59, 0x37, + 0x80, 0x88, 0xd9, 0xf6, 0x9d, 0x5d, 0x4a, 0x6e, 0xc0, 0xa7, 0x94, 0xeb, + 0xf8, 0x89, 0x8f, 0xb2, 0xe6, 0x02, 0x6a, 0xf1, 0xa8, 0xa2, 0xdd, 0xb1, + 0x04, 0x23, 0xdd, 0x15, 0x90, 0x14, 0x4b, 0xee, 0x0d, 0x8a, 0xe6, 0x81, + 0x70, 0x2d, 0x57, 0xb3, 0x3b, 0x0e, 0xbc, 0x0e, 0xc4, 0xef, 0x63, 0x95, + 0x6e, 0xdf, 0x7c, 0xec, 0x73, 0x57, 0xea, 0x1a, 0xa0, 0x47, 0xba, 0x82, + 0xba, 0x92, 0xb2, 0xf5, 0xfa, 0xe6, 0xba, 0x5e, 0x0e, 0x71, 0xa2, 0xd7, + 0xc7, 0x28, 0xd0, 0x48, 0x94, 0x11, 0xfa, 0xa0, 0x07, 0xee, 0x39, 0xbe, + 0xe7, 0x3e, 0x4d, 0x2d, 0xde, 0x01, 0xe0, 0x81, 0x52, 0x20, 0x34, 0x41, + 0xd3, 0xa4, 0x87, 0x6d, 0xe1, 0xe0, 0xfc, 0xd3, 0xd3, 0x16, 0x29, 0x9b, + 0x6a, 0x52, 0xd7, 0x52, 0x4a, 0x53, 0x6e, 0xfb, 0x38, 0xc1, 0x89, 0x02, + 0x93, 0xd2, 0xc1, 0x4e, 0xd4, 0xd5, 0xa5, 0x50, 0x21, 0xf5, 0xad, 0x39, + 0xe8, 0x25, 0x45, 0x16, 0xbe, 0xa8, 0x11, 0xb6, 0x55, 0x3b, 0xf4, 0xbe, + 0xde, 0x5f, 0x4b, 0x16, 0x06, 0x36, 0x74, 0xa8, 0x6a, 0x5d, 0xbf, 0x66, + 0x82, 0xec, 0x44, 0x31, 0xe5, 0xf1, 0x7e, 0x66, 0x44, 0x9b, 0xbe, 0x6c, + 0xf2, 0xff, 0x2e, 0x33, 0xfd, 0x4a, 0x0b, 0xee, 0x0d, 0x6a, 0xd2, 0xd8, + 0xc7, 0x00, 0x68, 0xe6, 0x65, 0x54, 0x91, 0x25, 0x20, 0x95, 0xe6, 0x50, + 0xbc, 0x2f, 0x75, 0xf8, 0xd7, 0x16, 0x72, 0x35, 0x9f, 0xf5, 0xcf, 0xf0, + 0x14, 0x9f, 0x6b, 0xcc, 0x86, 0x2b, 0xd6, 0x1f, 0xeb, 0x55, 0x1c, 0xb6, + 0x5a, 0xbb, 0xcf, 0x11, 0x17, 0x7d, 0x19, 0x06, 0x88, 0xb0, 0x19, 0xac, + 0x33, 0xfd, 0xee, 0x2d, 0x4b, 0x97, 0xbe, 0x26, 0x1b, 0xaa, 0x26, 0x97, + 0x48, 0xf3, 0x15, 0xa3, 0x80, 0xd8, 0x6e, 0x00 +}; +unsigned int CONSOLAB_TTF_len = 368720; diff --git a/Graphics/private/bindings/Window.cpp b/Graphics/private/bindings/Window.cpp index 88958d2..81d6f32 100644 --- a/Graphics/private/bindings/Window.cpp +++ b/Graphics/private/bindings/Window.cpp @@ -101,6 +101,16 @@ Window::Window(int width, int height, const char* title) { return; } + // get some common information. maybe call it in loop to pick up monitor changes + int width_mm, height_mm; + auto monitor = glfwGetPrimaryMonitor(); + glfwGetMonitorPhysicalSize(monitor, &width_mm, &height_mm); + mMonitor.mmSize = { width_mm, height_mm }; + + const GLFWvidmode * mode = glfwGetVideoMode(glfwGetPrimaryMonitor()); + mMonitor.pixelSize = { mode->width, mode->height }; + mMonitor.refreshRate = mode->refreshRate; + mGraphics.init(this); } diff --git a/Graphics/public/Graphics.hpp b/Graphics/public/Graphics.hpp index ef198b4..40ec63c 100644 --- a/Graphics/public/Graphics.hpp +++ b/Graphics/public/Graphics.hpp @@ -38,8 +38,17 @@ namespace tp { void proc(); void draw(); + void setStyle(); + public: - // TODO : API + void drawDebugInfoWindow(); + + halnf getFontSize() const; + halnf getUIScale() const; + + void setDPMM(ualni); + void setFontSize(ualni); + void setUIScale(ualni); }; class Canvas { @@ -69,6 +78,9 @@ namespace tp { void draw(); void proc(); + public: + GUI& getDebugGui() { return mGui; } + private: GUI mGui; GL mGl; diff --git a/Graphics/public/Window.hpp b/Graphics/public/Window.hpp index 87d75bf..041aab1 100644 --- a/Graphics/public/Window.hpp +++ b/Graphics/public/Window.hpp @@ -18,6 +18,12 @@ namespace tp { }; }; + struct Monitor { + ualni refreshRate = 60; + Vec2F pixelSize; + Vec2F mmSize; + }; + private: Window(int width, int height, const char* title); ~Window(); @@ -33,10 +39,14 @@ namespace tp { auto getContext() -> Context*; + Graphics& getGraphics() { return mGraphics; } + + [[nodiscard]] const Monitor& getMonitor() const { return mMonitor; } + private: Context* mContext; Graphics mGraphics; - Buffer mEvents; + Monitor mMonitor; }; } \ No newline at end of file diff --git a/.outdated/graphics/rsc/fonts/CONSOLAB.TTF b/Graphics/rsc/CONSOLAB.TTF similarity index 100% rename from .outdated/graphics/rsc/fonts/CONSOLAB.TTF rename to Graphics/rsc/CONSOLAB.TTF From 3f2e6fdb4ed1e500ec670fb3d7ea8438c1d0de2f Mon Sep 17 00:00:00 2001 From: Ilya Date: Thu, 24 Aug 2023 19:21:47 +0300 Subject: [PATCH 66/68] Changing sizing in debug gui --- Graphics/private/bindings/DebugGUI.cpp | 39 +++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/Graphics/private/bindings/DebugGUI.cpp b/Graphics/private/bindings/DebugGUI.cpp index cc37a9d..c8c7fc4 100644 --- a/Graphics/private/bindings/DebugGUI.cpp +++ b/Graphics/private/bindings/DebugGUI.cpp @@ -19,7 +19,7 @@ namespace tp { halnf dpmm = 3; halnf uiScale = 1; - halnf fontSizeMM = 3.55f; + halnf fontSizeMM = 2.55f; Timer timer = Timer(1000); ualni fps {}; @@ -99,6 +99,7 @@ void Graphics::GUI::drawDebugInfoWindow() { ImGui::SliderFloat("UI Scale", &mContext->uiScale, 0, 10); ImGui::SliderFloat("Font Size MM", &mContext->fontSizeMM, 3, 20); + ImGui::SliderFloat("DPMM", &mContext->dpmm, 2, 10); setStyle(); @@ -110,8 +111,8 @@ void Graphics::GUI::setStyle() { auto font_size_mm = mContext->fontSizeMM; auto ui_scale = mContext->uiScale; - #define VAL(val) (val * dpmm / 3 * ui_scale) - #define VEC(x, y) ImVec2(x * dpmm / 3, y * dpmm / 3 * ui_scale) + #define VAL(val) (val * dpmm * ui_scale) + #define VEC(x, y) ImVec2(x * dpmm, y * dpmm * ui_scale) ImGuiStyle* style = &ImGui::GetStyle(); auto& io = *mContext->io; @@ -160,38 +161,38 @@ void Graphics::GUI::setStyle() { io.FontGlobalScale = font_size_mm / (font_size_mm_min + ((font_size_mm_max - font_size_mm_min) / font_quality_steps) * (idx + 1)); io.FontGlobalScale = pixels_required / font_sizes[idx]; - auto rounding = VAL(5); - auto pudding = VEC(7, 7); + auto rounding = VAL(1); + auto pudding = VEC(1, 1); - style->WindowPadding = pudding; + // style->WindowPadding = pudding; style->WindowRounding = rounding; //style->WindowMinSize = VEC(11, 11); style->ChildRounding = rounding; style->PopupRounding = rounding; style->FramePadding = pudding; style->FrameRounding = rounding; - style->ItemSpacing = VEC(4, 11); - style->ItemInnerSpacing = VEC(9, 4); + style->ItemSpacing = VEC(1, 2); + style->ItemInnerSpacing = VEC(1, 1); style->CellPadding = pudding; style->TouchExtraPadding = pudding; - style->IndentSpacing = VAL(25); - style->ColumnsMinSpacing = VAL(5); - style->ScrollbarSize = VAL(16); + style->IndentSpacing = VAL(3); + style->ColumnsMinSpacing = VAL(1.2); + style->ScrollbarSize = VAL(5); style->ScrollbarRounding = rounding; - style->GrabMinSize = VAL(2); + style->GrabMinSize = VAL(0.6); style->GrabRounding = rounding; - style->LogSliderDeadzone = VAL(2); + style->LogSliderDeadzone = VAL(0.6); style->TabRounding = rounding; - style->TabMinWidthForCloseButton = VAL(5); + style->TabMinWidthForCloseButton = VAL(1.3); style->DisplayWindowPadding = pudding; style->DisplaySafeAreaPadding = pudding; - style->MouseCursorScale = VAL(5); + // style->MouseCursorScale = VAL(1.3); - style->FrameBorderSize = VAL(0); - style->WindowBorderSize = VAL(1.5f); - style->ChildBorderSize = VAL(2); + // style->FrameBorderSize = VAL(0); + style->WindowBorderSize = VAL(0.5); + style->ChildBorderSize = VAL(0.6); - style->WindowTitleAlign = VEC(0.5f, 0.6f); + // style->WindowTitleAlign = VEC(0.1f, 0.2f); style->WindowMenuButtonPosition = ImGuiDir_Right; if (!first_init) From b3d06906ff30be9cb8d6c78717ba320900a1ca3c Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Fri, 1 Sep 2023 22:44:47 +0300 Subject: [PATCH 67/68] BoredProject --- CMakeLists.txt | 1 + Chat/CMakeLists.txt | 33 ++++++++++++++++++ Chat/applications/ChatGUI.cpp | 39 ++++++++++++++++++++++ Chat/private/Chat.cpp | 18 ++++++++++ Chat/private/ClientGUI.cpp | 46 ++++++++++++++++++++++++++ Chat/public/Chat.hpp | 27 +++++++++++++++ Chat/public/ClientGui.hpp | 13 ++++++++ Chat/tests/Tests.cpp | 4 +++ Graphics/private/bindings/DebugGUI.cpp | 17 ++++++++-- 9 files changed, 195 insertions(+), 3 deletions(-) create mode 100644 Chat/CMakeLists.txt create mode 100644 Chat/applications/ChatGUI.cpp create mode 100644 Chat/private/Chat.cpp create mode 100644 Chat/private/ClientGUI.cpp create mode 100644 Chat/public/Chat.hpp create mode 100644 Chat/public/ClientGui.hpp create mode 100644 Chat/tests/Tests.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 1937060..1a59c21 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,3 +25,4 @@ add_subdirectory(Externals) add_subdirectory(Connection) add_subdirectory(Graphics) add_subdirectory(Objects) +add_subdirectory(Chat) diff --git a/Chat/CMakeLists.txt b/Chat/CMakeLists.txt new file mode 100644 index 0000000..c3947c1 --- /dev/null +++ b/Chat/CMakeLists.txt @@ -0,0 +1,33 @@ + +cmake_minimum_required(VERSION 3.2) + +set(CMAKE_CXX_STANDARD 23) + +project(Chat) + +### ---------------------- Externals --------------------- ### +set(BINDINGS_INCLUDE ${EXTERNALS}/glfw/include ${EXTERNALS}/glew/include) +set(BINDINGS_LIBS glfw glew_s Imgui Nanovg) + +### ---------------------- Static Library --------------------- ### +file(GLOB SOURCES "./private/*.cpp" "./private/*/*.cpp") +file(GLOB HEADERS "./public/*.hpp") +add_library(${PROJECT_NAME} STATIC ${SOURCES} ${HEADERS}) +target_include_directories(${PROJECT_NAME} PUBLIC ./public/) +target_include_directories(${PROJECT_NAME} PRIVATE ${BINDINGS_INCLUDE}) +target_link_libraries(${PROJECT_NAME} PUBLIC Graphics Connection) +target_link_libraries(${PROJECT_NAME} PRIVATE ${BINDINGS_LIBS}) + +### -------------------------- Examples -------------------------- ### +add_executable(ChatGUI applications/ChatGUI.cpp) +target_link_libraries(ChatGUI ${PROJECT_NAME} ${BINDINGS_LIBS}) +target_include_directories(ChatGUI PRIVATE ${BINDINGS_INCLUDE}) + +### -------------------------- Tests -------------------------- ### +enable_testing() +file(GLOB TEST_SOURCES "./tests/*.cpp") +add_executable(${PROJECT_NAME}Tests ${TEST_SOURCES}) +target_link_libraries(${PROJECT_NAME}Tests ${PROJECT_NAME} Utils) +add_test(NAME ${PROJECT_NAME}Tests COMMAND ${PROJECT_NAME}Tests) + +install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib) \ No newline at end of file diff --git a/Chat/applications/ChatGUI.cpp b/Chat/applications/ChatGUI.cpp new file mode 100644 index 0000000..305dee1 --- /dev/null +++ b/Chat/applications/ChatGUI.cpp @@ -0,0 +1,39 @@ + +#include "ClientGui.hpp" +#include "Window.hpp" + +using namespace tp; + +int main() { + + ModuleManifest* deps[] = { &tp::gModuleChat, nullptr }; + ModuleManifest testModule("ClientGUI", nullptr, nullptr, deps); + + if (!testModule.initialize()) { + return 1; + } + + { + ChatAPI chat; + ClientGUI gui; + + auto window = Window::createWindow(1000, 700, "Window 1"); + + if (window) { + + window->getGraphics().getDebugGui().setFontSize(4); + + while (!window->shouldClose()) { + window->processEvents(); + + gui.draw(chat); + + window->draw(); + } + } + + Window::destroyWindow(window); + } + + testModule.deinitialize(); +} diff --git a/Chat/private/Chat.cpp b/Chat/private/Chat.cpp new file mode 100644 index 0000000..52fd26b --- /dev/null +++ b/Chat/private/Chat.cpp @@ -0,0 +1,18 @@ + +#include "Chat.hpp" + +#include "Graphics.hpp" + +using namespace tp; + +static ModuleManifest* deps[] = { &gModuleGraphics, nullptr }; + +ModuleManifest tp::gModuleChat = ModuleManifest("Chat", nullptr, nullptr, deps ); + +bool ChatAPI::isLogged() const { + return mLogged; +} + +void ChatAPI::login(const Credentials& credentials) { + mLogged = String::Logic::isEqualLogic(credentials.name, "111"); +} \ No newline at end of file diff --git a/Chat/private/ClientGUI.cpp b/Chat/private/ClientGUI.cpp new file mode 100644 index 0000000..c30755b --- /dev/null +++ b/Chat/private/ClientGUI.cpp @@ -0,0 +1,46 @@ + +#include "ClientGui.hpp" +#include "imgui.h" + +using namespace tp; +using namespace ImGui; + +void ClientGUI::draw(ChatAPI& api) { + + if (Begin("window_name")) { + + if (api.isLogged()) { + + static int item_current1 = 0; + const char *items1[] = {"Never", "Gonna", "Give", "You", "Up"}; + Combo("User", &item_current1, items1, IM_ARRAYSIZE(items1)); + + BeginListBox("History"); + Text("as"); + Text("asa"); + EndListBox(); + + static char buff[1000]; + InputTextMultiline("Message", buff, 1000); + + if (Button("Send")) { + + } + + } else { + + InputText("Name", mCredentials.name, ChatAPI::Credentials::SIZE); + InputText("Pass", mCredentials.pass, ChatAPI::Credentials::SIZE); + + if (mInvalidCredentials) { + Text("Invalid Credentials"); + } + + if (Button("Login")) { + api.login(mCredentials); + mInvalidCredentials = !api.isLogged(); + } + } + + } End(); +} \ No newline at end of file diff --git a/Chat/public/Chat.hpp b/Chat/public/Chat.hpp new file mode 100644 index 0000000..f76b0a4 --- /dev/null +++ b/Chat/public/Chat.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "Module.hpp" + +namespace tp { + + extern ModuleManifest gModuleChat; + + class ChatAPI { + public: + struct Credentials { + enum { SIZE = 64 }; + tp::int1 name[SIZE] {0}; + tp::int1 pass[SIZE] {0}; + }; + + public: + ChatAPI() = default; + [[nodiscard]] bool isLogged() const; + void login(const Credentials& credentials); + + private: + bool mLogged = false; + Credentials mCredentials; + }; +} + diff --git a/Chat/public/ClientGui.hpp b/Chat/public/ClientGui.hpp new file mode 100644 index 0000000..189fdb0 --- /dev/null +++ b/Chat/public/ClientGui.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include "Chat.hpp" + +namespace tp { + class ClientGUI { + ChatAPI::Credentials mCredentials; + bool mInvalidCredentials = false; + public: + ClientGUI() = default; + void draw(ChatAPI& api); + }; +} \ No newline at end of file diff --git a/Chat/tests/Tests.cpp b/Chat/tests/Tests.cpp new file mode 100644 index 0000000..ab1ae89 --- /dev/null +++ b/Chat/tests/Tests.cpp @@ -0,0 +1,4 @@ + +int main () { + +} \ No newline at end of file diff --git a/Graphics/private/bindings/DebugGUI.cpp b/Graphics/private/bindings/DebugGUI.cpp index c8c7fc4..4fb6718 100644 --- a/Graphics/private/bindings/DebugGUI.cpp +++ b/Graphics/private/bindings/DebugGUI.cpp @@ -88,9 +88,20 @@ void Graphics::GUI::draw() { halnf Graphics::GUI::getFontSize() const { return mContext->fontSizeMM; } halnf Graphics::GUI::getUIScale() const { return mContext->uiScale; } -void Graphics::GUI::setDPMM(ualni dpmm) { mContext->dpmm = dpmm; } -void Graphics::GUI::setFontSize(ualni size) { mContext->fontSizeMM = size; } -void Graphics::GUI::setUIScale(ualni scale) { mContext->uiScale = scale; } +void Graphics::GUI::setDPMM(ualni dpmm) { + mContext->dpmm = dpmm; + setStyle(); +} + +void Graphics::GUI::setFontSize(ualni size) { + mContext->fontSizeMM = size; + setStyle(); +} + +void Graphics::GUI::setUIScale(ualni scale) { + mContext->uiScale = scale; + setStyle(); +} void Graphics::GUI::drawDebugInfoWindow() { ImGui::Begin("Debug Info"); From b0d5226915d18fdccda10ac17e0f6ad96bea48ca Mon Sep 17 00:00:00 2001 From: IlyaShurupov Date: Sun, 3 Sep 2023 10:48:24 +0300 Subject: [PATCH 68/68] GUI --- .clang-format | 206 ++++++++++++++++++++++++++++++---- Chat/applications/ChatGUI.cpp | 2 + Chat/private/Chat.cpp | 37 +++++- Chat/private/ClientGUI.cpp | 95 +++++++++++----- Chat/public/Chat.hpp | 20 +++- Chat/public/ClientGui.hpp | 7 ++ Strings/public/Strings.hpp | 2 +- 7 files changed, 317 insertions(+), 52 deletions(-) diff --git a/.clang-format b/.clang-format index 4d990a5..6270299 100644 --- a/.clang-format +++ b/.clang-format @@ -1,21 +1,55 @@ -# Generated from CLion C/C++ Code Style settings +--- BasedOnStyle: LLVM AccessModifierOffset: -2 AlignAfterOpenBracket: Align -AlignConsecutiveAssignments: None +AlignArrayOfStructures: Left +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: true + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + PadOperators: false +AlignEscapedNewlines: Left AlignOperands: Align -AllowAllArgumentsOnNextLine: false -AllowAllConstructorInitializersOnNextLine: false -AllowAllParametersOfDeclarationOnNextLine: false +AlignTrailingComments: + Kind: Always + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: Always -AllowShortCaseLabelsOnASingleLine: false +AllowShortCaseLabelsOnASingleLine: true +AllowShortEnumsOnASingleLine: true AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Always +AllowShortIfStatementsOnASingleLine: Never AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: true +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: Yes -BreakBeforeBraces: Custom +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both BraceWrapping: AfterCaseLabel: false AfterClass: false @@ -23,44 +57,172 @@ BraceWrapping: AfterEnum: false AfterFunction: false AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false AfterUnion: false + AfterExternBlock: false BeforeCatch: false BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false IndentBraces: false - SplitEmptyFunction: false + SplitEmptyFunction: true SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAfterAttributes: Never +BreakAfterJavaFieldAnnotations: false +BreakArrays: true BreakBeforeBinaryOperators: None +BreakBeforeBraces: Attach +BreakBeforeConceptDeclarations: Always +BreakBeforeInlineASMColon: OnlyMultiline BreakBeforeTernaryOperators: true BreakConstructorInitializers: BeforeColon BreakInheritanceList: BeforeColon -ColumnLimit: 0 +BreakStringLiterals: true +ColumnLimit: 180 +CommentPragmas: "^ IWYU pragma:" CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: ^"(llvm|llvm-c|clang|clang-c)/ + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: ^(<|"(gtest|gmock|isl|json)/) + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: .* + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: (Test)?$ +IncludeIsMainSourceRegex: "" +IndentAccessModifiers: false +IndentCaseBlocks: true IndentCaseLabels: true -IndentPPDirectives: None +IndentExternBlock: Indent +IndentGotoLabels: true +IndentPPDirectives: BeforeHash +IndentRequiresClause: true IndentWidth: 2 -KeepEmptyLinesAtTheStartOfBlocks: true -MaxEmptyLinesToKeep: 2 +IndentWrappedFunctionNames: false +InsertBraces: true +InsertNewlineAtEOF: true +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: false +LambdaBodyIndentation: Signature +Language: Cpp +LineEnding: DeriveLF +MacroBlockBegin: "" +MacroBlockEnd: "" +MaxEmptyLinesToKeep: 1 NamespaceIndentation: All +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true +PPIndentWidth: -1 +PackConstructorInitializers: CurrentLine +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Left -ReflowComments: false +QualifierAlignment: Custom +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveSemicolon: true +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Always +ShortNamespaceLines: 1000 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric SpaceAfterCStyleCast: true SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default SpaceBeforeAssignmentOperators: true -SpaceBeforeCpp11BracedList: false +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: true SpaceBeforeCtorInitializerColon: true SpaceBeforeInheritanceColon: true SpaceBeforeParens: ControlStatements -SpaceBeforeRangeBasedForLoopColon: false +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDeclarationName: false + AfterFunctionDefinitionName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: false SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 0 -SpacesInAngles: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never SpacesInCStyleCastParentheses: false -SpacesInContainerLiterals: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 SpacesInParentheses: false SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION TabWidth: 2 -UseTab: Always +UseTab: Never +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +QualifierOrder: + - inline + - static + - const + - type diff --git a/Chat/applications/ChatGUI.cpp b/Chat/applications/ChatGUI.cpp index 305dee1..2981be1 100644 --- a/Chat/applications/ChatGUI.cpp +++ b/Chat/applications/ChatGUI.cpp @@ -1,4 +1,6 @@ +#include "NewPlacement.hpp" + #include "ClientGui.hpp" #include "Window.hpp" diff --git a/Chat/private/Chat.cpp b/Chat/private/Chat.cpp index 52fd26b..49c6a6d 100644 --- a/Chat/private/Chat.cpp +++ b/Chat/private/Chat.cpp @@ -1,4 +1,6 @@ +#include "NewPlacement.hpp" + #include "Chat.hpp" #include "Graphics.hpp" @@ -14,5 +16,36 @@ bool ChatAPI::isLogged() const { } void ChatAPI::login(const Credentials& credentials) { - mLogged = String::Logic::isEqualLogic(credentials.name, "111"); -} \ No newline at end of file + mLogged = String::Logic::isEqualLogic(credentials.pass, "1812") && String::Logic::isEqualLogic(credentials.name, "Igor"); + mChatsList = { "Serg", "Friends" }; + mChatHistories.put("Serg", { { "Serg", "Hello wanna some coke-cola?" }, { "Serg", "Will be in 5 mins" } }); + mChatHistories.put("Friends", { { "Artem", "Whos is that Serg?" }, { "Erog", "idunno" } }); +} + +void ChatAPI::logout() { + mLogged = false; + mChatsList.removeAll(); + mChatHistories.removeAll(); +} + +const ChatAPI::ChatsList* ChatAPI::getChatsList() const { + return mLogged ? &mChatsList : nullptr; +} + +const ChatAPI::ChatHistory* ChatAPI::getChatHistory(const String& chatName) const { + if (!mLogged) return nullptr; + + auto history = mChatHistories.presents(chatName); + return history ? &mChatHistories.getSlotVal(history) : nullptr; +} + +void ChatAPI::send(const String& chatName, const Message& message) { + if (!mLogged) return; + + auto iter = mChatHistories.presents(chatName); + auto history = iter ? &mChatHistories.getSlotVal(iter) : nullptr; + + if (!history) return; + + history->pushBack(message); +} diff --git a/Chat/private/ClientGUI.cpp b/Chat/private/ClientGUI.cpp index c30755b..75738ca 100644 --- a/Chat/private/ClientGUI.cpp +++ b/Chat/private/ClientGUI.cpp @@ -1,46 +1,89 @@ #include "ClientGui.hpp" #include "imgui.h" +#include "imgui_internal.h" using namespace tp; using namespace ImGui; void ClientGUI::draw(ChatAPI& api) { + DockSpaceOverViewport(GetWindowViewport()); - if (Begin("window_name")) { + if (api.isLogged()) { + drawChat(api); - if (api.isLogged()) { + } else { + if (Begin("Authentication")) { + InputText("Name", mCredentials.name, ChatAPI::Credentials::SIZE); + InputText("Pass", mCredentials.pass, ChatAPI::Credentials::SIZE); - static int item_current1 = 0; - const char *items1[] = {"Never", "Gonna", "Give", "You", "Up"}; - Combo("User", &item_current1, items1, IM_ARRAYSIZE(items1)); + if (mInvalidCredentials) { + Text("Invalid Credentials"); + } - BeginListBox("History"); - Text("as"); - Text("asa"); - EndListBox(); + if (Button("Login")) { + api.login(mCredentials); + mInvalidCredentials = !api.isLogged(); + } + } + End(); + } +} - static char buff[1000]; - InputTextMultiline("Message", buff, 1000); +void ClientGUI::drawChat(tp::ChatAPI& api) { + if (Begin("Chats")) { + if (Button("Logout", {GetContentRegionAvail().x, 0})) { + api.logout(); + mCredentials.pass[0] = 0; + mActiveChatName = "Not Selected"; + } - if (Button("Send")) { + if (BeginListBox("##chats", GetContentRegionAvail())) { + auto chats = api.getChatsList(); + if (chats) { + for (auto user : *chats) { + if (Selectable(user->read())) { + mActiveChatName = user.data(); + } + } + } else { + Text("Error"); + } - } + EndListBox(); + } + } + End(); - } else { + if (Begin("History")) { + Text("%s", mActiveChatName.read()); - InputText("Name", mCredentials.name, ChatAPI::Credentials::SIZE); - InputText("Pass", mCredentials.pass, ChatAPI::Credentials::SIZE); + auto history = api.getChatHistory(mActiveChatName); - if (mInvalidCredentials) { - Text("Invalid Credentials"); - } + if (history) { + if (BeginListBox("##History", GetContentRegionAvail())) { + for (auto message : *history) { + Text("%s : %s", message->user.read(), message->text.read()); + Separator(); + } + } - if (Button("Login")) { - api.login(mCredentials); - mInvalidCredentials = !api.isLogged(); - } - } + EndListBox(); + } else { + Text("No History"); + } + } + End(); - } End(); -} \ No newline at end of file + if (Begin("Message")) { + if (Button("Send")) { + if (String::Logic::calcLength(mMessageBuff) > 0) { + api.send(mActiveChatName, {mCredentials.name, mMessageBuff}); + } + mMessageBuff[0] = 0; + } + + InputTextMultiline("##Message", mMessageBuff, MESSAGE_SIZE, GetContentRegionAvail()); + } + End(); +} diff --git a/Chat/public/Chat.hpp b/Chat/public/Chat.hpp index f76b0a4..e89af19 100644 --- a/Chat/public/Chat.hpp +++ b/Chat/public/Chat.hpp @@ -1,6 +1,8 @@ #pragma once -#include "Module.hpp" +#include "Strings.hpp" +#include "Map.hpp" +#include "List.hpp" namespace tp { @@ -14,14 +16,30 @@ namespace tp { tp::int1 pass[SIZE] {0}; }; + typedef List ChatsList; + + struct Message { + String user; + String text; + }; + + typedef List ChatHistory; + public: ChatAPI() = default; [[nodiscard]] bool isLogged() const; void login(const Credentials& credentials); + [[nodiscard]] const ChatsList* getChatsList() const; + [[nodiscard]] const ChatHistory* getChatHistory(const String& chatName) const; + void logout(); + void send(const String& chatName, const Message& message); private: bool mLogged = false; Credentials mCredentials; + ChatsList mChatsList; + + Map mChatHistories; }; } diff --git a/Chat/public/ClientGui.hpp b/Chat/public/ClientGui.hpp index 189fdb0..b037b45 100644 --- a/Chat/public/ClientGui.hpp +++ b/Chat/public/ClientGui.hpp @@ -4,10 +4,17 @@ namespace tp { class ClientGUI { + enum { MESSAGE_SIZE = 1024 }; ChatAPI::Credentials mCredentials; bool mInvalidCredentials = false; + char mMessageBuff[1000] {0}; + String mActiveChatName = "Not Selected"; + public: ClientGUI() = default; void draw(ChatAPI& api); + + private: + void drawChat(ChatAPI& api); }; } \ No newline at end of file diff --git a/Strings/public/Strings.hpp b/Strings/public/Strings.hpp index 5bdf9f8..6fedcc9 100644 --- a/Strings/public/Strings.hpp +++ b/Strings/public/Strings.hpp @@ -102,7 +102,7 @@ namespace tp { // Creates new string data from raw data pointer. // Does not own string buffer - string buffer will not be freed. Initializes as const memory. StringTemplate(const tChar* raw) { - mData = new (sStringPool.allocate(0)) StringData(raw, true); + mData = new (sStringPool.allocate(0)) StringData(raw, true); incReference(mData); }